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