Android数据库选择恐惧症

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

  1. SqliteHelper
  2. Ormlite
  3. GreenDao
  4. DBFlow
  5. Realm
  6. ObjectBox
  7. Room


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


1. GreenDao 和 ObjectBox 的关系:

As we all know, GreenDaoObjectBox 都出自于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更加强大)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值