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 |
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 |
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.