Skip to content
Lightning Memory Database (LMDB) for Java: a low latency, transactional, sorted, embedded, key-value store
Java
Branch: master
Clone or download
benalexau Merge pull request #137 from harrigan/fix-exception-typo
Fix typo in exception class name
Latest commit aff67cf Aug 2, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Fix typo in exception class name Aug 1, 2019
.gitignore
.travis-settings.xml Enable snapshot repo Aug 17, 2016
.travis.yml
CONTRIBUTING.md Encourage mvn clean verify use Jul 17, 2016
LICENSE.txt Add license management plugin Jul 15, 2016
README.md Update features list Jun 2, 2019
appveyor.yml AppVeyor test with Java 11 Feb 8, 2019
pom.xml [maven-release-plugin] prepare for next development iteration Jun 4, 2019

README.md

Build Status Build Status codecov Javadocs Maven Central

LMDB for Java

LMDB offers:

  • Transactions (full ACID semantics)
  • Ordered keys (enabling very fast cursor-based iteration)
  • Memory-mapped files (enabling optimal OS-level memory management)
  • Zero copy design (no serialization or memory copy overhead)
  • No blocking between readers and writers
  • Configuration-free (no need to "tune" it to your storage)
  • Instant crash recovery (no logs, journals or other complexity)
  • Minimal file handle consumption (just one data file; not 100,000's like some stores)
  • Same-thread operation (LMDB is invoked within your application thread; no compactor thread is needed)
  • Freedom from application-side data caching (memory-mapped files are more efficient)
  • Multi-threading support (each thread can have its own MVCC-isolated transaction)
  • Multi-process support (on the same host with a local file system)
  • Atomic hot backups

LmdbJava adds Java-specific features to LMDB:

  • Extremely fast across a broad range of benchmarks, data sizes and access patterns
  • Modern, idiomatic Java API (including iterators, key ranges, enums, exceptions etc)
  • Nothing to install (the JAR embeds the latest LMDB libraries for Linux, OS X and Windows)
  • Buffer agnostic (Java ByteBuffer, Agrona DirectBuffer, Netty ByteBuf, your own buffer)
  • 100% stock-standard, officially-released, widely-tested LMDB C code (no extra C/JNI code)
  • Low latency design (allocation-free; buffer pools; optional checks can be easily disabled in production etc)
  • Automatically tested with Java 8 and Java 11
  • Easy to use (just work through our step-by-step, CI-tested, fully-executable tutorial)
  • Community questions and contributions are welcome through GitHub tickets
  • Mature code (commenced in 2016) and used for heavy production workloads (eg > 500 TB of HFT data)
  • Actively maintained and with a "Zero Bug Policy" before every release (see issues)
  • Available from Maven Central and OSS Sonatype Snapshots (see Change Log)
  • Comprehensive JavaDocs
  • Linux, OS X and Windows CI

Performance

img

img

Full details are in the latest benchmark report.

Support

We're happy to help you use LmdbJava. Simply open a GitHub issue if you have any questions.

Contributing

Contributions are welcome! Please see the Contributing Guidelines.

License

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

This project distribution JAR includes LMDB, which is licensed under The OpenLDAP Public License.

You can’t perform that action at this time.