MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Co to jest MariaDB ColumnStore?

Ogólnie rzecz biorąc, bazy danych przechowują dane w formacie wiersza i używają SQL jako języka zapytań, aby uzyskać do nich dostęp, ale ta metoda przechowywania nie zawsze jest najlepsza pod względem wydajności, zależy to od samego obciążenia. Jeśli chcesz uzyskać dane statystyczne, prawdopodobnie powinieneś użyć innego rodzaju silnika do przechowywania bazy danych.

W tym blogu zobaczymy, czym jest Columnar Storage, a dokładniej, czym jest MariaDB ColumnStore i jak ją zainstalować, aby móc przetwarzać duże dane w bardziej wydajny sposób dla celów analitycznych.

Przechowywanie kolumnowe

Przechowywanie kolumnowe to rodzaj silnika bazy danych, który przechowuje dane przy użyciu modelu zorientowanego na kolumny.

Na przykład we wspólnej relacyjnej bazie danych moglibyśmy mieć taką tabelę:

id

imię

nazwisko

wiek

1001

Oliwer

Kowalski

23

1002

Harry

Jones

65

1003

George

Williams

30

1004

Jack

Taylor

41

Jest to w porządku, jeśli chcesz uzyskać na przykład wiek konkretnej osoby, gdzie potrzebne będą wszystkie lub prawie wszystkie informacje w wierszu, ale jeśli chcesz uzyskać statystyki dotyczące określonej kolumny (np. Średni wiek), jest to nie najlepsza struktura.

W tym miejscu do gry wkracza silnik Columnar Storage. Zamiast przechowywać dane w wierszach, dane są przechowywane w kolumnach. Tak więc, jeśli chcesz znać średni wiek, lepiej będzie z niego skorzystać, ponieważ będziesz mieć taką strukturę:

id

imię

 

id

nazwisko

 

id

wiek

1001

Oliwer

 

1001

Kowalski

 

1001

23

1002

Harry

 

1002

Jones

 

1002

65

1003

George

 

1003

Williams

 

1003

30

1004

Jack

 

1004

Taylor

 

1004

41

Oznacza to, że wystarczy odczytać identyfikator i wiek, aby poznać średni wiek, a nie wszystkie dane.

z drugiej strony koszt wykonania pojedynczych wstawek jest wyższy niż w przypadku bazy danych zorientowanej na wiersze, i nie jest to najlepsza opcja dla zapytań „SELECT *” lub operacji transakcyjnych, więc możemy powiedzieć, że lepiej pasuje do bazy danych OLAP (Online Analytical Processing) niż do OLTP (Online Transaction Processing).

MariaDB ColumnStore

Jest to kolumnowy mechanizm przechowywania danych, który wykorzystuje masowo równoległą architekturę danych rozproszonych. Jest to osobny plik do pobrania, ale będzie dostępny jako silnik pamięci masowej dla MariaDB Server z MariaDB 10.5.4, który w momencie pisania tego bloga wciąż był w fazie rozwoju.

Zaprojektowano go z myślą o dużych zbiorach danych, wykorzystując zalety pamięci kolumnowej, aby uzyskać doskonałą wydajność z odpowiedzią w czasie rzeczywistym na zapytania analityczne.

Architektura magazynu kolumn MariaDB

Składa się z wielu (lub tylko 1) serwerów MariaDB, działających jako moduły, współpracujących ze sobą. Te moduły obejmują użytkownika, wydajność i pamięć masową.

Moduł użytkownika

Jest to instancja MariaDB Server skonfigurowana do działania jako front-end do ColumnStore.

Moduł użytkownika zarządza i kontroluje działanie zapytań użytkowników końcowych. Gdy klient uruchamia zapytanie, jest ono analizowane i dystrybuowane do co najmniej jednego modułu wydajności w celu przetworzenia zapytania. Moduł użytkownika następnie zbiera wyniki zapytania i składa je w zestaw wyników, aby powrócić do klienta.

Głównym celem modułu użytkownika jest obsługa skalowania współbieżności. Nigdy nie dotyka bezpośrednio plików bazy danych i nie wymaga ich widoczności.

Moduł wydajności

Odpowiada za przechowywanie, pobieranie i zarządzanie danymi, przetwarzanie żądań blokowych dla operacji zapytań oraz za przekazywanie ich z powrotem do modułu lub modułów użytkownika w celu sfinalizowania żądań zapytań. Nie widzi samego zapytania, a jedynie zestaw instrukcji przekazanych mu przez moduł użytkownika.

Moduł wybiera dane z dysku i buforuje je w buforze współdzielonym, który jest częścią serwera, na którym działa.

Mając wiele węzłów Performance Module, mechanizm pulsu zapewnia, że ​​wszystkie węzły są w trybie online i istnieje przejrzyste przełączanie awaryjne w przypadku awarii określonego węzła.

Pamięć

Do przechowywania danych można użyć pamięci lokalnej (moduły wydajności) lub pamięci współdzielonej (SAN).

Gdy tworzysz tabelę w MariaDB ColumnStore, system tworzy co najmniej jeden plik na kolumnę w tabeli. Na przykład tabela utworzona z trzema kolumnami będzie miała minimum trzy oddzielnie adresowalne obiekty logiczne utworzone w sieci SAN lub na dysku lokalnym modułu wydajności.

ColumnStore optymalizuje swoją strategię kompresji pod kątem wydajności odczytu z dysku. Jest dostrojony, aby przyspieszyć tempo dekompresji, maksymalizując korzyści związane z wydajnością podczas odczytu z dysku.

MariaDB ColumnStore używa bufora wersji do przechowywania modyfikowanych bloków dysku, zarządzania wycofywaniem transakcji i obsługi funkcji MVCC (kontrola współbieżności wielu wersji) lub funkcji „odczytu migawki” bazy danych. Dzięki temu może zaoferować spójny widok bazy danych.

Jak działa MariaDB CloumnStore

Teraz zobaczmy, jak MariaDB ColumnStore przetwarza zapytanie użytkownika końcowego, zgodnie z oficjalną dokumentacją MariaDB ColumnStore:

  • Klienci wysyłają zapytanie do serwera MariaDB działającego w module użytkownika. Serwer wykonuje operację na tabeli dla wszystkich tabel potrzebnych do spełnienia żądania i uzyskuje początkowy plan wykonania zapytania.
  • Korzystając z interfejsu silnika pamięci masowej MariaDB, ColumnStore konwertuje obiekt tabeli serwera na obiekty ColumnStore. Obiekty te są następnie wysyłane do procesów modułu użytkownika.
  • Moduł użytkownika konwertuje plan wykonania MariaDB i optymalizuje podane obiekty na plan wykonania ColumnStore. Następnie określa kroki potrzebne do uruchomienia zapytania i kolejność, w jakiej muszą zostać uruchomione.
  • Moduł użytkownika konsultuje się następnie z mapą zakresu, aby określić, które moduły wydajności należy skonsultować w celu uzyskania potrzebnych danych, a następnie wykonuje eliminację zakresu, eliminując z listy wszystkie moduły wydajności, które zawierają tylko dane spoza zakresu czego wymaga zapytanie.
  • Moduł użytkownika wysyła następnie polecenia do jednego lub więcej modułów wydajności w celu wykonania operacji blokowych we/wy.
  • Moduł lub moduły wydajności przeprowadzają filtrowanie predykatów, przetwarzanie łączenia, początkową agregację danych z pamięci lokalnej lub zewnętrznej, a następnie wysyłają dane z powrotem do modułu użytkownika.
  • Moduł użytkownika wykonuje ostateczną agregację zestawu wyników i tworzy zestaw wyników dla zapytania.
  • Moduł użytkownika / ExeMgr implementuje dowolne obliczenia funkcji okna, a także wszelkie niezbędne sortowanie w zestawie wyników. Następnie zwraca zestaw wyników na serwer.
  • Serwer MariaDB wykonuje dowolne funkcje listy wyboru, operacje ORDER BY i LIMIT na zestawie wyników.
  • Serwer MariaDB zwraca zestaw wyników do klienta.

Jak zainstalować MariaDB ColumnStore

Teraz zobaczmy, jak go zainstalować. Więcej informacji można znaleźć w oficjalnej dokumentacji MariaDB.

Będziemy używać CentOS 7 jako systemu operacyjnego, ale zamiast tego możesz użyć dowolnego obsługiwanego systemu operacyjnego. Pakiety instalacyjne są dostępne do pobrania tutaj.

Najpierw musisz zainstalować repozytorium dodatkowych pakietów:

$ yum install -y epel-release

Następnie następujące wymagane pakiety:

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

A teraz pobierzmy najnowszą wersję MariaDB ColumnStore, rozpakuj ją i zainstaluj:

$ 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 zakończeniu zobaczysz następujący komunikat:

Następny krok to:

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

Więc w tym przykładzie po prostu uruchommy polecenie:

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

Teraz zapyta Cię o kilka informacji na temat instalacji:

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

Uruchom wygenerowany skrypt:

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

Teraz możesz uzyskać dostęp do bazy danych za pomocą polecenia „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 wszystko. Teraz możesz załadować dane do bazy danych MariaDB ColumnStore.

Wnioski

Columnar Storage to doskonała alternatywa dla przechowywania bazy danych do obsługi danych do celów analitycznych. MariaDB ColumnStore to silnik Columnar Storage zaprojektowany do tego zadania i jak mogliśmy zobaczyć, instalacja jest dość łatwa, więc jeśli potrzebujesz bazy danych OLAP lub przetwarzasz duże zbiory danych, powinieneś spróbować.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odejmij miesiąc od daty w MariaDB

  2. MariaDB CURRENT_DATE () Wyjaśnione

  3. Unikanie blokady dostawcy bazy danych dla MySQL lub MariaDB

  4. Jak TIME_FORMAT() działa w MariaDB

  5. Jak działa DATEDIFF() w MariaDB