Foi lançada a versão beta do motor de armazenamento OrioleDB beta7 e publicados os resultados de novos testes que demonstram um aumento significativo no desempenho em comparação com o PostgreSQL tradicional. Na versão beta7, foram implementadas otimizações destinadas a melhorar o desempenho em cargas de trabalho de múltiplos threads e acelerar operações de leitura e gravação. O primeiro lançamento estável do OrioleDB está previsto para 2025. O motor foi escrito na linguagem C e é distribuído sob uma licença PostgreSQL, semelhante às licenças BSD e MIT.
O projeto OrioleDB desenvolve um motor de armazenamento alternativo para PostgreSQL, criado com o objetivo de superar as limitações do mecanismo de armazenamento padrão e aumentar a eficiência geral do sistema. Por exemplo, o OrioleDB permite evitar a realização periódica da operação VACUUM para coleta de lixo, graças à implementação do mecanismo MVCC (Controle de Concorrência de Múltiplas Versões) baseado em logs de reversão (undo logs), que operam em nível de blocos e linhas individuais, além de um sistema de mesclagem automática de páginas de dados. O OrioleDB também utiliza identificadores de transação de 64 bits, resolvendo assim o problema de transbordamento de contadores.
Para simplificar o uso em sistemas distribuídos e paralelizar operações, o OrioleDB organiza a manutenção de um log WAL de transações em nível de linhas. Durante a execução da operação UPDATE, é suportada a substituição de dados no local (sem liberar o registro atual e criar um novo), o que impacta positivamente no desempenho. O OrioleDB também implementa recursos como leitura de páginas de dados sem bloqueios, vinculação direta de páginas na memória com páginas em armazenamento permanente, aplicação do mecanismo CoW (copy-on-write) ao criar pontos de verificação para gerar snapshots consistentes a qualquer momento, e um modo de armazenamento de dados comprimidos usando o algoritmo ZSTD.
Dentre as limitações na sétima versão beta do OrioleDB, destaca-se a possibilidade de uso apenas de índices no formato B-tree (no futuro, haverá suporte para todos os tipos de índices do PostgreSQL), além da ausência de suporte a transações preparadas (PREPARE TRANSACTION) e ao comando "REINDEX" no modo "CONCURRENTLY". O OrioleDB é implementado na forma de uma extensão plugável, exigindo modificações na base de código principal do PostgreSQL.
Nos testes de desempenho TPC-C, que simulam a carga de processamento transacional em condições reais, a sétima versão beta do OrioleDB demonstrou uma superioridade significativa sobre o mecanismo padrão do PostgreSQL. Os testes foram realizados com diferentes quantidades de clientes simultâneos, a fim de avaliar a escalabilidade e o desempenho do sistema sob crescente carga.
Em testes que avaliam a taxa de transações, o mecanismo OrioleDB alcançou uma capacidade significativamente maior, medida em transações por minuto (tpmC). Com o aumento do número de clientes, o desempenho do OrioleDB continuou a aumentar linearmente, enquanto o mecanismo Heap no PostgreSQL mostrou uma tendência à estagnação e até mesmo uma diminuição após um certo limite.



Nos testes de tempo de resposta, o tempo médio de resposta das transações no OrioleDB foi significativamente inferior ao do PostgreSQL. Assim, sistemas baseados no OrioleDB podem processar mais transações no mesmo intervalo de tempo, proporcionando um atendimento de consultas mais rápido. Ao medir o uso de recursos, o mecanismo OrioleDB demonstrou um uso mais eficiente de CPU e memória, graças à otimização na gestão de recursos.
Fonte: opennet.ru
