sql >> Databasteknik >  >> RDS >> MariaDB

Vad är MariaDB ColumnStore?

I allmänhet lagrar databaser data i radformat och använder SQL som frågespråk för att komma åt det, men denna lagringsmetod är inte alltid den bästa när det gäller prestanda, den beror på själva arbetsbelastningen. Om du vill få statistisk data bör du antagligen använda en annan typ av databaslagringsmotor.

I den här bloggen kommer vi att se vad Columnar Storage är och, för att vara mer specifik, vad MariaDB ColumnStore är, och hur man installerar det för att kunna bearbeta din big data på ett mer prestandafullt sätt för analytiska syften.

Kolumnarlagring

Columnar Storage är en typ av databasmotor som lagrar data med en kolumnorienterad modell.

Till exempel, i en vanlig relationsdatabas kan vi ha en tabell som denna:

id

förnamn

efternamn

ålder

1001

Oliver

Smith

23

1002

Harry

Jones

65

1003

George

Williams

30

1004

Jack

Taylor

41

Det här är bra om du vill få till exempel åldern på en specifik person, där du kommer att behöva all eller nästan all radinformation, men om du behöver få statistik på en specifik kolumn (t.ex. medelålder) är detta inte den bästa strukturen.

Här är en Columnar Storage-motor kommer in i bilden. Istället för att lagra data i rader, lagras data i kolumner. Så om du behöver veta medelåldern är det bättre att använda det, eftersom du kommer att ha en struktur så här:

id

förnamn

 

id

efternamn

 

id

ålder

1001

Oliver

 

1001

Smith

 

1001

23

1002

Harry

 

1002

Jones

 

1002

65

1003

George

 

1003

Williams

 

1003

30

1004

Jack

 

1004

Taylor

 

1004

41

Vilket betyder att du bara behöver läsa id och ålder för att veta medelåldern istället för all data.

å andra sidan är kostnaden för att göra enstaka insättningar högre än en radorienterad databas, och det är inte det bästa alternativet för "SELECT *"-frågor eller transaktionsoperationer, så vi kan säga att det passar bättre i en OLAP (Online Analytical Processing)-databas än en OLTP (Online Transaction Processing).

MariaDB ColumnStore

Det är en kolumnär lagringsmotor som använder en massivt parallellt distribuerad dataarkitektur. Det är en separat nedladdning, men den kommer att vara tillgänglig som en lagringsmotor för MariaDB Server från MariaDB 10.5.4, som fortfarande är under utveckling när denna blogg skrevs.

Den är designad för big data och använder fördelarna med kolumnlagring för att få enastående prestanda med realtidssvar på analytiska frågor.

MariaDB ColumnStore-arkitektur

Den består av många (eller bara 1) MariaDB-servrar, som fungerar som moduler och arbetar tillsammans. Dessa moduler inkluderar användare, prestanda och lagring.

Användarmodul

Det är en MariaDB Server-instans konfigurerad för att fungera som ett gränssnitt till ColumnStore.

Användarmodulen hanterar och kontrollerar funktionen för slutanvändarfrågor. När en klient kör en fråga analyseras den och distribueras till en eller flera prestandamoduler för att bearbeta frågan. Användarmodulen samlar sedan in frågeresultaten och sätter ihop dem i resultatuppsättningen för att återgå till klienten.

Det primära syftet med användarmodulen är att hantera samtidig skalning. Den berör aldrig databasfiler direkt och kräver inte synlighet för dem.

Prestandamodul

Det är ansvarigt för att lagra, hämta och hantera data, bearbeta blockförfrågningar för frågeoperationer och för att skicka tillbaka det till användarmodulen eller -modulerna för att slutföra frågeförfrågningarna. Den ser inte själva frågan, utan bara en uppsättning instruktioner som ges till den av en användarmodul.

Modulen väljer data från disken och cachar dem i en delad-ingenting-buffert som är en del av servern som den körs på.

Med flera prestandamodulnoder säkerställer en hjärtslagsmekanism att alla noder är online och att det finns en transparent failover i händelse av att en viss nod misslyckas.

Lagring

Du kan använda lokal lagring (Performance Modules) eller delad lagring (SAN) för att lagra data.

När du skapar en tabell på MariaDB ColumnStore, skapar systemet minst en fil per kolumn i tabellen. Så, till exempel, en tabell skapad med tre kolumner skulle ha minst tre, separat adresserbara logiska objekt skapade på ett SAN eller på den lokala disken i en prestandamodul.

ColumnStore optimerar sin komprimeringsstrategi för läsprestanda från disk. Den är inställd för att accelerera dekompressionshastigheten, vilket maximerar prestandafördelarna vid läsning från disk.

MariaDB ColumnStore använder versionsbufferten för att lagra diskblock som håller på att modifieras, hantera återställning av transaktioner och serva MVCC (multi-version concurrency control) eller "snapshot read"-funktionen för databasen. Detta gör att den kan erbjuda en konsekvent vy av databasen.

Så fungerar MariaDB CloumnStore

Låt oss nu se hur MariaDB ColumnStore behandlar en slutanvändarfråga, enligt den officiella MariaDB ColumnStore-dokumentationen:

  • Kunder skickar en fråga till MariaDB-servern som körs på användarmodulen. Servern utför en tabelloperation för alla tabeller som behövs för att uppfylla begäran och hämtar den initiala exekveringsplanen för frågeställningar.
  • Med hjälp av MariaDB-lagringsmotorns gränssnitt konverterar ColumnStore servertabellobjektet till ColumnStore-objekt. Dessa objekt skickas sedan till användarmodulens processer.
  • Användarmodulen konverterar MariaDB-exekveringsplanen och optimerar de givna objekten till en ColumnStore-exekveringsplan. Den bestämmer sedan stegen som behövs för att köra frågan och i vilken ordning de måste köras.
  • Användarmodulen konsulterar sedan Extent Map för att avgöra vilka prestandamoduler som ska konsulteras för den data den behöver, den utför sedan Extent Elimination, vilket eliminerar alla prestandamoduler från listan som bara innehåller data utanför intervallet vad frågan kräver.
  • Användarmodulen skickar sedan kommandon till en eller flera prestandamoduler för att utföra block I/O-operationer.
  • Prestandamodulen eller -modulerna utför predikatfiltrering, sammanfogningsbearbetning, initial aggregering av data från lokal eller extern lagring och skickar sedan tillbaka data till användarmodulen.
  • Användarmodulen utför den slutliga resultatuppsättningen och sammanställer resultatuppsättningen för frågan.
  • Användarmodulen / ExeMgr implementerar alla fönsterfunktionsberäkningar, såväl som all nödvändig sortering på resultatuppsättningen. Den returnerar sedan resultatuppsättningen till servern.
  • MariaDB-servern utför valfria listfunktioner, ORDER BY och LIMIT-operationer på resultatuppsättningen.
  • MariaDB-servern returnerar resultatuppsättningen till klienten.

Hur man installerar MariaDB ColumnStore

Nu ska vi se hur du installerar det. För mer information kan du kontrollera MariaDB:s officiella dokumentation.

Vi kommer att använda CentOS 7 som operativsystem, men du kan använda valfritt operativsystem som stöds istället. Installationspaketen finns tillgängliga för nedladdning här.

Först måste du installera extrapaketförrådet:

$ yum install -y epel-release

Sedan, följande obligatoriska paket:

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

Och nu, låt oss ladda ner den senaste versionen av MariaDB ColumnStore, packa upp och installera den:

$ 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

När det är klart kommer du att se följande meddelande:

Nästa steg är:

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

Så, för det här exemplet, låt oss bara köra kommandot:

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

Nu kommer det att fråga dig lite information om installationen:

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

Kör det genererade skriptet:

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

Nu kan du komma åt databasen som kör kommandot "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)]>

Det är allt. Nu kan du ladda data i din MariaDB ColumnStore-databas.

Slutsats

Columnar Storage är ett utmärkt databaslagringsalternativ för att hantera data för analysändamål. MariaDB ColumnStore är en kolumnlagringsmotor designad för denna uppgift, och som vi kunde se är installationen ganska enkel, så om du behöver en OLAP-databas eller bearbetar big data, bör du prova det.


  1. SQL Server-motsvarighet till WM_CONCAT-funktionen

  2. Hur gör man en skiftlägeskänslig GROUP BY?

  3. Öka prestanda med Bulk Collect i Oracle

  4. Hur man får ut det bästa av PostgreSQL-loggar