![精通LevelDB](https://wfqqreader-1252317822.image.myqcloud.com/cover/398/41600398/b_41600398.jpg)
1.2 LevelDB的诞生过程
本书主角LevelDB就是一种为分布式而生的键-值数据库。
Google在分布式系统领域一直走在当今世界的前沿。早在2004年,Google开始研发一种结构化的分布式存储系统,该分布式存储系统可扩展至PB级别的数据和数千台机器,这一系统就是后来风靡全球的Bigtable。Bigtable性能强悍,具有高扩展性与高可用性,在Google内部已应用到60多个产品与项目(截至本书完稿时),比如Google Earth和Google Analytics。目前Bigtable是公认为的Google三大核心技术之一(另外两个分别为GFS与MapReduce)
2006年,Google发表了一篇论文——Bigtable: A Distributed Storage System for Structured Data。这篇论文公布了Bigtable的具体实现方法(包括基本原理与技术架构),从而揭开了Bigtable的技术面纱。Bigtable虽然也有行、列、表的概念,但不同于传统的关系数据库,从本质上讲,它是一个稀疏的、分布式的、持久化的、多维的排序键-值映射。
虽然Google公布了Bigtable的实现论文,但Google产品中所使用的Bigtable依赖于Google其他项目所开发的未开源的库,Google一直没有将Bigtable的代码开源。然而这一切在2011年迎来了转机。Sanjay Ghemawat和Jeff Dean这两位来自Google的重量级工程师,为了能将Bigtable的实现原理与技术细节分享给大众开发者,于2011年基于Bigtable的基本原理,采用C++开发了一个高性能的键-值数据库——LevelDB。由于没有历史的产品包袱,LevelDB结构简单,不依赖于任何第三方库,具有很好的独立性,虽然其有针对性地对Bigtable进行了一定程度的简化,然而Bigtable的主要技术思想与数据结构均在LevelDB予以体现了。因此LevelDB可看作Bigtable的简化版或单机版。
LevelDB诞生时,源码托管在Google自家的源码管理平台,后来迁移到目前最流行的开源社区GitHub上(https://github.com/google/leveldb)。经过多年的发展,LevelDB已成为GitHub上关注人数较多的C++开源项目之一。截至目前(2021年1月),LevelDB发布的稳定版为1.22。在Google产品线中,Chrome浏览器中涉及的IndexedDB(基于HTML5 API的数据库),就是基于LevelDB构建而成的。Riak分布式数据库也采用LevelDB作为其节点的存储引擎。