2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Android 上替代 SQLite 的选择:Realm

  • 2014-10-29
  • 本文字数:1219 字

    阅读完需:约 4 分钟

Realm 是一个开源的面向对象移动数据库。上个月,Realm 的 Android 版本发布了,比 iOS 版本晚了三个月。

我们之前已经报道过,Realm 没有使用 SQLite 作为它的引擎,而是用 C++ 写了自己的引擎,他们的目标是提供一个聚焦移动领域的 SQLite 的替代者。现在它的 Android 版本已经发布了。

当前 Android 上的 Realm 的 API 和 iOS 版本有点不同,这也反映了 Objective C 和 Java 的差别。Java 版本的 API 有更高的强类型(strong-typed)要求,也更连贯(fluent)。

比如,在 iOS 上,查询是通过静态方法如"objectWhere"来进行的,这将返回一个 RLMArray。这里的谓词都是基于字符串的。以下就是基于 Object C 的查询方法:

RLMArray *tanDogs = [Dog objectsWhere:@"color = 'tan' AND name BEGINSWITH 'B'"];另一方面,在 Android 下进行相同的查询却是这样的:

复制代码
RealmResults<Dog> tanDogs = realm.where(Dog.class)
.equalTo("color", "tan")
.beginsWith("name", "B")
.findAll();

当然,这有可能会被一种跨 iOS、Android 和其他平台的文本查询语言所替代。 Tim Anglade 是 Realm 的产品主管,他在一封邮件中指出,未来 API 的发展方向很大程度取决于社区的反馈。

虽然 Realm 是一个面向对象的数据库,但它和其他同类产品还是有一些明显的不同。Tim 解释道,当它用原生对象格式(native object format)来存储数据时,这些对象不会带着其语言特有的格式原封不动地存在磁盘上,而是通过 C++ 引擎存储在一个全局的表中。这使得 Realm 可以通过各种语言来访问数据,还包括各种即时查询(adhoc query)。

相比关系数据库,这种混合了对象和表的方式的优势在于它使图查询(graph query)更高效——甚至在相对老旧的智能手机上,查询深度嵌套的对象图也不会影响系统反应速度。Realm 发布的基准测试(benchmark)结果称,在普通操作上,Realm 的速度最快要达到原始的SQLite 的10 倍。

如果你现在有一个应用程序使用CoreData(iOS 上)或SQLite(Android 上),并且想迁移到Realm,肯定有一些事要做。这不是随便拿来就能用的——Tim 解释说,CoreData 和SQLite 倾向于使用一种非常标准化的形式,这种做法在Realm 上行不通。你最好从对象的角度重新思考你的模式(schema)和模型(model)。

一旦你修改了你的模式,使之适用于Realm,接下来把现有数据从CoreData/SQLite 迁移过来就简单了。只要配置一次迁移操作(从Realm 数据库版本0 到版本1),在迁移过程中,把你的SQLite 数据加载到Realm 对象中并保存它们。

或者,如果你的数据保存在远程服务器上,你可以从头新建Realm 数据库。

在采用Realm 之前,必须要考虑到它是一个最前沿的软件,这意味着将来它的API 有可能做出和以前不兼容的修改。

你可以通过 Android 版本的 Realm 来了解更多,或者查看 Github 上的代码

参考英文原文: Realm Brings SQLite Alternative to Android

2014-10-29 00:5712427
用户头像

发布了 77 篇内容, 共 40.1 次阅读, 收获喜欢 26 次。

关注

评论

发布
暂无评论
发现更多内容

数据要素治理框架下图情学科的核心角色重塑

郑州埃文科技

数据要素市场崛起,通信运营或迎来身份大转型?

郑州埃文科技

提升应用灵活性的热更新技术

Speedoooo

热更新 小程序容器 小程序技术

Java 并发工具类核心使用场景深度解析

电子尖叫食人鱼

Java

别把CrossOver当虚拟机!CrossOver软件和虚拟机区别详解

阿拉灯神丁

crossover Mac软件 如何在Mac上运行win游戏 虚拟机软件 Mac游戏推荐

2025测试新标配:Browser Use开源方案落地实录

测试人

技术干货 | 注塑件电磁网格划分指南(HyperMesh+SimLab)

Altair RapidMiner

仿真 CAE Hypermesh 网格划分 Simlab

2025 企业级 AI Agent 大盘点

Techinsight

用户案例分论坛议程发布!2025 IoTDB 用户大会揭秘全球标杆应用实例

Apache IoTDB

低代码开发云原生之路:Kubernetes在应用可伸缩性与可用性中的关键作用​​

不在线第一只蜗牛

Kubernetes 低代码

ChatClient vs ChatModel:开发者必须知道的4大区别!

王磊

重磅!天翼云多云统管体系及两个验证节点通过云计算服务安全评估

天翼云开发者社区

云计算 安全

百空间成网 可信数据生态如何重塑数字时代生产关系

郑州埃文科技

2025 私藏!超好用的 AI Agent 推荐清单

Techinsight

当国产AI嵌入国产智能终端交互,AI应用落地加速

新消费日报

国产智能终端AI能力再升级,火山引擎助力打造应用场景新可能

新消费日报

JUC并发—AQS源码分析

量贩潮汐·WholesaleTide

Java

Netty高级使用与源码详解

量贩潮汐·WholesaleTide

Netty

生成式 AI 的发展方向,应当是 Chat 还是 Agent?

Techinsight

火山引擎助力安卓手机抢滩AI应用,生态合力推动技术普惠进程

新消费日报

将你的闲置算力上链,获得Token收益

PowerVerse

去中心化 Token 算力 DAO DePIN

2025 ,有这些AI Agent 智能体

Techinsight

好用的企业级 AI Agent 有哪些?

Techinsight

IP65防水LED面板:户外显示首选

Dylan

广告 LED LED display LED显示屏 LED屏幕

AlphaGPT 与DeepSeek强强联合,打造更好用的法律AI产品

科技汇

塞讯科技亮相 GTLC 全球科技领导力大会 · 全球总站,探讨 AI 驱动下的系统韧性新范式

塞讯科技

2025 企业级 AI Agent 推荐指南

Techinsight

日志分析场景:从改进优化到全面替代开源ES(elasticsearch)

日志易

Android上替代SQLite的选择:Realm_移动_Roopesh Shenoy_InfoQ精选文章