• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 为什么 .sqlite 数据库的大小比 Realm 小很多?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:31:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

同事们,我现在开发了一个公交时刻表的应用程序,之前我使用的是sqlite。 数据库大小为 585kb,非常酷。我决定使用 Realm,在 json 解析后我看到大小 - 9,6Mb(超过 20 次)。 请告诉我为什么?这对我来说不是问题,但很有趣!

代码示例:

self.realm.beginWrite()

let file = Bundle.main.path(forResource: "file", ofType: "json")!
let url = URL(fileURLWithPath: file)
let jsonData = NSData(contentsOf: url)!
let json = try! JSONSerialization.jsonObject(with: jsonData as Data, options: [])                          
self.realm.create(DataRoot.self, value: json, update: true)                   
try! self.realm.commitWrite()



Best Answer-推荐答案


Realm 和 SQLite 的构建(和操作)方式截然不同。

Realm 的一个特性是允许从不同线程对多个版本的数据库进行无锁并发访问。这提供了对数据库的实时访问和隔离级别,这是 SQLite 提供的单点提取/插入数据库 API 无法实现的。

为了允许不同的线程同时访问不同版本的数据库,这些不同的“快照”按照写时复制方案存储在 Realm 中。一旦 Realm 可以检测到旧版本不再被访问,它可以将写时复制树的那部分标记为“未使用”。但是,为了防止过度分配,此时文件系统上的文件不会被截断,因此可以更快地完成写入 Realm 的新数据。

此功能实现方式的好处在于,如果您不想使用它(并像访问 SQLite 一样访问 Realm),则无需存储不同版本的开销,并且 Realm 文件可以小得多比存储在 SQLite 中的等效数据。

您可以在 Realm's docs 中阅读更多相关信息.

关于ios - 为什么 .sqlite 数据库的大小比 Realm 小很多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40968553/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap