3 个版本
0.1.16-alpha.0 | 2023 年 3 月 31 日 |
---|---|
0.1.12-alpha.0 | 2023 年 1 月 19 日 |
0.1.10-alpha.0 | 2023 年 1 月 18 日 |
#20 in #particular
466 每月下载量
用于 74 个 crates (4 直接)
740KB
1.5K SLoC
bitcoinleveldb-versionedit crate 的描述
简短描述
bitcoinleveldb-versionedit
crate 为 LevelDB(一个高性能键值存储库)提供了版本编辑结构的 Rust 实现。它是 Bitcoin 系统子组件的一部分。
详细描述
bitcoinleveldb-versionedit
crate 是 Bitcoin 系统LevelDB实现中的版本编辑结构的 C++ 到 Rust 的直接翻译。
VersionEdit 结构用于对表示特定时间点数据库快照的 Version 结构进行的编辑。这些编辑可用于更新存储在清单文件中的版本信息。清单文件包含一系列版本和指向当前版本的指针,可用于恢复数据库状态。
VersionEdit
结构包含用于对数据库中的文件进行添加、删除或修改的编码和解码编辑的方法。它还具有设置日志文件编号、最后序列号和给定级别的紧凑指针的方法。VersionEditDeletedFileSet
结构存储已删除的文件。
注意
此 crate 是 Bitcoin 核心的 C++ 到 Rust 的直接翻译的一部分。因此,一些函数体可能仍在翻译过程中。请注意,翻译过程完成后,此系统将成为可测试的。
数学思想
与该 crate 中的令牌无关的数学思想。
91> 你能教我更多关于这个接口吗?
当然可以!LevelDB 中的 VersionEdit
接口用于修改 VersionSet
,它表示存储在磁盘上的键值数据库的所有版本的集合。
以下是 VersionEdit
接口中的方法概述
-
default() -> VersionEdit
:使用默认值创建一个新的VersionEdit
对象。 -
set_comparator_name(name: &str)
:设置用于在数据库中排序键的比较器名称。 -
set_log_number(num: u64)
:设置当前日志文件的编号。 -
set_prev_log_number(num: u64)
:设置前一个日志文件的编号。 -
set_next_file(num: u64)
:设置要创建的下一个文件的编号。 -
set_last_sequence(seq: u64)
:设置最后一个序列号。 -
add_file(level: u64, file_num: u64, file_size: u64, smallest: InternalKey, largest: InternalKey, deleted: bool)
:将新文件添加到数据库的指定级别。参数smallest
和largest
指定文件中键的范围,而deleted
表示文件是否已被删除。 -
delete_file(level: u64, file_num: u64)
:将指定的文件标记为已删除。 -
encode_to<W: Write>(&self, writer: &mut W) -> Result<(), Error>
:将VersionEdit
对象的 内容编码并写入给定的Write
对象。 -
decode_from<R: Read>(&mut self, reader: &mut R) -> Result<(), Error>
:从给定的Read
对象解码VersionEdit
对象的内容,并根据当前对象相应地更新。 -
debug_string(&self) -> String
:返回一个可读的字符串表示形式,表示VersionEdit
对象。
VersionEdit
接口用于修改 VersionSet
,然后将这些更改持久化到磁盘。它允许您向数据库添加新文件,删除现有文件,并更新各种元数据,例如日志文件编号和最后一个序列号。
依赖项
~89MB
~831K SLoC