在之前的iOS Socket重构设计里面我有提到我们使用了FMDB做消息缓存,在数据库选型方面,我们西兰花也对目前比较流行和成熟的Realm
、FMDB
和Core Data
做了调查,里面包括了安装、使用和性能比较,是个不错的参考例子
在选型时,我们应该多选取几个作为对比,从使用方面评估学习成本,通过测试不同数据库操作来比较性能差异,了解有哪些大型的App使用了该数据库以及评价来侧面说明该数据库的成熟度和在使用过程中出现的问题,最后根据自己实际的业务需求来选型
在选定使用FMDB
之后,我也只是简单的了解下FMDB
的使用,并未对内部的实现和设计思路做深入了解,但是在阅读了代码之后,FMDB
确实像其他博客里面提到的那样,是对原生的SQLite API进行了包装,暴露出相对友好的对外接口,只需传入SQL语句即可(但是对于习惯于使用Model操作的我们来说,直接写SQL语句还是比较麻烦的,所以GitHub上也就库对FMDB
进行了封装,省去写SQL语句,直接对Model进行操作),并且FMDB
内部对SQL语句进行了缓存,再配合上多线程并发执行,在提高效率方面做了不少的优化,另外还扩展了内存/文件的IO操作和虚表的操作
下面我会将API使用和源码结合起来讲,方便了解FMDB
以及对复习下原生的SQLite API