#version #set #bitcoin #management #level #leveldb #track

bitcoinleveldb-version

版本操作工具 -- 每个版本跟踪一组每个级别的表文件。整个版本集保存在一个版本集中。

3 个版本

0.1.16-alpha.02023 年 3 月 31 日
0.1.12-alpha.02023 年 1 月 19 日
0.1.10-alpha.02023 年 1 月 18 日

#39 in #leveldb

Download history 119/week @ 2024-03-11 145/week @ 2024-03-18 273/week @ 2024-03-25 262/week @ 2024-04-01 115/week @ 2024-04-08 142/week @ 2024-04-15 156/week @ 2024-04-22 136/week @ 2024-04-29 178/week @ 2024-05-06 147/week @ 2024-05-13 150/week @ 2024-05-20 102/week @ 2024-05-27 115/week @ 2024-06-03 115/week @ 2024-06-10 142/week @ 2024-06-17 163/week @ 2024-06-24

535 个月下载
69 个crate中使用(通过 bitcoinleveldb-db

MIT 许可证

1.5MB
3.5K SLoC

bitcoinleveldb-version Crate 描述

简短描述

bitcoinleveldb-version 是一个 Rust crate,它是从 C++ 直接翻译到 Rust 的比特币核心。它包含与 leveldb 数据库中的版本管理相关的各种结构和函数。

Leveldb 中的版本管理

Leveldb 使用版本管理来跟踪数据库的多个版本,每个版本代表一个特定的时间点。这允许高效地读取和写入操作,并有助于保持一致性。

Version 结构体代表数据库的特定版本,而 VersionSet 结构体跟踪所有版本。

VersionSetBuilder 结构体用于通过添加和删除文件、创建新级别和执行压缩来构建一个新的 VersionSet

Compaction 结构体代表合并多个版本到新版本的压缩操作,而 ManualCompaction 结构体用于手动控制压缩过程。

注意

此 crate 是从 C++ 直接翻译到 Rust 的比特币核心的一部分。因此,一些函数体可能仍在翻译过程中。请注意,在翻译过程完成后,此系统将成为可测试的。

89> 你能更详细地描述 leveldb 中的版本管理吗?

当然可以!在 LevelDB 中,版本管理对于确保数据库的一致性和正确性至关重要。每个版本代表在给定时间点的数据库快照,并包含有关文件集及其对应元数据(例如文件大小、索引块句柄等)的信息。版本管理系统允许高效地查询数据库,并为读取和写入操作提供基础。

从高层次来看,LevelDB 中的版本管理系统由多个组件组成,包括 VersionVersionEditVersionSetVersionSetBuilder

  • 版本表示数据库在某个时间点的快照,并包含有关文件集及其对应元数据的信息。每个版本包含一个级别列表,其中每个级别由一组具有非重叠键范围的文件组成。

  • 版本编辑版本的可变对应物,用于修改版本的文件集。当对版本进行修改时,它表示为一系列版本编辑对象。

  • 版本集管理一组版本对象,并为读写操作提供基础。版本集提供了一个用于读取和查询数据库的接口,并管理活动版本对象的集合。

  • 版本集构建器用于根据一系列版本编辑对象构建新的版本对象。它维护当前文件集及其元数据的内存表示,并响应版本编辑对象进行更新。一旦应用了所有版本编辑对象,版本集构建器将从更新的文件集及其元数据构建一个新的版本对象。

总之,LevelDB中的版本管理系统通过提供高效的查询、读写操作和快照功能,负责维护数据库的一致性和正确性。它是数据库的一个关键组件,必须精心设计和实现,以确保它满足应用程序的性能和可靠性要求。

依赖项

~90MB
~850K SLoC