Se ha presentado la versión beta del motor de almacenamiento OrioleDB beta7 y se han publicado los resultados de nuevas pruebas que demuestran un aumento significativo en el rendimiento en comparación con el PostgreSQL tradicional. En la versión beta7 se han implementado optimizaciones destinadas a mejorar el manejo de cargas multihilo y acelerar las operaciones de lectura y escritura. Se planea que el primer lanzamiento estable de OrioleDB se realice en 2025. El motor está escrito en el lenguaje C y se distribuye bajo una licencia de PostgreSQL, similar a las licencias BSD y MIT.
El proyecto OrioleDB desarrolla un motor de almacenamiento alternativo para PostgreSQL, diseñado con el objetivo de superar las limitaciones del mecanismo de almacenamiento estándar y aumentar la eficiencia general del sistema. Por ejemplo, OrioleDB permite prescindir de la ejecución periódica de la operación VACUUM para la recolección de basura, gracias a la implementación del mecanismo MVCC (Control de Concurrencia de Múltiples Versiones) basado en logs de deshacer (undo logs), que operan a nivel de bloques y filas individuales, así como un sistema automático de fusión de páginas que contienen datos. OrioleDB también utiliza identificadores de transacciones de 64 bits, lo que resuelve el problema de desbordamiento de contadores.
Para simplificar el uso en sistemas distribuidos y paralelizar operaciones en OrioleDB, se ha organizado la gestión de WAL-logs de transacciones a nivel de filas. En la operación UPDATE se admite la sustitución de datos in situ (sin liberar el registro actual y crear uno nuevo), lo que tiene un impacto positivo en el rendimiento. OrioleDB también implementa capacidades como la lectura de páginas de datos sin utilizar bloqueos, la vinculación directa de páginas en memoria con páginas en el almacenamiento persistente, el uso del mecanismo CoW (copy-on-write) al fijar puntos de control para crear instantáneas coherentes en cualquier momento, y un modo de almacenamiento de datos en forma comprimida utilizando el algoritmo ZSTD.
Entre las limitaciones de la séptima versión beta de OrioleDB se destaca la posibilidad de usar solo índices en formato B-tree (en el futuro se añadirá soporte para todos los tipos de índices de PostgreSQL), así como la falta de soporte para transacciones preparadas (PREPARE TRANSACTION) y el comando "REINDEX" en modo "CONCURRENTLY". OrioleDB se implementa como una extensión que requiere modificaciones en la base de código principal de PostgreSQL.
En las pruebas de rendimiento TPC-C, que modelan la carga de procesamiento transaccional en condiciones reales, la séptima versión beta de OrioleDB mostró una ventaja significativa sobre el motor estándar de PostgreSQL. Las pruebas se llevaron a cabo con diferentes números de clientes en funcionamiento simultáneamente para evaluar la escalabilidad y el rendimiento del sistema bajo carga creciente.
En las pruebas que evalúan el rendimiento de las transacciones, el motor OrioleDB alcanzó una mayor capacidad de procesamiento, medida en transacciones por minuto (tpmC). A medida que aumentaba el número de clientes, el rendimiento de OrioleDB continuaba creciendo linealmente, mientras que el motor Heap en PostgreSQL tendía a estancarse e incluso a disminuir después de cierto umbral.



En las pruebas de tiempo de respuesta, el tiempo promedio de respuesta de las transacciones en OrioleDB fue notablemente inferior en comparación con PostgreSQL. Así, los sistemas basados en OrioleDB pueden procesar más transacciones en el mismo intervalo de tiempo, ofreciendo al mismo tiempo un servicio de consultas más rápido. Al medir el uso de recursos, el motor OrioleDB demostró un uso más eficiente de CPU y memoria, gracias a una gestión de recursos optimizada.
Fuente: opennet.ru
