Nic*_*ick 8 database optimization local-storage ios swift
在到处搜索之后,我发现SQLite,Realm,CoreData,UserDefaults和JSON文件之间没有适当的比较。
您可以轻松找到优点和缺点,但是很难知道该使用什么。
我知道决定完全取决于要求。但是仍然必须有一种决策的方法。
假设以下情况,哪种选择最适合个人,为什么?
注意:我不是在这里存储敏感信息。
随时添加/更新更多相关案例。
Vya*_*lav 12
数据存储实现的大部分只是 SQLite 包装器。最常见的 iOS 实现是 SQLite、ORM、CoreData、Realm、Keychain。
实现的另一部分只是一个简单的文本。例如,UserDefaults 只是一个 XML 文件,您可以使用简单的 iOS API 对其进行编辑。但是当您处理多个元素时,出于性能原因,SQLite 包装器更有用。
那么,SQLite 包装器呢?
摘要呢?
我们测试中的 SQLite(Wrapper,纯 C)和 Realm 的性能几乎相同。CoreData 不够好。
SQLite 包装器和 Realm 有足够好的 API。
唯一的 SQLite 包装器是真正线程安全的。
Available Options to save data in iOS.
User Default: Quicky persists a small amount of data.
Codable (NSCoder): for saving the custom object.
Keychain: Small bit of data securely.
SQLite: Persist large data but require query operation.
Core Data: Object-Oriented Database.
Realm: Faster and easier database solution.
CoreData, Sqlite & Realm store plain text in-store if you don't tell it to encrypt, you can use encryption in all to make it secure.
Saving user-watched history [Huge amount of data, Only insert, and delete operation] Coredata & Realm should be used.
Saving contact numbers [Max 1000 numbers, Need fast fetch, and continuous operation] Coredata & Realm should be used.
保存简单的GET API请求[用于缓存]应该使用Codable,Coredata和Realm。该响应可用于脱机存储。
数据存储和缓存非常重要的话题。选择存储数据的方式可以依赖于整个应用程序的设计。
NSURLCache:配置所需大小的缓存的简单选项。非常适合缓存不需要任何后期处理的数据(JSON、图像请求)。
let URLCache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil)
NSURLCache.setSharedURLCache(URLCache)
Run Code Online (Sandbox Code Playgroud)
文件缓存:如果您需要以某种方式发布处理数据(例如图像上的圆角、从 JSON 构建自己的数据结构)文件缓存可以是一个选项。图像可以保存为普通文件,对于数据对象,您可以使用NSCoding协议。
数据库:对于完全工作的离线模式,最好使用数据库。
NSUserDefaults:小块数据。不安全,不同步。
SQLite:内存高效且跨平台。通常不是最佳选择。当您想在应用程序中共享现有的跨平台数据库时很有用。
核心数据:当您需要复杂的查询和对象之间的复杂关系时,这是一个不错的选择。具有基本的迁移支持和可视化代码编辑器(带有代码生成器)。除非您需要同步或跨平台,否则它可能应该是默认选项。
YapDatabase:比 CoreData 更快。有 iCloud 同步。
Realm:有文章说它比CoreData更快并且线程安全。有很多选项,其中一些是付费的(例如 Sync)。可能是 CoreData 的一个不错的替代品。
Firebase:云平台。有离线模式,但要付费。
CouchBase:免费同步。不需要迁移,因为架构非常灵活。
简单记录:UserDefaults、NSCoding
本地数据存储,复杂记录:CoreData ( Yap , Realm )
同步:CouchDB , Yap (iCloud), CoreData (iCloud-), Realm (Paid), Firebase (Paid)
速度:Yap , Realm
Patform 或基于云:Firebase、Parse
跨平台:Realm、CouchDB、MongoDB、Firebase
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |