OrioleDB, um novo mecanismo de armazenamento para PostgreSQL

orioleDB

O OrioleDB combina as vantagens dos mecanismos em disco e na memória, aumentando o desempenho do banco de dados e reduzindo custos

Recentemente, a notícia da publicação de um novo mecanismo de armazenamento para PostgreSQL chamado "OrioleDB", que foi criado por OrioleData.

O objetivo de OrioleDB é fornecer armazenamento rápido e compactoo não causar uma sobrecarga dos arquivos de banco de dados ao longo do tempo e que não requer o uso de um processo VACUUM que funciona periodicamente para coleta de lixo.

Ele faz isso implementando registros de desfazer no nível de linha e bloco., bem como a mesclagem automática de páginas. Os logs de desfazer em nível de linha e bloco fornecem um nível de controle mais granular, permitindo uma manipulação mais eficiente das alterações de dados. O recurso de mesclagem automática de páginas funciona incansavelmente em segundo plano para consolidar dados fragmentados, melhorando ainda mais a eficiência do sistema.

Sobre OrioleDB

Como já mencionamos, OrioleDB é um novo mecanismo para PostgreSQL, desenvolvido com um objetivo principal: evitar que as tabelas sejam sobrecarregadas e eliminar a necessidade de manutenções regulares como o VACUUM.

As estruturas utilizadas no OrioleDB permitem que as operações sejam processadas de forma mais eficiente de modificação de dados no banco de dados e substituir os blocos liberados sem acumulá-los no tempo. A capacidade de ignorar o VACUUM é implementada por meio do uso de logs de reversão (logs de desfazer) que funcionam no nível de bloco e linha individual, bem como um sistema para mesclar páginas de dados automaticamente.

O registro de reversão em nível de linha permite atualizações com substituição de dados no local, sem liberar o registro atual e criar um novo. O log de reversão em nível de bloco permite antecipar tuplas e liberar espaço de armazenamento imediatamente após uma operação DELETE, mesmo que elas permaneçam visíveis em transações com falha. Para reduzir a fragmentação do armazenamento resultante de um grande número de exclusões, as páginas de dados individuais são mescladas automaticamente em segundo plano.

O log de transações WAL no OrioleDB é mantido no nível de linha, não em blocos, o que facilita o uso em sistemas distribuídos e permite a paralelização da implantação do log. É possível criar configurações distribuídas com vários servidores master ativos, para mantê-los em estado sincronizado é utilizado o algoritmo de consenso Raft.

Das características que se destacam do OrioleDB, você pode ver o leitura de páginas de dados sem usar bloqueios, ligação direta de páginas na RAM com páginas em armazenamento permanente, o uso do mecanismo CoW (cópia na gravação) definindo pontos de verificação para criar instantâneos consistentes a qualquer momento. Os valores de 64 bits são usados ​​​​para identificadores de transação, cujo uso resolve o problema de estouro do contador.

O uso do OrioleDB permite não só elimina a necessidade de operações manuais e simplifica a manutenção do DBMS, mas também Aumentar o desempenho. Por exemplo, um melhor desempenho é alcançado atualizando os dados no local, o que evita a alteração de índices que não estão relacionados ao armazenamento do valor alterado. O mecanismo também suporta o armazenamento de dados em um formato compactado (a compactação é realizada usando o algoritmo ZSTD e implementada no nível do bloco de tamanho variável), o que permite reduzir o tamanho do banco de dados no disco em 4 a 5 vezes.

O teste de uma configuração de tabela única com 5 índices usando OrioleDB mostrou aumento de 5x no TPS (transações processadas por segundo), redução de 2.3x na carga da CPU, redução de 22x nas operações de E/S por transação.

Finalmente se você estiver interessado em saber mais sobre isso, você deve saber que o mecanismo é escrito em C e Ele é distribuído sob uma licença PostgreSQL e é implementado como um plug-in que requer alterações na base de código PostgreSQL principal.

Deve-se observar que, em sua forma atual, o mecanismo está em fase de teste beta e ainda não é recomendado para implantações de produção.

Você pode conferir os detalhes da publicação original em o seguinte link.