Iterator: 迭代器,用户使用迭代器按排序顺序查询范围内的key。
Point lookup: 点查询,在RocksDB中,点查找是指使用Get()读取一个键。
Range lookup: 范围查找,范围查找意味着使用迭代器读取一系列键。
SST File(Data file 数据文件/SST table SST表):
SST代表分类序列表。它们是存储数据的持久性文件。在文件中,key是有序的,以便于二分搜索来识别key或迭代位置。
Index: SST文件中数据块的索引。它在SST文件中作为索引块持久化,默认二分搜索。
Partitioned Index: 分区索引,将二分搜索索引块分成多个较小的块。
LSM-tree: (Log-structured_merge-tree)RocksDB是基于LSM树的存储引擎。
Write-Ahead-Log(WAL) or log:
预先写入日志(WAL)或日志:用于在数据库恢复期间恢复尚未刷新到SST文件的数据的日志文件。
memtable/write buffer: 内存数据结构,用于存储数据库的最新更新。通常有序,并包含二分搜索索引
memtable switch:
memtable开关:在这个过程中,当前活动的memtable(当前正在写入的一个)被关闭并变成一个不可变的memtable。同时,我们将关闭当前的WAL文件并开始一个新的文件。
immutable memtable: 不可变的memtable:一个正在等待被刷新的关闭的memtable。
sequence number(SeqNum/Seqno): 序号(SeqNum / Seqno):每写入数据库将被分配一个自动递增的ID号码。该编号附加在WAL文件中的键值对,memtable和SST文件中。序列号用于实现快照读取,压缩中的垃圾回收,事务中的MVCC以及其他一些目的。
recovery: 恢复:失败或关闭后重新启动数据库的过程。
flush: 将mem表中的数据写入SST文件的后台作业。
compaction: 压缩:将一些SST文件合并到其他SST文件中的后台作业。LevelDB的压缩也包括flush。在RocksDB中,我们进一步区分了两者。
Leveled Compaction or Level Based Compaction Style: 层压缩或基于层的压缩风格:RocksDB的默认压缩风格。
Comparator: 比较器:一个可以定义key顺序的插件类。
Column Family: 列族:列族在一个DB中是一个单独的key空间。尽管存在误导性的名称,但与其他存储系统中的“列族”概念无关。
snapshot: 快照:快照是一个逻辑上一致的时间点视图,位于正在运行的数据库中。
checkpoint: 检查点:检查点是文件系统中另一个目录中数据库的物理镜像。
backup: 备份:RocksDB有一个备份工具来帮助用户将数据库状态备份到不同的位置,如HDFS。
Version: 版本:RocksDB的内部概念。一个版本由一个时间点的所有活SST文件组成。一旦刷新或压缩完成,将会创建一个新的“版本”,因为活SST文件列表已经更改。旧的“版本”可以继续被正在进行的读取请求或压缩作业使用。旧版本最终会被垃圾收集。
Super Version: 超级版本:RocksDB的内部概念。一个超级版本包括SST文件列表(一个“版本”)和在一个时间点的活动内存表列表。无论是压缩或刷新,还是一个mem表开关都会导致创建一个新的“超级版本”。旧的“超级版本”可以继续被正在进行的读取请求使用。旧的超级版本最终将被垃圾收集后不再需要。
block cache: 块缓存:内存数据结构,用于缓存来自SST文件的热点数据块。
Statistics: 统计信息:内存数据结构,包含实时数据库的累积统计信息。
perf context: perf上下文:一个内存数据结构来衡量线程本地统计信息。它通常用于衡量每个查询的统计信息。
DB properties: 数据库属性:某些运行状态可以通过函数DB :: GetProperty()返回。
Table Properties: 表格属性:存储在每个SST文件中的元数据。它包括由RocksDB生成的系统属性和由用户定义的回调计算的用户定义的表属性。
write stall: 写入停顿:当冲刷或压缩积压时,RocksDB可能会主动放缓写入操作,以确保刷新和压缩能够赶上。
bloom filter: 布隆过滤器
prefix bloom filter: 前缀布隆过滤器:可以在迭代器中使用的特殊布隆过滤器。如果SST文件或memtable不包含前缀提取器提取的查找关键字的前缀,则可以避免某些文件读取。
prefix extractor: 前缀提取器:一个可以提取key前缀部分的回调类。这是最经常用作前缀布隆过滤器的前缀。
block-based bloom filter or full bloom filter: 基于块的布隆过滤器或整体过滤器:在SST文件中存储布隆过滤器的两种不同方法。
Partitioned Filters: 分区过滤器:将一个整体过滤器分成多个较小的块。
compaction filter: 压缩过滤器:一个用户插件,可以在压缩过程中修改或删除现有的键。
merge operator: 合并运算符:RocksDB支持一个特殊的运算符Merge(),它是一个delta记录,合并操作数到现有的值。合并运算符是一个用户定义的回调类,它可以合并合并操作数。
Block-Based Table: 基于块的表:默认的SST文件格式。
Block: 块:SST文件的数据块。在SST文件中,块以压缩形式存储。
PlainTable: SST文件格式的替代格式,针对ramfs进行了优化。
forward iterator/ tailing iterator: 前向迭代器/尾随迭代器:针对特定用例进行优化的特殊迭代器选项。
single delete: 单一删除:一种特殊的删除操作,只有当用户永远不更新现有key时才有效。
rate limiter: 限速器:用于限制写入到文件系统的字节的刷新率和压缩率。
Pessimistic Transactions: 悲观事务使用锁来提供多个并发事务之间的隔离。默认的写入策略是WriteCommitted。
2PC(Two-phase commit): 2PC(两阶段提交)悲观事务可以分两个阶段进行:首先是准备,然后是实际的提交。
WriteCommitted: 悲观事务中的默认写入策略,它缓存写入内存并在事务提交时将其写入数据库。
WritePrepared: WritePrepared在悲观事务中的写策略,如果是2PC事务,则将写入缓冲区写入内存,并将其写入数据库。
WriteUnprepared: WriteUnprepared在悲观事务中的写策略,通过事务发送数据到数据库来避免需要更大的内存缓冲区。