Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Omnibus update branch #237

Closed
wants to merge 193 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
193 commits
Select commit Hold shift + click to select a range
761ecb1
rocksdb: proper memory size budget as comment
hanjukim Jan 27, 2022
150db6d
WIP: RocksDB memory leak fix
hanjukim Feb 4, 2022
b0b93d5
rocksdb: destroy cache
hanjukim Feb 7, 2022
83cf9e3
performance option for goleveldb
hanjukim Feb 15, 2022
e3936f9
fix test
hanjukim Feb 16, 2022
56b532a
feat(goleveldb): 64 MiB write buffer (default 4MiB)
hanjukim Mar 1, 2022
f72bf1f
feat(goleveldb): tuning
hanjukim Mar 1, 2022
6e2deba
feat(goleveldb): upgrade goleveldb
hanjukim Mar 1, 2022
4e79913
feat(goleveldb): tuning
hanjukim Mar 1, 2022
bf23575
Merge branch 'master' into performance
hanjukim Mar 1, 2022
682decc
fix: remove mutex in prefixdb
kjessec Mar 4, 2022
933aaa5
fix: disallow compaction params for goleveldb
kjessec Mar 4, 2022
c71e8b6
feat: DisableSeeksCompaction
kjessec Mar 7, 2022
cfbc1af
feat(goleveldb,rocksdb): optimization: remove redundant check from it…
hanjukim Mar 15, 2022
85fc22e
Merge branch 'performance' into performance-prefixdb
hanjukim Mar 15, 2022
693fae3
chore: cleanup
hanjukim Mar 16, 2022
a7a97e4
upgrade gorocksdb library to grocksdb, supporting rocksdb v7
faddat Apr 11, 2022
e4bba64
update badgerdb
faddat Apr 25, 2022
e86e848
Upgrades gorocksdb and the dockerfile. If we don't want these change…
faddat Apr 25, 2022
dfb12b6
gorocksdb -> grocksdb
faddat Apr 25, 2022
b78567f
Delete .gitpod.yml
faddat Apr 25, 2022
23c26d8
Merge remote-tracking branch 'terra/performance'
faddat Apr 25, 2022
1f55eae
fumpt
faddat Apr 25, 2022
29a2c7a
Merge branch 'grocksdb-and-docker' into HEAD
faddat Apr 25, 2022
b39cc7e
Delete .gitpod.yml
faddat Apr 25, 2022
5c9bfe8
fix: remove mutex in prefixdb
kjessec Mar 4, 2022
a0ff309
fmt
faddat Apr 25, 2022
636377b
fmt
faddat Apr 25, 2022
0155808
Delete .gitpod.yml
faddat Apr 25, 2022
973a74a
remove mutex entirely instead of commenting out
faddat Apr 25, 2022
34ca0e7
fmt
faddat Apr 25, 2022
d81b67b
remove .gitpod.yml
faddat Apr 25, 2022
4c9b066
update changelog
faddat Apr 25, 2022
0566540
Merge branch 'master' into remove-mutex
faddat Apr 25, 2022
f660621
Merge branch 'master' into grocksdb-and-docker
faddat Apr 25, 2022
2a3b540
Update Dockerfile
faddat Apr 26, 2022
fd5e20f
Update README.md
faddat Apr 29, 2022
a55c660
Update lint.yml
faddat Apr 29, 2022
21abe2c
Update lint.yml
faddat Apr 29, 2022
db9c9a9
vscode so that gopls works for everyone
faddat May 1, 2022
f1b64a9
give badger a cache and have it stop doing things that should never h…
faddat May 1, 2022
5977066
Merge remote-tracking branch 'origin/master' into faddat/update-badger
faddat May 1, 2022
24ab5ce
Merge branch 'master' into terra-fast
faddat May 1, 2022
b7d3ca2
Merge remote-tracking branch 'origin/terra-fast' into faddat/update-b…
faddat May 2, 2022
5113181
Merge remote-tracking branch 'origin/notional/grocksdb' into hyped-ba…
faddat May 2, 2022
01c68ce
complete merge (oops)
faddat May 2, 2022
1aaec14
fix merge (oops)
faddat May 2, 2022
7e1a2cd
rocksdb
faddat May 2, 2022
cff4a55
oops3
faddat May 2, 2022
c4ab5fd
increase maximum size of values in badger to 5mb
faddat May 2, 2022
d76cbe5
64 goroutines, no idea how this maps to performance yet64 goroutines,…
faddat May 2, 2022
d18ee9f
Merge remote-tracking branch 'notional/faddat/update-badger' into hyp…
faddat May 2, 2022
7650900
use LSMOnlyOptions
faddat May 2, 2022
1108244
bump ValueThreshold to 2mb
faddat May 2, 2022
83d84e0
opts.WithValueThreshold(2 << 20)
faddat May 2, 2022
e19babe
Value threshold = 2mb: first get the lsm only options, then adjust va…
faddat May 2, 2022
9e8d4ff
Fix rocksdb path creation
faddat May 6, 2022
11887b3
use go 1.18
faddat May 6, 2022
f531a3f
prefixdb test
faddat May 6, 2022
cc11706
all test passed in prefixdb_test.go
vuong177 May 6, 2022
417a583
Merge branch 'master' into remove-mutex
catShaark May 6, 2022
3214560
simple taskKey in prefixdb_test.go
vuong177 May 6, 2022
0af8287
Merge branch 'master' into faddat/update-badger
faddat May 6, 2022
3b80f39
Update rocksdb.go
faddat May 6, 2022
5647d95
Delete settings.json
faddat May 6, 2022
00cd122
Update badger_db.go
faddat May 6, 2022
37a8c64
Update rocksdb.go
faddat May 6, 2022
3a15eed
Merge branch 'master' into grocksdb-and-docker
faddat May 6, 2022
8f6316c
gofumpt
faddat May 6, 2022
fd0bb3d
Update prefixdb.go
faddat May 6, 2022
31c47b6
Merge branch 'master' into remove-mutex
faddat May 6, 2022
5dd8db0
Merge branch 'master' into patch-3
faddat May 6, 2022
d48619d
Revert "gofumpt"
faddat May 6, 2022
2efc0c2
Merge branch 'master' into faddat/update-badger
faddat May 6, 2022
875a2ad
Merge branch 'master' into grocksdb-and-docker
faddat May 6, 2022
adb98b6
Merge branch 'master' into terra-fast
faddat May 7, 2022
ae79a1b
fumpt
faddat May 7, 2022
cd78f1b
Merge remote-tracking branch 'notional/fumpt' into HEAD
faddat May 7, 2022
b09cfde
Merge branch 'faddat/update-badger' into terra-fast
faddat May 7, 2022
fce62ff
Merge remote-tracking branch 'notional/faddat/update-badger' into ter…
faddat May 7, 2022
5f1a2db
Merge remote-tracking branch 'fork/patch-3' into terra-fast
faddat May 7, 2022
1ea6cd2
fumpt
faddat May 7, 2022
835d8fd
fmt db test so pr passes linter
faddat May 7, 2022
76c3187
Delete tools directory
faddat May 7, 2022
e78f45b
Delete docker.yml
faddat May 7, 2022
e87ed82
Update ci.yml
faddat May 7, 2022
d8e0315
tidy
faddat May 7, 2022
96a2d79
bump grocksdb
faddat May 7, 2022
067b900
merge
faddat May 7, 2022
96204d4
grocksdb
faddat May 7, 2022
6702107
add gitpod
faddat May 7, 2022
a6f1a63
add cache to Rocksdb struct
faddat May 7, 2022
c382f24
Update db_test.go
faddat May 7, 2022
7f9f07b
no longer test for the redundant check
faddat May 7, 2022
c167814
db test fmt
faddat May 7, 2022
d01a01e
change tests
faddat May 7, 2022
90e950b
fix for the removal of redundant checks
faddat May 7, 2022
c0403e4
now?
faddat May 7, 2022
f480355
don't declare itr
faddat May 7, 2022
cb000ee
refactor func Run
vuong177 May 7, 2022
c6d827f
check nil err before create PrefixDB in TestWithGolevelDB
vuong177 May 7, 2022
b78aed6
add other db tests
catShaark May 8, 2022
33a14e4
Merge branch 'master' into patch-3
faddat May 9, 2022
e2c3c4e
Update prefixdb_test.go
faddat May 9, 2022
d56e038
Merge branch 'master' into remove-mutex
faddat May 9, 2022
84a67af
update prefixdb_test.go
catShaark May 10, 2022
72c47a4
minor defer
vuong177 May 11, 2022
bb9af6a
Create gaia.yml
faddat May 14, 2022
a591481
Update gaia.yml
faddat May 14, 2022
1e8c9ea
Update gaia.yml
faddat May 14, 2022
03f9b5f
Update cleveldb.go
faddat May 15, 2022
5be0991
update test
faddat May 15, 2022
dcfdacc
Merge branch 'terra-fast' of https://github.com/notional-labs/tm-db i…
faddat May 15, 2022
974fa8d
make a folder with cleveldb when needed
faddat May 15, 2022
f76147d
Update gaia.yml
faddat May 15, 2022
a3e9a54
add perf info and create snapshot folder individually with boltdb
faddat May 15, 2022
885d826
Merge branch 'terra-fast' of https://github.com/notional-labs/tm-db i…
faddat May 15, 2022
80dc9be
make folder the janky way
faddat May 15, 2022
b4879f2
use correct var name
faddat May 15, 2022
58020f7
stutter: bbolt
faddat May 15, 2022
ff16cff
remove os and opts
faddat May 15, 2022
a7d374b
remove errors
faddat May 15, 2022
857ed94
fix bolt
faddat May 15, 2022
d84ecd7
fix bolt
faddat May 15, 2022
7eb11d9
fix bolt
faddat May 15, 2022
5a046ca
fix bolt
faddat May 15, 2022
8edf1c2
Merge tm-db v0.6.7 into performance
hanjukim May 15, 2022
84ccf4b
add DefaultOpenFilesCapacity for defining max open files
hanjukim May 15, 2022
ff4161e
use same open files capacity for every GOOS
hanjukim May 15, 2022
32a5702
increase default max open file capacity to 32768 and use 4096 for mini
hanjukim May 15, 2022
0931c90
Merge branch 'master' into remove-mutex
faddat May 19, 2022
5c81bf8
fixup with build tags
faddat May 19, 2022
8dc0cf5
Merge branch 'master' into patch-3
faddat May 19, 2022
11fa71a
Create .gitpod.yml
faddat May 19, 2022
d57bb1f
fix linting
faddat May 19, 2022
8e4e401
itr.isInvalid would be unconditionally set anyhow, which is why the i…
faddat May 19, 2022
19771e4
Merge branch 'master' into terra-fast
faddat May 19, 2022
fcec63f
add DefaultOpenFilesCapacity for defining max open files
hanjukim May 15, 2022
8a8575f
use same open files capacity for every GOOS
hanjukim May 15, 2022
227495f
increase default max open file capacity to 32768 and use 4096 for mini
hanjukim May 15, 2022
79233d0
restore docker ci job
faddat May 19, 2022
602ef89
Merge branch 'master' into remove-mutex
faddat May 20, 2022
cede072
Merge branch 'master' into HEAD
hanjukim May 20, 2022
2cddc6f
optimize goleveldb
hanjukim May 20, 2022
08de364
Merge pull request #1 from notional-labs/grocksdb-for-terra
hanjukim May 20, 2022
24ac4c6
Merge remote-tracking branch 'origin/performance' into terra
hanjukim May 20, 2022
f02ed3f
Merge remote-tracking branch 'notional-labs/hyped-badger' into terra
hanjukim May 20, 2022
895adc9
update goleveldb option
hanjukim May 23, 2022
9d75ed6
Merge branch 'master' into patch-3
faddat May 23, 2022
d4bb034
Update cleveldb_test.go
faddat May 23, 2022
2640477
Update prefixdb_test.go
faddat May 23, 2022
d75f0c0
Update prefixdb_test.go
faddat May 23, 2022
10cdb28
Merge branch 'master' into terra-fast
faddat May 28, 2022
b015873
Merge branch 'master' into terra-fast
faddat Jun 4, 2022
4355c2a
Merge branch 'master' into remove-mutex
faddat Jun 4, 2022
f330226
Firing this into CI, let's see.
faddat Jun 4, 2022
230b7cc
add filepath lib to tests
faddat Jun 4, 2022
cdc2374
fix filepath in goleveldb
faddat Jun 4, 2022
e74373d
gofumpt formatting
faddat Jun 4, 2022
b6c10d2
Merge remote-tracking branch 'terra/terra' into terra-fast
faddat Jun 4, 2022
67095b3
Merge remote-tracking branch 'origin/remove-mutex' into terra-fast
faddat Jun 4, 2022
d0180cc
make gaia test work without buildjet
faddat Jun 4, 2022
a8944c7
integrate latest terra changes
faddat Jun 4, 2022
cfa6a51
remove test invalidated by terra changes
faddat Jun 4, 2022
ceabe4f
remove invalidated test
faddat Jun 4, 2022
5e84494
space between comment and text
faddat Jun 4, 2022
a5f17f7
use go 1.18 when testing gaia
faddat Jun 4, 2022
9a97fb6
remove test invalidated by terra
faddat Jun 4, 2022
04ffba3
gofumpt enforcement
faddat Jun 4, 2022
c359878
timeout for gaia test
faddat Jun 4, 2022
3600ff8
remove invalid test
faddat Jun 4, 2022
2e4a3c5
cosmos
faddat Jun 4, 2022
02d95a0
use current gaia release branch
faddat Jun 4, 2022
e80e358
no deadcode
faddat Jun 4, 2022
1f4f4d8
Merge remote-tracking branch 'faddat/patch-3' into terra-fast
faddat Jun 4, 2022
edd0255
10 mins for state sync
faddat Jun 4, 2022
0e2e016
Merge branch 'master' into terra-fast
faddat Jun 11, 2022
c164f33
Update .gitpod.yml
faddat Jun 20, 2022
20b6faa
tidy
faddat Jun 20, 2022
3051b49
Merge remote-tracking branch 'upstream/master' into terra-fast
faddat Jun 20, 2022
41a6fac
Merge remote-tracking branch 'upstream/master' into terra-fast
faddat Jun 29, 2022
1861e89
disable gaia sync tests
faddat Jul 4, 2022
f86ef49
skip logging into docker hub unless on the master branch, so we can t…
faddat Jul 4, 2022
a15237b
don't build the docker image, because we use a totally new environment
faddat Jul 4, 2022
1cf2b64
use only databases that are viable
faddat Jul 21, 2022
7b9f8d8
Merge remote-tracking branch 'upstream/master' into terra-fast
faddat Jul 21, 2022
a6ddc62
tidy and improve readme file
faddat Jul 21, 2022
a6459ba
no pedantic
faddat Jul 26, 2022
8a82466
Merge branch 'no-pedantic-thanks' into terra-fast
faddat Jul 26, 2022
4c55e52
revert breakage
faddat Jul 26, 2022
d91a34e
regenerate certs
faddat Jul 26, 2022
a04a61e
Merge remote-tracking branch 'notional/fix-main' into terra-fast
faddat Jul 26, 2022
eb4d891
fixup
faddat Aug 18, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
# rocksdb, which are needed to build and test those modules.
# To update the container image, see docker.yml.
runs-on: ubuntu-latest
container: tendermintdev/docker-tm-db-testing
container: ghcr.io/faddat/cosmos
steps:
- uses: actions/checkout@v3
- name: test & coverage report creation
Expand Down
56 changes: 0 additions & 56 deletions .github/workflows/docker.yml

This file was deleted.

53 changes: 53 additions & 0 deletions .github/workflows/gaia
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# This workflow state syncs a live Gaia automatically with each commit. It is intended to be used for:
# * Monitoring functionality
# * Measuring "time to live gaia" across different databases

name: State Sync Gaia
on:
pull_request:
push:


jobs:
build:
runs-on: ubuntu-latest
container: ghcr.io/faddat/gaia
continue-on-error: true
timeout-minutes: 10
env:
INTERVAL: 1000
GAIAD_STATESYNC_ENABLE: true
GAIAD_P2P_MAX_NUM_OUTBOUND_PEERS: 200
GAIAD_P2P_SEEDS: "bf8328b66dceb4987e5cd94430af66045e59899f@public-seed.cosmos.vtwit.com:26656,[email protected]:26656,[email protected]:26656,ba3bacc714817218562f743178228f23678b2873@public-seed-node.cosmoshub.certus.one:26656,[email protected]:26656,[email protected]:26656"
GAIAD_STATESYNC_RPC_SERVERS: "https://cosmoshub.validator.network:443,https://cosmoshub.validator.network:443"
GOPATH: /go




strategy:
matrix:
database: [rocksdb, boltdb, badgerdb, goleveldb, cleveldb]

steps:
- run: git config --global --add safe.directory /__w/tendermint/tm-db
- uses: actions/checkout@v3
- name: state sync gaia with ${{ matrix.database }}
run: |
cd ..
git clone https://github.com/cosmos/gaia --branch release/v7.0.x
cd gaia
go mod edit -replace github.com/tendermint/tm-db=../tm-db
go mod tidy -go=1.18
go install -ldflags '-w -s -X github.com/cosmos/cosmos-sdk/types.DBBackend=${{ matrix.database }}' -tags ${{ matrix.database }} ./...
export LATEST_HEIGHT=$(curl -s https://cosmoshub.validator.network/block | jq -r .result.block.header.height);
export BLOCK_HEIGHT=$(($LATEST_HEIGHT-$INTERVAL))
export TRUST_HASH=$(curl -s "https://cosmoshub.validator.network/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
export GAIAD_STATESYNC_TRUST_HEIGHT=$BLOCK_HEIGHT
export GAIAD_STATESYNC_TRUST_HASH=$TRUST_HASH
export PATH=$PATH:/go/bin
echo "TRUST HEIGHT: $BLOCK_HEIGHT"
echo "TRUST HASH: $TRUST_HASH"
gaiad init gaia-matrix
cp /genesis.json ~/.gaia/config/genesis.json
gaiad start --x-crisis-skip-assert-invariants --db_backend ${{ matrix.database }}
41 changes: 32 additions & 9 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,42 @@
name: Lint
name: golangci-lint
on:
push:
branches:
- master
pull_request:

permissions:
contents: read
# Optional: allow read access to pull request. Use with `only-new-issues` option.
# pull-requests: read
jobs:
golangci:
# We need to run the linter on the same image we use for building, since it
# needs the C libraries installed for the dependencies to typecheck.
name: lint
runs-on: ubuntu-latest
container: tendermintdev/docker-tm-db-testing
container: ghcr.io/faddat/cosmos
steps:
- uses: actions/setup-go@v3
with:
go-version: 1.18
- uses: actions/checkout@v3

- uses: golangci/[email protected]
with:
args: --timeout 10m
github-token: ${{ secrets.github_token }}
# Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
version: latest

# Optional: working directory, useful for monorepos
# working-directory: somedir

# Optional: golangci-lint command line arguments.
# args: --issues-exit-code=0

# Optional: show only new issues if it's a pull request. The default value is `false`.
# only-new-issues: true

# Optional: if set to true then the all caching functionality will be complete disabled,
# takes precedence over all other caching options.
# skip-cache: true

# Optional: if set to true then the action don't cache or restore ~/go/pkg.
# skip-pkg-cache: true

# Optional: if set to true then the action don't cache or restore ~/.cache/go-build.
# skip-build-cache: true
3 changes: 1 addition & 2 deletions .gitpod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@
# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file)
# and commit this file to your remote git repository to share the goodness with others.

image: tendermintdev/docker-tm-db-testing
image: ghcr.io/notional-labs/cosmos

# this means that there's a one-click known good environment available to developers.
5 changes: 4 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ linters:
- dogsled
- dupl
- errcheck
- exportloopref
- gofumpt
# - funlen
# - gochecknoglobals
# - gochecknoinits
- goconst
- gocritic
- gofumpt
Expand Down
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"makefile.extensionOutputFolder": "./.vscode",
"go.buildTags": "rocksdb"
}
36 changes: 27 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Tendermint DB
# Tendermint DB, Custom Edition

[![version](https://img.shields.io/github/tag/tendermint/tm-db.svg)](https://github.com/tendermint/tm-db/releases/latest)
[![license](https://img.shields.io/github/license/tendermint/tm-db.svg)](https://github.com/tendermint/tm-db/blob/master/LICENSE)
Expand All @@ -10,23 +10,41 @@

Common database interface for various database backends. Primarily meant for applications built on [Tendermint](https://github.com/tendermint/tendermint), such as the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk), but can be used independently of these as well.

### Differences

* This tm-db branch includes its own fully-working, known-good development environment so that you can easily test the one viable cgo database, rocksdb.
* This tm-db branch removes bolt because it basically does not work, and badger because it is abandonware.
* This tm-db branch aims to support only viable options:

* goleveldb
* rocksdb
* pebbledb

### Learnings

Rocksdb uses the most RAM of any of these options. We know this because it is killed in this run:

https://github.com/notional-labs/tm-db/runs/6437891115 on a 4cpu runner. We'll increase to 8 now.

buildjet-4vcpu-ubuntu-2004

Yeilds 2m 30s to consensus reactor.



### Minimum Go Version

Go 1.13+
Go 1.18+



## Supported Database Backends

- **[GoLevelDB](https://github.com/syndtr/goleveldb) [stable]**: A pure Go implementation of [LevelDB](https://github.com/google/leveldb) (see below). Currently the default on-disk database used in the Cosmos SDK.

- **MemDB [stable]:** An in-memory database using [Google's B-tree package](https://github.com/google/btree). Has very high performance both for reads, writes, and range scans, but is not durable and will lose all data on process exit. Does not support transactions. Suitable for e.g. caches, working sets, and tests. Used for [IAVL](https://github.com/tendermint/iavl) working sets when the pruning strategy allows it.

- **[LevelDB](https://github.com/google/leveldb) [experimental]:** A [Go wrapper](https://github.com/jmhodges/levigo) around [LevelDB](https://github.com/google/leveldb). Uses LSM-trees for on-disk storage, which have good performance for write-heavy workloads, particularly on spinning disks, but requires periodic compaction to maintain decent read performance and reclaim disk space. Does not support transactions.

- **[BoltDB](https://github.com/etcd-io/bbolt) [experimental]:** A [fork](https://github.com/etcd-io/bbolt) of [BoltDB](https://github.com/boltdb/bolt). Uses B+trees for on-disk storage, which have good performance for read-heavy workloads and range scans. Supports serializable ACID transactions.

- **[RocksDB](https://github.com/cosmos/gorocksdb) [experimental]:** A [Go wrapper](https://github.com/cosmos/gorocksdb) around [RocksDB](https://rocksdb.org). Similarly to LevelDB (above) it uses LSM-trees for on-disk storage, but is optimized for fast storage media such as SSDs and memory. Supports atomic transactions, but not full ACID transactions.

- **[BadgerDB](https://github.com/dgraph-io/badger) [experimental]:** A key-value database written as a pure-Go alternative to e.g. LevelDB and RocksDB, with LSM-tree storage. Makes use of multiple goroutines for performance, and includes advanced features such as serializable ACID transactions, write batches, compression, and more.
- **[RocksDB](https://github.com/linxGnu/grocksdb) [experimental]:** A [Go wrapper](https://github.com/linxGnu/grocksdb) around [RocksDB](https://rocksdb.org). Similarly to LevelDB (above) it uses LSM-trees for on-disk storage, but is optimized for fast storage media such as SSDs and memory. Supports atomic transactions, but not full ACID transactions.

## Meta-databases

Expand Down
Loading