RocksDB的术语表

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在悲观事务中的写策略,通过事务发送数据到数据库来避免需要更大的内存缓冲区。


<think>好的,用户想了解RocksDB的介绍、数据库引擎特以及使用场景。首先,我需要整理RocksDB的基础知识,确保信息准确。根据提供的引用内容,RocksDB是一个基于LSM-Tree的键值存储引擎,由Facebook开发,适用于高性能场景。特方面,应该包括高性能写入、压缩优化、灵活配置等。 接下来,要区分RocksDB和传统如InnoDB的不同。InnoDB使用B+树,适合事务处理;而RocksDB的LSM-Tree更适合写密集型任务。需要对比两者的底层原理,优缺,以及应用场景,如引用1中提到的。 使用场景部分,引用2和3提到了在分布式系统(如TiKV)、Redis持久化(如Pika)中的应用。需要具体说明这些应用实例,帮助用户理解适用情况。 用户可能需要了解基础操作,比如安装和接口使用,引用2提到了安装指南,可以简要提及。同时,考虑用户可能的后续问题,比如性能优化或与其他引擎的比较,提前准备相关问题。 最后,确保回答结构清晰,分列出,并正确引用来源。检查LaTeX格式是否符合要求,数学表达式用$...$,独立公式用$$...$$,但当前内容可能较少涉及数学,需注意是否有需要格式化的部分。保持语言简洁,用中文自然表达,避免技术术语过多,让用户易于理解。</think>### RocksDB数据库引擎详解 #### 一、核心介绍 RocksDB是由Facebook开发的$高性能键值存储引擎$,基于Google的LevelDB改进而来,采用$LSM-Tree(Log-Structured Merge-Tree)$数据结构实现[^1]。其核心设计目标是应对现代存储设备的特性(如SSD)和满足高吞吐量场景需求。 #### 二、技术特 1. **写入性能优化** $$ \text{写入吞吐量} \propto \frac{\text{顺序写入速度}}{\text{数据压缩率}} $$ 通过批量写入(MemTable)和分层合并(Compaction)机制,实现比B+树引擎高10倍以上的写入性能[^1] 2. **压缩机制** 支持Snappy/ZSTD等多级压缩算法,通过`options.compression`参数可配置不同层级的压缩策略 3. **可调式持久化** 提供`WAL(Write-Ahead Logging)`和`Flush`的异步/同步控制,允许在数据安全性与性能之间灵活权衡 4. **多线程支持** 内置线程池管理compaction和flush操作,通过`max_background_jobs`参数控制并发度 #### 三、应用场景对比 | 场景特征 | 推荐引擎 | 典型TPS | |-------------------|----------|---------------| | 写密集型(日志) | RocksDB | 50万+/秒 | | OLTP事务处理 | InnoDB | 1万-5万/秒 | | 时序数据存储 | RocksDB | 10万+/秒 | | 二级索引查询 | InnoDB | 5千-2万/秒 | #### 四、典型应用案例 1. **TiDB分布式数据库** TiKV使用RocksDB作为底层存储引擎,支持分布式事务的持久化存储[^3] 2. **Redis持久化方案** Pika数据库通过RocksDB实现Redis协议支持的数据结构持久化[^2] 3. **MySQL可插拔引擎** Facebook维护的MySQL分支支持将RocksDB作为存储引擎 ```cpp // 基础API示例(C++) rocksdb::DB* db; rocksdb::Options options; options.create_if_missing = true; rocksdb::Status status = rocksdb::DB::Open(options, "/tmp/testdb", &db); std::string value; rocksdb::Status s = db->Get(rocksdb::ReadOptions(), "key1", &value); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值