Skip to content

Key-value storage framework with a reactive API, transactions, extendable indexing and backup support.

License

Notifications You must be signed in to change notification settings

LevelFourAB/silo

Repository files navigation

Silo

Silo is a key-value storage framework with a reactive API, transactions, extendable indexing and backup support. Silo runs on Java 9+ and is intended to be used as an embedded part of larger solutions.

// Definition of a collection named `books`
CollectionDef booksDef = CollectionDef.create("books", Book.class)
  .withCodec(...)
  .withId(Book::getId)
  .build();

// Start a Silo instance with one collection
LocalSilo silo = LocalSilo.open("path/to/data/directory")
  .addCollection(booksDef)
  .start()
  .block();

// Get `Entity` object to perform operations
Collection<Long, Book> books = silo.getCollection("books", Long.class, Books.class);

// Store an object
books.store(new Book(1l, "The Tourist's Guide through North Wales"))
  .block();

// Get an object
Book stored = books.get(1l)
  .block();

// Delete an object
books.delete(1l)
  .block();

Features

  • Key-value storage based on MVStore
  • Transactions with read committed isolation
  • Extensible indexing support
  • Basic index, simple matching against fields
  • Search index, complex matching including full text search
  • Live backup support

Status

master currently contains a major rewrite that is not yet ready for release.

License

This project is licensed under the MIT license, see the file LICENSE.md for details.

About

Key-value storage framework with a reactive API, transactions, extendable indexing and backup support.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages