kv引擎是提供对kv数据结构高性能读写的组件,通常嵌入其他DB server中提供从磁盘读写kv数据的一系列解决方案。
DB的数据模型通常分为,KV,表模型,文档模型,列存储,图模型。后四种从理论上都是可以由kv模型构建起来的。因此kv引擎成为现代很多nosql 数据库的底层存储引擎。旨在提供高性能的读写系统。kv引擎通常的数据结构是LSM的实现,天然对写入的高吞吐,是各种在线及分析型DB的理想选择。总结起来就是当今的各种分布式数据库都是以KV作为底层存储模型,在计算层映射为其目标存储模型的。可以说 一切皆kv。
工业上,levelDB,rocksDB,badger 是比较知名的kv存储引擎。TIDB(分布式关系型)底层封装rocksDB,influxDB(时序数据库)早期使用leveldb,MangoDB(文档数据库)底层也是kv存储,Dgraph(图数据库)底层使用badger作为存储,Hbase(列存储数据库)存储在分布式文件系统上的KV模型,以及在大型互联网公司会自研分布式kv数据库以支持大规模的在线读写请求(缓存,以及索引),等价实现Redis协议,将底层内存存储换成分布式的RocksDB等持久化存储引擎,例如picak数据库。
从文档中了解,项目所要解决的问题是什么,这个项目的意义是什么,了解足够的背景知识。
badger主要解决的是单机高性能的进行磁盘IO来读写kv数据并提供完善的api应对各种场景,同时badger将对于其他kv引擎来说其优势就是实现了whiskery论文,更加充分发挥ssd的优势,同时badger也是专门为了Dgraph这个图数据库开发的项目,为了解决go语言cgo调用rocksDB的复杂问题。
通常在文档或者wiki中会说明该项目参考了哪些经典资料,总能追溯到某个论文或者文章作为作者的灵感来源,找到一篇或多篇这样的文章仔细研读。
找到官方使用的例子,查看这个项目是如何被使用的。