Crux is becoming XTDB!

You can read the rename announcement, or head to this page on the new XTDB site (where you'll be taken in 10 seconds).

Menu

LMDB

LMDB can be used as the data store for Crux’s query indices, but can also be used as a transaction log and/or document store in single node clusters.

LMDB tends to provide faster queries than RocksDB in exchange for a slower ingest rate.

Project Dependency

In order to use LMDB within Crux, you must first add LMDB as a project dependency:

  • deps.edn

  • pom.xml

juxt/crux-lmdb {:mvn/version "20.09-1.12.0-alpha"}
<dependency>
    <groupId>juxt</groupId>
    <artifactId>crux-lmdb</artifactId>
    <version>20.09-1.12.0-alpha</version>
</dependency>

Using LMDB

Replace the implementation of the desired component with crux.lmdb/->kv-store

  • JSON

  • Clojure/EDN

{
  "crux/index-store": {
    "kv-store": {
      "crux/module": "crux.lmdb/->kv-store",
      "db-dir": "/tmp/lmdb"
    }
  },

  "crux/document-store": { ... },
  "crux/tx-log": { ... }
}
{:crux/index-store {:kv-store {:crux/module 'crux.lmdb/->kv-store
                               :db-dir (io/file "/tmp/lmdb")}}
 :crux/document-store {...}
 :crux/tx-log {...}}

Parameters

  • db-dir (required, string/File/Path): path to LMDB data directory

  • sync? (boolean, default false): sync to disk after every write

  • env-flags (int): LMDB flags

  • env-mapsize(int): LMDB map size