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