Mecanismo de banco de dados reativo escrito em Java (17+) usando Project Reactor.
Esta biblioteca fornece uma abstração reativa básica e implementação de um armazenamento de valores-chave e um mecanismo de pesquisa .
Existem quatro implementações prontas para uso, duas para o armazenamento de valores-chave, duas para o mecanismo de pesquisa, mas é possível adicionar mais implementações.
As consultas podem ser serializadas e desserializadas usando um formato de serialização personalizado eficiente
A abstração do banco de dados pode evitar a cópia dos dados várias vezes usando buffers RocksDB JNI e Netty 5
Está disponível um gerador de dados que gera registros Java 16: ele permite gerar registros personalizados definindo os campos usando um arquivo .yaml.
O gerador também gera em tempo de compilação a fonte de serializadores, desserializadores e atualizadores especializados, para cada registro personalizado.
A abstração de armazenamento de valor-chave permite desserializar versões antigas de seus dados de forma transparente, usando os atualizadores personalizados e os desserializadores personalizados automaticamente.
O gerador de dados pode ser encontrado no repositório do gerador de dados.
Armazenamento de valores-chave RocksDB
Biblioteca de indexação Apache Lucene Core
Por que é tão difícil de usar?
Este não é um SGBD.
Este é um mecanismo no qual um SGBD pode ser construído; por esse motivo é muito difícil usar diretamente sem construir outra camada de abstração por cima.
Posso usar objetos em vez de matrizes de bytes?
Sim, você deve serializá-los/desserializá-los usando uma biblioteca de sua escolha.
CodecSerializer permite implementar dados versionados usando um codec para cada versão de dados. Observe que ele usa de 1 a 4 bytes a mais para cada valor para armazenar a versão.
Por que existe uma função de instantâneo para cada parte do banco de dados?
Como os índices RocksDB e lucene são bibliotecas diferentes, você não pode tirar um instantâneo de cada banco de dados atomicamente.
Um snapshot universal deve ser implementado como uma coleção de cada snapshot do banco de dados.
O CavalliumDB Engine é adequado para o seu projeto?
Não.
Este mecanismo não está documentado e não fornece testes extensivos.
Em src/example/java
você pode encontrar alguns exemplos (feios) .