github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/ethdb/interface.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 19:16:38</date>
    10  //</624450090492235776>
    11  
    12  
    13  package ethdb
    14  
    15  //使用批处理的代码应该尝试向批处理中添加这么多的数据。
    16  //该值是根据经验确定的。
    17  const IdealBatchSize = 100 * 1024
    18  
    19  //推杆包装批处理和常规数据库都支持的数据库写入操作。
    20  type Putter interface {
    21  	Put(key []byte, value []byte) error
    22  }
    23  
    24  //删除程序包装批处理数据库和常规数据库都支持的数据库删除操作。
    25  type Deleter interface {
    26  	Delete(key []byte) error
    27  }
    28  
    29  //数据库包装所有数据库操作。所有方法对于并发使用都是安全的。
    30  type Database interface {
    31  	Putter
    32  	Deleter
    33  	Get(key []byte) ([]byte, error)
    34  	Has(key []byte) (bool, error)
    35  	Close()
    36  	NewBatch() Batch
    37  }
    38  
    39  //批处理是一个只写的数据库,它将更改提交到其主机数据库。
    40  //当调用写入时。批处理不能同时使用。
    41  type Batch interface {
    42  	Putter
    43  	Deleter
    44  ValueSize() int //批中的数据量
    45  	Write() error
    46  //重置将批重置为可重用
    47  	Reset()
    48  }
    49