MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Какво е MariaDB ColumnStore?

По принцип базите данни съхраняват данни във формат на ред и използват SQL като език за заявки за достъп до тях, но този метод за съхранение не винаги е най-добрият по отношение на производителността, зависи от самото натоварване. Ако искате да получите статистически данни, най-вероятно трябва да използвате друг вид машина за съхранение на база данни.

В този блог ще видим какво представлява Columnar Storage и, за да бъдем по-конкретни, какво представлява MariaDB ColumnStore и как да го инсталирате, за да можете да обработвате вашите големи данни по по-ефективен начин за аналитични цели.

Колонно съхранение

Columnar Storage е тип машина за база данни, която съхранява данни с помощта на колонно-ориентиран модел.

Например, в обща релационна база данни можем да имаме таблица като тази:

id

собствено име

фамилно име

възраст

1001

Оливър

Смит

23

1002

Хари

Джоунс

65

1003

Джордж

Уилямс

30

1004

Жак

Тейлър

41

Това е добре, ако искате да получите например възрастта на конкретен човек, където ще имате нужда от цялата или почти цялата информация за редовете, но ако трябва да получите статистически данни за конкретна колона (например средна възраст), това е не е най-добрата структура.

Ето къде се намесва системата Columnar Storage. Вместо да се съхраняват данни в редове, данните се съхраняват в колони. Така че, ако трябва да знаете средната възраст, ще бъде по-добре да го използвате, тъй като ще имате структура като тази:

id

собствено име

 

id

фамилно име

 

id

възраст

1001

Оливър

 

1001

Смит

 

1001

23

1002

Хари

 

1002

Джоунс

 

1002

65

1003

Джордж

 

1003

Уилямс

 

1003

30

1004

Жак

 

1004

Тейлър

 

1004

41

Което означава, че трябва да прочетете само идентификатор и възраст, за да знаете средната възраст вместо всички данни.

От друга страна, цената за извършване на единични вмъквания е по-висока от базата данни, ориентирана към редове, и не е най-добрият вариант за „SELECT *“ заявки или транзакционни операции, така че можем да кажем, че се вписва по-добре в OLAP (онлайн аналитична обработка) база данни, отколкото в OLTP (онлайн обработка на транзакции).

MariaDB ColumnStore

Това е колонна машина за съхранение, която използва масивна паралелно разпределена архитектура на данни. Това е отделно изтегляне, но ще бъде достъпно като двигател за съхранение на MariaDB Server от MariaDB 10.5.4, който все още е в процес на разработка към момента на написването на този блог.

Проектиран е за големи данни, използвайки предимствата на колонното съхранение, за да има страхотна производителност с отговор в реално време на аналитични заявки.

Архитектура на MariaDB ColumnStore

Състои се от много (или само 1) MariaDB сървъри, работещи като модули, работещи заедно. Тези модули включват потребител, производителност и съхранение.

Потребителски модул

Това е екземпляр на MariaDB сървър, конфигуриран да работи като преден край на ColumnStore.

Потребителският модул управлява и контролира работата на заявките за крайни потребители. Когато клиент изпълнява заявка, тя се анализира и разпределя към един или повече модули за производителност за обработка на заявката. След това модулът User събира резултатите от заявката и ги събира в набора от резултати, за да се върне на клиента.

Основната цел на потребителския модул е ​​да обработва мащабиране на паралелност. Той никога не докосва директно файловете на базата данни и не изисква видимост за тях.

Модул за производителност

Той е отговорен за съхраняването, извличането и управлението на данни, обработката на заявки за блокове за операции със заявка и за предаването им обратно към потребителския модул или модулите за финализиране на заявките. Той не вижда самата заявка, а само набор от инструкции, дадени му от потребителски модул.

Модулът избира данни от диска и ги кешира в споделено нищо буфер, който е част от сървъра, на който работи.

Имайки множество възли на Performance Module, механизъм за сърдечен ритъм гарантира, че всички възли са онлайн и има прозрачен отказ при отказ в случай, че даден възел се повреди.

Съхранение

Можете да използвате локално хранилище (модули за производителност) или споделено хранилище (SAN), за да съхранявате данни.

Когато създадете таблица в MariaDB ColumnStore, системата създава поне един файл на колона в таблицата. Така например таблица, създадена с три колони, ще има минимум три, отделно адресируеми логически обекта, създадени в SAN или на локалния диск на модул за производителност.

ColumnStore оптимизира своята стратегия за компресиране за производителност на четене от диск. Той е настроен да ускорява скоростта на декомпресия, като максимизира ползите от производителността при четене от диск.

MariaDB ColumnStore използва Version Buffer, за да съхранява дискови блокове, които се модифицират, да управлява връщането на транзакции и да обслужва MVCC (контрол на паралелност с няколко версии) или функцията „четене на моментна снимка“ на базата данни. Това му позволява да предлага последователен на заявката изглед на базата данни.

Как работи MariaDB CloumnStore

Сега нека видим как MariaDB ColumnStore обработва заявка за крайния потребител, според официалната документация на MariaDB ColumnStore:

  • Клиентите изпращат заявка към сървъра на MariaDB, работещ на потребителския модул. Сървърът изпълнява таблична операция за всички таблици, необходими за изпълнение на заявката, и получава първоначалния план за изпълнение на заявката.
  • Използвайки интерфейса на механизма за съхранение на MariaDB, ColumnStore преобразува обекта на таблицата на сървъра в обекти на ColumnStore. След това тези обекти се изпращат до процесите на потребителския модул.
  • Потребителският модул преобразува плана за изпълнение на MariaDB и оптимизира дадените обекти в план за изпълнение на ColumnStore. След това определя стъпките, необходими за изпълнение на заявката и реда, в който те трябва да бъдат изпълнени.
  • След това потребителският модул се консултира с картата на обхвата, за да определи кои модули за производителност да се консултира за необходимите му данни, след това извършва елиминиране на степента, елиминирайки всички модули за производителност от списъка, които съдържат само данни извън обхвата на какво изисква заявката.
  • Потребителският модул след това изпраща команди до един или повече модули за производителност за извършване на блокови I/O операции.
  • Модулът за производителност или модулите извършват филтриране на предикати, обработка на присъединяване, първоначално агрегиране на данни от локално или външно съхранение, след което изпращат данните обратно към потребителския модул.
  • Потребителският модул извършва окончателното агрегиране на набора от резултати и съставя набора от резултати за заявката.
  • Потребителският модул / ExeMgr изпълнява всички изчисления на функцията на прозореца, както и всяко необходимо сортиране в набора от резултати. След това връща набора от резултати на сървъра.
  • Сървърът MariaDB изпълнява всякакви функции за избор на списък, операции ORDER BY и LIMIT върху набора от резултати.
  • Сървърът MariaDB връща набора от резултати на клиента.

Как да инсталирате MariaDB ColumnStore

Сега нека видим как да го инсталираме. За повече информация можете да проверите официалната документация на MariaDB.

Ще използваме CentOS 7 като операционна система, но вместо това можете да използвате всяка поддържана ОС. Инсталационните пакети са достъпни за изтегляне тук.

Първо, ще трябва да инсталирате хранилището за допълнителни пакети:

$ yum install -y epel-release

След това, следните необходими пакети:

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

И сега, нека изтеглим най-новата версия на MariaDB ColumnStore, декомпресираме и инсталираме:

$ 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

Когато приключи, ще видите следното съобщение:

Следващата стъпка е:

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

И така, за този пример, нека просто изпълним командата:

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

Сега ще ви поиска информация за инсталацията:

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

Изпълнете генерирания скрипт:

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

Сега можете да получите достъп до базата данни, изпълнявайки командата “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)]>

Това е. Сега можете да заредите данни във вашата база данни MariaDB ColumnStore.

Заключение

Columnar Storage е чудесна алтернатива за съхранение на база данни за обработка на данни за аналитични цели. MariaDB ColumnStore е механизъм за Columnar Storage, предназначен за тази задача и както видяхме, инсталацията е доста лесна, така че ако имате нужда от OLAP база данни или обработвате големи данни, трябва да опитате.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи RPAD() в MariaDB

  2. MariaDB ОСВЕН Операторът е обяснен

  3. MariaDB ще представи TO_CHAR()

  4. Как да управлявате MariaDB 10.3 с ClusterControl

  5. Най-добри практики за мащабиране на бази данни:част втора