- Notifications
You must be signed in to change notification settings - Fork122
Lightning Memory Database (LMDB) for Java: a low latency, transactional, sorted, embedded, key-value store
License
lmdbjava/lmdbjava
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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
, AgronaDirectBuffer
, NettyByteBuf
, 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)
- 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 (seeissues)
- Available fromMaven Central andOSS Sonatype Snapshots
- Continuous integration testing on Linux, Windows and macOS with Java 8, 11, 17 and 21
Full details are in thelatest benchmark report.
We're happy to help you use LmdbJava. Simplyopen a GitHub issue if you haveany questions.
This project usesZig to cross-compile the LMDB nativelibrary for all supported architectures. To locally build LmdbJava you mustfirstly install a recent version of Zig and then execute the project'scross-compile.shscript. This only needs to be repeated when thecross-compile.sh
script isupdated (eg following a new official release of the upstream LMDB library).
If you do not wish to install Zig and/or use an operating system which cannoteasily execute thecross-compile.sh
script, you can download the compiledLMDB native library for your platform from a location of your choice and set thelmdbjava.native.lib
system property to the resulting file system systemlocation. Possible sources of a compiled LMDB native library include operatingsystem package managers, runningcross-compile.sh
on a supported system, orcopying it from theorg/lmdbjava
directory of any recent, officially releasedLmdbJava JAR.
Contributions are welcome! Please see theContributing Guidelines.
This project is licensed under theApache License, Version 2.0.
This project distribution JAR includes LMDB, which is licensed underThe OpenLDAP Public License.
About
Lightning Memory Database (LMDB) for Java: a low latency, transactional, sorted, embedded, key-value store
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.