Motor de base de datos reactivo escrito en Java (17+) usando Project Reactor.
Esta biblioteca proporciona una abstracción reactiva básica y una implementación de un almacén de valores clave y un motor de búsqueda .
Existen cuatro implementaciones listas para usar, dos para el almacén de valores clave y dos para el motor de búsqueda, pero es posible agregar más implementaciones.
Las consultas se pueden serializar y deserializar utilizando un formato de serialización personalizado eficiente.
La abstracción de la base de datos puede evitar copiar los datos varias veces utilizando los buffers RocksDB JNI y Netty 5.
Está disponible un generador de datos que genera registros Java 16: le permite generar registros personalizados definiendo los campos utilizando un archivo .yaml.
El generador también genera en el momento de la compilación la fuente de serializadores, deserializadores y actualizadores especializados para cada registro personalizado.
La abstracción del almacén de valores-clave le permite deserializar versiones antiguas de sus datos de forma transparente, utilizando los actualizadores y deserializadores personalizados automáticamente.
El generador de datos se puede encontrar en el repositorio del generador de datos.
Almacén de valores clave de RocksDB
Biblioteca de indexación Apache Lucene Core
¿Por qué es tan difícil de usar?
Este no es un DBMS.
Este es un motor sobre el cual se puede construir un DBMS; por esta razón es muy difícil usarlo directamente sin construir otra capa de abstracción encima.
¿Puedo usar objetos en lugar de matrices de bytes?
Sí, debe serializarlos/deserializarlos utilizando una biblioteca de su elección.
CodecSerializer le permite implementar datos versionados utilizando un códec para cada versión de datos. Tenga en cuenta que utiliza de 1 a 4 bytes más por cada valor para almacenar la versión.
¿Por qué existe una función de instantánea para cada parte de la base de datos?
Dado que los índices RocksDB y lucene son bibliotecas diferentes, no se puede tomar una instantánea de cada base de datos de forma atómica.
Se debe implementar una instantánea universal como una colección de cada instantánea de la base de datos.
¿CavalliumDB Engine es adecuado para su proyecto?
No.
Este motor prácticamente no está documentado y no proporciona pruebas exhaustivas.
En src/example/java
puedes encontrar algunos ejemplos (feos) .