Los desarrolladores de SQLite desarrollan el backend del árbol HC con soporte para escrituras paralelas

Los desarrolladores del proyecto SQLite han comenzado a probar un backend experimental de HCtree que admite el bloqueo a nivel de fila y proporciona un alto nivel de paralelización al procesar consultas. El nuevo backend tiene como objetivo mejorar la eficiencia del uso de SQLite en sistemas cliente-servidor que tienen que procesar una gran cantidad de solicitudes de escritura simultáneas en la base de datos.

Las estructuras de árbol b utilizadas de forma nativa en SQLite para almacenar datos no están diseñadas para este tipo de carga, lo que limita a SQLite a escribir en un solo subproceso. Como experimento, los desarrolladores comenzaron a desarrollar una solución alternativa que utiliza estructuras de árbol HC para el almacenamiento, que son más adecuadas para paralelizar operaciones de escritura.

Para permitir que se ejecuten múltiples operaciones simultáneamente, un registro HCtree utiliza un mecanismo de partición de transacciones que utiliza bloqueo a nivel de página y es similar a MVCC (Control de concurrencia multiversión), pero utiliza comprobaciones de transacciones basadas en claves y rangos de claves en lugar de conjuntos de páginas. Las operaciones de lectura y escritura se realizan en relación con una instantánea de la base de datos, cuyos cambios se vuelven visibles en la base de datos principal solo después de que se completa la transacción.

Los clientes pueden utilizar tres operaciones de transacción abierta:

  • “COMENZAR”: las transacciones no tienen en cuenta los datos de acceso de otros clientes. Si las operaciones de escritura se realizan dentro de una transacción, la transacción sólo se puede confirmar si durante su ejecución no hubo otras operaciones de escritura en la base de datos.
  • "COMENZAR CONCURRENTE": las transacciones recopilan información sobre el acceso de otros clientes. Si se realizan operaciones de escritura dentro de una transacción, la transacción se puede confirmar si se han confirmado otras transacciones en la base de datos desde que se creó la instantánea.
  • “COMENZAR EXCLUSIVO”: después de abrir una transacción, bloquea las operaciones de otras transacciones hasta que se complete.

HCtree admite la replicación maestro-esclavo, lo que le permite migrar transacciones a otra base de datos y mantener las bases de datos secundarias sincronizadas con la base de datos primaria. HCtree también elimina la limitación en el tamaño de la base de datos: en lugar de identificadores de páginas de datos de 32 bits, HCtree utiliza identificadores de 48 bits, lo que aumenta el tamaño máximo de la base de datos de 16 tebibytes a 1 exbibyte (millones de tebibytes). Se espera que el rendimiento de SQLite con el backend HCtree no sea inferior al del backend clásico de un solo subproceso. Los clientes SQLite con soporte HCtree podrán acceder tanto a bases de datos basadas en árboles HC como a bases de datos SQLite heredadas.

Fuente: opennet.ru

Añadir un comentario