All Projects → lmdbjava → Benchmarks

lmdbjava / Benchmarks

Licence: apache-2.0
Benchmark of open source, embedded, memory-mapped, key-value stores available from Java (JMH)

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Benchmarks

Fastonosql
FastoNoSQL is a crossplatform Redis, Memcached, SSDB, LevelDB, RocksDB, UnQLite, LMDB, ForestDB, Pika, Dynomite, KeyDB GUI management tool.
Stars: ✭ 1,001 (+762.93%)
Mutual labels:  leveldb, rocksdb, lmdb
Ardb
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.
Stars: ✭ 1,707 (+1371.55%)
Mutual labels:  leveldb, rocksdb, lmdb
Rocksdb
Pure C++ Node.js RocksDB binding. An abstract-leveldown compliant store.
Stars: ✭ 138 (+18.97%)
Mutual labels:  leveldb, rocksdb
Srchx
A standalone lightweight full-text search engine built on top of blevesearch and Go with multiple storage (scorch, boltdb, leveldb, badger)
Stars: ✭ 118 (+1.72%)
Mutual labels:  leveldb, rocksdb
Level Rocksdb
A convenience package bundling levelup and rocksdb.
Stars: ✭ 120 (+3.45%)
Mutual labels:  leveldb, rocksdb
Cphalcon7
Dao7 - Web framework for PHP7.x,项目接洽 QQ 176013762
Stars: ✭ 237 (+104.31%)
Mutual labels:  leveldb, lmdb
ssdb
SSDB - A fast NoSQL database, an alternative to Redis
Stars: ✭ 8,026 (+6818.97%)
Mutual labels:  rocksdb, leveldb
pgrocks-fdw
Bring RocksDB to PostgreSQL as an extension. It is the first foreign data wrapper (FDW) that introduces LSM-tree into PostgreSQL. The underneath storage engine can be RocksDB. The FDW also serves for VidarDB engine, a versatile storage engine for various workloads. See the link for more info about VidarDB engine.
Stars: ✭ 101 (-12.93%)
Mutual labels:  rocksdb, leveldb
rippledb
Embeddable key-value database engine in pure TypeScript, based on LSM-Tree
Stars: ✭ 33 (-71.55%)
Mutual labels:  rocksdb, leveldb
Crux
General purpose bitemporal database for SQL, Datalog & graph queries
Stars: ✭ 1,296 (+1017.24%)
Mutual labels:  rocksdb, lmdb
Json Benchmark
nativejson-benchmark in Rust
Stars: ✭ 93 (-19.83%)
Mutual labels:  benchmark
Benchyou
benchyou is a benchmark tool for MySQL, real-time monitoring TPS and vmstat/iostat
Stars: ✭ 95 (-18.1%)
Mutual labels:  benchmark
Warp
S3 benchmarking tool
Stars: ✭ 107 (-7.76%)
Mutual labels:  benchmark
Benchexec
BenchExec: A Framework for Reliable Benchmarking and Resource Measurement
Stars: ✭ 108 (-6.9%)
Mutual labels:  benchmark
Ml Pyxis
Tool for reading and writing datasets of tensors in a Lightning Memory-Mapped Database (LMDB). Designed to manage machine learning datasets with fast reading speeds.
Stars: ✭ 93 (-19.83%)
Mutual labels:  lmdb
Kaggle Dogs Vs Cats Caffe
Kaggle dogs vs cats solution in Caffe
Stars: ✭ 105 (-9.48%)
Mutual labels:  benchmark
Math Parser Benchmark Project
C++ Mathematical Expression Parser Benchmark
Stars: ✭ 91 (-21.55%)
Mutual labels:  benchmark
Ezfio
Simple NVME/SAS/SATA SSD test framework for Linux and Windows
Stars: ✭ 91 (-21.55%)
Mutual labels:  benchmark
Core50
CORe50: a new Dataset and Benchmark for Continual Learning
Stars: ✭ 91 (-21.55%)
Mutual labels:  benchmark
Meta Blocks
A modular toolbox for meta-learning research with a focus on speed and reproducibility.
Stars: ✭ 110 (-5.17%)
Mutual labels:  benchmark

Maven Build License

LmdbJava Benchmarks

Just want the latest results? View them here!

This is a JMH benchmark of open source, embedded, memory-mapped, key-value stores available from Java:

(**) does not support ordered keys, so iteration benchmarks not performed

The benchmark itself is adapted from LMDB's db_bench_mdb.cc, which in turn is adapted from LevelDB's benchmark.

The benchmark includes:

  • Writing data
  • Reading all data via each key
  • Reading all data via a reverse iterator
  • Reading all data via a forward iterator
  • Reading all data via a forward iterator and computing a CRC32 (via JDK API)
  • Reading all data via a forward iterator and computing a XXH64 (via extremely fast Zero-Allocation-Hashing)

Byte arrays (byte[]) are always used for the keys and values, avoiding any serialization library overhead. For those libraries that support compression, it is disabled in the benchmark. In general any special library features that decrease latency (eg batch modes, disable auto-commit, disable journals, hint at expected data sizes etc) were used. While we have tried to be fair and consistent, some libraries offer non-obvious tuning settings or usage patterns that might further reduce their latency. We do not claim we have exhausted every tuning option every library exposes, but pull requests are most welcome.

Usage

This benchmark uses POSIX calls to accurately determine consumed disk space and only depends on Linux-specific native library wrappers where a range of such wrappers exists. Operation on non-Linux operating systems is unsupported.

  1. Clone this repository and mvn clean package
  2. Run the benchmark with java -jar target/benchmarks.jar

The benchmark offers many parameters, but to reduce execution time they default to a fast, mechanically-sympathetic workload (ie integer keys, sequential IO) that should fit in RAM. A default execution takes around 15 minutes on server-grade hardware (ie 2 x Intel Xeon E5-2667 v3 CPUs, 512 GB RAM etc).

You can append -h to the java -jar line for JMH help. For example, use:

  • -foe true to stop on any error (recommended)
  • -rf csv to emit a CSV results file (recommended)
  • -f 3 to run three forks for smaller error ranges (recommended)
  • -lp to list all available parameters
  • -p intKey=true,false to test both integer and string-based keys

The parameters (available from -lp) allow you to create workloads of different iteration counts (num), key sizes and layout (intKey), value sizes (valSize), mechanical sympathy (sequential, valRandom) and feature tuning (eg forceSafe, writeMap etc).

System.out will display the actual on-disk usage of each implementation as "Bytes" \t longVal \t benchId lines. This is not the "apparent" size (given sparse files are typical), but the actual on-disk space used. The underlying storage location defaults to the temporary file system. To force an alternate location, invoke Java with -Djava.io.tmpdir=/somewhere/you/like.

Support

Please open a GitHub issue if you have any questions.

Contributing

Contributions are welcome! Please see the LmdbJava project's Contributing Guidelines.

License

This project is licensed under the Apache License, Version 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].