AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

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:5712264
用户头像

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

关注

评论

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

TypeScript枚举类型应用:前后端状态码映射的最简方案

不在线第一只蜗牛

typescript

Metes and Bounds Pro for Mac(房地产契约绘图软件)

晨光熹微

时序数据库 TDengine 备份全家桶实操解析:命令行 + 可视化一篇看懂

TDengine

tdengine 时序数据库 备份 恢复

从“有”到“优”:iPaaS 赋能企业 API 服务治理建设

RestCloud

数据处理 API 集成平台 ipaas api服务治理

ON1 Photo Keyword AI 2023:AI照片关键词标注工具

Rose

UltraCompare for Mac(mac文本对比工具)

晨光熹微

告别传统拍摄,京点点AI试衣一键搞定爆款服装主图!

京东零售技术

云上AI推理平台全掌握 (3):服务接入与全球调度

阿里云大数据AI技术

人工智能 深度学习 数据处理 推理 数据库 大数据

构建烟草行业设备全生命周期数字基座:新一代MIS的战略选择

中烟创新

HarmonyOS DevEco Studio 小技巧 - 鸿蒙单向数据流

谢道韫

「智元机器人」“攻入”科创板,30+家“智元链”企业梳理!

机器人头条

特斯拉 人形机器人 具身智能 宇树科技 智元机器人

万字长文读懂低代码(Low-Code)前世今生、分类、能力、趋势及选型

优秀

低代码 低代码开发 低代码开发平台

天谋科技参与起草中国工业互联网研究院《工业数据库规范》,推动时序数据库标准建设

Apache IoTDB

StarRocks Community Monthly Newsletter (Jun)

StarRocks

数据库 数据湖 存算分离 StarRocks 物化视图

智能体浪潮里,豆包的崛起之路

脑极体

AI

InDesign 2025中文完美解锁版 -Mac/win

Rose

openGauss 开源五载聚产业,技术引领创未来

科技热闻

清空社媒、裁80人!Manus中国闪电撤离:10万内测码变电子废料

测试人

人工智能

XR 黑客松 48 小时极限开发挑战本周开启丨社区来稿

声网

openGauss向量驱动新智能,RAC多写破局,内核升级再启航

科技热闻

分布式系统高可用性设计 - 缓存策略与数据同步机制

量贩潮汐·WholesaleTide

Java spring 缓存 分布式

AWS RDS PostgreSQL可观测性最佳实践

观测云

数据库

10大开源MCP神器!让你的AI从菜鸟变超人

测试人

人工智能

DeskFX Plus for mac(音频增强器)

晨光熹微

AI产品经理必懂的3个大模型微调指标

阿星AI工作室

AI 大模型 微调 AI产品经理

Golang基础笔记十一之日期与时间处理

Hunter熊

golang 定时器 时间戳 计时器 time

Faiss能解决什么问题?Faiss是什么?

不在线第一只蜗牛

Faiss

IntelliJ IDEA 2023永久密钥+中文设置教程-Mac/win

Rose

网站用户访问分析入门:新手必懂的6个关键指标

ClkLog

开源 数据分析 埋点 用户行为分析 画像

AI-Compass宝藏资源库:构建最全面的AI学习与实践生态,服务AI全群体

汀丶人工智能

人工智能

如果你想做好生产管理,那么这篇MES 攻略你一定不能错过!

积木链小链

智能制造 mes 生产管理

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