写点什么

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

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

关注

评论

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

浪潮信息-龙蜥技术认证上线,培训专场圆满召开

OpenAnolis小助手

操作系统 龙蜥社区 浪潮信息 龙蜥人才培养计划

龙蜥SIG月度动态:两大特性合入 Linux 主线,提供高速本地通信加速及丰富的设备信息

OpenAnolis小助手

操作系统 高性能网络 龙蜥社区 龙蜥技术sig

高薪线下周末班马上开班,手把手带你提升职业技能

霍格沃兹测试开发学社

腾讯云与钢研新材达成战略合作,加速金属材料产业链企业数字化升级

Geek_2d6073

精选:2024年市场上10个最好的一体化协同办公平台

爱吃小舅的鱼

协同办公 协同办公系统

基于大语言模型的应用

悦数图数据库

大语言模型

基于龙蜥衍生版 KeyarchOS 的 LVM 卷管理技术与实践 | 干货推荐

OpenAnolis小助手

操作系统 技术干货 龙蜥社区 龙蜥操作系统 浪潮信息

信创数据库有哪些?哪家好?堡垒机支持吗?

行云管家

数据库 信创 堡垒机 国产化

暗水印——空域:二值化图像水印(看不见我吧 啦啦啦~)

京东科技开发者

2024南京智博会:展示国内外前沿科技成果,推动智能产业快速发展

AIOTE智博会

南京智博会 大数据展 智慧城市展

百度智能云参与信通院多项边缘计算标准编制,「大模型时代下云边端协同 AI 发展研讨会」成功召开

Baidu AICLOUD

边缘计算 大模型 边缘计算平台

和鲸“101 数智领航计划”成果展示:携手北中医共建健康医疗人工智能实验室

ModelWhale

人工智能 大数据 北中医

重构MQ处理架构:MVEL表达式和责任链设计模式应用实践

京东零售技术

后端 代码规范 代码整洁 企业号 5 月 PK 榜

美团面试:如何实现线程任务编排?

快乐非自愿限量之名

Java 面试 JVM

Vite 的预构建原理与实践| 京东物流技术团队

京东科技开发者

【中国算力大会分会】2024算法、高性能计算与人工智能国际学术会议(AHPCAI 2024)

搞科研的小刘

人工智能 算法 学术会议 学术论文 EI

项目管理十二原则

EquatorCoco

项目管理 项目开发

北方民族大学40周年校庆学术活动-第四届自动化控制、算法与智能仿生学术会议(ACAIB 2024)

搞科研的小刘

计算机 #人工智能 学术会议 学术论文 EI

NumPy 分割与搜索数组详解

EquatorCoco

数组 Numpy

CaffeineCache Api介绍以及与Guava Cache性能对比| 京东物流技术团队

京东科技开发者

GPT-4o 后 LLM 时代 RTC 需求讨论会丨社区伙伴活动分享

声网

C# 程序集、模块和类型概念及关系

不在线第一只蜗牛

C# 开发语言 程序集

浪潮信息-龙蜥技术认证上线,培训专场圆满召开

OpenAnolis小助手

开源 操作系统 龙蜥社区 浪潮信息 龙蜥人才培养计划

担心巡检作假?草料五大防作假功能,可组合使用

草料二维码

设备巡检 设备管理 草料二维码 设备巡检系统 二维码巡检

Meme币取代VC代币 让比特币越来越好

区块链软件开发推广运营

dapp开发 区块链开发 NFT开发 公链开发 代币开发

充分发挥财务敏捷性,扩大集成式财务规划的价值

智达方通

企业管理 财务转型

2024年API趋势,哪些API将增加市场份额?

幂简集成

API

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