Generelt lagrer databaser data i rækkeformat og bruger SQL som forespørgselssprog for at få adgang til det, men denne lagringsmetode er ikke altid den bedste med hensyn til ydeevne, den afhænger af selve arbejdsbyrden. Hvis du ønsker at få statistiske data, bør du højst sandsynligt bruge en anden form for databaselagringsmotor.
I denne blog vil vi se, hvad Columnar Storage er, og for at være mere specifik, hvad MariaDB ColumnStore er, og hvordan man installerer det for at kunne behandle dine big data på en mere effektiv måde for analytiske formål.
Søjlelager
Columnar Storage er en type databasemotor, der gemmer data ved hjælp af en kolonneorienteret model.
For eksempel, i en fælles relationsdatabase kunne vi have en tabel som denne:
id | fornavn | efternavn | alder |
1001 | Oliver | Smith | 23 |
1002 | Harry | Jones | 65 |
1003 | George | Williams | 30 |
1004 | Jak | Taylor | 41 |
Her kommer en Columnar Storage-motor ind i billedet. I stedet for at gemme data i rækker, gemmes dataene i kolonner. Så hvis du har brug for at kende gennemsnitsalderen, vil det være bedre at bruge det, da du vil have en struktur som denne:
id | fornavn | id | efternavn | id | alder | ||
1001 | Oliver | 1001 | Smith | 1001 | 23 | ||
1002 | Harry | 1002 | Jones | 1002 | 65 | ||
1003 | George | 1003 | Williams | 1003 | 30 | ||
1004 | Jak | 1004 | Taylor | 1004 | 41 |
på den anden side er omkostningerne ved at lave enkelte indsættelser højere end en rækkeorienteret database, og det er ikke den bedste mulighed for "SELECT *"-forespørgsler eller transaktionsoperationer, så vi kan sige, at det passer bedre i en OLAP (Online Analytical Processing)-database end en OLTP (Online Transaction Processing).
MariaDB ColumnStore
Det er en kolonneformet lagermotor, der bruger en massivt parallelt distribueret dataarkitektur. Det er en separat download, men den vil være tilgængelig som en lagringsmotor til MariaDB Server fra MariaDB 10.5.4, som stadig er under udvikling på det tidspunkt, hvor denne blog blev skrevet.
Den er designet til big data og bruger fordelene ved søjleopbevaring for at have en fantastisk ydeevne med realtidssvar på analytiske forespørgsler.
MariaDB ColumnStore-arkitektur
Den er sammensat af mange (eller kun 1) MariaDB-servere, der fungerer som moduler, der arbejder sammen. Disse moduler inkluderer bruger, ydeevne og lager.
Brugermodul
Det er en MariaDB Server-instans, der er konfigureret til at fungere som en frontend til ColumnStore.
Brugermodulet administrerer og kontrollerer driften af slutbrugerforespørgsler. Når en klient kører en forespørgsel, analyseres den og distribueres til et eller flere ydeevnemoduler for at behandle forespørgslen. Brugermodulet samler derefter forespørgselsresultaterne og samler dem i resultatsættet for at vende tilbage til klienten.
Det primære formål med brugermodulet er at håndtere samtidighedsskalering. Det rører aldrig direkte databasefiler og kræver ikke synlighed for dem.
Ydeevnemodul
Det er ansvarligt for at lagre, hente og administrere data, behandle blokanmodninger for forespørgselsoperationer og for at sende det tilbage til brugermodulet eller -modulerne for at færdiggøre forespørgselsanmodningerne. Den ser ikke selve forespørgslen, men kun et sæt instruktioner givet til den af et brugermodul.
Modulet vælger data fra disken og cacher dem i en delt-intet-buffer, der er en del af serveren, som det kører på.
Med flere Performance Module noder sikrer en hjerteslagsmekanisme, at alle noder er online, og der er gennemsigtig failover i tilfælde af, at en bestemt node fejler.
Lager
Du kan bruge lokal lagring (Performance Modules) eller delt lagring (SAN) til at gemme data.
Når du opretter en tabel på MariaDB ColumnStore, opretter systemet mindst én fil pr. kolonne i tabellen. Så for eksempel ville en tabel oprettet med tre kolonner have minimum tre, separat adresserbare logiske objekter oprettet på et SAN eller på den lokale disk i et ydeevnemodul.
ColumnStore optimerer sin komprimeringsstrategi for læseydelse fra disk. Den er indstillet til at accelerere dekompressionshastigheden, hvilket maksimerer ydeevnefordele ved læsning fra disk.
MariaDB ColumnStore bruger versionsbufferen til at gemme diskblokke, der er ved at blive ændret, administrere tilbagerulning af transaktioner og servicere MVCC (multi-version concurrency control) eller "snapshot read"-funktionen i databasen. Dette gør det muligt at tilbyde en forespørgselskonsistent visning af databasen.
Sådan fungerer MariaDB CloumnStore
Lad os nu se, hvordan MariaDB ColumnStore behandler en slutbrugerforespørgsel, ifølge den officielle MariaDB ColumnStore-dokumentation:
- Kunder sender en forespørgsel til MariaDB-serveren, der kører på brugermodulet. Serveren udfører en tabeloperation for alle tabeller, der er nødvendige for at opfylde anmodningen og henter den indledende forespørgselsudførelsesplan.
- Ved brug af MariaDB storage engine-grænsefladen konverterer ColumnStore servertabelobjektet til ColumnStore-objekter. Disse objekter sendes derefter til brugermodulets processer.
- Brugermodulet konverterer MariaDB eksekveringsplanen og optimerer de givne objekter til en ColumnStore eksekveringsplan. Den bestemmer derefter de nødvendige trin for at køre forespørgslen og den rækkefølge, de skal køres i.
- Brugermodulet konsulterer derefter udvidelseskortet for at bestemme, hvilke ydeevnemoduler, der skal konsulteres for de data, det har brug for, det udfører derefter omfangseliminering og fjerner alle ydeevnemoduler fra listen, der kun indeholder data uden for rækkevidden af hvad forespørgslen kræver.
- Brugermodulet sender derefter kommandoer til et eller flere ydeevnemoduler for at udføre blok I/O-operationer.
- Performancemodulet eller -modulerne udfører prædikatfiltrering, join-behandling, indledende aggregering af data fra lokalt eller eksternt lager, og sender derefter dataene tilbage til brugermodulet.
- Brugermodulet udfører den endelige aggregering af resultatsæt og sammensætter resultatsættet til forespørgslen.
- Brugermodulet / ExeMgr implementerer alle vinduesfunktionsberegninger, såvel som enhver nødvendig sortering på resultatsættet. Det returnerer derefter resultatsættet til serveren.
- MariaDB-serveren udfører alle valglistefunktioner, ORDER BY og LIMIT operationer på resultatsættet.
- MariaDB-serveren returnerer resultatsættet til klienten.
Sådan installeres MariaDB ColumnStore
Lad os nu se, hvordan du installerer det. For mere information kan du tjekke MariaDB's officielle dokumentation.
Vi vil bruge CentOS 7 som operativsystem, men du kan bruge et hvilket som helst understøttet OS i stedet for. Installationspakkerne kan downloades her.
Først skal du installere ekstrapakker-lageret:
$ yum install -y epel-release
Derefter skal følgende påkrævede pakker:
$ yum install -y boost forventer perl perl-DBI openssl zlib snappy libaio perl-DBD-MySQL net-tools wget jemalloc numactl-libs
Og nu, lad os downloade den seneste version af MariaDB ColumnStore, komprimere og installere den:
$ 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
Når det er færdigt, vil du se følgende besked:
Det næste trin er:
Hvis du installerer på en pm1-node ved hjælp af ikke-distribueret install/usr/local/mariadb/columnstore/bin/postConfigureHvis du installerer på en pm1-node ved hjælp af distributed install/usr/local/mariadb/columnstore/bin/postConfigure - dHvis du installerer på en ikke-pm1 ved hjælp af den ikke-distribuerede mulighed:/usr/local/mariadb/columnstore/bin/columnstore start
Så, for dette eksempel, lad os bare køre kommandoen:
$ /usr/local/mariadb/columnstore/bin/postConfigure
Nu vil den spørge dig om nogle oplysninger om installationen:
Dette er MariaDB ColumnStore-systemkonfigurations- og installationsværktøjet. Det vil konfigurere MariaDB ColumnStore-systemet og udføre en pakkeinstallation af alle serverne i det system, der konfigureres. VIGTIGT:Dette værktøj skal køre på ydeevnemodulet #1Spørgsmålsinstruktioner:Tryk på 'enter' for at acceptere en værdi i (), hvis den er tilgængelig, eller Indtast en af mulighederne inden for [], hvis den er tilgængelig, eller Indtast en ny værdi=====Konfiguration af systemservertype =====Der er 2 muligheder ved konfiguration af systemservertypen:enkelt og multi 'single' - Enkeltserverinstallation bruges, når der kun vil være 1 server konfigureret på systemet. Det kan også bruges til produktionssystemer, hvis planen er at forblive single-server. 'multi' - Multi-Server installation bruges, når du ønsker at konfigurere flere servere nu eller i fremtiden. Med Multi-Server-installation kan du stadig kun konfigurere 1 server nu og tilføje yderligere servere/moduler i fremtiden. Vælg typen af systemserverinstallation [1=enkelt, 2=multi] (2)> 1Udførelse af en enkelt serverinstallation .Indtast systemnavn (columnstore-1)>=====Opsætning af lagerkonfiguration =====----- Opsætning af ydeevnemodul DBRoot Datalagermonteringskonfiguration -----Der er 2 muligheder, når du konfigurerer lageret:intern eller ekstern 'intern' - Dette er angivet, når en lokal disk bruges til DBRoot-lageret. High Availability Server Failover understøttes ikke i denne tilstand 'ekstern' - Dette er angivet, når DBRoot-bibliotekerne er monteret. High Availability Server Failover understøttes i denne tilstand. Vælg typen af datalagring [1=intern, 2=ekstern] (1)>Indtast listen (Nx,Ny,Nz) eller rækken (Nx-Nz) af DBRoot ID'er, der er tildelt til modul 'pm1' (1)>=====Udførelse af konfigurationsopsætning og MariaDB ColumnStore-start =====BEMÆRK:Indstilling af 'NumBlocksPct' til 50% Indstilling af 'TotalUmMemory' til 25% af den samlede hukommelse. Kørsel af MariaDB ColumnStore setup scriptspost-mysqld-install vellykket afsluttetpost-mysql-install succesfuldt afsluttetStarter MariaDB Columnstore Database PlatformStarter MariaDB ColumnStore Database Platform Starter, vent venligst ....... DONESystem Catalogue Succesful OprettetMariaDB ColumnStore Installation med succes er ActiveEnter. MariaDB ColumnStore Alias-kommandoer. /etc/profile.d/columnstoreAlias.sh Indtast 'mcsmysql' for at få adgang til MariaDB ColumnStore SQL-konsollen Indtast 'mcsadmin' for at få adgang til MariaDB ColumnStore-administrationskonsollen BEMÆRK:MariaDB ColumnStore Alias-kommandoerne er i /etc/profile.d/columnstoreAlias.sh kode>
Kør det genererede script:
$ . /etc/profile.d/columnstoreAlias.sh
Nu kan du få adgang til databasen, der kører kommandoen "mcsmysql":
$ mcsmysqlVelkommen til MariaDB-skærmen. Kommandoer slutter med; eller \g.Dit MariaDB-forbindelses-id er 12Serverversion:10.3.16-MariaDB-log Columnstore 1.2.5-1Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab og andre. Indtast 'hjælp;' eller '\h' for at få hjælp. Skriv '\c' for at rydde den aktuelle input-sætning.MariaDB [(none)]>
Det er det. Nu kan du indlæse data i din MariaDB ColumnStore-database.
Konklusion
Columnar Storage er et fantastisk databaselagringsalternativ til at håndtere data til analyseformål. MariaDB ColumnStore er en Columnar Storage-motor designet til denne opgave, og som vi kunne se, er installationen ret nem, så hvis du har brug for en OLAP-database eller behandler big data, bør du prøve det.