我依然爱iOS程序员首页投稿(暂停使用,暂停投稿)

Realm、WCDB与SQLite移动数据库性能对比测试

2017-11-27  本文已影响155人  Cloudox_

一、数据库介绍

SQLite 3 比较常见不予赘述。

Realm 是由Y Combinator孵化的创业团队开源出来的一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。目前最新版是Realm 2.0.2,支持的平台包括Java,Objective-C,Swift,React Native,Xamarin。

优势:兼顾iOS和Android两个平台;简单易用,学习成本低;提供了一个轻量级的数据库查看工具,开发者可以查看数据库当中的内容,执行简单的插入和删除数据的操作。

Realm支持事务,满足ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

WCDB 是微信推出的一个高效、完整、易用的移动数据库框架,基于SQLCipher(an SQLite extension that provides 256 bit AES encryption of database files.),支持iOS, macOS和Android。易用,支持事务,可加密、损坏修复。

二、测试数据表结构

Student表。
字段:ID、name、age、money。


image.png

其中age为0~100随机数字,money为每一万条数据中,0~10000各个数字只出现一次。

三、测试数据

对于以下测试数据,只是给出一次测试后的具体数值供参考,经过反复测试后的,基本都在这个时间量级上。

这里测试用的是纯SQLite,没有用FMDB。

SQLite3:

realm:

WCDB:

三者对比:

image.png

由于Realm单次事务操作一万次耗时过长,图表中显示起来也就没有了意义,因此下面图中Realm的耗时是按照事务批量操作耗时来记录的,实际上WCDB的插入操作是优于Realm的。

image image

从结果来看,Realm似乎必须用事务,单条插入的性能会差很多,但是用事务来批量操作就会好一些。按照参考资料[3]中的测试结果,Realm在插入速度上比SQLite慢,比用FMDB快,而查询是比SQLite快的。

而WCDB的表现很让人惊喜,其插入速度非常快,以至于比SQLite都快了一个量级,要知道WCDB也是基于SQLite扩展的。WCDB的查询速度也还可以接受,这个结果其实跟其官方给出的结果差不多:读操作基本等于FMDB速度,写操作比FMDB快很多。

四、Realm优缺点

优点:

缺点:

五、WCDB优缺点

优点:

实际体验后,WCDB的代码体验非常好,代码量基本等于Realm,都是SQLite的一半,在风格上比Realm更接近于OC原本的风格,基本已经感受不到是在写数据库的SQL操作。并且其查询语句WINQ也写的很符合逻辑,基本都可以一看就懂,甚至不需要你了解SQL语句。整个开发流程下来非常流畅,除了配置环境时出了问题并且没有资料参考只能自己猜着解决外,代码基本是一气呵成写完完美运行的。

缺点:

最明显的缺点是其相关资料太少了,毕竟6月初才正式开源,大家可能还在体验阶段,不敢随便上项目,不过其提供了QQ群答疑,而且看了一下代码提交记录,更新很频繁,对于腾讯内部使用来说应该有问题会得到更快解决。

贴一份评论:

image

六、结

测试过后,感觉还是比用FMDB方便很多,其中又以WCDB更为推崇,Realm其实也不错,如果是一些新创建的中小型工程,也可以尝试,WCDB刚开源不久,可能还会有一些坑,不过毕竟微信那边出品的,你问我支持不支持我当然是支持的。

需要注意的是如果是老工程想换新数据库,那么需要注意一些数据库迁移的问题,这中间必然存在一些阵痛,此外,Realm和WCDB都会用到自有的Model类来作为表结构。

刚刚上手,如果有哪里有问题或者疏漏,请多多指教。

参考资料

[1] Realm数据库 从入门到“放弃”: http://www.jianshu.com/p/50e0efb66bdf

[2] Realm中文官方文档:https://realm.io/cn/docs/objc/latest/#section

[3] 移动端数据库新王者:realm(可以看看这篇博客的评论部分,看看坑) http://www.jianshu.com/p/2b4388cf2a2d

[4] realm之于iOS https://zhuanlan.zhihu.com/p/23556740

[5] Core Data, FMDB, Realm 性能测试 http://suree.org/2015/09/29/DatabaseThink/

[6] WCDB 官方说明 https://github.com/Tencent/wcdb/wiki

[7] WCDB 官方iOS使用说明 https://github.com/Tencent/wcdb/wiki/iOS+macOS使用教程

[8] WCDB 官方与FMDB性能对比 https://github.com/Tencent/wcdb/wiki/性能数据与Benchmark


查看作者首页

上一篇 下一篇

猜你喜欢

热点阅读