sql >> Databáze >  >> RDS >> MariaDB

Co je MariaDB ColumnStore?

Obecně databáze ukládají data ve formátu řádků a pro přístup k nim používají SQL jako dotazovací jazyk, ale tento způsob ukládání není vždy nejlepší z hlediska výkonu, závisí na samotném vytížení. Pokud chcete získat statistická data, měli byste s největší pravděpodobností použít jiný druh databázového úložiště.

V tomto blogu uvidíme, co je to Columnar Storage a konkrétněji, co je MariaDB ColumnStore a jak jej nainstalovat, abyste mohli zpracovávat vaše velká data výkonnějším způsobem pro analytické účely.

Sloupcové úložiště

Sloupcové úložiště je typ databázového stroje, který ukládá data pomocí sloupcově orientovaného modelu.

Například v běžné relační databázi bychom mohli mít tabulku podobnou této:

id

křestní jméno

příjmení

věk

1001

Oliver

Smith

23

1002

Harry

Jones

65

1003

Jiří

Williams

30

1004

Jacku

Taylor

41

To je v pořádku, pokud chcete získat například věk konkrétní osoby, kde budete potřebovat všechny nebo téměř všechny informace o řádku, ale pokud potřebujete získat statistiky pro konkrétní sloupec (např. průměrný věk), je to není to nejlepší struktura.

Tady vstupuje do hry modul sloupcového úložiště. Místo ukládání dat do řádků se data ukládají do sloupců. Pokud tedy potřebujete znát průměrný věk, bude lepší jej použít, protože budete mít strukturu takto:

id

křestní jméno

 

id

příjmení

 

id

věk

1001

Oliver

 

1001

Smith

 

1001

23

1002

Harry

 

1002

Jones

 

1002

65

1003

Jiří

 

1003

Williams

 

1003

30

1004

Jacku

 

1004

Taylor

 

1004

41

To znamená, že místo všech údajů stačí přečíst id a věk, abyste věděli průměrný věk.

na druhou stranu náklady na jednotlivé vkládání jsou vyšší než u databáze orientované na řádky, a není to nejlepší volba pro „SELECT *“ dotazy nebo transakční operace, takže můžeme říci, že se lépe hodí do databáze OLAP (Online Analytical Processing) než do databáze OLTP (Online Transaction Processing).

MariaDB ColumnStore

Jedná se o sloupcové úložiště, které využívá masivně paralelní distribuovanou datovou architekturu. Jedná se o samostatné stažení, ale bude k dispozici jako úložiště pro server MariaDB od verze MariaDB 10.5.4, která je v době psaní tohoto blogu stále ve vývoji.

Je navržen pro velká data a využívá výhod sloupcového úložiště k dosažení skvělého výkonu s odezvou na analytické dotazy v reálném čase.

Architektura MariaDB ColumnStore

Skládá se z mnoha (nebo pouze 1) serverů MariaDB, které fungují jako moduly a spolupracují. Tyto moduly zahrnují User, Performance a Storage.

Uživatelský modul

Je to instance serveru MariaDB nakonfigurovaná tak, aby fungovala jako rozhraní pro ColumnStore.

Uživatelský modul spravuje a řídí provoz dotazů koncových uživatelů. Když klient spustí dotaz, je analyzován a distribuován do jednoho nebo více výkonnostních modulů ke zpracování dotazu. Modul Uživatel pak shromáždí výsledky dotazu a sestaví je do sady výsledků, aby se vrátil klientovi.

Hlavním účelem uživatelského modulu je zvládnout škálování souběžnosti. Nikdy se přímo nedotýká databázových souborů a nevyžaduje jejich viditelnost.

Modul výkonu

Zodpovídá za ukládání, získávání a správu dat, zpracovávání blokových požadavků na operace dotazů a za jejich předávání zpět uživatelskému modulu nebo modulům k dokončení požadavků na dotazy. Nevidí samotný dotaz, ale pouze sadu instrukcí, které mu dává uživatelský modul.

Modul vybírá data z disku a ukládá je do mezipaměti ve sdílené vyrovnávací paměti, která je součástí serveru, na kterém běží.

Mechanismus prezenčního signálu, který má více uzlů modulu Performance, zajišťuje, že všechny uzly jsou online a že v případě selhání konkrétního uzlu dojde k transparentnímu převzetí služeb při selhání.

Úložiště

K ukládání dat můžete použít místní úložiště (Performance Modules) nebo sdílené úložiště (SAN).

Když vytvoříte tabulku na MariaDB ColumnStore, systém vytvoří alespoň jeden soubor pro každý sloupec v tabulce. Takže například tabulka vytvořená se třemi sloupci by měla minimálně tři samostatně adresovatelné logické objekty vytvořené na SAN nebo na lokálním disku Performance Module.

ColumnStore optimalizuje svou strategii komprese pro výkon čtení z disku. Je vyladěn tak, aby zrychlil rychlost dekomprese a maximalizoval výhody výkonu při čtení z disku.

MariaDB ColumnStore používá vyrovnávací paměť verzí k ukládání diskových bloků, které se upravují, ke správě vrácení transakcí a k obsluze funkce MVCC (řízení souběžnosti více verzí) nebo „čtení snímků“ databáze. To mu umožňuje nabídnout pohled na databázi konzistentní s dotazem.

Jak MariaDB CloumnStore funguje

Nyní se podívejme, jak MariaDB ColumnStore zpracovává dotaz koncového uživatele podle oficiální dokumentace MariaDB ColumnStore:

  • Klienti zadají dotaz na server MariaDB spuštěný v uživatelském modulu. Server provede operaci tabulky pro všechny tabulky potřebné ke splnění požadavku a získá počáteční plán provádění dotazu.
  • ColumnStore pomocí rozhraní úložiště MariaDB převede objekt tabulky serveru na objekty ColumnStore. Tyto objekty jsou poté odeslány procesům uživatelského modulu.
  • Uživatelský modul převádí plán provádění MariaDB a optimalizuje dané objekty na plán provádění ColumnStore. Poté určí kroky potřebné ke spuštění dotazu a pořadí, ve kterém je třeba je spustit.
  • Uživatelský modul poté nahlédne do mapy rozsahu, aby určil, které moduly výkonu má konzultovat s údaji, která potřebuje, a poté provede eliminaci rozsahu, přičemž ze seznamu vyloučí všechny moduly výkonu, které obsahují pouze data mimo rozsah co dotaz vyžaduje.
  • Uživatelský modul poté odešle příkazy jednomu nebo více výkonnostním modulům k provedení blokových I/O operací.
  • Výkonnostní modul nebo moduly provádějí predikátové filtrování, zpracování spojení, počáteční agregaci dat z místního nebo externího úložiště a poté odešlou data zpět do uživatelského modulu.
  • Uživatelský modul provede konečnou agregaci sady výsledků a sestaví sadu výsledků pro dotaz.
  • Uživatelský modul / ExeMgr implementuje jakékoli výpočty funkcí okna, stejně jako jakékoli nezbytné třídění v sadě výsledků. Poté vrátí sadu výsledků na server.
  • Server MariaDB provádí všechny vybrané funkce seznamu, operace ORDER BY a LIMIT na sadě výsledků.
  • Server MariaDB vrátí sadu výsledků klientovi.

Jak nainstalovat MariaDB ColumnStore

Nyní se podíváme, jak jej nainstalovat. Další informace najdete v oficiální dokumentaci MariaDB.

Jako operační systém použijeme CentOS 7, ale místo něj můžete použít jakýkoli podporovaný OS. Instalační balíčky jsou k dispozici ke stažení zde.

Nejprve budete muset nainstalovat úložiště Extra Packages:

$ yum install -y epel-release

Potom následující požadované balíčky:

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

A nyní si stáhneme nejnovější verzi MariaDB ColumnStore, rozbalíme ji a nainstalujeme:

$ 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

Po dokončení se zobrazí následující zpráva:

Dalším krokem je:

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

Pro tento příklad tedy spusťte příkaz:

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

Nyní se vás zeptá na některé informace o instalaci:

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

Spusťte vygenerovaný skript:

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

Nyní můžete přistupovat k databázi pomocí příkazu „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)]>

To je ono. Nyní můžete načíst data do databáze MariaDB ColumnStore.

Závěr

Sloupcové úložiště je skvělou alternativou databázového úložiště pro zpracování dat pro účely analýzy. MariaDB ColumnStore je modul Columnar Storage navržený pro tento úkol, a jak jsme viděli, instalace je docela snadná, takže pokud potřebujete databázi OLAP nebo zpracováváte velká data, měli byste to zkusit.


  1. Nejrychlejší způsob importu velkého souboru CSV do MySql pomocí MySql CLI

  2. Který SQL dotaz je lepší, MATCH AGAINST nebo LIKE?

  3. Po zablokování jedné transakce napříč verzemi SQL Server

  4. Monitorování databází a instancí pomocí Activity Monitor | Řešení problémů s výkonem serveru SQL -2