Documentation ¶
Index ¶
- Constants
- type AncientReader
- type AncientReaderOp
- type AncientStater
- type AncientStore
- type AncientWriteOp
- type AncientWriter
- type Batch
- type Batcher
- type Compacter
- type Database
- type HookedBatch
- type Iteratee
- type Iterator
- type KeyValueReader
- type KeyValueStater
- type KeyValueStore
- type KeyValueWriter
- type Reader
- type Stater
- type TestKey
- type Writer
Constants ¶
const IdealBatchSize = 100 * 1024
IdealBatchSize定义理想情况下应在一次写入中添加的数据批的大小。
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AncientReader ¶
type AncientReader interface { AncientReaderOp // ReadAncients运行给定的读取操作,同时确保在底层冻结器上不会发生写入操作。 ReadAncients(fn func(AncientReaderOp) error) (err error) }
老区块读取接口
type AncientReaderOp ¶
type AncientReaderOp interface { // HASANGRAL返回一个指示器,指示指定的数据是否存在于Ancient存储中。 HasAncient(kind string, number uint64) (bool, error) // Ancient从只附加不可变文件中检索Ancient二进制blob。 Ancient(kind string, number uint64) ([]byte, error) // Ancentrange从索引“start”开始按顺序检索多个项目。 //他将返回: //-最多“计数”项, //-至少1项(即使超过maxBytes),但在其他情况下 //返回maxBytes中尽可能多的项目。 AncientRange(kind string, start, count, maxBytes uint64) ([][]byte, error) // Ancients返回Ancients仓库中的Ancients物品编号。 Ancients() (uint64, error) // Tail返回冷冻柜中第一个存储的项目数。此数字也可以解释为已删除的项目总数。 Tail() (uint64, error) // AncientSize返回指定类别Ancient的大小。 AncientSize(kind string) (uint64, error) }
AncientReader包含从不变的老数据读取所需的方法。
type AncientStater ¶
AncientStater包装备份数据存储的Stat方法。
type AncientStore ¶
type AncientStore interface { AncientReader AncientWriter AncientStater io.Closer }
AncientStore包含允许处理支持不可变链数据存储的不同古代数据存储所需的所有方法。
type AncientWriteOp ¶
type AncientWriteOp interface { // Append添加RLP编码的项。 Append(kind string, number uint64, item interface{}) error // AppendRaw添加了一个没有RLP编码的项。 AppendRaw(kind string, number uint64, item []byte) error }
将AncientWriteOp指定给ModifyAncients的函数参数。
type AncientWriter ¶
type AncientWriter interface { // ModifyAncients在古代存储上运行写入操作。 //如果函数返回错误,则会还原对基础存储的任何更改。整数返回值是写入数据的总大小。 ModifyAncients(func(AncientWriteOp) error) (int64, error) // TruncateHead丢弃古代存储中除前n个古代数据外的所有古代数据。截断后,可以从item\n-1(从0开始)访问最新的项。 TruncateHead(n uint64) error // TruncateTail丢弃古代存储中的前n个古代数据。 //已删除的项目将被忽略。截断后,最早可以访问的项是item\n(从0开始)。 //删除的项目可能不会立即从旧存储中删除,但只有当累积的删除数据达到阈值时,才会一起删除。 TruncateTail(n uint64) error // 同步将所有内存中的古代存储数据刷新到磁盘。 Sync() error // MigrateTable处理给定表的条目并将其迁移到新格式。 //第二个参数是一个函数,它接受一个原始条目并以最新格式返回它。 MigrateTable(string, func([]byte) ([]byte, error)) error }
AncientWriter包含写入不可变古代数据所需的方法。
type Batch ¶
type Batch interface { KeyValueWriter // ValueSize检索排队等待写入的数据量。 ValueSize() int // 写入将所有累积数据刷新到磁盘。 Write() error // 重置重置批以供重用。 Reset() // Replay重播批处理内容。 Replay(w KeyValueWriter) error }
Batch是一个只写数据库,在调用write时将更改提交到其主机数据库。批处理不能同时使用。
type Batcher ¶
type Batcher interface { // NewBatch创建一个只写数据库,该数据库缓冲对其主机数据库的更改,直到调用最后一次写入。 NewBatch() Batch // NewBatchWithSize使用预先分配的缓冲区创建一个只写数据库批处理。 NewBatchWithSize(size int) Batch }
Batcher包装了备份数据存储的NewBatch方法。
type Compacter ¶
type Compacter interface { // Compact将给定密钥范围的底层数据存储展平。 //本质上,删除和覆盖的版本被丢弃,数据被重新排列以减少访问它们所需的操作成本。 //零开始被视为数据存储中所有密钥之前的密钥;零限制被视为数据存储中所有键之后的键。 //如果两者都为零,则它将压缩整个数据存储。 Compact(start []byte, limit []byte) error }
Compacter包装了备份数据存储的压缩方法。
type HookedBatch ¶
type HookedBatch struct { Batch OnPut func(key []byte, value []byte) // 插入键时回调 OnDelete func(key []byte) // 删除密钥时回调 }
HookedBatch包装了一个任意的批处理,其中每个操作都可以挂接到该批处理中,以从黑匣子代码进行监视。
type Iteratee ¶
type Iteratee interface { // NewIterator在具有特定键前缀的数据库内容子集上创建一个二进制字母迭代器,从特定的初始键开始(如果不存在,则在其之后)。 //注意:此方法假定前缀不是start的一部分,因此调用方无需将前缀前置到start NewIterator(prefix []byte, start []byte) Iterator }
Iteratee包装了支持数据存储的NewIterator方法。
type Iterator ¶
type Iterator interface { // 下一步将迭代器移动到下一个键/值对。它返回迭代器是否耗尽。 Next() bool // Error返回任何累积错误。耗尽所有键/值对不被视为错误。 Error() error // Key返回当前键/值对的键,如果完成,则返回nil。调用者不应修改返回切片的内容,其内容可能会在下一次调用next时更改。 Key() []byte // Value返回当前键/值对的值,如果完成,则返回nil。调用者不应修改返回切片的内容,其内容可能会在下一次调用next时更改。 Value() []byte // Release释放关联的资源。发布应该总是成功的,并且可以多次调用,而不会导致错误。 Release() }
迭代器按键的升序遍历数据库的键/值对。当它遇到错误时,任何seek都将返回false,并且不会产生键/值对。可以通过调用error方法查询错误。仍然需要调用Release。 迭代器必须在使用后释放,但在迭代器耗尽之前,无需读取迭代器。迭代器对于并发使用是不安全的,但同时使用多个迭代器是安全的。
type KeyValueReader ¶
type KeyValueStater ¶
KeyValueStater包装了支持数据存储的Stat方法。
type KeyValueStore ¶
type KeyValueStore interface { KeyValueReader KeyValueWriter KeyValueStater Batcher Iteratee Compacter //Snapshotter io.Closer }
KeyValueStore包含允许处理支持高级数据库的不同键值数据存储所需的所有方法。
type KeyValueWriter ¶
type Stater ¶
type Stater interface { KeyValueStater AncientStater }
Stater包含从键值和不可变的古代数据中检索状态所需的方法。
type TestKey ¶
type TestKey interface { KeyValueReader KeyValueWriter KeyValueStater Batcher Iteratee Compacter io.Closer }
type Writer ¶
type Writer interface { KeyValueWriter }