Giter Site home page Giter Site logo

Maven Build and Deployment 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)
  • 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
  • Continuous integration testing on Linux, Windows and macOS with Java 8, 11, 17 and 21

Performance

img

img

Full details are in the latest benchmark report.

Documentation

Support

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

Building

This project uses Zig to cross-compile the LMDB native library for all supported architectures. To locally build LmdbJava you must firstly install a recent version of Zig and then execute the project's cross-compile.sh script. This only needs to be repeated when the cross-compile.sh script is updated (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 cannot easily execute the cross-compile.sh script, you can download the compiled LMDB native library for your platform from a location of your choice and set the lmdbjava.native.lib system property to the resulting file system system location. Possible sources of a compiled LMDB native library include operating system package managers, running cross-compile.sh on a supported system, or copying it from the org/lmdbjava directory of any recent, officially released LmdbJava JAR.

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.

lmdbjava's Projects

benchmarks icon benchmarks

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

lmdbjava icon lmdbjava

Lightning Memory Database (LMDB) for Java: a low latency, transactional, sorted, embedded, key-value store

native icon native

LMDB Native Libraries Automatic Build Repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.