Realm 与 SQLite

在启动新应用程序时,我们经常想知道要使用哪个数据库,特别是当应用程序是数据库密集型时。最近,我遇到了 Realm,它构建得非常好,而且与 SQLite 相比速度惊人地非常快。在这篇文章中,我的目的是展示 Realm 与 SQLite 的比较。

让我们首先看看Realm 中的基本CRUD操作。

1. 架构
Realm 不使用 SQLite 作为引擎,而是一个从头开始构建的数据库,可直接在手机、平板电脑和可穿戴设备上运行。Realm是一个以C++为核心的面向对象数据库。然而,SQLite 使用事务性 SQL 数据库引擎。

2. 易于使用
Realm 很容易使用,因为它使用对象来存储数据。领域数据模型是使用作为 RealmObject 子类的普通 Java 类定义的。该类可以使用简单的注释来定义主键、必填字段等属性。此外,不需要将 Realm 查询结果转换为对象以供进一步使用,因为此转换是由 Realm 自动处理的。Realm 查询结果在通用 RealmResults 实例中返回,该实例是模型类的集合。这个 RealmResults 实例像列表一样是可迭代的。但是,SQLite 查询结果是在 Cursor 对象中返回的。

将 PostgreSQL 数据库与 ANF 无缝集成

想象一下无需支付任何许可费即可获得最高性能。加入我们即将举办的研讨会,了解Instaclustr 如何让您比以往更轻松地部署数据库等!

3. 跨平台
Realm 以本机对象格式存储其数据,其中对象以使用 C++ 作为核心的基于通用表的格式存储,而不是按特定语言的格式存储。这使得 Realm 易于跨多种语言、平台和查询使用。

4. 速度
Realm 性能比 SQLite 更快,根据基准测试结果几乎快 10 倍。例如, 与 SQLite 相比,通过 Realm 查询获取的数据比插入查询具有更好的性能增强。

5. 数据同步
Realm 中的数据永远不会被复制;它适用于活体物体。使用 Realm 查询,我们可以获得对象引用列表,从而处理原始 Realm 数据。因此,对查询数据所做的任何更改也会在简单提交后反映在实际存储的数据中。然而,在 SQLite 中,我们通过查询从数据库获取数据的副本。因此,使用 SQLite,对查询数据所做的任何更改都需要通过将其再次写回数据库来持久保存。

使用领域的公司:
使用 Realm 的公司包括亚马逊、谷歌、星巴克、英特尔、eBay、阿迪达斯、Zynga、耐克、IBM 和思科。

限制:
Realm 目前有一些限制:

Realm 不支持自动递增 ID 和复合键。
为了保持灵活性和性能之间的平衡,Realm 对 Realm 中存储信息的各个方面都施加了一定的限制,其中包括:
类名称的上限为 57 个字符,其中包括 _class 前缀。
字段名称的上限为 63 个字符。
不支持嵌套事务。
字符串和字节数组不能大于 16 MB。
不支持 Final、Transient 和 易失性变量。
Realm 模型类只能扩展 Realm 对象。
领域模型类必须包含默认的空构造函数。
目前在排序和不区分大小写的字符串匹配中仅支持“Latin Basic”、“Latin Supplement”、“Latin Extended A”和“Latin Extended B”(UTF-8 范围 0-591)。此外,在使用 equalTo()、contains()、endsWith() 或 beginWith() 时在查询中设置不区分大小写的标志仅适用于英语语言环境中的字符。
虽然 Realm 文件可以由多个线程并发处理,但我们不能在线程之间移交 Realm、Realm 对象、查询和结果。
Realm 文件不能被并发进程访问,它们一次只能被一个进程访问。不同的进程应该复制领域文件或创建自己的领域文件。
RealmObject 是活动对象,可能会通过其他线程的更改进行更新。虽然 RealmObject.equals() 返回 true 的两个 Realm 对象必须具有相同的 RealmObject.hashCode() 值,但该值并不稳定,既不应该用作 HashMap 中的键,也不应该保存在 HashSet 中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千源万码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值