aboutsummaryrefslogtreecommitdiffstats
path: root/ethdb/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethdb/interface.go')
-rw-r--r--ethdb/interface.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/ethdb/interface.go b/ethdb/interface.go
index f4b787a52..99a5b770d 100644
--- a/ethdb/interface.go
+++ b/ethdb/interface.go
@@ -16,15 +16,29 @@
package ethdb
-type Database interface {
+// Code using batches should try to add this much data to the batch.
+// The value was determined empirically.
+const IdealBatchSize = 100 * 1024
+
+// Putter wraps the database write operation supported by both batches and regular databases.
+type Putter interface {
Put(key []byte, value []byte) error
+}
+
+// Database wraps all database operations. All methods are safe for concurrent use.
+type Database interface {
+ Putter
Get(key []byte) ([]byte, error)
+ Has(key []byte) (bool, error)
Delete(key []byte) error
Close()
NewBatch() Batch
}
+// Batch is a write-only database that commits changes to its host database
+// when Write is called. Batch cannot be used concurrently.
type Batch interface {
- Put(key, value []byte) error
+ Putter
+ ValueSize() int // amount of data in the batch
Write() error
}