首页 > *nix技术 > RocksDB试用

RocksDB试用

2020年3月14日 发表评论 阅读评论 221 次浏览

RocksDB是FaceBook开放的一种嵌入式、持久化存储、KV型的高性能嵌入式存储引擎。
RocksDB的内核数据结构是基于LSM树(日志结构合并树(Log-Structured Merge-Tree))实现的,因此它的特点是支持高效的点查找以及范围扫描、支持高速写入等。RocksDB目前也可以作为MongoDB的底层数据存储引擎,适合大量的写操作场景。

传统关系型数据库使用BTree或一些变体作为存储结构,能高效进行查找,但保存在磁盘中时它也有一个明显的缺陷,那就是逻辑上相离很近但物理却可能相隔很远,这就可能造成大量的磁盘随机读写。LSM树能让我们进行顺序写磁盘,从而大幅提升写操作,作为代价的是牺牲一些读性能。因此,如果写多读少的应用场景,RocksDB比较适合,比如海量日志记录。

下面试用一下RocksDB,目前RocksDB通过库文件来通过数据存储服务。

一,测试环境
$ cat /etc/issue
Ubuntu 18.04.3 LTS \n \l
$ uname -a
Linux lenky-virtual-machine 5.0.0-27-generic #28~18.04.1-Ubuntu SMP Thu Aug 22 03:00:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

二,源码编译
1,下载源码:
$ wget https://github.com/facebook/rocksdb/archive/v6.6.4.tar.gz
$ tar xf rocksdb-6.6.4.tar.gz
$ cd rocksdb-6.6.4/
$ make static_lib
$ cd examples/
$ make all

三,程序测试
例子程序已经编译出来了,直接执行./simple_example,什么输出也没有。
$ ./simple_example
查看simple_example.cc源码,它只是在做读写数据测试,正常情况下本来就什么也不输出。改一下代码:
将37行改为:

  assert(value == "value1");

也是写入”value”,读出来后与”value1″进行断言比较,重新编译执行后肯定要报错才对:
$ ./simple_example
simple_example: simple_example.cc:37: int main(): Assertion `value == “value1″‘ failed.
Aborted (core dumped)

程序./simple_example里有指定数据库存储位置kDBPath在/tmp/rocksdb_simple_example,在这个目录下就可以看到各个相关持久化数据文件。

从使用方式上而言,RocksDB类似于SQLite,但SQLite存储的是关系型数据,RocksDB是KV数据,而且RocksDB在性能,多核支持等方面肯定更强劲。因此,如果有类似于使用SQLite这样的场景,但又需要存储KV数据,不妨可以试试RocksDB。

四,其他
RocksDB也可以作为存储引擎嵌入其他DB Server里,比如MySQL,Redis等,这样用户程序就可以使用DB Server的众多其他服务,比如集群、备份等,而不仅仅只是数据存储服务。

基于MySQL的RocksDB:https://github.com/facebook/mysql-5.6

http://myrocks.io/

兼容Redis协议的RocksDB:https://github.com/meitu/kvrocks

参考资料:

https://rocksdb.org.cn/

https://github.com/facebook/rocksdb

转载请保留地址:http://www.lenky.info/archives/2020/03/2714http://lenky.info/?p=2714


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

分类: *nix技术 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.