Mariadb uuri versiooni. MySQL vs MariaDB võrdlus. Oluline on ühilduvus

Kas kasutate endiselt MySQL-i?
Ja paljud inimesed on juba ammu MariaDB andmebaasile üle läinud.
Vaata, milline ilus pitsatiga MariaDB logo.

MySQL-il on ka päris kena delfiin

Väike MariaDB ajalugu Wikipediast.
MariaDB on kogukonna poolt välja töötatud MySQL-i andmebaasi hark. Loomise ajendiks oli vajadus tagada DBMS-i vaba staatus (GPL-litsentsi alusel), vastandina Oracle'i ebamäärasele MySQL-i litsentsipoliitikale.

MariaDB juhtivarendaja on Michael Widenius, kes on ka MySQL-i algne autor ja Monty Program AB asutaja.

MariaDB projekti põhieesmärk on luua DBMS-i versioon, mis on täielikult binaarselt ühilduv algse MySQL-iga, millel on samal ajal märkimisväärne hulk jõudlust mõjutavaid täiustusi koodis.

MariaDB-d arendatakse MySQL-i asendajana, imiteerides täielikult MySQL-i käitumist (ja see on tõesti nii).

MariaDB on praegu paljulubav trend, vaadake MySQL-i ja MariaDB võrdlustabelit (eriti 10.x haru)

Võrdluse võtsin ametlikult MariaDB kodulehelt, kus saab punkte täpsemalt vaadata. Kuigi ka ilma selleta on selge, et MariaDB 10.x on selgelt liidripositsioonil.

Nüüd installivad paljud Linuxi distributsioonid MySQL-i asemel vaikimisi MariaDB ja saladus on siin lihtne – MariaDB toetab samu andmesalvestusvorminguid, tabeleid ja isegi käivituskäske ja nii edasi, s.t. MariaDB-sse üleminek on lihtne ja sujuv. FreeBSD teeb ka MariaDB installimise lihtsaks.

Näiteks Aria tabelitüüp on optimeeritud andmebaasi sisestamiseks (need on märgatavalt kiiremad kui MyISAM-is). Samuti kasutatakse MariaDB-s Aria tabeleid sisemiste protsesside jaoks, kõik ajutised tabelid töötavad Aria peal, mis suurendab jõudlust keerukate päringute korral.

Fraasid: MariaDB ja MySQL võrdlus, mis on parim andmebaas?, kiirus, MariaDB installimine

RDBMS on MySQL-i võsu ja selle töötas välja Monty Program Ab, ettevõte, mille lõi Michael Widenius pärast Sun Microsystemsist lahkumist. See sisaldab kõiki suuremaid avatud lähtekoodiga salvestusmootoreid, sealhulgas lisaks Maria salvestusmootorit. MariaDB töötab paljuski täpselt nagu MySQL: kõik MySQL-is olevad käsud, liidesed, teegid ja API-d on olemas ka MariaDB-s.

Selle DBMS-i arendajate sõnul kavatsevad nad MariaDB väljalaseid MySQL-i väljalasetega sünkroonida.

Nimi MariaDB pärineb Michael Widenius Maria noorima tütre nimest.

Lugu

Platvormid

Windows amd64 (64-bitine), Windows x86 (32-bitine), Solaris 10 x86, Solaris 11 x86, Linux amd64 (64-bitine), Linux x86, CentOS 5 / RedHat 5 amd64 (64-bitine), CentOS 5 / Red Hat 5 x86 (32-bitine).

Väljaanded

Säilitussüsteemid

    Aria on uus MySQL ja MariaDB salvestusmootor (varem nimega Maria). Salvestussüsteem on alternatiiv MyISAMile, kuid põrkekindlam. Tänu toimingute logimisele taastatakse krahhi korral kõik tabelid olekusse enne avalduse täitmist või olekusse enne viimase LOCK TABLES käsu täitmist. Toetatud on ka oleku taastamise võimalus suvalisest toimingulogist (sh CREATE/DROP/RENAME/TRUNCATE tugi). Töö pakub paremat vahemällu kui MyISAM-is, samuti täiustatud paralleelsust mitme sisestusega. Kõik MariaDB sisemised tabelid kasutavad seda salvestusmootorit. Arendatakse alates 2007. aastast.

    MinuISAM- üks peamisi andmesalvestussüsteeme DBMS-is. See põhineb ISAM-koodil ja sellel on sellega võrreldes mitmeid kasulikke täiendusi. MyISAM-i tabelid sobivad suurepäraselt kasutamiseks WWW-s ja muudes keskkondades, kus on ülekaalus lugemisnõuded. Kasutatakse vaikesalvestusmehhanismina.

    XtraDB- on InnoDB salvestusmootori laiendatud versioon, mis on suunatud kaasaegse riistvara tõhusamale skaleeritavusele ja sisaldab muu hulgas palju funktsioone, mis on kasulikud suure jõudlusega tingimustes. XtraDB-l on täiustatud mäluhaldusmehhanism, InnoDB I/O alamsüsteemi täiustatud toimimine, lisatud mitme lugemis- ja kirjutamisvoo tugi, ribalaiuse halduse tugi, ettelugemise rakendamine, adaptiivne kontrollpunkt. Laiendatud on suurte projektide skaleerimisvõimalusi, lukukorraldussüsteemi on kohandatud töötama suure hulga CPU-dega süsteemidel, lisatud on lisavõimalusi statistika kogumiseks ja analüüsimiseks. Mootor on täielikult tagurpidi ühilduv ja seetõttu saab seda kasutada standardse InnoDB asendajana. XtraDB salvestussüsteem põhineb Oracle / Innobase InnoDB pistikprogrammi versioonil 1.0.3 koos täiendavate laiendustega.

    PBXT (PrimeBase XT)– nullist välja töötatud ja mitmeversioonilist andmesalvestuse korraldamise meetodit MVCC (multi-version concurrency control) toetav salvestussüsteem, mis võimaldab lugemisoperatsioonide sooritamisel lukkudest vabaneda. PBXT toetab ACID-ühilduvaid tehinguid, tehingute kiiret tagasipööramist ja serveri valest seiskamisest taastumist. On olemas vahendid andmete viiteterviklikkuse tagamiseks, võõrvõtmete (võõrvõtme) määratlemise tugi, andmete kaskaadvärskendused ja kustutamised. Toetatud on binaarandmete (BLOB) otsesisendi ja väljundi otse voogesituse võimalus andmebaasi.

    FederatedX- salvestussüsteem, mis võimaldab teil korraldada juurdepääsu kaugtabelitele kohalikena. Toetatakse tehinguid, mitme ühenduse samaaegset loomist kaug-DBMS-iga, "LIMIT" operatsioonide kasutamist.

Litsentsi andmine

MariaDB on saadaval GPL v2 litsentsi tingimuste alusel, nagu ka MySQL. GPL hõlmab ainult teistele osapooltele antud koodi. Organisatsioonisiseseks kasutamiseks on selline kood täiesti tasuta ja sellele ei kehti mingeid tingimusi. Tasuta on ka ühenduse loomine kaugteenusega, mis töötab taustal MariaDB-ga (või mis tahes muu GPL-tarkvaraga).

Vaja oli tagada DBMS-i vaba staatus (GPL-litsentsi alusel), vastandina Oracle'i ebamäärasele MySQL-i litsentsipoliitikale. Toodet levitatakse ja kasutatakse GNU GPL v.2, GNU LGPL alusel.

Süsteem on kirjutatud kasutades: C, C++, Perl, Bash. Toode töötab Linuxi ja UNIX-laadsete operatsioonisüsteemide, Windowsi all.

2014: MariaDB Enterprise 1.0

MariaDB arendamist juhib sõltumatu MariaDB sihtasutus, järgides täielikult avatud ja läbipaistvat arendusprotsessi, mis ei sõltu üksikutest müüjatest. MariaDB tarnitakse MySQL-i asemel paljudes Linuxi distributsioonides (RHEL 7, SUSE 12, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian 9). Süsteemi rakendatakse projektides: Wikipedia , Google Cloud SQL ja Nimbuzz.

MariaDB 10.1 suured täiustused

  • Tabelite ja tehingulogide krüptimise tugi, mis võimaldab teil kaitsta andmelekke eest kõvaketta varguse korral, kuid on kasutu olukorras, kus saavutate kontrolli näiteks töötava DBMS-i üle. rünnak SQL-päringu asendamise või süsteemi häkkimise kaudu. Kui krüpteerimine on lubatud, suurenevad üldkulud 3-5%. Mõistlik on salvestada krüpteerimisvõtmed eraldi turvalises serveris koos võtmete pööramise süsteemiga, mis tähendab perioodilist uuesti krüpteerimist uue võtmega pärast praeguse võtme vananemist. Krüptimistugi on rakendatud XtraDB ja InnoDB salvestusruumides. Pakutakse mitmeid skeeme: valitud tabelite krüpteerimine, kõigi andmebaasis olevate tabelite krüpteerimine ja kõigi tabelite krüpteerimine, välja arvatud valitud tabelid. Tehingulogi krüpteerimisega tagatakse kaitse ka replikatsiooniga süsteemides;
  • Kaasatakse Galera sünkroonse mitme peamise (aktiivne-aktiivne) replikatsioonitehnoloogia baasjaotus, mida varem pakuti eraldi MariaDB Galera Clusteri toote osana. Galera laiendab MariaDB DBMS-i võimalusi sünkroonse replikatsiooniga, milles kõik sõlmed sisaldavad alati värskeid andmeid, s.t. garanteeritud on kaotsiläinud tehingute puudumine, kuna tehing fikseeritakse alles pärast andmete levitamist kõikidesse sõlmedesse. Samas tehakse tehingu raames toimingud koheselt, kinnituse ootamisest tulenev viivitus tekib alles siis, kui sooritatakse toimingu "commit". Replikatsioon toimub paralleelselt, rea tasemel, edastades ainult teavet muudatuste kohta. Sõlmede klastri liikmelisust hallatakse automaatselt, ebaõnnestunud sõlmed arvatakse koheselt ilma administraatori osaluseta klastrist välja, uued sõlmed saab vajadusel ilma täiendava ümberseadistamiseta lennult ühendada;
  • Võimalus replikeerida andmeid MySQL 5.6-st, kui MySQL-is on lubatud GTID tugi, st. MySQL-i saab nüüd kasutada MariaDB peaserverina. See funktsioon võimaldab teil oluliselt lihtsustada testimist MySQL-ist MariaDB-le ülemineku protsessis;
  • Andmelehtede tihendamise tugi InnoDB ja XtraDB poodidele. Uus meetod erineb senisest kättesaadavast tihendusmehhanismist (row_format=compressed) erinevate tihendusalgoritmide (zlib, lz4, lz0, lzma, bzip2 ja snappy) valiku ning pakitud andmetega töötamise protsessi erineva korralduse poolest. Kui traditsioonilises teostuses sisaldab puhver nii kokkusurutud kui veel tihendamata andmeid, siis uue skeemi järgi on puhvris ainult lahtipakkitud andmed – leheküljed tihendatakse enne salvestusruumi kirjutamist ja pärast lugemist pakitakse lahti. Uus meetod on kõige tõhusam SSD-draivide või NVM-mälu kasutamisel. Parimad tulemused on näha FusionIO plaatidega;
  • Rakendatud on InnoDB salvestusruumi defragmentimise süsteem, mis põhineb Facebooki pakutavatel arendustel. Varem märgiti InnoDB-st ridu kustutades need ainult kustutatuks ja tehti uutele kirjetele kättesaadavaks, ilma et oleks tegelikult kettalt plokke vabastatud ja süsteemi kettaruumi tagastamata. "OPTIMIZE TABLE" käivitamine lahendab näidatud probleemi, kuid ehitades tabeli täielikult ümber olemasolevate andmete kopeerimisega uude asukohta, s.t. nõuab palju vaba kettaruumi. Pärast defragmentimise toe lubamist konfiguratsioonifailis (innodb-defragment=1) ei too käsu "OPTIMIZE TABLE" täitmine kaasa uutesse tabelitesse kopeerimist, vaid seda rakendatakse kirje liikumise mehhanismi kaudu;
  • Rakendatud on "optimistlik" paralleelreplikatsiooni režiim, mis on oluliselt lihtsustatud võrreldes MariaDB 10.0-s ilmunud orjaserverite paralleelse replikatsiooni vahenditega. Eelkõige on võimalik alamserveris paralleelselt rakendada mis tahes toiminguid INSERT/UPDATE/DELETE, isegi kui need pole veel põhiserveris lõpule viidud;
  • Võimalus kontrollida antud parooli usaldusväärsust, kasutades pluginaid simple_password_check ja cracklib_password_check;
  • Mitmetuumaliste süsteemide protsessori koormuse vähendamiseks ja tõhususe suurendamiseks on tehtud mitmeid jõudlust. Testimine näitas töödeldud tehingute arvu suurenemist 135-lt 190%-le ja võimet töödelda üle miljoni OLTP-toimingu sekundis;
  • Lisatud on käsud "EXPLAIN FORMAT=JSON" ja "ANALYZE FORMAT=JSON", milles genereeritakse JSON-vormingus väljund koos päringu omaduste hinnanguga. Käsu ANALYZE tavaline väljund on nüüd sarnane EXPLAIN väljundiga, kuid sisaldab päringu täitmise tulemusena saadud andmeid (loetud ridade arv jne);
  • Geoinfosüsteemide andmete ruumilise viitamise (Spatial Reference) vahendid. Uute funktsioonide juurutamine ruumiliste koordinaatidega töötamiseks: ST_Boundary, ST_ConvexHull, ST_IsRing, ST_PointOnSurface, ST_Relate;
  • Avaldiste "IF ON EXISTS", "IF NOT EXISTS" ja "OR REPLACE" tugi jaotistes "LOO ANDMEBAAS", CREATE FUNCTION UDF, CREATE ROLE, CREATE SERVER, CREATE USER, CREATE VIEW, Drop ROLE, Drop käskkirjad KASUTAJA", CREATE EVENT", "DROP EVENT" CREATE INDEX", "DROP INDEX" CREATE TRIGGER" ja "DROP TRIGGER";
  • Pluginate käskude SHOW ja FLUSH tugi, nt "SHOW LOCALES", "SHOW QUERY_RESPONSE_TIME", "FLUSH QUERY_RESPONSE_TIME";
  • Toetus direktiivile "SET DEFAULT ROLE", mis võimaldab määratleda vaikerolli, mis kehtib kõikidele uutele ühendustele;
  • süsteemne tugi.

MySQL sai Oracle'i omandiks, kas on alternatiive ja kui kiiresti see edasi liigub?.. Umbes nagu üldine ülevaade "kes on kes?" polnud veel seal. Niisiis, arvustaja neile, kes "teemas pole"

Mõned inimesed ja paljud pole lihtsalt rahul, et MySQL sai Oracle'i omanduseks. Õnneks elame juba praegu maailmas, kus info levib trükkimise kiirusel ja otsused sünnivad välgukiirusel.

Michael Widenius, MySQL-i asutaja ja MySQL AB asutaja (mille võttis üle Sun, mille võttis üle Oracle)
Petr Zaitsev – MySQL-i jõudluse ekspert, MySQL Inci kõrge jõudlusega rühma endine meeskonnajuht, ajaveebi MySQLPerformanceBlog.com host

Millised on siis alternatiivid?

Percona server on MySQL-i järg (autor Peter Zaitsev ja kaastöötajad), mille XtraDB salvestusmootor on vaikimisi lubatud. Erineb MySQL+InnoDB pistikprogrammist parema jõudluse/mastaapsuse poolest, eriti kaasaegsetes mitmetuumalistes serverites. Täiustatud on ka funktsionaalsust - rohkem statistikat, mis on kasulik optimeerimiseks jne. Seda kogutakse MySQL 5.0 ja 5.1 baasil versioonides. Täielikult ühilduv innodb tabelitega, st saate probleemideta lülituda innodb-lt xtradb-le ja vastupidi (kui te ei kasuta mõnda xtradb-spetsiifilist funktsiooni, näiteks väiksemat lehe suurust).

XtraDB salvestusruum põhineb InnoDB-plugina koodil ja ühildub sellega täielikult, kuid tänu Google'i ja Percona plaastrite integreerimisele on selle jõudlus märgatavalt parem. Eelkõige on XtraDB täiustanud mäluga töötamise mehhanismi, parandanud InnoDB I/O alamsüsteemi tööd, lisanud mitme lugemis- ja kirjutamisvoo toe, ribalaiuse haldamise toe, andmete eellaadimise (ettelugemise) rakendamist, adaptiivset kontrollpunkti. (adaptiivne kontrollpunkt) , laiendatud on suurte projektide skaleerimisvõimalusi, lukukorraldussüsteemi on kohandatud töötama suure arvu protsessoritega süsteemidel, lisatud on lisavõimalusi statistika kogumiseks ja analüüsimiseks

MariaDB- Monty montaaž, MySQL koodibaasiga sünkroniseeritud ja sellega täielikult ühilduv, st. võib toimida MySQL 5.1 läbipaistva asendusena, omades samal ajal mitmeid täiustatud funktsioone, sealhulgas jõudluse optimeerimist, ja kaasas täiendavate salvestusmootorite komplekti:

  • Uued andmesalved:
    • Aria (endine Maria) on MyISAM-il põhinev kõrge kättesaadavusega salvestusruum, mis on väga vastupidav ja säilitab andmete terviklikkuse pärast krahhi, samas ühildub täielikult MyISAMiga
    • OQGRAPH (hoidla keerukate graafikute korraldamiseks)
    • Sphinx - hoidla otsingumootorite ehitamiseks
    • PrimeBase XT - kirjeldus vene keeles
    • XtraDB mootorit kasutatakse InnoDB asendajana
    • FederatedX - võimaldab teil korraldada juurdepääsu kaugtabelitele kohalikuna
  • MyISAM mootori plaastrid - segmenteeritud vahemälu (suure koormuse korral suurendab oluliselt)
  • Tabeli eemaldamine – uut tüüpi päringu optimeerimine JOIN-i abil
  • Keermekogum – nüüd saab ühenduse kohta avada rohkem kui ühe lõime
  • Täiustatud

Mis saab nüüd, kui avatud lähtekoodiga tarkvara tõelistele toetajatele vihatud ja isegi sügavalt vastu olev Oracle on ostnud kauakannatanud Suni ja koos meie armastatud MySQL-iga? Legendaarse toote lõpp? Võib olla. Nüüd on aga palju funktsionaalsemad ja täielikult ühilduvamad arendused!

MySQL, see on lihtsalt "lihas". Vean kihla, et see on ainus DBMS, mis on teie hostimisel vaikimisi saadaval. Foorumi ja ajaveebi lemmikmootorid töötavad selle kallal. See on tegelikult iga veebitoote de facto standard. Ja oma projektides kasutate seda suure tõenäosusega. Veebis on miljoneid saite, mis pärivad MySQL-i kasutades andmeid ja salvestavad neid andmebaasi. Ja kõik oli lihtne ja selge, kuni Oracle Corporation ostis ootamatult Suni koos oma armastatud lihasega. Arvestades, et viimase põhitooteks on võimsaim samanimeline DBMS, oli kogukond MySQL-i edasise saatuse pärast väga mures. Ja mitte asjata. Oracle tegi loomulikult avalduse, et kõik on korras: projekt areneb edasi. Kuid paljudel inimestel on seda raske uskuda. Lõppude lõpuks ei andnud isegi paljude oodatud versiooni 5.5 kiirväljalase positiivseid tulemusi: vanad vead jäid samaks. Kas see on asi? Kuid paralleelselt algse MySQL-iga on pikka aega välja töötatud alternatiivseid projekte, mis ühilduvad algse DBMS-iga, kuid paljuski isegi ületavad seda. Ja me räägime sellest nüüd.

Andmebaasimootor – mis see on?

Kui mõisteid veidi lihtsustada, siis andmebaas on andmesalvestusmootori ümber ümbris. See hoolitseb päringute vastuvõtmise ja haldamise, vahemällu salvestamise ja muude teenindusfunktsioonide eest, pakkudes tööd mootori madala taseme API-ga. Viimane omakorda salvestab reaalselt andmeid (kettale või mällu), töötab operatsioonisüsteemiga ja tagab serveri nõudmisel vajalike näidiste väljastamise. Kui varem oli DBMS (pakett "server + mootor") monoliitne, siis nüüd kasutavad kõik süsteemid pistikprogrammidega struktuuri. Sellise organisatsiooni mootor on lihtsalt moodul ja server ise ei sõltu salvestussüsteemist. Klassikalise MySQL-i uusimad väljaanded kasutavad ka pistikprogrammi arhitektuuri. Seetõttu saab sisseehitatud InnoDB mootori (kuigi tavaliselt vananenud versiooni) hõlpsasti asendada mõne muu projekti mooduliga, mis on sageli parem. Lihaste alternatiivsetes arendustes, sealhulgas MariaDB või Drizzle, rakendatakse kõiki mootoreid algselt pistikprogrammidena. Püüan lühidalt käsitleda kaasaegseid andmesalvestusmootoreid MySQL-iga ühilduvas DBMS-is.

  • InnoDB- lihase põhimootor, mis on lõpuks vaikimisi tehtud alates versioonist 5.5. Toetab tehinguid, replikatsiooni, liinide lukustamist. Üsna põrkekindel.
  • MinuISAM- väga problemaatiline mootor, mis ei talu serveri krahhi. See ei toeta tehinguid, kuid sellel on täistekstiindeksid ja kiirus. See oli pikka aega kõigi MySQL-i versioonide standard ja seetõttu on see endiselt kõige populaarsem.
  • Aria- MyISAM-i asendamine tehingutoe ja täiustatud mälukäsitlusega. Mootor tagab andmete terviklikkuse ja ei jää samal ajal kiiruselt alla MyISAMile.
  • CVS- spetsiaalne mootor juhuks, kui peate salvestama ja töötlema suuri stringiandmete massiive, mis on eraldatud komadega.
  • Federated/FederatedX- see mootor on spetsialiseerunud andmete läbipaistvale levitamisele mitme serveri vahel (füüsiline) tabeli tasemel.
  • PBXT- mõeldud InnoDB asendamiseks uue mootoriga, mis rakendab tehingute täielikku tuge, mitme versiooni loomist, ummikseisude automaatset töötlemist. Mootor on optimeeritud suure hulga samaaegsete tehingute jaoks.
  • must auk- hooldusmootor, mis on tegelikult DBMS-i jaoks / dev / null ja tegelikult ei kirjuta kettale. Kasutatakse replikatsiooniks.
  • Arhiiv- mootor, mis töötab salvestamisel võimalikult kiiresti. Seda kasutatakse siis, kui on vaja majutada suuri andmemassiivid. Salvestus tõhususe tagamiseks kasutatakse tihendamist, mille tulemuseks on toomise aeglus. Mootor sobib hästi palkide ja muu hooldusinfo pikaajaliseks säilitamiseks.
  • XtraDB- laiendatud ja parandatud mõnes probleempiirkonnas Percona InnoDB.
  • ÜHENDADA- Federatediga sarnane mootor andmete jaotamiseks ühes tabelis mitmeks erinevaks.
  • MÄLU- mootor, mida kasutatakse andmete salvestamiseks mitte kettale, vaid mällu. Andmebaasi teave on saadaval ainult siis, kui server töötab, kuid see annab jõudluse tohutu tõuke.
  • BlitzDB- veel üks MyISAMi asendus, millel on hea jõudlus tänu sisseehitatud rida-realt vahemällu salvestamisele ja automaatsele krahhi taastamisele. Mootor ei toeta tehinguid.
  • NDB- mootor klastri jaoks, millel on aga palju probleeme ja masendavalt kehv jõudlus.
  • Pistrik- MySQL AB legendaarne mootor, mis on välja töötatud alates Suni aegadest, mil otsustati Oracle'i InnoDB välja vahetada.
  • SfinksSE- täisteksti mootor otsinguserveri Sphinx loojalt. Parim variant täisteksti otsimiseks ja indekseerimiseks vastavalt vene keele reeglitele. Käsitseb hõlpsalt terabaiti andmeid, pakkudes samal ajal kõiki kaasaegse andmebaasi funktsioone.

Oluline on ühilduvus

Niisiis võtsime ette raske ülesande leida MySQL-ile asendus. Aga kui sa muutud, siis milleks? Lihtsalt ärge jookske ringi karjudes "Ime lihast - võtke elevant, see tähendab PostgreSQL." Ei tööta! Nüüd kirjutatakse MySQL toega nii palju koodi, et ümberkirjutamine või asendaja otsimine läheb enda jaoks kallimaks. Ja seda otseses mõttes – mõistlike rahaliste kulude katmine on sageli võimatu. Noh, kui me räägime lihtsast foorumist või ajaveebist (tavaliselt toetavad nad mitut süsteemi korraga). Aga mis siis, kui see on midagi ise kirjutatud või spetsiaalselt MySQL-i jaoks kohandatud? Kõik siin on oi kui raske. Seega on meie ülesanne hoida lihaseid (ehk täielikku ühilduvust MySQL-iga), kuid pumbata neid, et mitte sõltuda peatreenerist ja tema steroididest.

MySQL-i enda arendajad ja ideoloogid pole kaugeltki lollid ja nägid ette olukorda, et pärast ülevõtmist läheb kõigil raskeks. Mõned neist otsustasid isegi ettevõttest lahkuda ja asutada oma projektid, võttes tollal veel vabad lihaskoodid. Tänu sellele on nüüd saadaval mitmeid huvitavaid tooteid, mis põhinevad algsel serverikoodil, kuid suurte täiustuste ja muudatustega kõiges, milleni arendajatel jõudis jõuda. Esiteks vabanesid entusiastid InnoDB mootori koormast, mille õigused on juba ammu samale Oracle'ile kuulunud. Selle asendamiseks võeti kasutusele mitu mootorit, mis said saadaval MariaDB-s.

MySQL-i arhitektuur – nüüd kunagise suurepärase DBMS-i seadme juhendina

MariaDB

Selle serveri ajalugu ulatub aastasse 2008, mil üks peamisi MySQL-i arendajaid, mõistes, et on tugevalt seotud tööandja seatud raamistikuga, lahkus ja asutas oma ettevõtte, mis tegeles MySQL-i sünnivigastuste parandamisega. Ma räägin MyISAM-i vaikemootorist, mida oli vaja muuta, ja kriitilistest vigadest, mille parandamine võttis vastuvõetamatult palju aega. Mis juhtus MariaDB loojatega? Imeline toode, mis on protokolli, failivormingu ja SQL keele tasemel identne MySQL originaalversiooniga. See tagab valutu ülemineku: ei kaota andmeid ega muutu olemasoleva koodi loogikat.

«Aga mis boonuseid ma üleminekust saan?» küsite. Vastutasuks saame suurema töökiiruse ja uued funktsioonid, mida võib-olla kunagi lihasesse ei tule. Näiteks serverisse endasse integreeritud otsingumootor Sphinx, mida ei pea eraldi installima, täiustatud varundus- ja andmehaldusvõimalused jne.

Pean ütlema, et paljud väga suured ettevõtted (sh sellised metsalised nagu Google ja Facebook) on MariaDB-d juba pikka aega kasutanud. Võrgustikus ringleb spetsiaalne plaastrite komplekt, mis pärast algse lihase lähtekoodidele paigaldamist lahendavad paljud probleemid. Kuid ärge oodake, et need ilmuvad ametlikus serveris - kui neid pole nii palju aastaid austatud, siis tõenäoliselt ei otsusta nad järgmises versioonis. MariaDB arendajad on endiselt vabad ettevõtte reeglitest ja turunduspiirangutest, nii et uued paigad ja veaparandused võetakse vastu piisavalt kiiresti.

Kui algne lihas toetub kahele vaalale - InnoDB ja MyISAM andmesalvestusmootoritele, siis MariaDB kasutab oma, toimides täiustatud aseainetena. Aria mootor asendas MyISAMi ja on tegelikult palju produktiivsem tänu rea-rea vahemällu salvestamisele ja optimeeritud andmepakendamise vormingule. Kui algne MyISAM oli kiire tehinguteta, mis tähendas võimalikku andmete kadumist, siis Aria on nii toimiv kui ka turvaline. Tänu täiustatud teabe salvestamise vormingutele taastub MariaDB tõrgetest palju kiiremini, ilma et oleks vaja pärast krahhi andmete kontrollimiseks eraldi protseduure. Oracle'i InnoDB mootor on asendatud XtraDB-ga, teise andmebaasiettevõtte arendusega Percona. Viimane on tuntud oma Google'i integreeritud paikadega MySQL-i ja täiustatud haldustööriistade poolest. Meeskonnal on ebatavaline ajalugu (lisa saab lugeda külgribalt) ja nüüd tegeletakse aktiivselt uue lihase loomisega. MySQL-iga tagasiühilduvuse huvides on MariaDB XtraDB mootoril isegi sama nimi, st InnoDB. Kuid peate mõistma, et tegelikult on säilinud ainult nimi, et mitte ajada tarkvara segamini ebatavaliste identifikaatoritega.

Noore ettevõtte Oracle esimene projekt oli skautide tellimusel raamatupidamissüsteemi väljatöötamine, mille eest küsisid teised ettevõtted konkursil 2 000 000 dollarit ja noor Larry Alison märkis üleolevalt vaid 300 000 dollarit. Ütlematagi selge, et projekt oli läbikukkumine, kuid ettevõte sai algkapitali ja alustas oma tõusu.

Lisamootorid

XtraDB-st tasub lähemalt rääkida: paljude ekspertide hinnangul on see andmebaasimootor number üks maailmas. Pealegi sisustab see Oracle InnoDB-d nagu väikest :). Peamine omadus on kauaoodatud tugi mitmetuumalistele ja mitme protsessoriga süsteemidele, millega MySQL ei taha (või ei saa?) kiidelda. Google'i paigad lahendasid selle probleemi juba ammu, kuid nagu alati, ei raatsinud nad neid algmootorisse lisada, nii et MySQL jääb jõudluses kõigis võrdlusalustes kõvasti maha. XtraDB arendajad on märkimisväärselt parandanud ketta I / O kasutamise strateegiat, mis varem piiras jõudlust pidurite tõttu, mille andmed loputasid vahemälust kettale. Vastavaid valikuid saab nüüd seadetest peenelt juhtida, mis võimaldab eriti edasijõudnud administraatoritel ise deemoni jõudlust häälestada ilma kallite andmebaasispetsialistide abita. Veelgi enam, üksikasjalik statistika mootori töö kohta on kohe saadaval, mis välistab vajaduse kalli kommertstarkvara järele andmebaasi jõudluse analüüsimiseks. Vaja on ainult ühte käsku SHOW ENGINE INNODB STATUS. Ja oluline punkt on taastumise kiirus pärast ebaõnnestumist: kui see juhtub, pole taastumine lihtsalt kiire, vaid peaaegu reaktiivne, sageli kuni kümme korda kiirem kui MySQL-is. Nagu ka palju muid pisiasju: puhvrid kirjete jaoks, kohanduvad kontrollpunktid ja suurenenud avatud tehingute arv. Kõik see võimaldab serveril end väga koormatud tingimustes hästi tunda.

Kui sellest teile ei piisa ja noogutate pead Firebirdi või PosgreSQL-i poole, vihjates, et tehingumudelil ja isegi MVCC-l on täielik tugi (Multiversion Concurrency Control on versioonipõhine konkurentsivõimeline andmemudel, mis võimaldab teil värskendada ja lugeda ilma sama andmerida blokeerimata) - lõdvestu. MariaDB-l on saadaval PBXT mootor, mis mõnes olukorras on isegi vingem kui kõik ülaltoodud. Tõsi, tasub kohe öelda, et see pole nii mitmekülgne ja peate oskama seda küpsetada! PBXT on peamiselt kohandatud suure hulga tehingute jaoks, mis kirjutavad või muudavad andmeid, toetab kiiret tagasipööramist ja suudab iseseisvalt lahendada keerulisi olukordi lukkude ja ummikseisudega. Näiteks kui soovite luua logisalvestuse, on teil tabelisse tohutult palju kirjutamistoiminguid, kuid lugemisi on suhteliselt vähe. Samas, kui keegi soovib siiski andmebaasist valikut teha, saab ta kõige värskemad andmed, segamata uute salvestamist. Tõeliste pervertide jaoks on mootor FederatedX, mis suudab andmetabeli mitmele füüsilisele serverile levitada, samuti OQGRAPH, mis on optimeeritud hierarhiliste struktuuride, graafikute ja puude salvestamiseks. Ideaalne lähenemine Facebooki klooni loomiseks ja kus on vaja töötada inimestevaheliste suhete sotsiaalse graafikuga, mis ei sobi hästi kokku tüüpilise andmebaasimudeliga.

Pilvandmetöötlus

Teise projekti - Drizzle - arendajad läksid veidi teist teed ja otsustasid täielikult ümber mõelda andmebaasi koha tüüpilise projekti infrastruktuuris. Meenutasime, mis on praegu moes: pilvandmetöötlus, Google Proto puhvrid, skaleeritavus, mitmetuumaline jne. Ja me mõtlesime: ka andmebaas peaks liikuma kaasa kaasaegsete tehnoloogiatega, mitte jälitama, olenemata sellest, mis sellel keerleb - ajaveebimootor või suur ettevõtte CRM-süsteem. Kelmikalt otsustati originaalse MySQL-i funktsionaalsust lihtsustada, visates välja versioonist väljalaskeni ulatuvad funktsioonid, mida tegelikult vähestel inimestel vaja läheb. Süsteem on kaotanud toetuse UNIX-i pesadele (kuigi see on vastuoluline, kuid pilvekeskkondadele keskendumise tõttu üsna vastuvõetav lahendus) ja Windowsi versioonile. Drizzle'is puuduvad teenindusbaasid ja palju muud tuttavat. Aga mis seal siis on?

Drizzle suudab tänu lihtsale mikrokerneli ja pistikprogrammi arhitektuurile palju ära teha

Ja seal on mikrokerneliga arhitektuur, mis sisaldab kõiki põhitoiminguid ja protokolli tuge, samuti pistikprogrammi, mis võimaldab süsteemi laiendada igas suunas ja sügavusele. Ühe peamise süsteemikomponendina kasutatakse Google'i binaarprotokolli - Protocol Buffer. Tema abiga kirjeldatakse nii tabeleid kui andmeid, seda kasutatakse ka replikatsiooniks. Arenduses on põhirõhk multithreadingi ja multitöötluse maksimaalsel toel, seega on mastaapsus arendajate peamine saavutus. Rakendatud tugi nii standardsele MySQL-protokollile kui ka selle enda versioonile – libdrizzle teegi ja draiverite kaudu enamiku populaarsete keelte jaoks, sealhulgas Perl, PHP, Python ja Lua. Soovi korral saate klienditeeki kasutada ka ilma serverita: sel juhul saate tõhusa asünkroonse juurdepääsu oma lemmik MySQL-ile. Kuna sama ettevõte töötas välja ka Gearmani süsteemi, on Drizzle'il sisseehitatud tugi hajutatud logimiseks, natiivseks vahemälu vahemällu salvestamiseks ja isegi täiustatud funktsioonidele, nagu replikatsioon sõnumsidesüsteemide kaudu, nagu RabbitMQ (sealhulgas uudne WebSocketi tehnoloogia). Drizzle'i peamise andmesalvestusmootorina kasutatakse InnoDB eriversiooni, mis on oluliselt ümber kujundatud ja täiendatud kolmanda osapoole paikade komplektiga. Saadaval on ka XtraDB ja PBXT mootorid. Kui Drizzle'i esimesed versioonid põhinesid MySQL 5.0-l, siis nüüd on algsest andmebaasist vähe alles. See on peaaegu täielikult ümber kirjutatud kood, milles endisi sugulasi arvestatakse minimaalselt. Hetkel on Drizzle'i arendus aktiivses olekus ning esimene stabiilne väljalase on plaanis kevadel.

NoSQL-i trend

Tõenäoliselt teate uudsetest inimestest. Tegelikult on see traditsioonilisest andmebaasiserverist oma tabelite ja SQL-päringutega loobumine ning kõige lihtsama võtmeväärtuste andmesalvestusskeemi (võtmeväärtus) poole pöördumine. Viimase rakendamiseks kasutatakse sageli täiustatud andmetüüpe, näiteks loendeid / räsi (Redis) või näiteks JSON-vormingut (MongoDB-s). Kuid mis takistab teil ületamast boa konstriktorit ja siili, kasutades ühelt poolt andmebaaside ja nende mootorite kogu võimsust ja aastatepikkust end tõestanud tehnoloogiat ning teiselt poolt lihtsustatud protokolli ja tülika kihi tagasilükkamist SQL päringu töötlemise näol? Miski ei takistanud samuraide karme pärijaid: Yoshinori Matsunobu Jaapani poisid tegid HandlerSocketi pistikprogrammi, mis muudab tavalise InnoDB mootori täiustatud NoSQL-i salvestusruumiks, ilma et see segaks tavalist SQL-i. Töökiirus on muljetavaldav: kuni 750 000 toimingut sekundis! Pole üllatav, et Percona võttis selle pistikprogrammi kohe omaks, lisades selle oma serverite juurde. Lahe! Kuid teisest küljest, kuidas muidu, kui mitte karguga, saab nimetada lahendust, mis jäljendab seda, mida tavaline andmebaas nagu Drizzle on sisemise arhitektuuri tõttu kohe karbist välja töötanud?

Järelduste tegemine

Kui olete mures MySQL-i arengu pärast, teile ei meeldi Oracle'i poliitika ja te kardate õigustatult, et homme olete sunnitud maksma funktsionaalsuse eest, mis eile tasuta oli, vaadake ringi. Kogukond reageeris MySQL-i ostmisele kui tehnoloogia allakäigu algusele, mis kunagi viis kaasaegse veebi tänu LAMP-i (Linux-Apache-MySQL-PHP) pinudele saavutamatutesse kõrgustesse. Peamised arendajad on alustanud oma kahvlite väljatöötamist, millest mõned on juba vanast MySQL-ist kõrgemal. Nende taga on palju ikoonilisi tegelasi ja avatud kogukond. Olles teinud kõik targalt, suutsid arendajad jätta rakenduste ja protokollidega 100% välise ühilduvuse. Seetõttu ei satu kõik, kes soovivad uut serverit installida, katkise künaga: andmed salvestatakse ja rakendusi ei pea ümber kirjutama. Paljud ei märka erinevust üldse, välja arvatud suurenenud kiirus ja töökindlus.

Juba praegu saate oma andmebaasiserveri välja vahetada, nii et olemasolevad rakendused isegi ei tunneks erinevust, saades samal ajal palju suurema kiiruse, töökindluse ja palju kiipe, mida algses lihases pole. MariaDB koos mootorite komplektiga on suurepärane koht alustamiseks. Noh, kui teil on silmas suur projekt, millel on palju servereid ja gigabaiti andmeid, vaadake Drizzle'i. Tarkvaratootena ja andmebaasiserverina on see väga paljutõotav arendus, mis sel aastal kindlasti tulistama hakkab. Kui soovite stabiilsust ja parimate andmebaasispetsialistide tuge, ärge kartke Oracle'ile selga pöörata ja Perconi poole pöörduda. Poisid annavad oma DBMS-i versiooni tasuta ära – parandavad vigu nii palju kui võimalik ja lisavad funktsioone, et suurendada originaalse MySQL-i jõudlust ilma ühilduvust rikkumata. Istud ikka vana lihase peal? Siis läheme teie juurde!