你不知道的LevelDB.docx

上传人:lao****ou 文档编号:82482 上传时间:2023-02-15 格式:DOCX 页数:5 大小:110.88KB
下载 相关 举报
你不知道的LevelDB.docx_第1页
第1页 / 共5页
你不知道的LevelDB.docx_第2页
第2页 / 共5页
你不知道的LevelDB.docx_第3页
第3页 / 共5页
你不知道的LevelDB.docx_第4页
第4页 / 共5页
你不知道的LevelDB.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《你不知道的LevelDB.docx》由会员分享,可在线阅读,更多相关《你不知道的LevelDB.docx(5页珍藏版)》请在第一文库网上搜索。

1、你不知道的LevelD导读:你也许没听说过LevelDB,但是你一定应该听过Bigtableo简单说,LevelDB = Bigtable 单机版,谷歌大神 Jeff Dean 与 Sanjay Ghemawat 开发并开源。LevelDB的诞生过程LevelDB就是一种为分布式而生的键值数据库。Google在分布式系统领域一直走在当今世界的前沿。早在2004年,Google开始研发一种结构化的分布式存储系统,该分布式存储系统可扩展至PB级别的数据和数千台机器,这一系统就是后来风靡全球的Bigtable。Bigtable性能强悍,具有高扩展性与高可用性,在Google内部已应用到60多个产品与

2、项目,比如Google Earth 和 Google Analyticso 目前 Bigtable 是公认为的 Google 三大核心技术之一(另外两个分别为GFS与MapReduce )2006 年,Google 发表了一篇论文Bigtable: A Distributed Storage Systemfor Structured Datao这篇论文公布了 Bigtable的具体实现方法(包括基本原理与技术架构),从而揭开了 Bigtable的技术面纱。Bigtable虽然也有行、歹人表的概念,但不同于传统的关系数据库,从本质上讲,它是一个稀疏的、分布式的.持久化的.多维的排序犍值映射。虽然

3、Google公布了 Bigtable的实现论文,但Google产品中所使用的Bigtable依赖于Google其他项目所开发的未开源的库,Google 一直没有将Bigtable的代码开源。然而这一切在2011年迎来了转机。Sanjay Ghemawat和Jeff Dean这两位来自Google的重量级工程师,为了能将Bigtable的实现原理与技术细节分享给大众开发者,于2011年基于Bigtable的基本原理,采用C + +开发了一个高性能的键-值数据库一一LevelDBo由于没有历史的产品包袱,LevelDB结构简单,不依赖于任何第三方库,具有很好的独立性,虽然其有针对性地对Bigtab

4、le进行了一定程度的简化,然而Bigtable的主要技术思想与数据结构均在LevelDB予以体现了。因此LevelDB可看作Bigtable的简化版或单机版。LevelDB诞生时,源码托管在Google自家的源码管理平台,后来迁移到目前最流行的开源社区 GitHub 上( )。经过多年的发展,LevelDB已成为GitHub上关注人数较多的C + +开源项目之一。截至目前(2021年1月)XevelDB发布的稳定版为1.22。在Google产品线中,Chrome浏览器中涉及的IndexedDB (基于HTML5 API的数据库),就是基于LevelDB构建而成的。Riak分布式数据库也采用Le

5、velDB作为其节点的存储引擎。LevelDB的性能分析在LevelDB的源码中,笔者写了 一段用于测试LevelDB性能的代码(db_bench.cc )。经过编译后,生成用于性能测试的可执行程序db_bencho通过运行该性能测试程序,用户能直观地了解LevelDB在海量数据读写方面的性能。可为测试程序db_bench指定相关测试参数,也可以选择默认参数。db.bench在默认的测试参数下读写百万级别的数据时,每一个数据的key占用16字节,value占用100字节(启用压缩后,value占用50字节,即压缩率为50% )。db.bench主要针对读与写两个方面进行测试。写性能测试项具体如

6、下。Fillseq :以顺序写的方式创建一个新的数据库。Fillrandom :以随机写的方式创建一个新的数据库。Overwrite :以随机写的方式更新数据库中某些存在的key的数据。Fillsync :每一次写操作,均将数据同步写到磁盘中才算操作完成;而对于上述3种其他的写操作,只是将需要写的数据送入操作系统的缓冲区就算成功。读性能测试项具体如下。Readrandom :以随机的方式进行查询读。Readseq :按正向顺序读。Readreverse :按逆向顺序读。在终端中输入命令执行db.bench ,测试程序即可进行相应的读写操作,并记录相应的性能数据。$ /db_bench针对上述的

7、几个测试项,表1-1对比了 LevelDB官方发布的与笔者实际测试的结果。两者硬件测试环境不同,因而相应测试项的数据也不相同。但总体而言,可以得知LevelDB读写性能的优异。表1-1 LevelDB测试数据测试项官方结果(”/op)笔者测试(us/op)Fillseq1.73.263Fillsync268.40955.34Fillrandom2.464.115Overwirte2.384.242Readrandom16.6774.306Readseq0.4760.194Readreverse0.7240.348 LevelDB 官方测试平台为 CPU : 4 x Intel ( R) Cor

8、e (TM) 2 Quad CPU Q66(X) 2.40GHz, CPUCache :4096 KB 笔者采用的硬盘测试平台为 15 寸 MacBook Pro with Retina 2015 ( CPU : Intel Core i7 2.2GHz : 16GB内存,256GB SSD硬盘)此外 为了更好地测试比较LevelDB的实际性能,Google的工程师也将LevelDB与另外两种数据库(SQLite3和Kyoto TreeDB )进行了对比。经过测试证明,LevelDB相较于另外两种数据库,无论是在基本操作环境下,还是在某些特定配置环境下,均具有非常优秀的读写性能。具体测试结果,可以参见源码中的leveldb/doc/benchmark.htmlo-END -

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服