Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Goleveldb | 5,575 | 1,277 | 2,000 | 2 months ago | 6 | August 19, 2021 | 102 | bsd-2-clause | Go | |
LevelDB key/value database in Go. | ||||||||||
Ardb | 1,535 | 3 years ago | 66 | bsd-3-clause | C++ | |||||
A redis protocol compatible nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, PerconaFT, WiredTiger, ForestDB. | ||||||||||
Leveldb | 1,411 | 383 | 160 | 7 months ago | 12 | June 26, 2019 | 34 | apache-2.0 | Java | |
Port of LevelDB to Java | ||||||||||
Icefiredb | 975 | 2 hours ago | 5 | mit | Go | |||||
@IceFireLabs -> IceFireDB is a database built for web3.0 It strives to fill the gap between web2 and web3.0 with a friendly database experience, making web3 application data storage more convenient, and making it easier for web2 applications to achieve decentralization and data immutability. | ||||||||||
Nano Sql | 771 | 19 | 12 | 2 years ago | 154 | June 03, 2019 | n,ull | mit | TypeScript | |
Universal database layer for the client, server & mobile devices. It's like Lego for databases. | ||||||||||
Imposm3 | 619 | 7 months ago | 17 | October 11, 2021 | 64 | apache-2.0 | Go | |||
Imposm imports OpenStreetMap data into PostGIS | ||||||||||
Objective Leveldb | 436 | 29 | 3 years ago | 15 | January 23, 2016 | 7 | mit | Objective-C | ||
An Objective-C database library built over Google's LevelDB | ||||||||||
Leveldb | 401 | 4 years ago | 34 | bsd-3-clause | C++ | |||||
Clone of http://code.google.com/p/leveldb/ | ||||||||||
Wickdb | 343 | 2 years ago | 13 | other | Rust | |||||
Pure Rust LSM-tree based embedded storage engine | ||||||||||
Multilevel | 341 | 190 | 81 | 5 years ago | 45 | February 10, 2018 | 18 | JavaScript | ||
Expose a LevelDB over the network |
This is an implementation of the LevelDB key/value database in the Go programming language.
go get github.com/syndtr/goleveldb/leveldb
go1.14
or newer.Create or open a database:
// The returned DB instance is safe for concurrent use. Which mean that all
// DB's methods may be called concurrently from multiple goroutine.
db, err := leveldb.OpenFile("path/to/db", nil)
...
defer db.Close()
...
Read or modify the database content:
// Remember that the contents of the returned slice should not be modified.
data, err := db.Get([]byte("key"), nil)
...
err = db.Put([]byte("key"), []byte("value"), nil)
...
err = db.Delete([]byte("key"), nil)
...
Iterate over database content:
iter := db.NewIterator(nil, nil)
for iter.Next() {
// Remember that the contents of the returned slice should not be modified, and
// only valid until the next call to Next.
key := iter.Key()
value := iter.Value()
...
}
iter.Release()
err = iter.Error()
...
Seek-then-Iterate:
iter := db.NewIterator(nil, nil)
for ok := iter.Seek(key); ok; ok = iter.Next() {
// Use key/value.
...
}
iter.Release()
err = iter.Error()
...
Iterate over subset of database content:
iter := db.NewIterator(&util.Range{Start: []byte("foo"), Limit: []byte("xoo")}, nil)
for iter.Next() {
// Use key/value.
...
}
iter.Release()
err = iter.Error()
...
Iterate over subset of database content with a particular prefix:
iter := db.NewIterator(util.BytesPrefix([]byte("foo-")), nil)
for iter.Next() {
// Use key/value.
...
}
iter.Release()
err = iter.Error()
...
Batch writes:
batch := new(leveldb.Batch)
batch.Put([]byte("foo"), []byte("value"))
batch.Put([]byte("bar"), []byte("another value"))
batch.Delete([]byte("baz"))
err = db.Write(batch, nil)
...
Use bloom filter:
o := &opt.Options{
Filter: filter.NewBloomFilter(10),
}
db, err := leveldb.OpenFile("path/to/db", o)
...
defer db.Close()
...
You can read package documentation here.