LevelDB简介
LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般。适用场景是查询较少,而写很多的场景。LevelDB应用了LSM(Log Structured Merge)策略,LSM_TREE 对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效的将更新迁移到磁盘,降低索引插入开销。
根据LevelDB官方网站的描述,LevelDB的特点和限制如下:
特点:
- key和value都是任意长度的字节数组;
- 数据根据key有序存储;
- 调用者可以提供自定义比较功能来覆盖排序顺序;
- 基本操作是Put(key,value),Get(key),Delete(key);
- 多个更改操作可以作为一个原子操作进行;
- 用户可以创建一个瞬时快照,以获得一致的数据视图;
- 在数据上支持向前和向后迭代;
- 适用Snappy压缩库自动压缩数据;
- 外部活动(如文件系统操作等)通过虚拟接口进行中继,因此用户可以自定义与操作系统的交互。
限制:
- 这不是SQL数据库。它没有关系数据模型,它不支持SQL查询,并且它不支持索引。
- 在同一时刻只能有一个进程(可能是多线程)访问一个特定的数据库;
- 在库中没有内置客户端-服务器支持。需要这种支持的应用程序将不得不将自己的服务器包装在库中。