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条记录(越高代表性能越好)
统计操作:每秒能在100K条数据中进行查询后count的次数(越高代表性能越好)
查询操作:在100K中进行一次遍历查询(越高代表性能越好)
在集成的时候有一个需要注意的地方,官方提供的gradle是自带全平台支持的,会引起安装包比较大,所以使用google推荐的ndk abifilter去除不需要的架构,减小apk的体积。
Realm不足的地方
数据关联:
这个是一般的ORM框架一样,需要提前建立好关系,如果你需要临时按照一定条件去查询,只可以分开多次查询,不可以像sqlite连表查询。
稳定性:
这个可能和我自己的需求有关,应用有一些数据是先准备好的,软件把数据下载下来使用,现在realm还有新的功能在添加,数据保存的格式也会改动,数据库需要升级对我来说比较痛苦。
更新操作:
需要按照条件查询出来,写代码更新,不像sqlite一个语句搞定。
不支持分页:
查询结果不支持分页,但是相对速度快来说应该不是个事情,25k数据查询出来也是在毫秒级的。
如果你感觉以上都不是问题,欢迎使用。
FAQ:
更多问题可以看官网的FAQ:https://realm.io/cn/docs/java/latest/#faq
网友评论