Google leveldb简介

作者: 52xpz | 来源:发表于2017-04-17 17:58 被阅读673次

    一、Google leveldb是Google两位大神Sanjay Ghemawat、Jeff Dean用C++写的开源key-value数据库,提供如下功能:

    1、以任意字节序列存储key和value。

    2、数据默认以key的字典序排序。

    3、可以提供自定义的排序方法来排序key。

    4、增删改查操作方法。Put(key,value)(增加、修改),Get(key)(查找),Delete(key)(删除)。

    5、支持事务机制。

    6、支持数据库快照功能。

    7、支持前向和后向遍历数据。

    8、默认线程安全(除了WriteBatch等操作)。

    9、数据默认用 Snappy compression library压缩存储。

    10、可以定制文件等系统操作。

    11、读写操作支持cache。默认8MB,cache基于LRU实现。

    12、读操作支持数据校验,写操作支持同步和异步模式。

    13、对于写操作多于读操作的业务,leveldb很适合。leveldb不是关系型数据库,所以不支持SQL查询操作。

    Google开源的东西质量还是值得信赖的,leveldb非常适合用来在移动端存储数据,具体用法参见leveldb github。Objective-LevelDB就是leveldb的OC封装库。

    二、Objective-LevelDB封装了leveldb所有功能,并且方法跟NSDictionary方法类似,用起来非常方便。功能如下:

    1、支持通过数据库名创建数据库。

    2、支持自定义数据序列化和反序列化方法。默认以NSKeyedArchiver/NSKeyedUnarchiver来序列化和反序列化value。通过配合使用MJExtension来提供model的序列化和反序列化,用来来会非常爽。

    3、类似于NSDictionary的方法。setObject、setValue、objectForKey、valueForKey、removeObjectForKey、enumerateKeysUsingBlock邓方法。

    4、支持枚举。enumerate开头的方法用来枚举key和value,支持通过key前缀来过滤value集合,支持通过NSPredicate来过滤集合。

    5、快照封装。LDBSnapshot类封装了快照功能。

    6、事务操作封装。LDBWriteBatch类封装了事务操作,支持批量写入。

    具体使用参见github。

    三、我们在封装数据库操作的时候需要考虑的点基本如下:

    1、业务层跟数据库交互方式。业务层直接调用数据库操作方法,还是需要增加一个中间层?一般推荐增加中间层。

    2、model的序列化和反序列化。能像coredata一样直接存储一个model吗?。

    3、线程安全支持。多线程操作数据库是否安全?

    4、cache机制支持。是否支持读操作cache?

    5、数据迁移支持。数据迁移是否很方便调用?

    6、事务机制支持。如果是SQL,原生支持事务,像leveldb支持批量写入。

    本着不重复造轮子的思想,在iOS中可以选用realm(支持iOS、Andriod)、CoreData、GYDataCenter(微信读书基于FMDatabase的封装库)、Objective-LevelDB来做数据存储。

    相关文章

      网友评论

        本文标题:Google leveldb简介

        本文链接:https://www.haomeiwen.com/subject/xgnpettx.html