Está disponível o mecanismo de armazenamento embutido TidesDB 1.0, que suporta transações ACID

Foi lançado o primeiro release estável do projeto TidesDB, que está desenvolvendo uma biblioteca para armazenamento de dados no formato chave/valor. O projeto pode ser utilizado como um motor autônomo ou para ser integrado em aplicações. Entre as principais características, destaca-se o suporte a transações ACID e a otimização para armazenamento eficiente de dados em unidades Flash e na memória RAM. O código é escrito em C e é distribuído sob a licença MPL 2.0. Interfaces foram preparadas para as linguagens C++, Go, Java, Python, Rust, Lua e JavaScript.

Para o armazenamento de dados, utiliza-se a estrutura de árvore LSM (árvore de log estruturada com fusão), que garante alto desempenho não apenas na leitura, mas também na execução de operações de gravação e modificação de dados. As operações de leitura não bloqueiam a gravação e leitura de dados, enquanto as operações de gravação bloqueiam apenas a família de colunas na qual a gravação é realizada. Para acelerar ainda mais a leitura, suportam-se índices e cache baseados em filtros bloom (que permitem verificar a inclusão em um conjunto, admitindo falsos positivos, mas excluindo a omissão de um elemento existente).

Há suporte completo para transações ACID, permitindo alterações atômicas que abrangem famílias de colunas e, se necessário, reverter operações de forma atômica. Os dados podem ser armazenados em formato comprimido, com escolha do algoritmo de compressão vinculado à família de colunas. É possível definir bloqueios no nível de famílias de colunas individuais e empacotar o armazenamento em modo paralelo sem bloquear a execução de operações com o BD.

Principais funcionalidades:

  • Suporte para famílias de colunas (Column Families) — conjuntos de dados isolados no formato chave/valor. Para cada família de colunas, são usados seus próprios memtable, SSTable e WAL-log.
  • Transações ACID que abrangem várias operações com famílias de colunas.
  • Otimização para acesso paralelo aos dados.
  • Suporte para iteradores bidirecionais, permitindo percorrer pares chave/valor para frente ou para trás em relação à posição selecionada no armazenamento, utilizando o método de ordenação inicialmente definido.
  • Suporte para adicionar suas próprias funções de comparação de chaves. Disponibilidade de funções de comparação integradas: memcmp, string e numeric.
  • Registro de operações (WAL, Write-Ahead Log) e recuperação automática da memtable (armazenamento em memória) a partir deste log durante a inicialização.
  • Uso de filtros Bloom para minimizar acessos ao armazenamento por meio da verificação da existência da chave antes da leitura do SSTable (armazenamento persistente).
  • Suporte aos algoritmos Snappy, LZ4 e ZSTD para compressão de registros no armazenamento SSTable e no log WAL.
  • Capacidade de definir o tempo de vida dos registros (TTL) e exclusão automática de registros expirados.
  • Três modos de sincronização de dados na RAM com o armazenamento persistente: NONE (o mais rápido), BACKGROUND (balanceado), FULL (o mais confiável).
  • Possibilidade de configurar o tamanho da memtable, métodos de compressão, filtros Bloom, modo de sincronização e parâmetros de empacotamento para cada família de colunas.
  • Simples API C, retornando 0 em caso de sucesso na operação e -1 em caso de erro.
  • Uso de SBHA (Sorted Binary Hash Array) para busca rápida de dados no SSTable, permitindo determinar deslocamentos de blocos com chaves sem varredura completa.
  • Formato binário portátil compacto para representação de banco de dados, suportando versionamento.
  • Mecanismos integrados de controle de integridade, deteção de corrupção de dados e recuperação.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster