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有可能做出和以前不兼容的修改。
欢迎加Q Q群: 104286694
分享到:
相关推荐
sqlite3文件(用于解决安卓真机中sqlite3:not found的错误) http://blog.csdn.net/hust_twj/article/details/52212558
手机调试app时,使用adb调试数据库sqlite,输入命令sqlite3,提示:sqlite3 not found。将此文件导入/system/XBIN目录下,并赋予执行权限。
支持android4.2-4.4,其他未知 博文链接:https://gundumw100.iteye.com/blog/2262622
2. SQLite:SQLite是一种嵌入式关系型数据库管理系统,广泛应用于移动设备和嵌入式系统。它是Android应用程序常用的本地数据库解决方案,可用于存储和管理应用程序的数据。 3. 登录注册功能:登录注
嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 1 SQLite 概念: SQLite是一款轻量级的关系型数据库,它的运算效率高,占用资源少,因此比较适合在移动设备上使用。 SQLite Android为了让我们更加方便地...
android studio1.2 sqlite的操作 测试通过 转:http://www.jb51.net/article/36062.htm 这个例子的基础上修改
android之SQLite数据库开发详解: Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用...
android 6.0 可用 sqlite3 和so文件 adb push D:\temp\android_arm_sqlite3\libsqlite_jni.so /system/lib/ adb push D:\temp\android_arm_sqlite3\libsqlite.so /system/lib/ adb push D:\temp\android_arm_sqlite...
嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 3 SQLite 内容: SQLite如何插入数据。 (1)SQL语句。insert into table…value() (2)使用SQLiteOpenHelper接口 实验 通过SQLiteOpenHelper接口insert ...
Android 数据库SQLite 详解,简单学好SQLite
Android+SQlite 简单的《学生信息管理系统》(实现基本增删改查) 此代码中还有与其相对应的apk文件(在SIMS/bin目录中),大家可先行放手机上看一下效果。 希望对初学者有一定的帮助。(本人自己编写)
sqlite3以及所依赖的文件 Android 解决 sqlite3: not found 问题
3,解决了Android的SQlite先天不足:删除 插入后主键不能自动排序的问题 4,在数据库主界面,有“选定”按钮,点此后切换到一个带checkbox的布局,可以多选。点击确定后返回主界面。更多内容参考博客:...
快速:在保持非常丰富的功能集的同时,Realm在常规操作上甚至比原始SQLite更快。 入门 请参阅的将Realm添加到您的项目中。 文献资料 可以在找到Realm的文档。 API参考位于 。 获得帮助 有问题吗? :在上查找先前的...
sqlite3和libncurses.so文件
一个android上的sqlite简易使用程序,包含插入,查询,列表
Sqlite3数据库小巧、速度快。本文资源上传了Sqlite3的编译工程,及使用示例功能,方便新手入门。