MariaDB
 sql >> Database >  >> RDS >> MariaDB

Cos'è MariaDB ColumnStore?

In generale, i database archiviano i dati in formato riga e utilizzano SQL come linguaggio di query per accedervi, ma questo metodo di archiviazione non è sempre il migliore in termini di prestazioni, dipende dal carico di lavoro stesso. Se vuoi ottenere dati statistici, molto probabilmente dovresti usare un altro tipo di motore di archiviazione del database.

In questo blog, vedremo cos'è Columnar Storage e, per essere più specifici, cos'è MariaDB ColumnStore e come installarlo per poter elaborare i tuoi big data in modo più performante per finalità analitiche.

Archiviazione colonne

Columnar Storage è un tipo di motore di database che archivia i dati utilizzando un modello orientato alle colonne.

Ad esempio, in un comune database relazionale, potremmo avere una tabella come questa:

id

nome

cognome

età

1001

Oliver

Fabio

23

1002

Harry

Jones

65

1003

Giorgio

Williams

30

1004

Jack

Taylor

41

Questo va bene se vuoi ottenere, ad esempio, l'età di una persona specifica, dove avrai bisogno di tutte o quasi tutte le informazioni sulla riga, ma se hai bisogno di ottenere statistiche su una colonna specifica (es. età media), questo è non è la struttura migliore.

Ecco dove entra in gioco un motore Columnar Storage. Invece di archiviare i dati in righe, i dati vengono archiviati in colonne. Quindi, se hai bisogno di conoscere l'età media, sarà meglio usarla, poiché avrai una struttura come questa:

id

nome

 

id

cognome

 

id

età

1001

Oliver

 

1001

Fabio

 

1001

23

1002

Harry

 

1002

Jones

 

1002

65

1003

Giorgio

 

1003

Williams

 

1003

30

1004

Jack

 

1004

Taylor

 

1004

41

Ciò significa che devi solo leggere id ed età per conoscere l'età media invece di tutti i dati.

d'altra parte, il costo per eseguire singoli inserimenti è superiore a un database orientato alla riga, e non è l'opzione migliore per le query "SELECT *" o le operazioni transazionali, quindi possiamo dire che si adatta meglio a un database OLAP (Online Analytical Processing) rispetto a uno OLTP (Online Transaction Processing).

MariaDB ColumnStore

Si tratta di un motore di archiviazione a colonne che utilizza un'architettura di dati distribuiti in maniera massiccia parallela. È un download separato, ma sarà disponibile come motore di archiviazione per MariaDB Server da MariaDB 10.5.4, che è ancora in fase di sviluppo al momento della stesura di questo blog.

È progettato per i big data, sfruttando i vantaggi dell'archiviazione a colonne per offrire prestazioni eccezionali con risposta in tempo reale alle query analitiche.

Architettura ColumnStore di MariaDB

È composto da molti (o solo 1) server MariaDB, che operano come moduli, che lavorano insieme. Questi moduli includono Utente, Prestazioni e Archiviazione.

Modulo utente

Si tratta di un'istanza MariaDB Server configurata per operare come front-end per ColumnStore.

Il modulo utente gestisce e controlla il funzionamento delle query degli utenti finali. Quando un client esegue una query, viene analizzata e distribuita a uno o più Performance Module per elaborare la query. Il modulo Utente raccoglie quindi i risultati della query e li assembla nel set di risultati da restituire al client.

Lo scopo principale del modulo utente è gestire il ridimensionamento della concorrenza. Non tocca mai direttamente i file di database e non richiede visibilità su di essi.

Modulo prestazioni

È responsabile della memorizzazione, del recupero e della gestione dei dati, dell'elaborazione delle richieste di blocco per le operazioni di query e del ritrasmissione al modulo o ai moduli Utente per finalizzare le richieste di query. Non vede la query stessa, ma solo un insieme di istruzioni fornitegli da un Modulo utente.

Il modulo seleziona i dati dal disco e li memorizza nella cache in un buffer non condiviso che fa parte del server su cui viene eseguito.

Avendo più nodi Performance Module, un meccanismo heartbeat assicura che tutti i nodi siano online e che vi sia un failover trasparente nel caso in cui un particolare nodo si guasta.

Archiviazione

Puoi utilizzare l'archiviazione locale (Moduli delle prestazioni) o l'archiviazione condivisa (SAN) per archiviare i dati.

Quando crei una tabella su MariaDB ColumnStore, il sistema crea almeno un file per colonna nella tabella. Ad esempio, una tabella creata con tre colonne dovrebbe avere un minimo di tre oggetti logici indirizzabili separatamente creati su una SAN o sul disco locale di un Performance Module.

ColumnStore ottimizza la sua strategia di compressione per le prestazioni di lettura dal disco. È ottimizzato per accelerare la velocità di decompressione, massimizzando i vantaggi in termini di prestazioni durante la lettura dal disco.

MariaDB ColumnStore utilizza il buffer di versione per archiviare i blocchi del disco che vengono modificati, gestire i rollback delle transazioni e servire la funzione MVCC (controllo della concorrenza multi-versione) o "lettura istantanea" del database. Ciò consente di offrire una visualizzazione coerente della query del database.

Come funziona MariaDB CloumnStore

Ora, vediamo come MariaDB ColumnStore elabora una query dell'utente finale, secondo la documentazione ufficiale di MariaDB ColumnStore:

  • I client inviano una query al server MariaDB in esecuzione sul modulo utente. Il server esegue un'operazione di tabella per tutte le tabelle necessarie per soddisfare la richiesta e ottiene il piano di esecuzione della query iniziale.
  • Utilizzando l'interfaccia del motore di archiviazione MariaDB, ColumnStore converte l'oggetto tabella del server in oggetti ColumnStore. Questi oggetti vengono quindi inviati ai processi del modulo utente.
  • Il modulo utente converte il piano di esecuzione di MariaDB e ottimizza gli oggetti dati in un piano di esecuzione ColumnStore. Determina quindi i passaggi necessari per eseguire la query e l'ordine in cui devono essere eseguiti.
  • Il Modulo Utente consulta quindi la Mappa Extent per determinare quali Performance Module consultare per i dati di cui ha bisogno, quindi esegue Extent Elimination, eliminando dall'elenco eventuali Performance Module che contengono solo dati al di fuori dell'intervallo di cosa richiede la query.
  • Il modulo utente invia quindi comandi a uno o più moduli prestazioni per eseguire operazioni di I/O a blocchi.
  • Il modulo o i moduli delle prestazioni eseguono il filtraggio dei predicati, l'elaborazione dei join, l'aggregazione iniziale dei dati dall'archiviazione locale o esterna, quindi inviano i dati al modulo utente.
  • Il modulo utente esegue l'aggregazione del set di risultati finale e compone il set di risultati per la query.
  • Il modulo utente / ExeMgr implementa qualsiasi calcolo delle funzioni della finestra, nonché qualsiasi ordinamento necessario sul set di risultati. Quindi restituisce il set di risultati al server.
  • Il server MariaDB esegue tutte le funzioni dell'elenco di selezione, le operazioni ORDER BY e LIMIT sul set di risultati.
  • Il server MariaDB restituisce il set di risultati al client.

Come installare MariaDB ColumnStore

Ora vediamo come installarlo. Per ulteriori informazioni, puoi consultare la documentazione ufficiale di MariaDB.

Utilizzeremo CentOS 7 come sistema operativo, ma puoi invece utilizzare qualsiasi sistema operativo supportato. I pacchetti di installazione sono disponibili per il download qui.

Per prima cosa, dovrai installare il repository Extra Packages:

$ yum install -y epel-release

Quindi, i seguenti pacchetti richiesti:

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

E ora, scarichiamo l'ultima versione di MariaDB ColumnStore, decomprimiamola e installiamola:

$ 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

Al termine, vedrai il seguente messaggio:

Il passaggio successivo è:

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

Quindi, per questo esempio, eseguiamo semplicemente il comando:

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

Ora ti chiederà alcune informazioni sull'installazione:

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

Esegui lo script generato:

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

Ora puoi accedere al database eseguendo il 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)]>

Ecco fatto. Ora puoi caricare i dati nel database ColumnStore di MariaDB.

Conclusione

Columnar Storage è un'ottima alternativa di archiviazione del database per gestire i dati a fini di analisi. MariaDB ColumnStore è un motore di archiviazione a colonne progettato per questa attività e, come abbiamo potuto vedere, l'installazione è piuttosto semplice, quindi se hai bisogno di un database OLAP o di elaborare big data, dovresti provarlo.