Realm Java 使用总结

Realm 是什么?

官网:https://realm.io/  中文: https://realm.io/cn/

个人推荐看英文的文档,一个是慢慢习惯英文的文档,而是中文的更新不一定及时。

官网介绍:

Realm,为移动设备而生

替代 SQLite 和 Core Data。

为你省下数周的时间和数千行的代码,

帮你创造出更棒的用户体验。

为什么用Realm?

因为公司15年6月准备开发一个新软件,本地数据要求很高,数据在获取回来之后要离线使用,而且需要增量更新、删除等等。所以就对现有的数据库框架做了一个调查,速度、加密、存储路径、学习的简易程度等。发现realm完全符合目前的需求,一下是具体情况:

DBFlow:不支持分库处理,不支持加密(当时)

GreenDAO:不支持分库,官方不支持加密

ActiveAndroid、ORMlite:相对上面来说,速度较慢,同样不支持分库

注:数据比较多,同一个表里面数据太多影响查询速度,在sqlite数据达到上万条的时候速度明显受到影响,如果表里数据比较大速度更慢。

Realm性能如何?

具体性能信息:realm-for-android、realm-for-ios,下面我摘取了Android的一些信息。

 插入操作:在同一个事务里,每秒插入100K条记录(越高代表性能越好)

Realm Java 使用总结_第1张图片

统计操作:每秒能在100K条数据中进行查询后count的次数(越高代表性能越好)

Realm Java 使用总结_第2张图片

查询操作:在100K中进行一次遍历查询(越高代表性能越好)

Realm Java 使用总结_第3张图片

在集成的时候有一个需要注意的地方,官方提供的gradle是自带全平台支持的,会引起安装包比较大,所以使用google推荐的ndk abifilter去除不需要的架构,减小apk的体积。

Realm不足的地方

数据关联:

这个是一般的ORM框架一样,需要提前建立好关系,如果你需要临时按照一定条件去查询,只可以分开多次查询,不可以像sqlite连表查询。

稳定性:

这个可能和我自己的需求有关,应用有一些数据是先准备好的,软件把数据下载下来使用,现在realm还有新的功能在添加,数据保存的格式也会改动,数据库需要升级对我来说比较痛苦。

更新操作:

需要按照条件查询出来,写代码更新,不像sqlite一个语句搞定。

不支持分页:

查询结果不支持分页,但是相对速度快来说应该不是个事情,25k数据查询出来也是在毫秒级的。

如果你感觉以上都不是问题,欢迎使用。

FAQ:

更多问题可以看官网的FAQ:https://realm.io/cn/docs/java/latest/#faq

你可能感兴趣的:(Realm Java 使用总结)