Almost time to saddle up

First preview coming soon.

The core works, the tests pass, and the examples and benchmarks are public. We are packaging the protected binary, finalizing its Maven coordinates, and preparing the first GitHub Release.

Current status: there is not yet a public JemDB JAR to download. Watch the GitHub repository for the first free binary preview.
What you will need

A Java app and data that fits in memory.

No Spring requirement. No server process. No cluster-shaped hole in your afternoon.

  1. Use Java 17 or newer

    JemDB is a compiled Java library. It can be embedded in plain Java, Spring Boot, desktop tools, or batch applications.

  2. Define a schema

    Choose fields, indexes, a primary key, and optional partitions around the queries your application actually needs.

  3. Load complete rows

    Your application owns the source data and rebuilds the in-memory search state. Upserts currently replace complete rows.

  4. Query with typed fields

    Resolve field handles once, build strict queries, and use a reusable cursor to stream results into your own output format.

The shape of a JemDB application

This is real public API code from the smallest example. The only missing ingredient today is the released dependency coordinate.

var db = new JemDb(JemDbConfig.builder()
    .addStringField("id")
    .addStringField("title")
    .addBooleanField("available")
    .setPrimaryKey("id")
    .build());

var id = db.stringField("id");
var title = db.stringField("title");
var available = db.booleanField("available");

db.upsert(new SimpleRowData(db.getFieldCount())
    .setString(id, "B-101")
    .setString(title, "The Left Hand of Darkness")
    .setBoolean(available, true));

var query = Query.builder()
    .where(available, true)
    .build();

try (var results = db.query(query)) {
    while (results.next()) {
        System.out.println(results.get(title));
    }
}

Know the fence line

JemDB is for read-heavy, structured search when the searchable data and indexes fit comfortably in memory and one application thread can own updates. It is not durable storage, SQL, full-text relevance, distributed replication, or a multi-writer transaction engine.

Missing values are represented by application-chosen defaults. Updates replace complete rows and may fail if they do not match the schema. These are deliberate first-version boundaries, documented so nobody finds them by stepping on a rake.

Free to use. Source stays private.

JemDB binary releases, examples, demos, and benchmarks are offered under the Elastic License 2.0. You may use JemDB in internal, self-managed, commercial, and SaaS applications. You may not offer substantial JemDB functionality as a hosted or managed JemDB service.

In plain English: put it in your application and build something useful. Please do not repackage JemDB itself as your own hosted JemDB product. The engine implementation is private; examples, demos, and benchmark source are public.

Want the first release?

The GitHub repository is the source of truth until the preview package is ready.