Els desenvolupadors de SQLite desenvolupen el backend HC-tree amb suport per a escriptures paral·leles

Els desenvolupadors del projecte SQLite han començat a provar un backend HCtree experimental que admet el bloqueig a nivell de fila i proporciona un alt nivell de paral·lelització quan es processen les consultes. El nou backend té com a objectiu millorar l'eficiència de l'ús de SQLite en sistemes client-servidor que han de processar un gran nombre de sol·licituds d'escriptura simultànies a la base de dades.

Les estructures b-tree que s'utilitzen de forma nativa a SQLite per emmagatzemar dades no estan dissenyades per a aquest tipus de càrrega, la qual cosa limita SQLite a escriure només a un fil. Com a experiment, els desenvolupadors van començar a desenvolupar una solució alternativa que utilitza estructures d'arbre HC per a l'emmagatzematge, que són més adequades per paral·lelitzar operacions d'escriptura.

Per permetre que diverses operacions s'executin simultàniament, un registre HCtree utilitza un mecanisme de partició de transaccions que utilitza el bloqueig a nivell de pàgina i és similar a MVCC (Control de concurrència multiversió), però utilitza comprovacions de transaccions basades en claus i rangs de claus en lloc de conjunts de pàgines. Les operacions de lectura i escriptura es realitzen en relació amb una instantània de la base de dades, els canvis de les quals es fan visibles a la base de dades principal només un cop finalitzada la transacció.

Els clients poden utilitzar tres operacions de transacció obertes:

  • "INICIAR": les transaccions no tenen en compte les dades d'accés d'altres clients. Si les operacions d'escriptura es realitzen dins d'una transacció, la transacció només es pot confirmar si durant la seva execució no hi havia altres operacions d'escriptura a la base de dades.
  • "BEGIN CONCURRENT": les transaccions recullen informació sobre l'accés d'altres clients. Si es realitzen operacions d'escriptura dins d'una transacció, la transacció es pot confirmar si s'han confirmat altres transaccions a la base de dades des que es va crear la instantània.
  • "COMENZAR EXCLUSIU": després d'obrir una transacció, bloqueja les operacions d'altres transaccions fins que es completa.

HCtree admet la replicació mestre-esclau, que us permet migrar transaccions a una altra base de dades i mantenir les bases de dades secundàries sincronitzades amb la base de dades primària. HCtree també elimina la limitació de la mida de la base de dades: en comptes dels identificadors de pàgines de dades de 32 bits, HCtree n'utilitza de 48 bits, la qual cosa augmenta la mida màxima de la base de dades de 16 tebibytes a 1 exbibyte (milions de tebibytes). S'espera que el rendiment de SQLite amb el backend HCtree no sigui inferior al del backend clàssic d'un sol fil. Els clients SQLite amb suport HCtree podran accedir tant a bases de dades basades en arbres HC com a bases de dades SQLite heretades.

Font: opennet.ru

Afegeix comentari