sql >> Database >  >> RDS >> MariaDB

Wat is MariaDB ColumnStore?

Over het algemeen slaan databases gegevens op in rij-indeling en gebruiken ze SQL als querytaal om toegang te krijgen, maar deze opslagmethode is niet altijd de beste in termen van prestaties, het hangt af van de werkbelasting zelf. Als u statistische gegevens wilt krijgen, moet u hoogstwaarschijnlijk een ander soort database-opslagengine gebruiken.

In deze blog zullen we zien wat Columnar Storage is en, om specifieker te zijn, wat MariaDB ColumnStore is, en hoe het te installeren om uw big data op een meer performante manier te kunnen verwerken voor analytische doeleinden.

Kolomopslag

Kolomopslag is een type database-engine die gegevens opslaat met behulp van een kolomgericht model.

In een algemene relationele database zouden we bijvoorbeeld een tabel als deze kunnen hebben:

id

voornaam

achternaam

leeftijd

1001

Oliver

Smith

23

1002

Harry

Jones

65

1003

George

Williams

30

1004

Jack

Taylor

41

Dit is prima als u bijvoorbeeld de leeftijd van een specifieke persoon wilt krijgen, waarbij u alle of bijna alle rij-informatie nodig heeft, maar als u statistieken over een specifieke kolom wilt krijgen (bijv. gemiddelde leeftijd), is dit niet de beste structuur.

Hier komt een Columnar Storage-engine om de hoek kijken. In plaats van gegevens in rijen op te slaan, worden de gegevens in kolommen opgeslagen. Dus als je de gemiddelde leeftijd wilt weten, is het beter om die te gebruiken, omdat je een structuur als deze hebt:

id

voornaam

 

id

achternaam

 

id

leeftijd

1001

Oliver

 

1001

Smith

 

1001

23

1002

Harry

 

1002

Jones

 

1002

65

1003

George

 

1003

Williams

 

1003

30

1004

Jack

 

1004

Taylor

 

1004

41

Dat betekent dat je alleen id en leeftijd hoeft te lezen om de gemiddelde leeftijd te weten in plaats van alle gegevens.

Anderzijds zijn de kosten van het doen van enkele invoegingen hoger dan bij een rij-georiënteerde database, en het is niet de beste optie voor "SELECT *"-query's of transactiebewerkingen, dus we kunnen zeggen dat het beter past in een OLAP-database (Online Analytical Processing) dan een OLTP-database (Online Transaction Processing).

MariaDB ColumnStore

Het is een zuilvormige opslagengine die gebruikmaakt van een massaal parallel gedistribueerde gegevensarchitectuur. Het is een aparte download, maar het zal beschikbaar zijn als een opslagengine voor MariaDB Server vanaf MariaDB 10.5.4, die nog in ontwikkeling is op het moment dat deze blog werd geschreven.

Het is ontworpen voor big data en maakt gebruik van de voordelen van opslag in kolommen voor geweldige prestaties met realtime respons op analytische vragen.

MariaDB ColumnStore-architectuur

Het is samengesteld uit vele (of slechts 1) MariaDB-servers, die als modules werken en samenwerken. Deze modules omvatten Gebruiker, Prestaties en Opslag.

Gebruikersmodule

Het is een MariaDB Server-instantie die is geconfigureerd om als front-end voor ColumnStore te werken.

De gebruikersmodule beheert en controleert de werking van zoekopdrachten van eindgebruikers. Wanneer een client een query uitvoert, wordt deze geparseerd en gedistribueerd naar een of meer prestatiemodules om de query te verwerken. De gebruikersmodule verzamelt vervolgens de queryresultaten en voegt ze samen in de resultatenset om terug te keren naar de klant.

Het primaire doel van de gebruikersmodule is om gelijktijdigheidsschaling af te handelen. Het raakt nooit rechtstreeks databasebestanden en vereist geen zichtbaarheid voor hen.

Prestatiemodule

Het is verantwoordelijk voor het opslaan, ophalen en beheren van gegevens, het verwerken van blokverzoeken voor querybewerkingen en voor het terugsturen naar de gebruikersmodule of -modules om de queryverzoeken af ​​te ronden. Het ziet de vraag zelf niet, maar alleen een reeks instructies die eraan worden gegeven door een gebruikersmodule.

De module selecteert gegevens van schijf en slaat deze op in een gedeelde-niets-buffer die deel uitmaakt van de server waarop hij draait.

Met meerdere Performance Module-knooppunten zorgt een hartslagmechanisme ervoor dat alle knooppunten online zijn en is er een transparante failover in het geval dat een bepaald knooppunt uitvalt.

Opslag

U kunt lokale opslag (Performance Modules) of gedeelde opslag (SAN) gebruiken om gegevens op te slaan.

Als u een tabel maakt op MariaDB ColumnStore, maakt het systeem ten minste één bestand per kolom in de tabel aan. Een tabel gemaakt met drie kolommen zou bijvoorbeeld minimaal drie afzonderlijk adresseerbare logische objecten hebben die zijn gemaakt op een SAN of op de lokale schijf van een prestatiemodule.

ColumnStore optimaliseert zijn compressiestrategie voor leesprestaties vanaf schijf. Het is afgestemd om de decompressiesnelheid te versnellen, waardoor de prestatievoordelen worden gemaximaliseerd bij het lezen van schijf.

MariaDB ColumnStore gebruikt de versiebuffer om schijfblokken op te slaan die worden gewijzigd, het terugdraaien van transacties te beheren en de MVCC (multi-version concurrency control) of "snapshot read"-functie van de database te onderhouden. Hierdoor kan het een consistente queryweergave van de database bieden.

Hoe MariaDB CloumnStore werkt

Laten we nu eens kijken hoe MariaDB ColumnStore een zoekopdracht van een eindgebruiker verwerkt, volgens de officiële MariaDB ColumnStore-documentatie:

  • Klanten sturen een query naar de MariaDB-server die op de gebruikersmodule draait. De server voert een tabelbewerking uit voor alle tabellen die nodig zijn om aan het verzoek te voldoen en verkrijgt het initiële plan voor het uitvoeren van de query.
  • Met behulp van de MariaDB-opslagengine-interface converteert ColumnStore het servertabelobject naar ColumnStore-objecten. Deze objecten worden vervolgens verzonden naar de processen van de gebruikersmodule.
  • De gebruikersmodule converteert het MariaDB-uitvoeringsplan en optimaliseert de gegeven objecten in een ColumnStore-uitvoeringsplan. Het bepaalt vervolgens de stappen die nodig zijn om de query uit te voeren en de volgorde waarin ze moeten worden uitgevoerd.
  • De gebruikersmodule raadpleegt vervolgens de omvangkaart om te bepalen welke prestatiemodules moeten worden geraadpleegd voor de gegevens die hij nodig heeft, en voert vervolgens de omvangeliminatie uit, waarbij alle prestatiemodules uit de lijst worden verwijderd die alleen gegevens bevatten buiten het bereik van wat de zoekopdracht vereist.
  • De gebruikersmodule stuurt vervolgens opdrachten naar een of meer prestatiemodules om blok-I/O-bewerkingen uit te voeren.
  • De prestatiemodule of -modules voeren predikaatfiltering, join-verwerking, initiële aggregatie van gegevens uit lokale of externe opslag uit en sturen de gegevens vervolgens terug naar de gebruikersmodule.
  • De gebruikersmodule voert de uiteindelijke aggregatie van de resultatenset uit en stelt de resultaatset voor de query samen.
  • De gebruikersmodule / ExeMgr implementeert alle vensterfunctieberekeningen, evenals elke noodzakelijke sortering op de resultatenset. Het retourneert vervolgens de resultatenset naar de server.
  • De MariaDB-server voert alle geselecteerde lijstfuncties, ORDER BY- en LIMIT-bewerkingen uit op de resultatenset.
  • De MariaDB-server retourneert de resultatenset naar de client.

Hoe MariaDB ColumnStore te installeren

Laten we nu eens kijken hoe we het kunnen installeren. Voor meer informatie kunt u de officiële MariaDB-documentatie raadplegen.

We gebruiken CentOS 7 als besturingssysteem, maar je kunt in plaats daarvan elk ondersteund besturingssysteem gebruiken. De installatiepakketten kunnen hier worden gedownload.

Eerst moet u de Extra Packages-repository installeren:

$ yum install -y epel-release

Vervolgens de volgende vereiste pakketten:

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

Laten we nu de nieuwste versie van MariaDB ColumnStore downloaden, decomprimeren en installeren:

$ 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

Als het klaar is, ziet u het volgende bericht:

De volgende stap is:

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

Dus laten we voor dit voorbeeld gewoon het commando uitvoeren:

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

Nu zal het je wat informatie vragen over de installatie:

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

Voer het gegenereerde script uit:

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

Je hebt nu toegang tot de database met de opdracht "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)]>

Dat is het. Nu kunt u gegevens in uw MariaDB ColumnStore-database laden.

Conclusie

Columnar Storage is een geweldig alternatief voor databaseopslag om gegevens voor analytische doeleinden te verwerken. MariaDB ColumnStore is een Columnar Storage-engine die voor deze taak is ontworpen, en zoals we konden zien, is de installatie vrij eenvoudig, dus als u een OLAP-database nodig heeft of big data verwerkt, moet u het eens proberen.


  1. Rails:PG::UndefinedTabel:FOUT:relatie ... bestaat niet

  2. Retourneer de huidige werkstationnaam die is verbonden met SQL Server (T-SQL)

  3. Hoe u de huidige datum en tijd in MySQL kunt krijgen

  4. Voeg twee tabellen samen in één SQL-query en maak de datumwaarden uniek