FMDB与WCDB
FMDB与WCDB
参考:
https://cloud.tencent.com/developer/article/1005718 微信团队
http://blog.devtang.com/2012/04/22/use-fmdb/ 在iOS开发中使用FMDB
兼容性
- 都是基于
SQLite的所有数据库是可以兼容的,迁移的话需要重新封装项目的数据库工具
性能
- 读写
SQLite的 速度已经很快了,FMDB之做了最简单的封装,WCDB还做了ORM等封装,所以有了更多的步骤,性能稍劣于FMDB5%(官方给出的数据)- 优于多携程读的优势,可以和
FMDB持平了
- 优于多携程读的优势,可以和
- 写操作通常是性能的瓶颈,做了针对性优化使
WCDB写操作优于FMDB28%,批量写优于180% - 多线程读写优于
FMDB62% - 多线程写
FMDB直接返回错误SQLITE_BUSY,无法完成
- 初始化
SQLite连接的初始化速度会随着数据库内表的数量增加而逐渐上升,WCDB也针对这个场景做了优化.相较于没有优化的FMDB,WCDB的初始化速度有107%的性能优势
ORM
Object Relational Mapping
有了ORM开发维护成本大大降低
数据库升级
SQLite的数据库升级一直是一个比较繁杂的问题- 通常的做法是,开发者自行定义一个版本号,并保存下来。数据库创建时每次检查版本号,若版本号较低,则对其字段进行升级,并更新版本号。但在多个版本的增增减减之后,版本的处理逻辑会越来越复杂,甚至可能弄错表内哪些字段是新增的,哪些是废弃的
WCDB将数据库升级和ORM结合起来,对于需要增删改的字段,只需直接在ORM层面修改,并再次调用createTableAndIndexesOfName:withClass:接口即可自动升级
总结
与 FMDB 对比, WCDB 使得开发者可以写更少的代码,但能获得更高的性能。
开发者不需要额外关注数据库升级和多线程操作的问题。同时, WCDB 还提供了加密、统计、修复等功能。

