504 字
3 分钟
FMDB与WCDB
2020-10-13
2026-10-12

参考: https://cloud.tencent.com/developer/article/1005718 微信团队 http://blog.devtang.com/2012/04/22/use-fmdb/ 在iOS开发中使用FMDB

兼容性#

  • 都是基于SQLite的所有数据库是可以兼容的,迁移的话需要重新封装项目的数据库工具

性能#

  1. 读写
  • SQLite的 速度已经很快了,FMDB之做了最简单的封装,WCDB还做了ORM等封装,所以有了更多的步骤,性能稍劣于FMDB5%(官方给出的数据)
    • 优于多携程读的优势,可以和FMDB持平了
  • 写操作通常是性能的瓶颈,做了针对性优化使WCDB写操作优于FMDB28%,批量写优于180%
  • 多线程读写优于FMDB62%
  • 多线程写FMDB直接返回错误SQLITE_BUSY,无法完成
  1. 初始化
  • SQLite连接的初始化速度会随着数据库内表的数量增加而逐渐上升,WCDB也针对这个场景做了优化.相较于没有优化的FMDB,WCDB的初始化速度有107%的性能优势

ORM#

Object Relational Mapping

有了ORM开发维护成本大大降低

数据库升级#

  • SQLite 的数据库升级一直是一个比较繁杂的问题
  • 通常的做法是,开发者自行定义一个版本号,并保存下来。数据库创建时每次检查版本号,若版本号较低,则对其字段进行升级,并更新版本号。但在多个版本的增增减减之后,版本的处理逻辑会越来越复杂,甚至可能弄错表内哪些字段是新增的,哪些是废弃的
  • WCDB将数据库升级和ORM结合起来,对于需要增删改的字段,只需直接在ORM层面修改,并再次调用 createTableAndIndexesOfName:withClass:接口即可自动升级

总结#

与 FMDB 对比, WCDB 使得开发者可以写更少的代码,但能获得更高的性能。 开发者不需要额外关注数据库升级和多线程操作的问题。同时, WCDB 还提供了加密、统计、修复等功能。