Desenvolvedores do SQLite estão expandindo o backend HC-tree com suporte para operações de gravação paralelas

Os desenvolvedores do projeto SQLite começaram a testar um backend experimental chamado HCtree, que suporta bloqueio a nível de linhas e proporciona um alto nível de paralelismo ao processar solicitações. O novo backend visa aumentar a eficiência do uso do SQLite em sistemas cliente-servidor, onde é necessário lidar com um grande número de solicitações simultâneas para gravação no banco de dados.

As estruturas b-tree, inicialmente utilizadas no SQLite para armazenar dados, não são adequadas para esse tipo de carga, o que limita o SQLite à gravação em um único fluxo. Como experimento, os desenvolvedores começaram a desenvolver uma solução alternativa, utilizando estruturas HC-tree de armazenamento, mais adequadas para paralelizar operações de gravação.

Para organizar a execução simultânea de várias operações em HCtree, utiliza-se um mecanismo de separação de transações, que faz uso de bloqueios a nível de páginas e é similar ao MVCC (controle de concorrência multimodal), mas utiliza verificações de transações baseadas em chaves e intervalos de chaves em vez de conjuntos de páginas. As operações de leitura e gravação são realizadas em relação ao instantâneo do banco de dados, cujas alterações se tornam visíveis no banco de dados principal apenas após a conclusão da transação.

Os clientes podem usar três operações para abrir transações:

  • «BEGIN» — as transações não consideram os dados de acesso de outros clientes. Se operações de gravação forem realizadas dentro da transação, esta só pode ser confirmada se, no decorrer de sua execução, não houver outras operações de gravação no banco de dados.
  • «BEGIN CONCURRENT» — as transações coletam informações sobre o acesso de outros clientes. Se operações de gravação forem feitas dentro da transação, ela pode ser confirmada se, desde a criação do instantâneo, outras transações foram confirmadas no banco de dados.
  • «BEGIN EXCLUSIVE» — após a abertura da transação, bloqueia operações de outras transações até que seja concluída.

O HCtree suporta replicação no estilo 'master-slave', permitindo transferir transações para outro banco de dados e manter bancos de dados secundários em um estado sincronizado com o banco de dados principal. O HCtree também remove a limitação do tamanho do banco de dados — em vez de identificadores de página de dados de 32 bits, o HCtree utiliza identificadores de 48 bits, aumentando o tamanho máximo do banco de dados de 16 tebibytes para 1 exbibyte (um milhão de tebibytes). Espera-se que o desempenho do SQLite com o backend HCtree seja não inferior ao backend clássico de thread única. Clientes do SQLite com suporte para HCtree poderão acessar tanto bancos de dados baseados na estrutura HC-tree quanto antigos bancos de dados SQLite.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster