From 541b57faf172890d10224e3592d990ff762d806d Mon Sep 17 00:00:00 2001 From: zeekling Date: Sat, 23 Sep 2023 14:41:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0roscksdb=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rocksdb/readme.md | 44 -------------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 rocksdb/readme.md diff --git a/rocksdb/readme.md b/rocksdb/readme.md deleted file mode 100644 index 39a9a6c..0000000 --- a/rocksdb/readme.md +++ /dev/null @@ -1,44 +0,0 @@ -## 简介 - -RocksDB是一个高性能、可扩展、嵌入式、持久化、可靠、易用和可定制的键值存储库。它采用LSM树数据结构,支持高吞吐量的写入和快速的范围查询,可被嵌入到应用程序中,实现持久化存储,支持水平扩展,可以在多台服务器上部署,实现集群化存储,具有高度的可靠性和稳定性,易于使用并可以根据需求进行定制和优化。RocksDB主要使用到了下面知识: - -## LSM树 - -LSM树全称Log-Structured Merge Tree,是一种数据结构,常用于键值存储系统中。LSM树的优点是可以支持高吞吐量的写入,具有良好的性能和可扩展性,并且可以在磁盘上存储大量的数据。但是,由于需要定期进行合并操作,因此对查询性能和磁盘空间的使用可能会造成一定的影响。为了解决这个问题,LSM树还有许多优化,如Bloom Filter、Compaction等,可以进一步提高查询性能和减少磁盘空间的使用。 - -![pic](https://pan.zeekling.cn//flink/basic/state/rocksdb_0001.png) - -LSM树中的层级可以分为内存和磁盘两个部分,具体分层如下: - -- 内存层:内存层也被称为MemTable,是指存储在内存中的数据结构,用于缓存最新写入的数据。当数据写入时,先将其存储到MemTable中,然后再将MemTable中的数据刷写到磁盘中,生成一个新的磁盘文件。由于内存读写速度非常快,因此使用MemTable可以实现高吞吐量的写入操作。 -- 磁盘层:磁盘层是指存储在磁盘中的数据文件,可以分为多个层级。一般来说,LSM树中的磁盘层可以分为以下几个层级: - - Level-0: 是最底层的磁盘层,存储的是从内存层写到磁盘中的文件。Level-0的文件一般比较小,按照写入顺序排序。由于要保证写入速度很快,因此Level-0中的文件数量较多。 - - Level-1: 是Level-0的上一层,存储的是由多个Level-0的文件合并而来,Level-1中的文件一般比较大,按照键值排序。由于Level-0中的文件较多,因此Level-1中的文件也是比较多。 - - Level-2以上:Level-2以上的磁盘层数都是由更底层级别的文件合并而来的文件,文件大小逐渐增大,排序方式也逐渐趋向于按照键值排序。由于每个层级的文件大小和排序方式不同,因此可以根据查询的需求,会选择更适合的层级进行查询,从而提高查询效率。 - - - - - -## 压缩 - - - -## 并发控制 - - - -## 内存管理 - - - - - -## 日志系统 - - - - - -## 文件格式 -