更新roscksdb相关

This commit is contained in:
LingZhaoHui 2023-09-23 14:41:53 +08:00
parent 9d13aecebe
commit 541b57faf1
Signed by: zeekling
GPG Key ID: D96E4E75267CA2CC

View File

@ -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以上的磁盘层数都是由更底层级别的文件合并而来的文件文件大小逐渐增大排序方式也逐渐趋向于按照键值排序。由于每个层级的文件大小和排序方式不同因此可以根据查询的需求会选择更适合的层级进行查询从而提高查询效率。
## 压缩
## 并发控制
## 内存管理
## 日志系统
## 文件格式