MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Analytics com MariaDB AX - tThe Open Source Columnar Datastore


Longe vão os dias da abordagem de um banco de dados para todos.

Com os crescentes requisitos de velocidade, desempenho e agilidade, surgiram inúmeros datastores, que se destinam a resolver um problema específico. Temos bancos de dados relacionais, armazenamentos de documentos, bancos de dados de séries temporais, bancos de dados colunares, mecanismos de pesquisa de texto completo.

É bastante comum ver vários datastores trabalhando juntos no mesmo ambiente.

Então, como o MariaDB AX se encaixa na imagem? Como ele se compara ao MariaDB TX e qual problema ele resolve?

Nesta postagem do blog, veremos o MariaDB AX e veremos por que você pode querer usá-lo.

O que é MariaDB AX?


As primeiras coisas primeiro, então o que é o MariaDB AX?

É um armazenamento de colunas e armazena seus dados por ...coluna! Ele é implementado como um mecanismo separado no banco de dados MariaDB 10.3.

Como você deve saber, MySQL e MariaDB são projetados para usar mecanismos de armazenamento conectáveis. Todo mecanismo de armazenamento, seja InnoDB, Aria, MyRocks, Spider ou qualquer outro mecanismo, são plugins.

Da mesma forma, o MariaDB AX usa o mecanismo ColumnStore:
MariaDB [(none)]> SHOW ENGINES\G
*************************** 1. row ***************************
      Engine: Columnstore
     Support: YES
     Comment: Columnstore storage engine
Transactions: YES
          XA: NO
  Savepoints: NO

Isso resulta em uma combinação interessante. A análise SQL é feita pelo MariaDB, portanto, você pode esperar trabalhar com a sintaxe de consulta que é muito semelhante ao que você está acostumado no MariaDB. Isso também facilita a combinação do acesso ao MariaDB AX e ao MariaDB TX no mesmo aplicativo. Não há necessidade de conectores ou bibliotecas específicos para se conectar a dois datastores. Tudo pode ser feito usando a biblioteca cliente MySQL ou MariaDB. Você também pode utilizar o MaxScale para ambos os datastores, o que pode ajudar a criar alta disponibilidade para o MariaDB AX.

Por que devemos usar um armazenamento de dados colunar?


Vamos fazer uma breve introdução à ideia por trás dos datastores colunares.

O que torna o MariaDB AX diferente do MariaDB TX?

A principal diferença é como os dados são estruturados. Em um banco de dados típico, os dados são armazenados como linhas.
Id, Product, Price, Code, Warehouse
1, Door, 10, 12334, EU1
2, Window, 9, 9523, EU1
3, Glass, 12, 97643, EU2

Como você pode ver, temos três linhas, cada uma contendo todos os dados sobre uma entrada de produto.

O problema é que essa maneira de armazenar dados não é realmente eficiente quando você deseja obter apenas um subconjunto desses dados. Digamos que você queira obter apenas as colunas "Produto" e "Preço" - para isso, você precisa ler linhas inteiras, todos os dados e descartar as colunas desnecessárias. Também é complicado classificar os dados. Se você quiser classificar o conjunto de dados do produto mais caro para o mais barato, você deve ler tudo e depois fazer a classificação.

Todos sabemos que os bancos de dados utilizam índices para acelerar o acesso. Um índice é estruturado de forma a conter o conteúdo da coluna indexada, bem como um ponteiro para a linha completa (no InnoDB, essa é a chave primária). Por exemplo, um índice na coluna "Produto", assumindo que "Id" é a chave primária, pode ter a seguinte aparência:
Product, Id
Door, 1
Window, 2
Glass, 3

Isso acelera o acesso aos dados, pois não há necessidade de ler a linha inteira apenas para encontrar um valor na coluna “Produto”. Uma vez que o banco de dados o encontra, ele pode ler o resto da linha (se necessário) seguindo o ponteiro.

Em uma loja de coluna, as coisas são diferentes. Os dados são estruturados não como linhas, mas como colunas. Até certo ponto, isso é semelhante ao índice. Nossa tabela no armazenamento de dados colunar pode ter esta aparência:
Id: 1, 2, 3
Product: Door, Window, Glass
Price: 10, 9, 12
Code: 12334, 9523, 97643
Warehouse: EU1, EU1, EU2

No MariaDB AX, as colunas são armazenadas em arquivos separados, cada entrada para uma determinada “linha” começa no mesmo deslocamento.

A principal vantagem aqui é que, se você quiser executar uma consulta que funcionará apenas com um subconjunto de dados, precisará apenas ler os dados das colunas relevantes para a consulta.

Em nosso exemplo anterior, em vez de ler todo o conjunto de dados, podemos apenas carregar dados para as colunas "Produto" e "Preço". Reduz os dados necessários para serem acessados ​​no disco e acelera o processo.

O que também é importante, armazenar dados em colunas os torna menos distintos, o que os torna melhor compactados. Por exemplo, na nossa coluna “Warehouse” temos apenas dois tipos de entradas. Mesmo no cenário do mundo real, é muito provável que acabemos com um número pequeno de armazéns em comparação com o número de produtos. Isso torna a coluna "Warehouse" um alvo muito bom para compactação.

Como resultado de tudo isso, os datastores colunares podem lidar melhor com grandes conjuntos de dados e podem consultá-los de maneira mais eficiente do que os bancos de dados "padrão" focados em OLTP.

Por que devo usar o MariaDB AX?


O acesso ao disco é um grande gargalo nos bancos de dados. Um armazenamento de dados colunar melhora o desempenho reduzindo a quantidade de dados que precisam ser lidos do disco. Ele lê apenas os dados necessários para responder à consulta.

Obviamente, o MariaDB AX não é o único armazenamento de dados colunar disponível. Existem muitos outros como, por exemplo, Clickhouse ou Apache HBase.

A verdade é que nenhuma das outras opções suporta a sintaxe SQL completa que o MySQL faz. Eles exigem conectores diferentes, abordagem diferente para consultar os dados, enquanto o MariaDB AX pode ser consultado da mesma forma que você consultaria o MariaDB 'normal'.

O que também é importante, dado que o MariaDB AX utiliza o mecanismo ColumnStore, é perfeitamente aceitável misturá-lo com outros mecanismos. Você pode misturar e juntar tabelas InnoDB e ColumnStore na mesma consulta sem nenhum problema.

Além disso, as ferramentas que vêm com o MariaDB TX, como o MaxScale, funcionarão muito bem com o MariaDB AX, facilitando a criação de um ambiente integrado e fácil de usar. Portanto, quando você estiver executando o ClusterControl com MariaDB 10.3 e MaxScale, poderá adicionar facilmente o MariaDB AX à mistura e ele funcionará com outras partes da configuração.

O MariaDB AX vem com ferramentas destinadas a ajudar na transferência de dados de outras fontes. Se você usar Kafka ou Spark, existem conectores para usar ao importar dados dessas fontes para o MariaDB AX.

Além disso, embora a replicação regular entre MariaDB TX (InnoDB) e MariaDB AX (ColumnStore) não esteja funcionando bem devido às limitações do ColumnStore (é sempre melhor fazer inserções em lote em datastores colunares do que inserções únicas, como é feito na replicação), é possível construir um pipeline que consistiria em MaxScale configurado como servidor binlog e roteador Avro CDC, MaxScale CDC Data Adapter e MariaDB AX, que receberá dados do adaptador quase em tempo real.

Esperamos que esta postagem do blog forneça algumas dicas sobre o que é o MariaDB AX e como ele pode ser utilizado junto com o ambiente MariaDB TX implantado e gerenciado pelo ClusterControl (faça o download gratuitamente!).