设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Android上替代SQLite的选择:Realm

2014-10-30 12:04| 发布者: joejoe0332| 查看: 1061| 评论: 0|原作者: 曹知渊|来自: InfoQ

摘要: Realm是一个开源的面向对象移动数据库。上个月,Realm的Android版本发布了,比iOS版本晚了三个月。我们之前已经报道过,Realm没有使用SQLite作为它的引擎,而是用C++写了自己的引擎,他们的目标是提供一个聚焦移动领 ...

  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

转自 http://www.infoq.com/cn/news/2014/10/Realm-android?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部