前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >键值数据库LevelDB的优缺点及性能分析

键值数据库LevelDB的优缺点及性能分析

作者头像
IT阅读排行榜
发布2022-01-20 14:23:21
3.4K0
发布2022-01-20 14:23:21
举报
文章被收录于专栏:华章科技华章科技

导读:LevelDB是一种为分布式而生的键-值数据库。

作者:廖环宇 张仕华

来源:大数据DT(ID:hzdashuju)

01 LevelDB的特性

LevelDB是一个C++语言编写的高效键-值嵌入式数据库,目前对亿级的数据也有着非常好的读写性能。虽然LevelDB有着许多键-值数据库所不具备的优秀特性,但是与Redis等一些主流键-值数据库相比也有缺陷。本节将对LevelDB的优缺点进行具体阐述。

LevelDB的优点体现在:

  • key与value采用字符串形式,且长度没有限制;
  • 数据能持久化存储,同时也能将数据缓存到内存,实现快速读取;
  • 基于key按序存放数据,并且key的排序比较函数可以根据用户需求进行定制;
  • 支持简易的操作接口API,如Put、Get、Delete,并支持批量写入;
  • 可以针对数据创建数据内存快照;
  • 支持前向、后向的迭代器;
  • 采用Google的Snappy压缩算法对数据进行压缩,以减少存储空间;
  • 基本不依赖其他第三方模块,可非常容易地移植到Windows、Linux、UNIX、Android、iOS。

LevelDB的缺点体现在:

  • 不是传统的关系数据库,不支持SQL查询与索引;
  • 只支持单进程,不支持多进程;
  • 不支持多种数据类型;
  • 不支持客户端-服务器的访问模式。用户在应用时,需要自己进行网络服务的封装。

读者可以综合LevelDB的优缺点,有针对性地评估其是否适用于实际开发的项目/产品,并对最终是否使用进行决定。

02 LevelDB的性能分析

在LevelDB的源码中,笔者写了一段用于测试LevelDB性能的代码(db_bench.cc)。经过编译后,生成用于性能测试的可执行程序db_bench。通过运行该性能测试程序,用户能直观地了解LevelDB在海量数据读写方面的性能。

可为测试程序db_bench指定相关测试参数,也可以选择默认参数。db_bench在默认的测试参数下读写百万级别的数据时,每一个数据的key占用16字节,value占用100字节(启用压缩后,value占用50字节,即压缩率为50%)。

db_bench主要针对读与写两个方面进行测试。写性能测试项具体如下。

  • Fillseq:以顺序写的方式创建一个新的数据库。
  • Fillrandom:以随机写的方式创建一个新的数据库。
  • Overwrite:以随机写的方式更新数据库中某些存在的key的数据。
  • Fillsync:每一次写操作,均将数据同步写到磁盘中才算操作完成;而对于上述3种其他的写操作,只是将需要写的数据送入操作系统的缓冲区就算成功。

读性能测试项具体如下。

  • Readrandom:以随机的方式进行查询读。
  • Readseq:按正向顺序读。
  • Readreverse:按逆向顺序读。

在终端中输入命令执行db_bench,测试程序即可进行相应的读写操作,并记录相应的性能数据。

代码语言:javascript
复制
$ ./db_bench

针对上述的几个测试项,表1-1对比了LevelDB官方发布的与笔者实际测试的结果。两者硬件测试环境不同,因而相应测试项的数据也不相同。但总体而言,可以得知LevelDB读写性能的优异。

▼表1-1 LevelDB测试数据

此外,为了更好地测试比较LevelDB的实际性能,Google的工程师也将LevelDB与另外两种数据库(SQLite3和Kyoto TreeDB)进行了对比。经过测试证明,LevelDB相较于另外两种数据库,无论是在基本操作环境下,还是在某些特定配置环境下,均具有非常优秀的读写性能。

具体测试结果,可以参见源码中的leveldb/doc/benchmark.html。

关于作者:廖环宇,中南大学硕士、阿里云高级算法专家与工业大脑算法团队负责人,长期致力于人工智能算法与工业大数据技术的研究和实践,主导过许多大型数据智能平台的开发与应用。

张仕华,贝壳找房资深软件开发工程师,毕业于北京科技大学,曾就职于360、滴滴。热衷源码研究与探究技术本质,合著有《Redis 5设计与源码分析》。

本文摘编自《精通LevelDB》,经出版方授权发布。(ISBN:9787111693260)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据DT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档