AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

CleanMyMac2023体验版苹果电脑管家

茶色酒

CleanMyMac CleanMyMac2023

JAVA面试基础经典百问,拿下大厂offer

钟奕礼

Java java程序员 java面试 java编程

IDC 2022上半年中国IT安全软件市场15.1亿美元,行云管家为企业信息安全持续赋能

行云管家

信息安全 数据安全 企业安全

我服了,阿里挖过来的leader连垃圾回收都说不清楚

钟奕礼

Java java程序员 java面试 java编程

BI工具中哪一种使用体验更好?

夏日星河

Zookeeper安装与基础命令操作

石臻臻的杂货铺

zookeeper 11月月更

2022 Java 企业面试题汇总

钟奕礼

Java java程序员 java面试 java编程

静态WEB容器镜像最小化实践

mengzyou

DevOps Web Docker 镜像

微服务平滑迁移上云最佳实践

阿里巴巴云原生

阿里云 微服务 云原生

深度学习框架新手快速上手指南

MegEngineBot

深度学习 开源 教程 MegEngine 新手入门

java的这些多线程面试专题,你都知道吗?

钟奕礼

Java 程序员 java面试 java编程

「美团」Java岗150道面试题:集合+JVM+设计模式+spring+Redis等

钟奕礼

Java java程序员 java面试 java编程

2020最新阿里P7岗面试真题、简历模板,搞懂吊打面试官不是问题

钟奕礼

Java Java 面试 java程序员 java编程

Rancher 全球化部署最佳实践

Rancher

Kubernetes k8s rancher

Java 反射 (二) Class类

浅辄

Java 反射 11月月更

聊聊索引

急需上岸的小谢

11月月更

现在啥软件都有开源,BI 呢?

陈橘又青

数据库

Nacos 中的配置文件如何实现加密传输

小小怪下士

Java 程序员 微服务 SpringCloud

影响LED显示屏使用的因素有哪些?

Dylan

LED显示屏 led显示屏厂家

剖析一下"抢茅台"脚本底层逻辑

京东科技开发者

接口 后端 脚本 风险识别 风险控制

什么是组织孤岛?它会带来哪些影响?可以这样去对付它

Baklib

Java面试读这一篇就够了:100个互联网大厂Java面试真题整理

钟奕礼

Java Java 面试 java程序员 java编程

PCB焊接出问题了,是PCB工程师的锅吗?

华秋PCB

PCB PCB设计 焊接

Fruity Loops Studio2023最新版水果编曲软件下载

茶色酒

Fruity Loops Studio

5年Java开发4面阿里挂在JVM,临走时面试官给了我一份JVM手册

钟奕礼

Java java程序员 java面试 java编程

深圳等级保护测评机构新名单看这里!

行云管家

等保 深圳 等级保护 等级保护机构

万级并发分布式全链路压测工具 autotest 实践

车江毅

自动化测试 全链路测试 性能压测 生产环境全链路压测

Camtasia2023如下免费下载?有啥新功能

茶色酒

Camtasia Camtasia2023

2022年秋招成功斩获offer秘籍:九大核心知识+1000道大厂面试真题

程序知音

Java java面试 大厂面试 java架构 Java面试八股文

行业首个测试开发技术大赛开始报名啦~ 10万现金奖励等你来挑战

测试人

软件测试 自动化测试 测试开发 测试比赛

浅析分布式事务的底层实现模型

移动云大数据

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