Dans SQLite, ils fonctionnent déjà sur un backend HCTree avec prise en charge des écritures parallèles

SQLite

est un système de gestion de base de données relationnelle compatible ACID, contenu dans une bibliothèque relativement petite écrite en C

Les développeurs du projet SQLite ont commencé à tester un backend expérimental HCtree qui prend en charge le verrouillage au niveau des lignes et offre un haut niveau de parallélisme dans le traitement des requêtes.

Concernant le nouveau système dorsal sur lequel ils travaillent, il est mentionné que son objectif est d'améliorer l'efficacité de l'utilisation de SQLite dans les systèmes client-serveur qui doivent traiter un grand nombre de requêtes d'écriture simultanées à la base de données.

Les structures d'arbres B utilisées initialement dans SQLite pour stocker les données ne sont pas conçues pour ce type de charge , limitant ainsi SQLite à l'écriture dans une seule séquence. À titre expérimental, les développeurs ont commencé à élaborer une solution alternative utilisant des structures HCtree pour le stockage, mieux adaptées à la parallélisation des opérations d'écriture.

Le projet HC-tree (hctree) est une tentative de développement d'un nouveau backend de base de données qui améliore le SQLite standard comme suit :

Amélioration de la concurrence : L’extension begin-concurrent permet une exécution simultanée grâce au verrouillage optimiste au niveau des pages. Cela améliore légèrement la concurrence, mais le verrouillage au niveau des pages peut détecter des conflits entre transactions logiquement indépendantes, et les opérations COMMIT doivent toujours être sérialisées.

Prise en charge de la réplication : SQLite standard prend en charge l’extension de session , ce qui permet de sérialiser le contenu d’une transaction validée pour sa transmission et son application à une seconde base de données. Hctree intègre cette fonctionnalité dans son système de gestion de bases de données et ajoute la prise en charge de l’application de ces transactions aux bases de données suiveuses dans les configurations leader-suiveur. Dans ce cas, les transactions reçues de la base de données leader peuvent être appliquées plus rapidement et avec une concurrence plus élevée que celles initialement appliquées à la base de données leader, car la validation des transactions n’est pas requise.

Suppression des limitations de taille de la base de données : SQLite standard utilise des numéros de page 32 bits. Avec une taille de page par défaut de 4 Kio, la taille maximale de la base de données est de 2^44 octets, soit 16 Tio.

Pour gérer plusieurs opérations simultanément, les enregistrements HCtree utilisent un mécanisme de séparation des transactions qui utilise des verrous au niveau de la page, similaire à MVCC (Multi-Version Contention Control), mais utilise des contrôles de transaction basés sur des plages de clés et des ensembles de clés au lieu d'ensembles de pages.

Les opérations de lecture et d'écriture sont effectuées par rapport à l'instantané de la base de données, dont les modifications ne deviennent visibles pour la base de données principale qu'une fois la transaction terminée.

Les clients peuvent utiliser trois opérations pour ouvrir des transactions :

  • «COMMENCER« : Les transactions ne prennent pas en compte les données d'accès des autres clients. Si des opérations d'écriture sont effectuées dans une transaction, la transaction ne peut être validée que s'il n'y a pas eu d'autres opérations d'écriture dans la base de données au moment de son exécution.
    «COMMENCER CONCURRENT« : Les transactions collectent des informations sur l'accès d'autres clients. Si des opérations d'écriture sont effectuées dans une transaction, la transaction peut être validée si d'autres transactions ont été validées dans la base de données depuis la création de l'instantané.
    «DÉBUT EXCLUSIF« : après l'ouverture d'une transaction, bloque les opérations des autres transactions jusqu'à ce qu'elle soit terminée.

HCtree prend en charge la réplication maître-esclave, ce qui vous permet de transférer des transactions vers une autre base de données et de synchroniser les bases de données secondaires avec la base de données principale.

HCtree supprime également la limite de taille de la base de données : au lieu des identifiants de page de données 32 bits, HCtree utilise des identifiants 48 bits, ce qui augmente la taille maximale de la base de données de 16 tebibytes à 1 exbibyte (million de tebibytes).

Les performances de SQLite avec le backend HCtree devraient être au moins aussi bonnes que le backend classique à un seul thread. Les clients SQLite prenant en charge HCtree pourront accéder à la fois aux bases de données HC-tree et aux anciennes bases de données SQLite.

Source : https://sqlite.org/


Ajouter comme source préférée dans Google