Yandex abriu o código do DBMS YDB distribuído com suporte a SQL

Yandex publicou o código-fonte do DBMS distribuído YDB, que implementa suporte para o dialeto SQL e transações ACID. O SGBD foi criado do zero e inicialmente desenvolvido com o objetivo de garantir tolerância a falhas, recuperação automática de falhas e escalabilidade. Observa-se que Yandex lançou clusters YDB funcionais, incluindo mais de 10 mil nós, armazenando centenas de petabytes de dados e atendendo milhões de transações distribuídas por segundo. YDB é usado em projetos Yandex como Market, Cloud, Smart Home, Alice, Metrica e Auto.ru. O código é escrito em C/C++ e distribuído sob a licença Apache 2.0. Para familiarização e inicialização rápida, você pode usar um contêiner Docker pronto.

Características do projeto:

  • Usando um modelo de dados relacional com tabelas. Para consultas e definição do esquema de dados, é utilizada a linguagem YQL (YDB Query Language), que é um dialeto do SQL adaptado para trabalhar com grandes bancos de dados distribuídos. Ao criar um esquema de armazenamento, é suportado um agrupamento de tabelas em forma de árvore, que lembra diretórios em um sistema de arquivos. Uma API é fornecida para trabalhar com dados no formato JSON.
    Yandex abriu o código do DBMS YDB distribuído com suporte a SQL
  • Suporte para acesso a dados usando consultas de varredura projetadas para realizar consultas analíticas ad-hoc no banco de dados, executadas em modo somente leitura e retornando um fluxo grpc.
  • A interação com o SGBD e o envio de solicitações são realizados por meio da interface de linha de comando, interface web integrada ou do SDK YDB, que fornece bibliotecas para C++, C# (.NET), Go, Java, Node.js, PHP e Python.
  • A capacidade de criar configurações tolerantes a falhas que continuam a operar quando discos, nós, racks e até mesmo data centers individuais falham. YDB suporta implantação e replicação síncrona em três zonas de disponibilidade, mantendo a funcionalidade do cluster em caso de falha de uma das zonas.
  • Recupere-se automaticamente de falhas com latência mínima para aplicativos e mantenha automaticamente a redundância de dados especificada.
  • Criação automática de índices com base na chave primária e capacidade de definir índices secundários para melhorar a eficiência do acesso a colunas arbitrárias.
  • Escalabilidade horizontal. À medida que a carga e o tamanho dos dados armazenados aumentam, o cluster pode ser expandido simplesmente conectando novos nós. As camadas de computação e armazenamento são separadas, permitindo expandir seu poder de computação e tamanho de armazenamento separadamente. O próprio SGBD monitora a distribuição uniforme de dados e carga, levando em consideração os recursos de hardware disponíveis. É possível implantar configurações distribuídas geograficamente cobrindo vários data centers em diferentes partes do mundo.
  • Suporta o modelo de consistência forte e transações ACID ao processar consultas que abrangem vários nós e tabelas. Para melhorar o desempenho, você pode desabilitar seletivamente a verificação de consistência.
  • Replicação automática de dados, particionamento automático (particionamento, fragmentação) quando o tamanho ou a carga aumenta e balanceamento automático de carga e dados entre nós.
  • Armazenar dados diretamente em dispositivos de bloco usando o componente PDisk nativo e a camada VDisk. O DSProxy é executado sobre o VDisk, que analisa as características de disponibilidade e desempenho dos discos para eliminá-los caso sejam detectados problemas.
  • Arquitetura flexível que permite criar vários serviços no YDB, incluindo dispositivos de blocos virtuais e filas persistentes. Adequação para diferentes tipos de cargas de trabalho, OLTP e OLAP (consultas analíticas).
  • Suporte para configurações multilocatárias e sem servidor. Possibilidade de autenticação de cliente. Os utilizadores podem criar os seus clusters virtuais e bases de dados numa infraestrutura comum partilhada, tendo em conta o consumo de recursos ao nível do número de pedidos e tamanho dos dados, ou alugando/reservando determinados recursos computacionais e espaço de armazenamento.
  • Capacidade de configurar o tempo de vida dos registros para remover automaticamente dados desatualizados.

Fonte: opennet.ru

Adicionar um comentário