sql >> Base de Datos >  >> RDS >> MariaDB

¿Qué es MariaDB ColumnStore?

En general, las bases de datos almacenan datos en formato de fila y utilizan SQL como lenguaje de consulta para acceder a ellos, pero este método de almacenamiento no siempre es el mejor en términos de rendimiento, depende de la carga de trabajo en sí. Si desea obtener datos estadísticos, probablemente debería usar otro tipo de motor de almacenamiento de base de datos.

En este blog, veremos qué es Columnar Storage y, para ser más específicos, qué es MariaDB ColumnStore y cómo instalarlo para poder procesar su big data de una manera más eficiente para fines analíticos.

Almacenamiento en columnas

Almacenamiento en columnas es un tipo de motor de base de datos que almacena datos utilizando un modelo orientado a columnas.

Por ejemplo, en una base de datos relacional común, podríamos tener una tabla como esta:

id

nombre

apellido

edad

1001

Oliver

Smith

23

1002

Harry

Jones

65

1003

Jorge

Williams

30

1004

Jack

Taylor

41

Esto está bien si desea obtener, por ejemplo, la edad de una persona específica, donde necesitará toda o casi toda la información de la fila, pero si necesita obtener estadísticas en una columna específica (por ejemplo, la edad promedio), esto es no es la mejor estructura.

Aquí es donde entra en juego un motor de almacenamiento en columnas. En lugar de almacenar datos en filas, los datos se almacenan en columnas. Entonces, si necesita saber la edad promedio, será mejor que la use, ya que tendrá una estructura como esta:

id

nombre

 

id

apellido

 

id

edad

1001

Oliver

 

1001

Smith

 

1001

23

1002

Harry

 

1002

Jones

 

1002

65

1003

Jorge

 

1003

Williams

 

1003

30

1004

Jack

 

1004

Taylor

 

1004

41

Lo que significa que solo necesita leer id y edad para conocer la edad promedio en lugar de todos los datos.

Por otro lado, el costo de hacer inserciones individuales es más alto que una base de datos orientada a filas, y no es la mejor opción para consultas “SELECT *” u operaciones transaccionales, por lo que podemos decir que encaja mejor en una base de datos OLAP (Online Analytical Processing) que en una OLTP (Online Transaction Processing).

MariaDB ColumnStore

Es un motor de almacenamiento en columnas que utiliza una arquitectura de datos distribuidos masivamente en paralelo. Es una descarga independiente, pero estará disponible como un motor de almacenamiento para MariaDB Server desde MariaDB 10.5.4, que todavía está en desarrollo en el momento en que se escribió este blog.

Está diseñado para big data, utilizando los beneficios del almacenamiento en columnas para tener un gran rendimiento con respuesta en tiempo real a las consultas analíticas.

Arquitectura ColumnStore de MariaDB

Está compuesto por muchos (o solo 1) servidores MariaDB, que funcionan como módulos y funcionan juntos. Estos módulos incluyen Usuario, Rendimiento y Almacenamiento.

Módulo de usuario

Es una instancia del servidor MariaDB configurada para operar como front-end para ColumnStore.

El módulo de usuario gestiona y controla el funcionamiento de las consultas de los usuarios finales. Cuando un cliente ejecuta una consulta, se analiza y distribuye a uno o más módulos de rendimiento para procesar la consulta. Luego, el módulo de usuario recopila los resultados de la consulta y los ensambla en el conjunto de resultados para devolverlos al cliente.

El propósito principal del módulo de usuario es manejar el escalado de concurrencia. Nunca toca directamente los archivos de la base de datos y no requiere visibilidad para ellos.

Módulo de rendimiento

Es responsable de almacenar, recuperar y administrar datos, procesar solicitudes de bloques para operaciones de consulta y devolverlos al módulo o módulos de usuario para finalizar las solicitudes de consulta. No ve la consulta en sí, sino solo un conjunto de instrucciones que le da un módulo de usuario.

El módulo selecciona datos del disco y los almacena en caché en un búfer sin compartir que forma parte del servidor en el que se ejecuta.

Al tener varios nodos del módulo de rendimiento, un mecanismo de latido garantiza que todos los nodos estén en línea y que haya una conmutación por error transparente en caso de que falle un nodo en particular.

Almacenamiento

Puede usar almacenamiento local (módulos de rendimiento) o almacenamiento compartido (SAN) para almacenar datos.

Cuando crea una tabla en MariaDB ColumnStore, el sistema crea al menos un archivo por columna en la tabla. Entonces, por ejemplo, una tabla creada con tres columnas tendría un mínimo de tres objetos lógicos direccionables por separado creados en una SAN o en el disco local de un módulo de rendimiento.

ColumnStore optimiza su estrategia de compresión para el rendimiento de lectura desde el disco. Está ajustado para acelerar la tasa de descompresión, maximizando los beneficios de rendimiento al leer desde el disco.

MariaDB ColumnStore utiliza el búfer de versión para almacenar bloques de disco que se están modificando, administrar reversiones de transacciones y dar servicio a la función MVCC (control de concurrencia de múltiples versiones) o "lectura instantánea" de la base de datos. Esto le permite ofrecer una vista consistente de consulta de la base de datos.

Cómo funciona MariaDB CloumnStore

Ahora, veamos cómo MariaDB ColumnStore procesa una consulta de usuario final, de acuerdo con la documentación oficial de MariaDB ColumnStore:

  • Los clientes emiten una consulta al servidor MariaDB que se ejecuta en el módulo de usuario. El servidor realiza una operación de tabla para todas las tablas necesarias para cumplir con la solicitud y obtiene el plan de ejecución de consulta inicial.
  • Usando la interfaz del motor de almacenamiento MariaDB, ColumnStore convierte el objeto de la tabla del servidor en objetos ColumnStore. Estos objetos luego se envían a los procesos del módulo de usuario.
  • El módulo de usuario convierte el plan de ejecución de MariaDB y optimiza los objetos dados en un plan de ejecución de ColumnStore. Luego determina los pasos necesarios para ejecutar la consulta y el orden en que deben ejecutarse.
  • El módulo de usuario luego consulta el mapa de extensión para determinar qué módulos de rendimiento consultar para obtener los datos que necesita, luego realiza la eliminación de extensión, eliminando cualquier módulo de rendimiento de la lista que solo contenga datos fuera del rango de lo que requiere la consulta.
  • El módulo de usuario luego envía comandos a uno o más módulos de rendimiento para realizar operaciones de E/S de bloque.
  • El módulo o los módulos de rendimiento llevan a cabo el filtrado de predicados, el procesamiento de unión, la agregación inicial de datos del almacenamiento local o externo y luego envían los datos de vuelta al módulo de usuario.
  • El módulo de usuario realiza la agregación final del conjunto de resultados y compone el conjunto de resultados para la consulta.
  • El módulo de usuario/ExeMgr implementa cualquier cálculo de función de ventana, así como cualquier clasificación necesaria en el conjunto de resultados. Luego devuelve el conjunto de resultados al servidor.
  • El servidor MariaDB realiza cualquier función de lista de selección, operaciones ORDER BY y LIMIT en el conjunto de resultados.
  • El servidor MariaDB devuelve el conjunto de resultados al cliente.

Cómo instalar MariaDB ColumnStore

Ahora, veamos cómo instalarlo. Para obtener más información, puede consultar la documentación oficial de MariaDB.

Usaremos CentOS 7 como sistema operativo, pero puede usar cualquier sistema operativo compatible en su lugar. Los paquetes de instalación están disponibles para descargar aquí.

Primero, deberá instalar el repositorio de paquetes adicionales:

$ yum install -y epel-release

Luego, los siguientes paquetes requeridos:

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

Y ahora, descarguemos la última versión de MariaDB ColumnStore, descomprimamos e instalemos:

$ 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

Cuando termine, verá el siguiente mensaje:

El siguiente paso es:

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

Entonces, para este ejemplo, simplemente ejecutemos el comando:

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

Ahora, te pedirá información sobre la instalación:

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

Ejecute el script generado:

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

Ahora puede acceder a la base de datos ejecutando el 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)]>

Eso es todo. Ahora, puede cargar datos en su base de datos MariaDB ColumnStore.

Conclusión

Columnar Storage es una excelente alternativa de almacenamiento de bases de datos para manejar datos con fines analíticos. MariaDB ColumnStore es un motor de almacenamiento en columnas diseñado para esta tarea y, como pudimos ver, la instalación es bastante fácil, por lo que si necesita una base de datos OLAP o procesa big data, debería intentarlo.