irpas技术客

Android数据库选择恐惧症_Bert.King_android 数据库选择

网络 3367

到目前为止,Android可以使用的数据库大概有以下几种:

SqliteHelperOrmliteGreenDaoDBFlowRealmObjectBoxRoom


虽然很多优秀的库都已经淹没在历史长河中,但并不能遮盖其曾经的辉煌,But我们只讨论常用的…


1. GreenDao 和 ObjectBox 的关系:

As we all know, GreenDao 和 ObjectBox 都出自于Square公司。

但是在 GreenDao Repo 的使用开头有这样一句话:

Check out our new mobile database ObjectBox (GitHub repo).

ObjectBox is a superfast object-oriented database with strong relation support. ObjectBox is embedded into your Android, Linux, macOS, or Windows app.

这不是摆明让我们使用ObjectBox嘛,— “赤裸裸的威胁”。

ObjectBox 是最快的对象型数据库。(PS: 真香!)

官方还贴心地为我们提供了 DaoCompat ,使我们可以快捷地从GreenDao切换到ObjectBox。

IAW, 抓紧用ObjectBox吧


2. Realm 和 ObjectBox,Room如何选择?

Realm, ObjectBox or Room. Which one is for you? 通过这篇文章,我们可以得出以下结论:

速度:ObjectBox > Realm > Room. 所占包体积:Realm(3.5M)> ObjectBox(1.5M) > Room(50KB).

如果我们更加注重速度:ObjectBox 无疑是最佳选择。 如果我们更加注重体积:Room 绝对是首选方案。

另外,在数据库存储时,安全性往往是我们不能忽略的一个因素。Realm提供了完备的功能,使我们方便快捷的解决安全性问题。


3. 如何解决 ObjectBox 和 Room的安全性问题?

SQL-Cipher扩展了Sqlite的功能,QLCipher需要重新编译SQLite,其本质上是SQLCipher对整个数据库文件加密。

详细内容可参考:android Jetpack Room之数据库加密

至于ObjectBox,目前来看,只能自己在存/取实现,或者等待官方支持。


4. Why not Room?

Room持久性库提供了SQLite的抽象层,以便在充分利用SQLite的同时允许流畅的数据库访问。编译器自动帮我检查SQL语句的语法问题。

Room 所占体积非常小(about 50KB)。

项目中有一个需求:限制数据库中的条目数

Room官方没有提供相应的API,需要自己去实现。

详细请参考:Limit the number of rows in Room

最后,Room为我们提供了完善的数据库升级方案。(ObjectBox更加强大)


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #数据库选择 #greendao # #ObjectBox #的关系As #We