gpt4 book ai didi

database - 处理 rocksdb 中的重复项

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:33 25 4
gpt4 key购买 nike

我想使用 rocksdb 并想明确地知道它如何处理重复项。

文档说:

The entire database is stored in a set of sstfiles. When a memtable is full, 
its content is written out to a file in Level-0 (L0). RocksDB removes
duplicate and overwritten keys in the memtable when it is flushed to a file in L0.

现在在拥有多个数据库的环境的情况下,我找不到描述。在这种情况下, key 是环境范围内唯一的还是每个数据库都有其唯一的 key ?我找不到对整个环境的行为的描述。

最佳答案

对您的问题的简短回答:有一个称为压缩的后台进程,它会定期将几个 sst 文件合并到一个排序的运行中(这个排序运行可以表示为多个 sst 文件,但每个文件都有不相交的键范围。 ) 在此压缩过程中,它会处理重复键。

这是对您问题的详细回答:

RocksDB 是一个 LSM数据库。将键值对写入 RocksDB 时,RocksDB 只需为其创建一个数据条目并将其附加到名为 MemTable 的内存缓冲区中。

当 MemTable 变满时,RocksDB 将对所有键进行排序并将它们作为单个 sst 文件刷新。随着我们不断写入更多数据,将会有更多的 sst-files 被刷新,这里的每个 sst-files 通常具有重叠的 key-range。此时,假设我们有 N 个 sst 文件,并且有一个读请求进来。那么这个读请求必须检查所有这 N 个 sst 文件,看它是否包含请求的键,因为每个 sst 文件都可以有重叠的键范围。因此,如果不对这些 sst 文件进行任何重组,随着我们不断写入更多数据,读取速度会变慢。

重组这些 sst 文件的过程称为压缩,它本质上是一种类似于多路合并排序的操作,输入多个 sst 文件并输出单个排序运行。在compaction过程中,RocksDB会对这些输入的sst文件中的所有key进行排序,合并可能的数据条目,当找到匹配的删除条目时删除数据条目。

关于database - 处理 rocksdb 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32075780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com