Contents
  1. 1. FMDB与WCDB
    1. 1.1. 兼容性
    2. 1.2. 性能
    3. 1.3. ORM
    4. 1.4. 数据库升级
    5. 1.5. 总结

FMDB与WCDB

参考:
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 还提供了加密、统计、修复等功能。

Contents
  1. 1. FMDB与WCDB
    1. 1.1. 兼容性
    2. 1.2. 性能
    3. 1.3. ORM
    4. 1.4. 数据库升级
    5. 1.5. 总结