写点什么

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

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

关注

评论

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

Java开发基础面试题,【springcloud

策划Java工程师

Java 程序员 后端

Java开发快速学习!三面蚂蚁金服成功拿到offer后,他说他累了

策划Java工程师

Java 程序员 后端

全国首笔“区块链+闲置住宅”交易在昆山完成

CECBC

博睿数据App 3.0四大新功能来袭,大幅提升App用户体验可见性

博睿数据

人工智能从业者需要掌握哪些数学知识

小术晓术

人工智能 数学

模块四考试试卷存储方案

kitten

模块四

IT公司防止运维偷窥和篡改数据库的最佳武器-云堡垒机!

行云管家

数据安全 堡垒机 数据泄露

应届生怎么走Linux下C++后台服务器开发路线,工作3-5年的知识体系

Linux服务器开发

Linux C/C++ linux开发 Linux服务器开发 Linux后台开发

双非本科电子跨专业,苦学八个月,投岗阿里/滴滴后端三面,最终拿下offer

今晚早点睡

Java 阿里巴巴 面试 计算机

Python3 运算符

Geek_aee0b4

趁着课余时间学点Python(四)真的花点课余时间就能理解的分支控制语句

ベ布小禅

8月日更

区块链的兴起及其司法运用

CECBC

亏损、退市、卖身...区块链如何挽救影视行业?

CECBC

2021年7月云主机性能评测报告出炉,华为云再登榜首

博睿数据

2021年《中国DevOps现状调查报告》正式发布!GitLab被选为使用率最高的开源软件安全类工具(内附下载链接)

极狐GitLab

怎样回到常识做投资?

石云升

投资 8月日更 启发

极狐 GitLab 探秘系列|极狐 GitLab 初探(下)

极狐GitLab

DevOps DevSecOps gitops

Python3 数字

Geek_aee0b4

导致我们形不成「自律」的「罪魁祸首」

非著名程序员

提升认知 个人提升 自律 8月日更

Java开发前景怎么样?【Spring Boot 21

策划Java工程师

Java 程序员 后端

Java开发基础不牢?什么是中间件?

策划Java工程师

Java 程序员 后端

架构实战营毕业总结

eoeoeo

架构实战营

TCL携大屏天团领跑UDE,斩获多项创新大奖

科技热闻

终于有人把操作系统,网络系统,线程进程,IO模型全部总结出来了

程序员 架构 面试 操作系统 计算机

币安链NFT游戏系统开发区块链技术

薇電13242772558

区块链 智能合约

国内外 DevOps/DevSecOps 报告对比解读:安全与云原生持续升温

极狐GitLab

DevOps 安全 DevSecOps

ipfs矿机怎么买?ipfs矿机在哪买?

ipfs矿机怎么买 ipfs矿机在哪买

架构实战营模块3作业指导

华仔

架构实战营

从错误中成长

escray

学习 极客时间 朱赟的技术管理课 8月日更

特斯拉自研超算Dojo本月亮相? UCLA教授发推提前泄密

百度开发者中心

自动驾驶 最佳实践 方法论 科技信息

fil矿机有哪几种?fil矿机算力怎么计算?

fil矿机有哪几种 fil矿机算力怎么计算

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