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();
- 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
master
currently contains a major rewrite that is not yet ready for release.
This project is licensed under the MIT license,
see the file LICENSE.md
for details.