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

Folders and files

NameName
Last commit message
Last commit date
Jan 29, 2021
Sep 1, 2021
Aug 2, 2021
Jul 31, 2021
Aug 2, 2021
Jul 23, 2018
Dec 13, 2020
Mar 22, 2021
Mar 26, 2021
Aug 1, 2021

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