Реактивный механизм базы данных, написанный на Java (17+) с использованием Project Reactor.
Эта библиотека предоставляет базовую реактивную абстракцию и реализацию хранилища значений ключа и поисковой системы .
Четыре реализации существуют «из коробки», две для хранилища значений ключа, две для поисковой системы, но можно добавить больше реализаций.
Запросы можно сериализовать и десериализовать с использованием эффективного пользовательского формата сериализации.
Абстракция базы данных позволяет избежать многократного копирования данных за счет использования буферов RocksDB JNI и Netty 5.
Доступен генератор данных, генерирующий записи Java 16: он позволяет создавать пользовательские записи, определяя поля с помощью файла .yaml.
Генератор также создает во время компиляции источник специализированных сериализаторов, десериализаторов и средств обновления для каждой пользовательской записи.
Абстракция хранилища «ключ-значение» позволяет прозрачно десериализовать старые версии ваших данных, автоматически используя пользовательские средства обновления и пользовательские десериализаторы.
Генератор данных можно найти в репозитории генератора данных.
Хранилище ключей и значений RocksDB
Библиотека индексирования Apache Lucene Core
Почему его так сложно использовать?
Это не СУБД.
Это механизм, на котором может быть построена СУБД; по этой причине его очень сложно использовать напрямую, не создавая поверх него еще один уровень абстракции.
Могу ли я использовать объекты вместо байтовых массивов?
Да, вы должны сериализовать/десериализовать их, используя библиотеку по вашему выбору.
CodecSerializer позволяет реализовать версионные данные, используя кодек для каждой версии данных. Обратите внимание, что для хранения версии для каждого значения используется от 1 до 4 байтов больше.
Почему для каждой части базы данных существует функция моментального снимка?
Поскольку индексы RocksDB и lucene — это разные библиотеки, вы не можете сделать снимок каждой базы данных атомарно.
Универсальный снимок должен быть реализован как совокупность всех снимков базы данных.
Подходит ли CavalliumDB Engine для вашего проекта?
Нет.
Этот движок практически не документирован и не проводит обширных испытаний.
В src/example/java
вы можете найти несколько (уродливых) примеров.