Google-LevelDB简介

LevelDB简介

LevelDB一句话描述 LevelDB是google开发的,一个速度非常块的KV存储库(storage library),它支持字符串的key与字符串的value,并且这种映射关系按key排序(ordered mapping)。

LevelDB的十大特性 1)key和value可以是字符串或者字节流 2)数据按key排列,有序存储 3)调用方可以重载排序方法,以实现自定义排序 4)基本操作只有3种: 4.1)Put(key, value) 4.2)Get(key) 4.3)Delete(key) 5)提供原子批量修改接口 6)支持数据快照 7)支持向前和向后的迭代器 8)支持数据自动压缩,使用的是snappy压缩算法 9)和操作系统之间的外部交互是通过虚接口(virtual interface)来进行,这样用户就能定制化这些交互了 10)开源,源码里的文档相当详尽哟

LevelDB的局限性 1)LevelDB不是一个SQL数据库,没有关系型的存储模型,不支持SQL语句,不支持索引 2)同时只能有一个进程(当然,这个进程可以是多线程的)访问一个特定的数据库 3)LevelDB只是一个lib库,没有实现什么client-server网络通讯什么的,当然用户可以自己将lib包装一层,实现自己的server

LevelDB的性能 测试库共100w行记录,每条记录16字节的key,100字节的value,压缩后的value大概50字节 写性能 顺序写:平均每次操作耗时1.765微秒,即支持每秒大概55w次顺序写操作 顺序写+每次都刷盘:平均每次操作耗时268.409微妙,即支持每秒大概3700次的刷盘写操作 随即写:平均每次操作耗时2.460微秒,即支持每秒大概40w次随机写操作 更新写:平均每次操作耗时2.380微秒,性能和随机写差不多 读性能 随机读:平均每次操作耗时16.677微秒,即支持每秒大概6w次随机读操作 顺序读:平均每次操作耗时0.476微秒,即支持每秒大概210w次顺序读操作 逆序读:平均每次操作耗时0.724微秒,即支持每秒大概130w次逆序读操作 上述性能都是在没有打开“压缩”功能下的结果,如果打开“压缩”选项,性能会有所提升,例如随机读性能会提升至11.602微秒,即8.5w次每秒

另:google非常诚实的提到,由于100w行的数据量很小,这些数据是能够完全放入内存里的哈

原文发布于微信公众号 - 架构师之路(road5858)

原文发表时间:2014-10-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏圣杰的专栏

ASP.NET Core 中断请求了解一下(翻译)

假设有一个耗时的Action,在浏览器发出请求返回响应之前,如果刷新了页面,对于浏览器(客户端)来说前一个请求就会被终止。而对于服务端来说,又是怎样呢?前一个请...

14630
来自专栏恰童鞋骚年

设计模式的征途—1.单例(Singleton)模式

  单例模式属于创建型模式的一种,创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛。创建型模式将对象的创建和使用分离,在使用对象时无需关心对象的创建细...

14420
来自专栏网络

HttpClient使用心得

做过Java web开发的朋友们,应该大部分都用过Apatch HttpClient工具类库,最近在维护公司一个老项目时,遇到了由于HttpClient使用不当...

40790
来自专栏丑胖侠

《Drools7.0.0.Final规则引擎教程》第4章 global全局变量

global 全局变量 global用来定义全局变量,它可以让应用程序的对象在规则文件中能够被访问。通常,可以用来为规则文件提供数据或服务。特别是用来操作规则执...

32160
来自专栏进击的程序猿

The Clean Architecture in PHP 读书笔记(四)The Clean Architecture in PHP 读书笔记(四)

上篇最重要的是介绍了去耦的工具之一设计原则SOLID,本篇将继续介绍去耦工具:依赖注入。

7810
来自专栏我的技术专栏

Socket编程(4)TCP粘包问题及解决方案

12930
来自专栏大内老A

WCF后续之旅(6): 通过WCF Extension实现Context信息的传递

在上一篇文章中,我们讨论了如何通过CallContextInitializer实现Localization的例子,具体的做法是将client端的culture通...

21270
来自专栏熊二哥

快速入门系列--MVC--05行为

    Action执行包含内容比较多,主要有同步/异步Action的概念和执行过程,Authorationfilter, ActionFiltor, Resu...

20070
来自专栏技术博客

一步一步学Linq to sql(七):并发与事务

为了看起来清晰,我已经事先把所有分类为1产品库存修改为相同值了。然后执行下面的程序:

9430
来自专栏逆向技术

16位汇编第三讲 分段存储管理思想

      内存分段 一丶分段(汇编指令分段) 1.为什么分段?   因为分段是为了更好的管理数据和代码,就好比C语言为什么会有内存4区一样,否则汇编代码都写...

21460

扫码关注云+社区

领取腾讯云代金券