Versão distribuída do DBMS TiDB 3.0

Disponível lançamento de DBMS distribuído TiDB3.0desenvolvido sob a influência das tecnologias do Google chave inglesa и F1. O TiDB pertence à categoria de sistemas híbridos HTAP (Hybrid Transactional/Analytical Processing) capazes de fornecer transações em tempo real (OLTP) e processar consultas analíticas. O projeto é escrito em Go e distribuído por licenciado sob Apache 2.0.

Características TiDB:

  • Suporte para SQL e fornecimento de uma interface de cliente compatível com o protocolo MySQL, o que facilita a adaptação de aplicativos existentes escritos para MySQL para TiDB e também permite o uso de bibliotecas de cliente comuns. Além do protocolo MySQL, você pode usar a API baseada em JSON e o conector do Spark para acessar o DBMS.
  • Dos recursos de SQL, índices, funções agregadas, GROUP BY, ORDER BY, expressões DISTINCT, mesclagens (LEFT JOIN / RIGHT JOIN / CROSS JOIN), exibições, funções de janela e subconsultas são suportadas. As oportunidades fornecidas são suficientes para organizar o trabalho com TiDB de aplicativos da web como PhpMyAdmin, Gogs e WordPress;
  • Expansão e resiliência: a capacidade de armazenamento e processamento pode ser ampliada simplesmente adicionando novos nós. Os dados são distribuídos entre os nós com redundância para permitir que as operações continuem se os nós individuais falharem. As falhas são tratadas automaticamente.
  • O sistema garante consistência e se parece com um grande SGBD para o software cliente, apesar do fato de que, de fato, dados de muitos nós estão envolvidos para completar a transação.
  • Para armazenar dados fisicamente em nós, diferentes back-ends podem ser usados, por exemplo, mecanismos de armazenamento local GoLevelDB e BoltDB ou nosso próprio mecanismo de armazenamento distribuído TiKV.
  • A capacidade de alterar de forma assíncrona o esquema de armazenamento, permitindo adicionar colunas e índices em tempo real sem interromper o processamento de operações em andamento.

O principal inovações:

  • Foram realizados trabalhos para aumentar a produtividade. No teste Sysbench, a versão 3.0 é 2.1 vezes mais rápida que a ramificação 1.5 ao realizar operações de seleção e atualização, e no teste TPC-C é 4.5 vezes mais rápida. As otimizações afetaram vários tipos de consultas, incluindo subconsultas IN, DO e NOT EXISTS, operações de fusão de tabelas (JOIN), o uso de índices e muito mais;
    Versão distribuída do DBMS TiDB 3.0Versão distribuída do DBMS TiDB 3.0

  • Adicionado um novo mecanismo de armazenamento TiFlash que permite maior desempenho na resolução de problemas analíticos (OLAP) graças ao armazenamento colunar. O TiFlash complementa o armazenamento TiKV oferecido anteriormente, que armazena dados por linha em um formato chave/valor e é mais ideal para tarefas de processamento de transações (OLTP). O TiFlash trabalha lado a lado com o TiKV e os dados continuam a ser replicados para o TiKV como antes de usar o protocolo Raft para determinar o consenso, mas para cada grupo de réplicas do Raft é criada uma réplica adicional que é usada no TiFlash. Essa abordagem permite um melhor compartilhamento de recursos entre tarefas OLTP e OLAP e também disponibiliza dados de transações instantaneamente para consultas analíticas;

    Versão distribuída do DBMS TiDB 3.0

  • Foi implementado um coletor de lixo distribuído, que pode aumentar significativamente a velocidade da coleta de lixo em grandes clusters e melhorar a estabilidade;
  • Uma implementação experimental de Controle de Acesso Baseado em Função (RBAC) foi adicionada. Também é possível definir direitos de acesso para as operações ANALYZE, USE, SET GLOBAL e SHOW PROCESSLIST;
  • Adicionada a capacidade de usar expressões SQL para extrair consultas lentas do log;
  • Foi implementado um mecanismo para restaurar rapidamente tabelas excluídas, permitindo restaurar dados excluídos acidentalmente;
  • O formato dos logs gravados foi unificado;
  • Adicionado suporte para modo de bloqueio pessimista, que torna o processamento de transações mais semelhante ao MySQL;
  • Adicionado suporte para funções de janela (funções de janela ou funções analíticas) compatíveis com MySQL 8.0. As funções da janela permitem realizar cálculos para cada linha da consulta usando outras linhas. Ao contrário das funções agregadas, que recolhem um conjunto agrupado de linhas em uma única linha, as funções de janela agregam com base no conteúdo de uma “janela”, que inclui uma ou mais linhas do conjunto de resultados. Entre as funções de janela implementadas:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK e ROW_NUMBER;

  • Adicionado suporte experimental para visualizações (VIEW);
  • O sistema de particionamento foi melhorado, foi adicionada a capacidade de distribuir dados em seções com base em um intervalo de valores ou hashes;
  • Foi adicionada uma estrutura para desenvolvimento de plugins, por exemplo, já foram preparados plugins para usar uma lista branca de IP ou manter um log de auditoria;
  • Foi fornecido suporte experimental para a função “EXPLAIN ANALYZE” para construção de um plano de execução para uma consulta SQL (SQL Plan Management);
  • Adicionado comando next_row_id para obter o ID da próxima linha;
  • Adicionadas novas funções integradas JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE e NAME_CONST.

Fonte: opennet.ru

Adicionar um comentário