Kies subd tussen mysql, postgresql, mariadb en mssql? MariaDB vervanging MySQL vergelijk Mariadb ontdek versie

Gebruik je nog steeds MySQL?
En velen zijn al lang overgestapt op de MariaDB-database.
Kijk eens wat een prachtig MariaDB-zegellogo.

MySQL heeft ook een mooie dolfijn

Een beetje MariaDB-geschiedenis van Wikipedia.
MariaDB is een community fork van MySQL. De aanleiding voor de creatie was de noodzaak om de vrije status van het DBMS (onder de GPL-licentie) te waarborgen, in tegenstelling tot het ongedefinieerde beleid van MySQL-licentieverlening door Oracle.

De hoofdontwikkelaar van MariaDB is Michael Widenius, die ook de auteur is van de originele MySQL-versie en oprichter van Monty Program AB.

Het belangrijkste doel van het MariaDB-project is om een ​​volledig binaire compatibele versie van de originele MySQL DBMS te maken, die tegelijkertijd een aanzienlijk aantal codeverbeteringen zal hebben die de prestaties beïnvloeden.

MariaDB wordt ontwikkeld als een drop-in vervanging voor MySQL, waarbij het gedrag van MySQL volledig wordt nagebootst (en dat is het ook).

MariaDB is nu een veelbelovende trend, kijk naar de tabel waarin MySQL en MariaDB worden vergeleken (vooral de 10.x-tak)

Ik nam de vergelijking van de officiële MariaDB-website, waar je de punten in meer detail kunt zien. Hoewel zonder dit, is het duidelijk dat MariaDB 10.x duidelijk aan de leiding is.

Nu installeren veel Linux-distributies standaard MariaDB in plaats van MySQL, en het geheim is simpel: MariaDB ondersteunt dezelfde gegevensopslagformaten, tabellen en zelfs opstartopdrachten, enz. migratie naar MariaDB is eenvoudig en onzichtbaar. FreeBSD maakt het ook gemakkelijk om MariaDB te installeren.

Het Aria-tabeltype is bijvoorbeeld geoptimaliseerd voor invoegbewerkingen in de database (ze gaan veel sneller dan op MyISAM). Ook worden Aria-tabellen in MariaDB gebruikt voor interne processen, alle tijdelijke tabellen draaien op Aria, hierdoor worden de prestaties op complexe query's verhoogd.

Zinnen: MariaDB en MySQL vergelijken, wat is de beste database?, snelheid, MariaDB-installatie

Na anderhalf jaar ontwikkeling en vijf voorlopige releases, wordt de eerste stabiele release van de nieuwe MariaDB 10.2 DBMS-tak gevormd, waarbinnen een fork van MySQL wordt ontwikkeld, met behoud van achterwaartse compatibiliteit en met de integratie van extra storage-engines en geavanceerde Kenmerken. De ontwikkeling van MariaDB staat onder toezicht van de onafhankelijke MariaDB Foundation, volgens een volledig open en transparant ontwikkelingsproces dat onafhankelijk is van individuele leveranciers. MariaDB komt in de plaats van MySQL op veel Linux-distributies (RHEL 7, SUSE 12, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian 9) en is ingezet in grote projecten zoals Wikipedia, Google Cloud SQL en Nimbuzz .

Belangrijkste verbeteringen aan MariaDB 10.2:

  • Experimentele ondersteuning toegevoegd voor de MyRocks-opslagengine van Facebook op basis van de voor Flash geoptimaliseerde opslagengine van RocksDB. MyRocks gebruikt gegevenspagina's van zwevende grootte om vaste blokgrensuitlijning en alleen augment-Log Structured Merge Trees-opslagmodel (vuilnis verzameld) te vermijden. Tijdens het uitvoeren van query's werd het aantal opeenvolgende lees-/schrijfbewerkingen verschillende keren verminderd, wat leidde tot een toename van de prestaties in vergelijking met InnoDB met 20-30% op SDD en tot 6 keer op harde schijven onder een belasting met een groot aantal willekeurige schrijfbewerkingen. Bovendien kunt u met MyRocks de grootte van de database met 50% verkleinen in vergelijking met gecomprimeerde opslag InnoDB en 3,5 keer vergeleken met InnoDB zonder compressie. De nadelen van MyRocks zijn onder meer het gebrek aan ondersteuning voor externe sleutels en full-text indexen;
  • Ondersteuning toegevoegd voor vensterfuncties gespecificeerd door het OVER-sleutelwoord en waarmee berekeningen kunnen worden uitgevoerd op een reeks rijen die aan de huidige rij zijn gekoppeld. Naar analogie met aggregatiefuncties kunt u met vensterfuncties naar andere rijen verwijzen tijdens het verwerken van een queryresultaat, maar in tegenstelling tot aggregatiefuncties groeperen ze het resultaat niet in één rij;
  • Ondersteuning voor algemene tabeluitdrukkingen ("WITH"-uitdrukking) en recursieve algemene tabeluitdrukkingen ("WITH RECURSIVE"). De WITH-component kan worden gebruikt om subquery's te definiëren als lokale tijdelijke tabellen waarnaar meerdere keren in een query kan worden verwezen. "MET RECURSIVE" geeft u toegang tot uw eigen resultaat, u kunt bijvoorbeeld een boomtraversal organiseren tijdens het uitvoeren van een query;
  • "CONSTRAINT ... CHECK"-expressie toegevoegd in het blok "CREATE TABLE" om kolombeperkingen in te stellen;
  • De mogelijkheid geïmplementeerd om expressies op te geven in het DEFAULT-blok, bijvoorbeeld "b int DEFAULT (a + 1)". Er is ondersteuning geboden voor het specificeren van DEFAULT-waarden voor BLOB- en TEKST-velden;
  • De InnoDB-repository is bijgewerkt naar de release van MySQL 5.7.18 en is standaard ingeschakeld (voorheen werd een fork van InnoDB, XtraDB, standaard aangeboden, waarvan de betekenis verloren ging nadat InnoDB de meeste basisfuncties van XtraDB had geïmplementeerd ). InnoDB voegt ondersteuning toe voor ruimtelijke indexen;
  • "SHOW CREATE USER"-instructie toegevoegd om de volledige "CREATE USER"-instructie weer te geven die is gebruikt om de opgegeven gebruiker te maken;
  • Voor de uitdrukking "CREATE USER" geïmplementeerde opties voor het beperken van resourceverbruik en tls / ssl-instellingen. U kunt nu bijvoorbeeld het maximale aantal aanvragen of aansluitingen per uur beperken;
  • Er is een nieuwe "ALTER USER"-expressie geïntroduceerd om wijzigingen in een bestaand gebruikersaccount toe te staan;
  • Veel beperkingen op virtuele berekende kolommen verwijderd;
  • Ondersteuning toegevoegd voor de instructie "EXECUTE IMMEDIATE" om een ​​dynamische SQL-instructie uit te voeren die direct is gemaakt;
  • De instructie PREPARE voegt de mogelijkheid toe om de meeste uitdrukkingen te gebruiken;
  • Functies toegevoegd voor het werken met gegevens in JSON-formaat;
  • Een authenticatie-plug-in toegevoegd met behulp van het ed25519-algoritme voor het opslaan van wachtwoorden;
  • Een plug-in voor het decoderen van sleutels die worden gebruikt in Amazon Web Services (AWS) Key Management Service (KMS) is toegevoegd aan assemblies voor Windows, CentOS, RHEL en Fedora, voor hun latere gebruik om gegevens in de database te coderen;
  • Nu kunt u verschillende triggers aan één gebeurtenis binden;
  • Ondersteuning toegevoegd voor vertraagde replicatie, waarbij de status van de slave-server een bepaalde tijd achterloopt op de master-server;
  • Herwerkte de implementatie van de ANALYZE TABLE-expressie, die de tabel niet langer vergrendelt tijdens het verzamelen van statistieken;
  • De wsrep-bibliotheek die wordt gebruikt om Galera synchrone multi-master (actief-actief) replicatie te organiseren, is bijgewerkt naar release 25.3.20;
  • Meegeleverde verpakking voor Ubuntu 17.04;
  • Optie "–add-drop-trigger" toegevoegd aan mysqldump om de functionaliteit van MySQL 5.6 te reproduceren om een ​​expressie toe te voegen aan een SQL-dump om een ​​trigger te verwijderen voordat deze wordt gemaakt;
  • Mysqlbinlog-script toegevoegd om continue back-up van binaire log te organiseren;
  • Ondersteuning toegevoegd voor OpenSSL 1.1 en LibreSSL;
  • De variabelen innodb_deadlock_detect en innodb_stats_include_delete_marked toegevoegd om het systeem uit te schakelen voor het detecteren van deadlocks en het verwerken van records die zijn gemarkeerd als verwijderd bij het berekenen van statistieken;
  • De variabele read_binlog_speed_limit toegevoegd, die de snelheidslimiet instelt waarop de slave-server het binaire logboek van de master-server leest;
  • De oude GPL-clientbibliotheek verwijderd, vervangen door de nieuwe LGPL-bibliotheek.

Sinds oktober 2011 zijn we onze databaseservers aan het upgraden om MySQL te vervangen door een nieuwe versie: MariaDB.

Wat is MariaDB?

MariaDB is een alternatieve MySQL-database ontwikkeld door MySQL-auteur Michael "Monty" Widenius. Het belangrijkste doel van het MariaDB-project is om een ​​volledig binaire compatibele versie van de originele MySQL DBMS te maken, die tegelijkertijd een aanzienlijk aantal codeverbeteringen zal hebben die de prestaties beïnvloeden. MariaDB wordt ontwikkeld als een drop-in vervanging voor MySQL, waarbij het gedrag van MySQL volledig wordt nagebootst.

Waarom besloot Monty een kloon van zijn eigen creatie te maken? Feit is dat de rechten op MySQL toebehoren aan MySQL AB, dat eerst werd gekocht door Sun Microsystems, en vervolgens werd Sun verkocht aan Oracle Corporation. Als gevolg hiervan besloot Monty Oracle te verlaten en in zekere zin MySQL "op steroïden" te maken.

MariaDB: Wat is er nieuw?

MariaDB-versies 5.1, 5.2 en 5.3 (bèta) zijn gebaseerd op MySQL 5.1-code, maar met een aantal innovaties en verbeteringen.

Ten eerste zijn er een aantal nieuwe database-engines voor het opslaan van gegevens. Namelijk: Aria is een sneller en fouttoleranter alternatief voor MyISAM-tabellen. Aria-tabellen worden in MariaDB gebruikt voor interne behoeften, met name alle tijdelijke tabellen draaien op de Aria-engine, waardoor het in sommige gevallen mogelijk was om aanzienlijk hogere prestaties te bereiken bij complexe query's. Bovendien zijn InnoDB-tabellen vervangen door XtraDB (Percona's alternatief voor InnoDB), dat ook sneller is dan het origineel en beter bestand is tegen fouten.

Bovendien is ongeveer een derde van de oorspronkelijke MySQL-code herschreven in MariaDB, waardoor het mogelijk was om veel MySQL-knelpunten weg te werken, de prestaties op multiprocessorsystemen te verbeteren en natuurlijk de stabiliteit te vergroten.

MariaDB heeft ook een nieuwe manier om toegang te krijgen tot InnoDB-gegevens - HandlerSocket. HandlerSocket is in zekere zin een alternatief voor memcached. Via de HandlerSocket-interface kunt u met gegevens in InnoDB (XtraDB)-tabellen werken als met een "sleutelwaarde"-gegevensset, waarbij de sleutel een van de indexen is die op een van de InnoDB-tabellen zijn gemaakt. HandlerSocket is bijna net zo snel als memcached, en sommige bronnen melden zelfs dat ze betere prestaties hebben behaald dan memcached.

Vergelijkende tests

Om te begrijpen of het de moeite waard is en of de optimalisaties in MariaDB echt merkbaar zijn, hebben we een reeks vergelijkende tests uitgevoerd. De tests zijn uitgevoerd op een server met een HP ProLiant DL160 G6 configuratie, 2x E5520 Xeon QC CPU (16 cores), 20 Gb RAM, H/W RAID 10: 4x 300 Gb SAS 15k RPM. Het hulpprogramma mysqlslap werd als volgt als test gebruikt:

Mysqlslap --auto-generate-sql --concurrency = $ i --aantal-queries = $ (($ i * 500)) --iteraties = 3

dat wil zeggen, we veranderen de variabele $ i van 10 naar 200 in een lus, terwijl we de gelijktijdige werking van 10 tot 200 clients emuleren, die elk 500 queries naar de database doen. Vervolgens meten we de totale uitvoeringstijd van de tests. Er zijn ook tests uitgevoerd op MariaDB 5.1 versus MySQL 5.1

MijnISAM-tabellen

Hieronder staan ​​grafieken van prestatiemetingen van MySQL (boven) en MariaDB (onder) op MyISAM-tabellen. De X-as toont het aantal gelijktijdig werkende clients, de Y-as toont de tijd in seconden die aan de test is besteed.

Hoe de resultaten te interpreteren: hoe lager het punt op de grafiek, hoe sneller de test wordt uitgevoerd. Te oordelen naar de grafiek, te beginnen met 60 gelijktijdige clients, voerde MariaDB bijna 1,5 keer sneller tests uit dan MySQL.

InnoDB-tabellen

Hier is de situatie vergelijkbaar: MariaDB won, maar het voordeel hier is veel groter: de prestaties van InnoDB in MySQL zijn vele malen slechter dan de prestaties van XtraDB in MariaDB.

Er moet ook worden opgemerkt dat deze test de prestaties van werk met slechts één tabel heeft gemeten, dus de prestatiegroei op JOIN "ah, en vooral op query's die worden uitgevoerd door tijdelijke tabellen te maken, is niet zichtbaar in deze grafieken. In werkelijkheid, bij het overschakelen naar MariaDB, zelfs voor MyISAM-tabellen, kunnen de prestaties van de database meerdere keren toenemen.

Houd er rekening mee dat versie 5.1 van MariaDB, waarop de bovenstaande tests zijn uitgevoerd, de eerste versie is met de minimale set verbeteringen. In werkelijkheid gebruiken we MariaDB 5.2 op servers en in de loop van de tijd zijn we van plan over te stappen naar MariaDB 5.3, waar er nog meer verbeteringen en optimalisaties zijn.

Wat zal er nu gebeuren als Oracle, gehaat en zelfs diep gekant tegen de echte aanhangers van open source software, de lankmoedige Sun heeft gekocht, en tegelijkertijd ook onze geliefde MySQL? Het einde van een legendarisch product? Misschien. Maar nu zijn er veel meer functionele en volledig compatibele ontwerpen!

MySQL is slechts een "spier". Ik wed dat dit het enige DBMS is dat standaard beschikbaar is op uw hosting. Favoriete motoren voor forum en blog werken eraan. Dit is eigenlijk de de facto standaard voor elk webproduct. En in uw projecten gebruikt u het waarschijnlijk. Op het web voeren miljoenen sites zoekopdrachten uit en slaan gegevens op in databases met behulp van MySQL. En alles was eenvoudig en begrijpelijk totdat de Oracle Corporation, samen met zijn favoriete spier, onverwacht Sun en zijn geliefde spier kocht. Aangezien het belangrijkste product van de laatste de krachtigste database met dezelfde naam is, maakte de gemeenschap zich grote zorgen over het toekomstige lot van MySQL. En niet tevergeefs. Oracle heeft natuurlijk een verklaring afgegeven dat alles in orde is: het project zal zich blijven ontwikkelen. Maar velen vinden het moeilijk te geloven. Immers, zelfs de snelle release van versie 5.5, waar velen op hadden gewacht, leverde geen positief resultaat op: de oude bugs bleven zoals ze waren. Is dit het geval? Maar parallel aan de originele MySQL zijn er al lang alternatieve projecten in ontwikkeling die compatibel zijn met de originele DBMS, maar deze in veel opzichten zelfs overtreffen. En daar gaan we het nu over hebben.

Database-engine - wat is het?

Om de concepten een beetje te vereenvoudigen, is de database een wikkel rond de gegevensopslagengine. Ze houdt zich bezig met het ontvangen en beheren van verzoeken, caching en andere bedieningsfuncties, en levert werk met de low-level API van de engine. Deze laatste slaat op zijn beurt daadwerkelijk data op (op schijf of in het geheugen), werkt met het besturingssysteem en levert de nodige samples op aanvraag van de server. Als vroeger het DBMS (de "server + engine"-link) monolithisch was, gebruiken nu alle systemen een structuur met plug-ins. De motor in zo'n organisatie is slechts een module en de server zelf is niet afhankelijk van het gegevensopslagsysteem. De nieuwste edities van klassieke MySQL gebruiken ook een plug-in-architectuur. Daarom kan de ingebouwde InnoDB-engine (hoewel meestal een verouderde versie) eenvoudig worden vervangen door een module uit een ander project, wat vaak beter zal zijn. In alternatieven voor spierontwikkeling, zoals MariaDB of Drizzle, zijn alle engines standaard gebouwd als plug-ins. Ik zal proberen kort de moderne opslagengines in MySQL-compatibele DBMS te bespreken.

  • InnoDB- de hoofdmotor voor spieren, die sinds versie 5.5 eindelijk standaard is gemaakt. Ondersteunt transacties, replicatie, rij-voor-rij vergrendeling. Voldoende bestand tegen storingen.
  • MijnISAM- een zeer problematische engine die een servercrash niet goed verdraagt. Het ondersteunt geen transacties, maar het kan bogen op full-text indexen en snelheid van werken. Lange tijd was het de standaard voor alle versies van MySQL, en daarom is het nog steeds het populairst.
  • Aria- Vervanging voor MyISAM met ondersteuning voor transacties en verbeterde geheugenverwerking. De engine garandeert data-integriteit en houdt tegelijkertijd de snelheid van MyISAM bij.
  • CV's- een gespecialiseerde engine voor het geval u grote reeksen stringgegevens moet opslaan en verwerken, gescheiden door komma's.
  • Federated / FederatedX- deze engine is gespecialiseerd in transparante datadistributie over meerdere servers (fysiek) op tafelniveau.
  • PBXT- ontworpen om InnoDB te vervangen door een nieuwe engine, die volledige ondersteuning voor transacties, multi-versiebeheer en automatische verwerking van impasses implementeert. De engine is geoptimaliseerd voor een groot aantal gelijktijdige transacties.
  • zwart gat- een service-engine, die in feite / dev / null is voor de DBMS en in feite geen schrijfacties naar de schijf maakt. Gebruikt voor replicatie.
  • Archief- een engine die zo snel mogelijk werkt voor opnames. Het wordt gebruikt in gevallen waarin het nodig is om grote hoeveelheden gegevens te hosten. Compressie wordt gebruikt voor opslagefficiëntie, wat resulteert in traagheid tijdens het ophalen. De engine is zeer geschikt voor langdurige opslag van logs en andere service-informatie.
  • XtraDB- uitgebreid en opgelost in sommige probleemgebieden InnoDB van het bedrijf Percona.
  • SAMENVOEGEN- een engine vergelijkbaar met Federated voor het splitsen van gegevens in één tabel in verschillende.
  • GEHEUGEN- een engine die wordt gebruikt om gegevens niet op schijf op te slaan, maar in het geheugen. Informatie uit de database is alleen beschikbaar als de server draait, maar dit geeft een enorme prestatieverbetering.
  • BlitzDB- Een andere vervanger voor MyISAM met goede prestaties dankzij ingebouwde line-by-line caching en automatisch crashherstel. De engine ondersteunt geen transacties.
  • NDB- een motor voor een cluster, die echter een heleboel problemen en bedroevend slechte prestaties heeft.
  • Valk- de legendarische engine van MySQL AB, ontwikkeld sinds de dagen van Sun, toen werd besloten om Oracle's InnoDB te vervangen.
  • SphinxSE- full-text engine van de maker van de zoekmachine Sphinx. De beste optie voor full-text zoeken en indexeren volgens de regels van de Russische taal. Verwerkt gemakkelijk terabytes aan gegevens en biedt tegelijkertijd alle mogelijkheden van een moderne database.

Het belangrijkste is compatibiliteit

Dus namen we de ontmoedigende taak op ons om een ​​vervanging voor MySQL te vinden. Maar als je verandert, waarvoor dan? Ren gewoon niet terwijl je roept: "Je spieren zuigen - neem een ​​olifant, dat is PostgreSQL". Zal niet werken! Tegenwoordig is er zoveel code geschreven met MySQL-ondersteuning dat herschrijven of het zoeken naar een vervanger duurder is. Bovendien is het in letterlijke zin vaak simpelweg niet binnen de kaders van redelijke financiële kosten te houden. Het is goed als we het hebben over een eenvoudig forum of blog (meestal ondersteunen ze meerdere systemen tegelijk). Maar wat als dit iets zelf geschreven is of gericht is op de mogelijkheden van MySQL? Het is allemaal, oh, hoe moeilijk het is. Het is dus onze taak om de spieren te behouden (dat wil zeggen, volledige compatibiliteit met MySQL), maar ze zo te pompen dat ze niet afhankelijk zijn van de senior coach en zijn steroïden.

De ontwikkelaars en ideologen van MySQL zelf zijn verre van dwazen en voorzagen zelf de situatie dat het na de overname voor iedereen moeilijk zou zijn. Sommigen van hen besloten zelfs het bedrijf te verlaten en richtten hun eigen projecten op, waarbij ze de toen gratis spiercodes overnamen. Dankzij dit zijn er nu verschillende interessante producten op basis van de code van de originele server, maar met grote verbeteringen en veranderingen in alles wat de ontwikkelaars hebben weten te bereiken. Allereerst bevrijdden de enthousiastelingen zich van de last van de InnoDB-engine, waarvan de rechten al lang eigendom zijn van hetzelfde Oracle. Om het te vervangen, werden verschillende motoren uitgerold, die beschikbaar kwamen in MariaDB.

MySQL-architectuur - nu als een gids voor het ontwerp van het ooit geweldige DBMS

MariaDB

De geschiedenis van deze server gaat terug tot 2008, toen een van de belangrijkste ontwikkelaars van MySQL, zich realiseerde dat hij sterk gebonden was aan het kader dat door de werkgever was opgesteld, zijn baan opzegde en zijn eigen bedrijf oprichtte, dat zich bezighield met het herstellen van de geboorteblessures van MySQL. Ik heb het over de standaard MyISAM-engine die moest worden gewijzigd, en kritieke bugs die onaanvaardbaar veel tijd in beslag namen om te repareren. Wat hebben de makers van MariaDB gedaan? Een uitstekend product dat qua protocol, bestandsformaat en SQL-taal identiek is aan de originele MySQL-versie. Dit biedt de mogelijkheid voor een pijnloze overgang: zonder gegevens te verliezen of de logica van de bestaande code te veranderen.

"Maar welke bonussen krijg ik van de overgang?" - vraag je. In ruil daarvoor krijgen we een grote werksnelheid en nieuwe functies, die misschien helemaal nooit in de spier zullen zijn. Bijvoorbeeld de Sphinx-zoekmachine die in de server zelf is geïntegreerd, die niet apart hoeft te worden geïnstalleerd, geavanceerde back-up- en gegevensbeheermogelijkheden, enzovoort.

Het moet gezegd dat veel zeer grote bedrijven (waaronder beesten als Google en Facebook) al heel lang MariaDB gebruiken. Een speciale set patches circuleert door het netwerk, die, na te zijn toegepast op de originele spierbroncodes, veel problemen oplossen. Verwacht echter niet dat ze op de officiële server verschijnen - als ze al zoveel jaren niet zijn gehonoreerd, zullen ze waarschijnlijk niet worden opgelost in de volgende versie. MariaDB-ontwikkelaars zijn nog steeds vrij van bedrijfsregels en marketingbeperkingen, dus nieuwe patches en bugfixes worden snel genoeg ontvangen.

Terwijl de oorspronkelijke spier op twee pijlers rust - de opslagengines InnoDB en MyISAM, gebruikt MariaDB zijn eigen, die dienen als geavanceerde vervangingen. De Aria-engine verving MyISAM en is in feite veel efficiënter dankzij de regel-voor-regel caching en een geoptimaliseerd formaat voor het inpakken van gegevens. Waar de originele MyISAM snel was ten koste van transactiefouten, wat mogelijk gegevensverlies betekende, is Aria zowel efficiënt als veilig. Dankzij verbeterde formaten voor het opslaan van informatie, herstelt MariaDB aanzienlijk sneller van fouten, zonder dat er aparte procedures voor gegevensvalidatie nodig zijn na een crash. De InnoDB-engine van Oracle is vervangen door XtraDB, een extern database-ontwikkelingsbedrijf, Percona. De laatste staat bekend om zijn builds van MySQL met geïntegreerde patches van Google en geavanceerde beheertools. Het team heeft een ongebruikelijke geschiedenis (u kunt meer lezen in de zijbalk) en is nu actief bezig met het opbouwen van nieuwe spieren. Voor achterwaartse compatibiliteit met MySQL wordt de XtraDB-engine in MariaDB zelfs precies hetzelfde genoemd, namelijk InnoDB. Maar u moet begrijpen dat in feite alleen de naam bewaard is gebleven, om de software niet te verwarren met ongebruikelijke ID's.

Het eerste project van het jonge bedrijf Oracle was de ontwikkeling van een boekhoudsysteem in opdracht van scouts, waarvoor andere bedrijven in de competitie minder dan $ 2.000.000 vroegen, en de jonge Larry Alison gaf arrogant het bedrag van slechts $ 300.000 aan. het project was een mislukking, maar het bedrijf kreeg een startkapitaal en begon aan de klim.

Extra motoren

Het is de moeite waard om meer in detail over XtraDB te praten: volgens veel experts is het 's werelds nummer één database-engine. Bovendien levert het Oracle's InnoDB als klein :). Het belangrijkste kenmerk is de langverwachte ondersteuning voor multi-core en multiprocessor-systemen, waar MySQL niet op wil (of kan?) bogen. Patches van Google hebben dit probleem lang geleden opgelost, maar zoals altijd namen ze niet de moeite om ze in de originele engine op te nemen, dus qua prestaties blijft MySQL ver achter in alle benchmarks. De XtraDB-ontwikkelaars hebben hun schijf-I/O-strategie aanzienlijk verbeterd, wat vroeger een prestatiebeperking was vanwege cache-flush-remmen. De bijbehorende opties kunnen nu nauwkeurig worden beheerd vanuit de instellingen, waardoor vooral geavanceerde beheerders de prestaties van de daemon zelf kunnen afstemmen, zonder toevlucht te nemen tot dure databasespecialisten. Bovendien zijn er kant-en-klare gedetailleerde statistieken over de werking van de engine beschikbaar, waardoor er geen dure commerciële software nodig is voor het analyseren van databaseprestaties. Er is slechts één SHOW ENGINE INNODB STATUS-opdracht nodig. En een belangrijk punt is de snelheid van herstel na een storing: als het toch gebeurt, zal het herstel niet alleen snel zijn, maar bijna reactief, vaak tot tien keer sneller dan in MySQL. En ook veel andere kleine dingen: buffers voor records, adaptieve checkpoints en een toename van het aantal openstaande transacties. Dit alles zorgt ervoor dat de server zich goed voelt in een zeer drukke omgeving.

Als dit niet genoeg voor je is, en je knikt je hoofd in de richting van Firebird of PosgreSQL, wat aangeeft dat er ook volledige ondersteuning is voor het transactiemodel en zelfs MVCC (Multiversion Concurrency Control - een competitief datamodel op basis van versiebeheer, waarmee u kunt updaten en lezen zonder sloten dezelfde datalijn) - ontspan. Er is een PBXT-engine beschikbaar in MariaDB, die in sommige situaties zelfs cooler is dan al het bovenstaande. Toegegeven, hier is het meteen de moeite waard om te zeggen dat het niet zo veelzijdig is en dat je moet weten hoe je het moet koken! PBXT is voornamelijk ontworpen voor een groot aantal transacties die gegevens schrijven of wijzigen, ondersteunt snel terugdraaien en is in staat om zelf moeilijke situaties met vergrendelingen en impasses op te lossen. Als u bijvoorbeeld een logopslag wilt maken, heeft u een groot aantal schrijfbewerkingen naar de tabel, maar relatief weinig leesbewerkingen. Tegelijkertijd, als iemand toch een selectie uit de database wil maken, krijgt hij de meest recente gegevens, zonder zich te bemoeien met het vastleggen van nieuwe. En voor absoluut perverselingen is er de FederatedX-engine, die de gegevenstabel naar verschillende fysieke servers kan distribueren, evenals OQGRAPH, die is geoptimaliseerd voor het opslaan van hiërarchische structuren, grafieken en bomen. Een aanpak die ideaal is voor het maken van een kloon van Facebook en waarbij je moet werken met een sociale grafiek van relaties tussen mensen, wat niet goed past bij een typisch databasemodel.

Cloud computing

De ontwikkelaars van een ander project - Drizzle - namen een iets andere weg in en besloten de plaats van de database in de infrastructuur van een typisch project te heroverwegen. We herinnerden ons wat nu in de mode is: cloud computing, Google Proto Buffers, schaalbaarheid, multicore enzovoort. En we dachten: de database moet ook meebewegen met moderne technologieën, en niet achterblijven, ongeacht wat er op draait - een blog-engine of een groot zakelijk CRM-systeem. Onder het mom ervan werd besloten om de functionaliteit van de originele MySQL te vereenvoudigen door functies weg te gooien die zich van release tot release uitstrekken en die maar weinig mensen echt nodig hebben. Het systeem verloor de ondersteuning voor UNIX-sockets (hoewel dit een controversiële, maar zeer acceptabele oplossing is vanwege de focus op cloudomgevingen) en de versie voor Windows. Er zijn geen servicebases in Drizzle en vele andere bekende dingen. Maar wat is er dan?

Drizzle kan veel doen dankzij de eenvoudige microkernel en plug-in-architectuur

En er is een architectuur met een microkernel, waarin alle basishandelingen en protocolondersteuning zijn weggenomen, evenals een plug-insysteem waarmee je het systeem in elke richting en tot elke diepte kunt uitbreiden. Het binaire protocol van Google - Protocol Buffer wordt gebruikt als een van de belangrijkste systeemcomponenten. Het beschrijft zowel tabellen als gegevens en wordt ook gebruikt voor replicatie. De nadruk bij ontwikkeling ligt op maximale ondersteuning voor multithreading en multiprocessing, dus schaalbaarheid is de belangrijkste prestatie van ontwikkelaars. Ondersteuning voor zowel het standaard MySQL-protocol als zijn eigen versie is geïmplementeerd - via de libdrizzle-bibliotheek en stuurprogramma's voor de meeste populaire talen, waaronder Perl, PHP, Python en Lua. Als u wilt, kunt u de clientbibliotheek gebruiken zonder de server zelf: in dit geval krijgt u effectieve asynchrone toegang tot uw favoriete MySQL. Aangezien hetzelfde bedrijf ook het Gearman-systeem heeft ontwikkeld, heeft Drizzle ingebouwde ondersteuning voor inloggen in een gedistribueerde omgeving, native caching in memcache en zelfs geavanceerde functies zoals replicatie via berichtsystemen zoals RabbitMQ (inclusief de nieuwerwetse WebSocket-technologie). Als belangrijkste opslagengine gebruikt Drizzle een speciale versie van InnoDB, aanzienlijk opnieuw ontworpen en aangevuld met een reeks patches van derden. De XtraDB- en PBXT-engines zijn ook beschikbaar. Waren de eerste versies van Drizzle gebaseerd op MySQL 5.0, dan is er nu niet veel meer over van het originele DBMS. Dit is een bijna volledig herschreven code met minimale aandacht voor voormalige familieleden. Op dit moment is de ontwikkeling van Drizzle in een actieve staat en de eerste stabiele release is gepland voor het voorjaar.

Geen SQL-trend

U kent waarschijnlijk de nieuwerwetse. In wezen gaat dit weg van de traditionele databaseserver met zijn tabellen en SQL-query's en gaat het over naar het eenvoudigste opslagschema voor sleutelwaarden. Om dat laatste te implementeren worden vaak geavanceerde datatypes zoals lijsten/hashes (in Redis) of bijvoorbeeld JSON-formaat (in MongoDB) gebruikt. Maar wat verhindert het kruisen van een boa constrictor en een egel, enerzijds door gebruik te maken van alle kracht en bewezen technologie van databases en hun motoren, en anderzijds een vereenvoudigd protocol en afwijzing van een omslachtige laag in de vorm van het verwerken van een SQL-querytaal? Niets verhinderde de harde erfgenamen van de samoerai: de Japanse jongens van Yoshinori Matsunobu maakten de HandlerSocket-plug-in, die de standaard InnoDB-engine verandert in een geavanceerde NoSQL-opslag, zonder het werk van gewone SQL te verstoren. De werksnelheid is indrukwekkend: tot 750.000 handelingen per seconde! Het is niet verwonderlijk dat Percona deze plug-in onmiddellijk heeft overgenomen en in hun serverbuilds heeft opgenomen. Koel! Maar aan de andere kant, hoe kun je anders, zo niet een kruk, een oplossing noemen die imiteert wat een normale database als Drizzle direct uit de doos heeft geïmplementeerd vanwege zijn interne architectuur?

Conclusies trekken

Als je je zorgen maakt over de ontwikkeling van MySQL, het beleid van Oracle je niet bevalt en je vreest terecht dat je morgen moet betalen voor functionaliteit die gisteren gratis was, kijk dan eens rond. De community reageerde op de MySQL-aankoop als het begin van de achteruitgang van de technologie die ooit het moderne web naar onbereikbare hoogten duwde dankzij de LAMP-stack (Linux-Apache-MySQL-PHP). Sleutelontwikkelaars zijn begonnen met het ontwikkelen van hun eigen vorken, waarvan sommige al met kop en schouders boven de oude MySQL uitsteken. Er zijn veel iconische figuren en een open gemeenschap achter hen. Nadat ze alles slim hadden gedaan, slaagden de ontwikkelaars erin om 100% externe compatibiliteit met applicaties en protocollen te behouden. Zo komt iedereen die een nieuwe server wil installeren niet met een kapotte bak te zitten: de data blijven bewaard en de applicaties hoeven niet te worden herschreven. Velen zullen het verschil helemaal niet merken, behalve de verhoogde snelheid en betrouwbaarheid.

U kunt nu al uw databaseserver vervangen, zodat de bestaande applicaties het verschil niet eens voelen, terwijl u een veel snellere werking, betrouwbaarheid en veel chips krijgt die ontoegankelijk zijn in de oorspronkelijke spier. MariaDB met een reeks motoren is een geweldige plek om te beginnen. Nou, als je een ambitieus project plant met een groot aantal servers en gigabytes aan data, kijk dan eens naar Drizzle. Als softwareproduct en als databaseserver is het een veelbelovende ontwikkeling die dit jaar zeker een vlucht gaat nemen. Als u stabiliteit en ondersteuning wilt van de allerbeste databasespecialisten, wees dan niet bang om Oracle de rug toe te keren en naar Percon te gaan. De jongens geven hun versie van het DBMS gratis weg - bugs zoveel mogelijk oplossen en functies toevoegen om de prestaties van de originele MySQL te verbeteren zonder de compatibiliteit te verbreken. Zit je nog steeds op die oude spier? Dan gaan we naar jou!

De originele MySQL-versie is ontwikkeld door het Fins-Zweedse bedrijf MySQL AB, opgericht door Jwid Ahmark, Allan Larsson en Michael Monti. De eerste versie van MySQL verscheen in 1995. Oorspronkelijk was het bedoeld voor persoonlijk gebruik, maar na een paar jaar is het uitgegroeid tot een enterprise-grade database.

In januari 2008 verwierf Sun Microsystems MySQL AB voor $ 1 miljard. Kort daarna kocht Oracle Sun Microsystems met toestemming van de Europese Commissie, die aanvankelijk vreesde dat de beslissing het gratis MySQL-project zou schaden, omdat het een directe concurrent was van Oracle's databasebeheersysteem. Vanwege een gebrek aan vertrouwen in de MySQL-ontwikkelingsstrategie, werd een vork met de naam MariaDB gemaakt.

Naarmate de jaren verstreken, begon MariaDB standaard in veel Linux-distributies te worden gebruikt. Het wordt gebruikt om de meeste internetsites van stroom te voorzien. In dit artikel zullen we proberen MySQL en MariaDB te vergelijken en erachter te komen waarom de tweede beter is dan de eerste en wanneer je de originele MySQL nodig hebt.

In tegenstelling tot veel andere open source-projecten van Sun Microsystems, ontwikkelt Oracle nog steeds MySQL. Nadat veel ontwikkelaars ontslag hadden genomen, werden er nieuwe mensen aangenomen. Maar de ontwikkeling van nieuwe versies van MySQL is gesloten. De broncode is alleen beschikbaar voor het ontwikkelteam en wordt pas na voltooiing van het werk geüpload naar de openbare repository. Alle beslissingen worden intern besproken

MariaDB is volledig open ontwikkeld, alle oplossingen en nieuwe ideeën met betrekking tot ontwikkeling kunnen vrij worden besproken in de e-mailnieuwsbrief, evenals in het bugrapportagesysteem. Het is heel gemakkelijk om MariaDB te helpen ontwikkelen, patches van zowel gebruikers als ontwikkelaars worden geaccepteerd. Over het algemeen ontwikkelt MariaDB zich actiever.

MySQL heeft door de hype nog steeds een grote community, maar steeds meer projecten verhuizen naar MariaDB. Bekende enterprise-distributies zoals REHL 7 en SLES 12 maken al gebruik van MariaDB, wat betekent dat de laatste de strijd tussen MySQL en MariaDB zal winnen.

2. Frequentie van releases

Het is het beleid van Oracle om elke drie maanden beveiligingsupdates voor al zijn producten uit te brengen. Maar elke twee maanden komt er een nieuwe versie van MySQL uit. Dit leidt er vaak toe dat product- en beveiligingsupdates niet worden gesynchroniseerd.

Ontwikkelaars hebben geen tijd om alle foutmeldingen en kwetsbaarheden te sluiten, waardoor de database enkele maanden kwetsbaar kan blijven. Een ander probleem met MySQL is dat beveiligingsupdates erg vaag zijn. Als de beheerder het programma niet eenvoudig kan updaten naar een nieuwe versie, is het moeilijk om een ​​backport te maken.

MariaDB brengt programma-updates en beveiligingsupdates synchroon uit, zodat alle bugs op tijd worden verholpen. Alle vaste CVE's zijn gedocumenteerd en elke gebruiker kan zien wat er is veranderd in de nieuwe versie.

4. Kenmerken en functionaliteit

Over het algemeen groeit MariaDB sneller en heeft het meer functies. Deze functies hebben betrekking op optimalisatie, geheugenverbetering en nog veel meer. Meestal worden deze functies na verloop van tijd overgedragen naar MySQL. Dezelfde GIS-ondersteuning verscheen bijvoorbeeld eerder in MariaDB dan in MySQL. MariaDB heeft veel prestatieverbeteringen voor onder andere Inodb, MyISAM en de query-engine, ondersteunt GIS, het overlopen van tabellen, virtuele en dynamische kolommen, multi-source replicatie, rollen en meer.

Maar MariaDB heeft zijn nadelen, het ondersteunt sommige functies die MySQL heeft niet. MariaDB is namelijk incompatibel met de MySQL JSON-syntaxis, ngram, MeCab, MySQL X-plug-ins worden niet ondersteund, evenals tabelruimten waarmee u gegevens aan meerdere tabellen tegelijkertijd kunt toewijzen. Maar de ontwikkelaars werken actief aan het oplossen van de tekortkomingen.

Voor degenen die geïnteresseerd zijn in MySQL-clusters, zal het interessant zijn dat MariaDB het nieuwe Galera-replicatiesysteem gebruikt, de ontvangst ervan is anders dan de standaard master-salve. Galera is in ontwikkeling sinds 2007, maar is nooit opgenomen in de officiële MySQL-release.

5. Ondersteuning voor opslagengines

Het MariaDB-databasebeheersysteem ondersteunt veel meer storage-engines. De meeste van deze engines zijn beschikbaar als plug-ins voor MySQL, maar in MariaDB zijn ze opgenomen in de officiële release. Dit betekent dat de motoren goed zijn geïntegreerd en goed zullen werken. Hier is een lijst van de ondersteunde motoren:

  • Aria;
  • XtraDB is een verbeterde versie van InnoDB;
  • FederatedX is een verbeterde versie van Federated;
  • OQGRAAF;
  • SphinxSE;
  • IBMDB2I;
  • TokuDB;
  • Cassandra;
  • AANSLUITEN;
  • VOLGORDE;
  • Spin;
  • ColumnStore;
  • MijnSIAM.

Ter herinnering: de originele MySQL ondersteunt standaard slechts drie soorten tabellen: Aria, MySIAM en InnoDB. Dit is een belangrijk aspect bij het kiezen van MySQL of MariaDB.

6. Naam en versienummering

Deze verschillen tussen MariaDB en MySQL zijn niet zo belangrijk, maar misschien zijn ze interessant voor iemand. De naam MySQL werd gegeven ter ere van de eerste dochter van een van de ontwikkelaars - Michael Monty, haar naam is My. De ontwikkeling van MariaDB werd voortgezet door dezelfde persoon, en dit keer werd het programma vernoemd naar zijn jongste dochter, Maria.

Wat betreft versies, aanvankelijk tot 5.6, werden MariaDB-versies synchroon genummerd met de MySQL-versies waarop ze waren gebaseerd. Maar toen er genoeg veranderingen waren en de MariaDB-code als basis begon te worden genomen, werden de versienummers gewijzigd in 10. Vanaf dat moment wordt MariaDB-nummering alleen op deze manier uitgevoerd.

conclusies

In dit artikel hebben we een vergelijking gemaakt tussen MySQL en MariaDB. MariaDB is in de meeste parameters veel beter dan MySQL, dus het is niet voor niets dat de meeste Linux-distributies het nu standaard gebruiken in hun repositories. De originele versie is mogelijk alleen in zeer zeldzame gevallen nodig.