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

O que é MariaDB ColumnStore?

Em geral, os bancos de dados armazenam dados em formato de linha e usam SQL como linguagem de consulta para acessá-los, mas esse método de armazenamento nem sempre é o melhor em termos de desempenho, depende da própria carga de trabalho. Se você deseja obter dados estatísticos, provavelmente deve usar outro tipo de mecanismo de armazenamento de banco de dados.

Neste blog, veremos o que é Columnar Storage e, para ser mais específico, o que é o MariaDB ColumnStore e como instalá-lo para poder processar seu big data de maneira mais eficiente para propósitos analíticos.

Armazenamento Colunar

Armazenamento Colunar é um tipo de mecanismo de banco de dados que armazena dados usando um modelo orientado a colunas.

Por exemplo, em um banco de dados relacional comum, poderíamos ter uma tabela como esta:

id

nome

sobrenome

idade

1001

Oliver

Smith

23

1002

Harry

Jones

65

1003

Jorge

Williams

30

1004

Jack

Taylor

41

Isso é bom se você quiser obter, por exemplo, a idade de uma pessoa específica, onde precisará de todas ou quase todas as informações da linha, mas se precisar obter estatísticas de uma coluna específica (por exemplo, idade média), isso é não é a melhor estrutura.

Aqui é onde um mecanismo de armazenamento Columnar entra em ação. Em vez de armazenar dados em linhas, os dados são armazenados em colunas. Então, se você precisa saber a idade média, será melhor usá-la, pois você terá uma estrutura assim:

id

nome

 

id

sobrenome

 

id

idade

1001

Oliver

 

1001

Smith

 

1001

23

1002

Harry

 

1002

Jones

 

1002

65

1003

Jorge

 

1003

Williams

 

1003

30

1004

Jack

 

1004

Taylor

 

1004

41

O que significa que você só precisa ler id e age para saber a idade média em vez de todos os dados.

Por outro lado, o custo de fazer inserções únicas é maior do que um banco de dados orientado a linhas, e não é a melhor opção para consultas “SELECT *” ou operações transacionais, portanto podemos dizer que se encaixa melhor em um banco de dados OLAP (Online Analytical Processing) do que em um OLTP (Online Transaction Processing).

MariaDB ColumnStore

É um mecanismo de armazenamento colunar que usa uma arquitetura de dados distribuída massivamente paralela. É um download separado, mas estará disponível como mecanismo de armazenamento para MariaDB Server a partir do MariaDB 10.5.4, que ainda está em desenvolvimento no momento em que este blog foi escrito.

Ele é projetado para big data, usando os benefícios do armazenamento colunar para ter um ótimo desempenho com resposta em tempo real a consultas analíticas.

Arquitetura do MariaDB ColumnStore

É composto por muitos (ou apenas 1) Servidores MariaDB, operando como módulos, trabalhando juntos. Esses módulos incluem Usuário, Desempenho e Armazenamento.

Módulo de usuário

É uma instância do MariaDB Server configurada para operar como front-end para ColumnStore.

O Módulo do Usuário gerencia e controla a operação das consultas do usuário final. Quando um cliente executa uma consulta, ela é analisada e distribuída para um ou mais Módulos de Desempenho para processar a consulta. O módulo User coleta os resultados da consulta e os reúne no conjunto de resultados para retornar ao cliente.

O objetivo principal do Módulo de Usuário é lidar com o dimensionamento de simultaneidade. Ele nunca toca diretamente nos arquivos de banco de dados e não requer visibilidade para eles.

Módulo de desempenho

É responsável por armazenar, recuperar e gerenciar dados, processar solicitações de bloco para operações de consulta e repassá-lo ao módulo ou módulos de usuário para finalizar as solicitações de consulta. Ele não vê a consulta em si, mas apenas um conjunto de instruções fornecidas por um Módulo de Usuário.

O módulo seleciona os dados do disco e os armazena em um buffer compartilhado que faz parte do servidor no qual é executado.

Tendo vários nós do Módulo de Desempenho, um mecanismo de pulsação garante que todos os nós estejam online e haja failover transparente no caso de um nó específico falhar.

Armazenamento

Você pode usar armazenamento local (Módulos de desempenho) ou armazenamento compartilhado (SAN) para armazenar dados.

Quando você cria uma tabela no MariaDB ColumnStore, o sistema cria pelo menos um arquivo por coluna na tabela. Assim, por exemplo, uma tabela criada com três colunas teria no mínimo três objetos lógicos endereçáveis ​​separadamente criados em uma SAN ou no disco local de um Módulo de Desempenho.

ColumnStore otimiza sua estratégia de compactação para desempenho de leitura do disco. Ele é ajustado para acelerar a taxa de descompactação, maximizando os benefícios de desempenho ao ler do disco.

MariaDB ColumnStore usa o buffer de versão para armazenar blocos de disco que estão sendo modificados, gerenciar reversões de transações e atender a função MVCC (controle de simultaneidade de várias versões) ou "leitura de instantâneo" do banco de dados. Isso permite oferecer uma visão consistente de consulta do banco de dados.

Como funciona o MariaDB CloumnStore

Agora, vamos ver como o MariaDB ColumnStore processa uma consulta do usuário final, de acordo com a documentação oficial do MariaDB ColumnStore:

  • Os clientes emitem uma consulta ao servidor MariaDB em execução no módulo de usuário. O servidor executa uma operação de tabela para todas as tabelas necessárias para atender à solicitação e obtém o plano de execução da consulta inicial.
  • Usando a interface do mecanismo de armazenamento MariaDB, ColumnStore converte o objeto de tabela do servidor em objetos ColumnStore. Esses objetos são então enviados para os processos do Módulo do Usuário.
  • O User Module converte o plano de execução do MariaDB e otimiza os objetos fornecidos em um plano de execução ColumnStore. Em seguida, determina as etapas necessárias para executar a consulta e a ordem em que elas precisam ser executadas.
  • O Módulo do Usuário então consulta o Mapa de Extensão para determinar quais Módulos de Desempenho consultar para os dados de que precisa, então realiza a Eliminação de Extensão, eliminando da lista quaisquer Módulos de Desempenho que contenham apenas dados fora do intervalo de o que a consulta requer.
  • O módulo de usuário envia comandos para um ou mais módulos de desempenho para executar operações de E/S de bloco.
  • O módulo ou módulos de desempenho realizam filtragem de predicado, processamento de junção, agregação inicial de dados de armazenamento local ou externo e, em seguida, enviam os dados de volta ao módulo de usuário.
  • O módulo do usuário realiza a agregação do conjunto de resultados final e compõe o conjunto de resultados para a consulta.
  • O User Module / ExeMgr implementa quaisquer cálculos de função de janela, bem como qualquer classificação necessária no conjunto de resultados. Em seguida, ele retorna o conjunto de resultados para o servidor.
  • O MariaDB Server executa quaisquer funções de lista de seleção, operações ORDER BY e LIMIT no conjunto de resultados.
  • O MariaDB Server retorna o conjunto de resultados para o cliente.

Como instalar o MariaDB ColumnStore

Agora, vamos ver como instalá-lo. Para mais informações, você pode verificar a documentação oficial do MariaDB.

Usaremos o CentOS 7 como sistema operacional, mas você pode usar qualquer sistema operacional compatível. Os pacotes de instalação estão disponíveis para download aqui.

Primeiro, você precisará instalar o repositório Extra Packages:

$ yum install -y epel-release

Em seguida, os seguintes pacotes necessários:

$ yum install -y boost expect perl perl-DBI openssl zlib snappy libaio perl-DBD-MySQL net-tools wget jemalloc numactl-libs

E agora, vamos baixar a versão mais recente do MariaDB ColumnStore, descompactá-la e instalá-la:

$ wget https://downloads.mariadb.com/ColumnStore/latest/centos/x86_64/7/mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz

$ tar zxf mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz

$ rpm -ivh mariadb-columnstore-1.2.5-1-*.rpm

Quando terminar, você verá a seguinte mensagem:

A próxima etapa é:

If installing on a pm1 node using non-distributed install

/usr/local/mariadb/columnstore/bin/postConfigure



If installing on a pm1 node using distributed install

/usr/local/mariadb/columnstore/bin/postConfigure -d



If installing on a non-pm1 using the non-distributed option:

/usr/local/mariadb/columnstore/bin/columnstore start

Então, para este exemplo, vamos apenas executar o comando:

$ /usr/local/mariadb/columnstore/bin/postConfigure

Agora, ele solicitará algumas informações sobre a instalação:

This is the MariaDB ColumnStore System Configuration and Installation tool.

It will Configure the MariaDB ColumnStore System and will perform a Package

Installation of all of the Servers within the System that is being configured.



IMPORTANT: This tool requires to run on the Performance Module #1



Prompting instructions:

Press 'enter' to accept a value in (), if available or

Enter one of the options within [], if available, or

Enter a new value



===== Setup System Server Type Configuration =====



There are 2 options when configuring the System Server Type: single and multi

  'single'  - Single-Server install is used when there will only be 1 server configured

              on the system. It can also be used for production systems, if the plan is

              to stay single-server.

  'multi'   - Multi-Server install is used when you want to configure multiple servers now or

              in the future. With Multi-Server install, you can still configure just 1 server

              now and add on addition servers/modules in the future.



Select the type of System Server install [1=single, 2=multi] (2) > 1

Performing the Single Server Install.



Enter System Name (columnstore-1) >



===== Setup Storage Configuration =====



----- Setup Performance Module DBRoot Data Storage Mount Configuration -----

There are 2 options when configuring the storage: internal or external

  'internal' -    This is specified when a local disk is used for the DBRoot storage.

                  High Availability Server Failover is not Supported in this mode

  'external' -    This is specified when the DBRoot directories are mounted.

                  High Availability Server Failover is Supported in this mode.



Select the type of Data Storage [1=internal, 2=external] (1) >

Enter the list (Nx,Ny,Nz) or range (Nx-Nz) of DBRoot IDs assigned to module 'pm1' (1) >



===== Performing Configuration Setup and MariaDB ColumnStore Startup =====



NOTE: Setting 'NumBlocksPct' to 50%

      Setting 'TotalUmMemory' to 25% of total memory.



Running the MariaDB ColumnStore setup scripts



post-mysqld-install Successfully Completed

post-mysql-install Successfully Completed

Starting MariaDB Columnstore Database Platform

Starting MariaDB ColumnStore Database Platform Starting, please wait ....... DONE

System Catalog Successfull Created

MariaDB ColumnStore Install Successfully Completed, System is Active

Enter the following command to define MariaDB ColumnStore Alias Commands



. /etc/profile.d/columnstoreAlias.sh



Enter 'mcsmysql' to access the MariaDB ColumnStore SQL console

Enter 'mcsadmin' to access the MariaDB ColumnStore Admin console



NOTE: The MariaDB ColumnStore Alias Commands are in /etc/profile.d/columnstoreAlias.sh

Execute o script gerado:

$ . /etc/profile.d/columnstoreAlias.sh

Agora você pode acessar o banco de dados executando o comando “mcsmysql”:

$ mcsmysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 12

Server version: 10.3.16-MariaDB-log Columnstore 1.2.5-1



Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



MariaDB [(none)]>

É isso. Agora, você pode carregar dados em seu banco de dados MariaDB ColumnStore.

Conclusão


O Armazenamento Colunar é uma ótima alternativa de armazenamento de banco de dados para lidar com dados para fins de análise. MariaDB ColumnStore é um mecanismo de armazenamento Columnar projetado para esta tarefa e, como pudemos ver, a instalação é bastante fácil, portanto, se você precisar de um banco de dados OLAP ou processar big data, experimente.