sql >> Database teknologi >  >> RDS >> Mysql

MySQL vs. MariaDB:hvad du behøver at vide

Både MySQL- og MariaDB-databaser har et ubestridt fællestræk. De er de mest sorterede databasestyringssystemer på verdensplan. For at forstå behovet for MySQL vs. MariaDB våbenhvile, skal vi lidt tilbage i tiden.

Før MariaDB kom ind i billedet, var det kun MySQL, der regerede i databasestyringssystemernes univers. Dens popularitet forblev urokkelig i lang tid. Dets præference som et pålideligt DBMS af mange er også på grund af dets tilhørende basisprogrammeringssprog, C++.

I 2008 skete købet af MySQL AB, det svenske firma, der huser MySQL, af Sun Microsystems. Endelig, i 2010, steg Oracle-virksomheden op og købte Sun Microsystems. Siden da er Oracle fortsat med at eje, administrere og vedligeholde MySQL.

Men under Oracles erhvervelse af dette databasestyringssystem følte dets ledende udviklere og ingeniører, at Oracle Database Server (en kommerciel database) skabte en interessekonflikt med MySQL. Denne begivenhed førte til oprettelsen af ​​MariaDB som en gaffel af MySQL-kode.

Populariteten af ​​disse to databasestyringssystemer er fortsat tilsyneladende høj med hensyn til brugerpræferencer. Men med hensyn til rang placerer udviklerfællesskabet MySQL på et lidt højere fad end MariaDB.

MySQL versus MariaDB

Denne artikel søger at fremhæve nogle nøglefunktioner, der sammenligner disse to databasestyringssystemer.

Hvad er MySQL?

Dette relationelle databasestyringssystem har det primære formål at organisere en brugers databaselagrede data. Dens brug er udsat for Apache-webserveren og PHP-programmeringssproget. Det er populært med distributioner af Windows og Linux operativsystemer. Med hensyn til at forespørge en database, gør MySQL brug af SQL-sprog.

Hvad er MariaDB?

Dette DBMS eksisterer som en fork af MySQL-kodebasen. Det er et relationelt databasestyringssystem. Både virksomheder og små opgaver nyder godt af dens databehandlingskapacitet. Du kan se på det som en forbedret MySQL-version med hensyn til forbedringer af sikkerhed, ydeevne og brugervenlighed oven i dens talrige og kraftfulde indbyggede funktioner.

MySQL versus MariaDB funktioner oversigt

Både MySQL og MariaDB tilbyder et unikt sæt funktioner til deres respektive brugerfællesskaber.

MySQL-funktioner

Følgende er dens vigtige funktioner:

  • Høj tilgængelighed
  • Fleksibilitet og skalerbarhed
  • høj ydeevne
  • Lagerstyrker inden for web og data
  • Støtte for robuste transaktioner

MariaDB-funktioner

Følgende er dens vigtige funktioner:

  • Understøttelse af bagudkompatibilitet
  • Percona Server, også en forgrening af MySQL-serveren.
  • Open source-software
  • Nye lagringsmotorer understøtter (FederatedX, XtraDB, Maria, PBXT)
  • Det er en direkte forgrening af MySQL-fællesskabsversionen.

MySQL versus MariaDB-ydelsessammenligning

MariaDB afspejler et bedre ydeevneomfang end MySQL på grund af flere optimeringer forbundet med det. Det er den primære vision bag udviklingen som et alternativt relationelt databasestyringssystem til MySQL.

Databasevisninger

En almindelig database er knyttet til almindelige tabeller. "Visninger" kan afbildes som virtuelle databasetabeller. På samme måde, som du forespørger på almindelige databasetabeller, er den samme måde, du forespørger på disse virtuelle databasetabeller. Derfor bestemmer den måde, du forespørger på visninger, i høj grad ydeevneoptimeringen af ​​det tilknyttede databasestyringssystem.

Forespørgsel til en visning i MySQL producerer et forespørgselsresultat, der samler alle de tabeller, der er knyttet til den visning. Denne forespørgsel producerer ekstra visningsresultater, som ikke er nødvendige. MariaDB-optimering tager sig af sådan unødvendig resultatbagage. En databaseforespørgsel vil kun jage efter tabeller forbundet med den og ikke bringe noget ekstra.

ColumnStore

Denne funktion er en kraftfuld præstationsimprovisation forbundet med MariaDB. Det gør skalering i MariaDB mulig på grund af dens distribuerede dataarkitektur-attribut. Som følge heraf skaleres en databaseklynge med forskellige servere lineært for at lette lagringen af ​​petabytes af data.

Bedre ydeevne i flash-lagring

MyRocks-lagringsmotoren i MariaDB er ansvarlig for dens RocksDB-databasetilføjelse. Det primære designmål med denne database er at lette bedre flash-lagringsydelse gennem levering af datakomprimering på højt niveau.

Segmenteret nøglecache

Denne præstationsfunktion er også ansvarlig for MariaDBs præstationsforbedring. En normal cache-operation involverer en konkurrence mellem forskellige tråde for at låse en cache-indgang. Den kollektive identitet af disse involverede låse er Mutexes. Disse låse skal blive gamle af disse mutexes for at bruge dem. Således vil flere tråde ofte konkurrere om en enkelt mutex.

Der kan kun være én vindertråd. De andre tråde, der ikke kan få fat i sort-after mutex'en, skal stå i kø til vindertråden bruger den først. Når mutex'en er frigivet, finder endnu en trådkonkurrence sted - denne konkurrencemæssige tilgang til at sikre en mutex til at udføre en planlagt operation resulterer i udførelsesforsinkelser. Databasens ydeevne bliver derfor også langsommere.

I tilfælde af Segmented Key Cache tager trådoperationer en anden tilgang. En hel side er ikke låst. I stedet er den eneste berørte del af siden en, der er knyttet til et bestemt målrettet segment. Dette koncept fører til flere tråde, der udfører deres opgaver gennem parallel udførelse af deres operationer. Som følge heraf omfavner databasen bedre ydeevne som et resultat af applikationsparallelisme.

Virtuelle kolonner

Denne interessante funktion er også under vingen af ​​MariaDB-databaseunderstøttelse. Funktionerne i virtuelle kolonner hjælper MariaDB med at udføre udførelse af beregninger på databaseniveau. Denne funktionalitet er nyttig, når flere applikationer har brug for adgang til en enkelt kolonne. Databasen håndterer de enkelte app-relaterede beregninger i stedet for at overlade opgaven til databasebrugeren. Desværre er MySQL ikke heldig nok til at omfavne denne funktion.

Parallel udførelse af forespørgsler

Fra MariaDB 10.0 er det nu muligt for flere forespørgsler at udføre samtidigt eller side om side. Den funktionelle tilgang til denne funktion har en interessant tilgang. En Master er vært for alle de forespørgsler, der er planlagt til udførelse og replikerer derefter nogle til slaven. Det skaber en mulighed for, at disse forespørgsler kan udføres på samme tid og dermed parallel eksekvering. MariaDB's omfavnelse af denne funktion til udførelse af parallelle forespørgsler giver den en uvurderlig fordel i forhold til MySQL.

Trådpooling

Denne funktion er også et andet interessant koncept inden for MariaDB-domænet. Før dens implementering knyttede en anmodet databaseforbindelse hver forbindelse til en tråd. Således var basisarkitekturen for en vellykket databaseforbindelse metoden "én tråd pr. forbindelse".

Trådpooling har ændret tingene. En ny forbindelse foretager et valg fra en pulje af åbne tråde, før der udføres databaseforespørgsler. Det forhindrer behovet for at åbne nye tråde, hver gang der er behov for en ny forbindelsesanmodning. Denne funktion fremmer hurtigere forespørgselsresultater. MySQL Enterprise Edition er vært for denne funktion, men det samme kan ikke siges om dens Community Edition.

Lagringsmotorer

Storagemotorerne under MySQL er ikke kun kraftfulde, men også ude af boksen. Det samme kan desværre ikke oplyses om MySQL. Eksempler på sådanne kraftfulde motorer omfatter Aria og XtraDB. MySQL kan udvides nok til at rumme nogle af disse lagringsmotorer, men vil kræve, at databasebrugeren har teknikaliteten til at implementere dem gennem manuelle installationer. Dette krav gør det uvenligt for nye databasebrugere.

Kompatibilitet

MariaDB gør sømløse fremskridt for at eksistere i applikationer understøttet af MySQL og overgå det. Som du måske har bemærket, er hver version af MySQL forbundet med en nemesis-version af MariaDB med et lignende versionsnummer som en måde at angive dens generelle kompatibilitet. Kort sagt siger MariaDB, "hvad MySQL kan gøre, kan jeg gøre bedre."

En anden fordel ved denne tilgang er, at skift fra MySQL til MariaDB bliver problemfrit, da databasebrugeren ikke behøver at pådrage sig de tekniske aspekter ved at ændre nogen applikationskodebase.

Open source versus proprietær database

Navnet Oracle gør MySQL til et kæmpe projekt sorteret efter af mange virksomheder og organisationer rundt om i verden. Denne berømmelse har dog sine fordele og ulemper. En stor ulempe er funktionsudgivelser i store eller store organisationer. Derudover har denne proces en tendens til at forbruge meget tid.

På den anden side forhindrer MariaDB's open source-karakter ikke i at omfavne eksterne bidrag, forbedringer og nye funktionsudgivelser. Som et resultat er det en enorm afgørende faktor for mange brugere, der er usikre på, om de skal gå med MySQL eller MariaDB.

Vigtige forskelle mellem MariaDB og MySQL

  • Lagringsmotorerne tæller i MariaDB er mere sammenlignet med MySQL. MariaDB har 12, hvilket er langt flere end dem under MySQL-dokumentation.
  • Med hensyn til levedygtige forbindelsespuljer har MariaDB mere end 200.000 understøttede forbindelser. Forbindelsespuljetallet, der understøttes af MySQL, er mindre.
  • For at forstå ydeevnemålingerne for disse to databaser, bliver vi nødt til at se på deres replikeringshastighed. MariaDB replikerer meget hurtigere end MySQL.
  •  MySQL Community Editions åbne tilgængelighed for RDBMS-fællesskabet gør den ikke fuldstændig open source på grund af tilstedeværelsen af ​​en eller anden proprietær kode, der definerer denne databaseapplikations Enterprise Edition. På den anden side er MariaDB fuldt open source.
  • MySQL's understøttelse af dynamisk kolonne- og datamaskering er en fordel i forhold til MariaDB.
  • Med hensyn til ydeevnehastighed kan vi generalisere, at MariaDB overliste MySQL med hensyn til hastighed.

Større forskelle mellem MariaDB og MySQL  

  • Med hensyn til understøttelse af serveroperativsystemer til disse to databasestyringssystemsoftware er OS X det eneste, der mangler på listen over MariaDB, men er til stede på MySQL.
  • MySQL mangler MariaDBs nye funktioner og udvidelser som KILL, WITH og JSON-sætninger.
  • For hver funktion, der formidles i MySQL's enterprise-udgave, finder MariaDB trøst i alternative open source-plugins.
  • MariaDB beskytter sit proprietære indhold gennem en lukket kildeprioritetskode. MySQL's Enterprise Edition bruger også noget proprietær kode til at beskytte indholdet.
  • MariaDB understøtter ikke datamaskering. Denne støtte er tydelig i MySQL.
  • MySQL understøtter dynamiske kolonner, mens MariaDB ikke gør det.
  • MariaDB udfører databaseovervågning gennem SQLyog, mens MySQL opnår samme mål gennem MySQL Workbench.
  • MariaDB håndterer routing gennem MariaDB MaxScale. MySQL gør det samme gennem MySQL Router.
  • MariaDB ColumnStore håndterer MariaDBs analyser. Denne funktion er fraværende i MySQL.
  • Den sekundære databasemodel er tilskrevet af Document Store og Graph DBMS i MariaDB. MySQL tilskriver kun Document Store.
  • MariaDB har stigende 2,8 K Github-stjerner, mens MySQL fører med 4 K Github-stjerner.
  • MariaDBs nyligt registrerede gaffel var 868, mens MySQL fører med 1,6 K gafler.

MySQL kontra MariaDB fordele og ulemper 

Hvis du har brug for yderligere afklaring angående valget mellem MySQL og MariaDB, så tag et kig på de følgende korte overskrifter.

Hvorfor bruge MySQL?

To faktorerede punkter fremhæver og opsummerer nøjagtigt nytten af ​​MySQL som et relationelt databasestyringssystem.

  • Dens understøttelse af flere lagringsmotorer er kontinuerlig, i modsætning til systemer med understøttelse af enkelt lagringsmotor som SQL-servere.
  • Ovennævnte understøttelse af flere lagringsmotorer gør MySQL til et yderst effektivt relationelt databasestyringssystem. En væsentlig bidragyder til dens fejlfri ydeevne er imidlertid RDBMS' designs enkelhed.

Hvorfor bruge MariaDB?

  • Den er operationel under BSD-, GPL- og LGPL-licenserne.
  • Dens understøttelse af SQL som standardforespørgselssprog er gyldig.
  • Den er pakket med talrige og højtydende lagermotorer. Disse lagringsmotorer er skalerbare og integreres godt med alternative relationelle databasestyringssystemer.
  • Kommer med fremskridt inden for Galera Cluster-teknologi.
  • For webudviklere synkroniserer MariaDB godt med PHP-programmeringssprogets popularitet.

Ulemper ved MySQL

  • Det er ikke en let opgave at skalere dette RDBMS.
  • Det kan ikke udvides fuldt ud til MySQL-fællesskabet på grund af restriktioner fra dets ejer, Oracle.
  •  Dets design og ydeevnemålinger passer ikke til at håndtere store data.
  • Det er sløret fra klienters applikationer og er derfor ikke synligt.
  • Databaseserveren kan let lide under en høj belastning på grund af triggere.

Ulemper ved MariaDB

  • Da MariaDB stadig er et nyt ansigt i databasefællesskabet, er mange brugere stadig skeptiske over for dens fulde implementering og brug.
  • Friheden ved at MariaDB er et væld af gratis databasemotorer indebærer, at brugersupport skal have en pris.

Sidste bemærkning  

Berømte virksomheder forbundet med MariaDB inkluderer Grooveshark, Accenture, Docplanner og Nrise. Hvad angår MySQL, har vi Dropbox, Uber Technologies, Netflix og Airbnb. Historien mellem disse to relationelle databasestyringssystemer skubber dem til at producere de bedste versioner af sig selv til deres brugerfællesskaber.

Der er ingen tvivl om, at MariaDB's præstationsdygtighed og episke træk gør det til en styrke, man kan regne med i RDBMS-fællesskabet. Nogle af dens praktiske funktioner er også levedygtige i MySQL. Endelig gør MariaDBs funktionsrige natur det til en fremragende primær backend-database.

Hvis du allerede bruger en oracle-licens, er du stadig sikker under MySQL. MariaDB anbefales dog til brugere og virksomheder, der begynder at udforske horisonten for relationelle databasestyringssystemer. Du vil have flere muligheder at udforske uden nogen prisskilte. Hvis du fuldt ud forstår MySQL, så vil skift til MariaDB let optrevle de differentierende faktorer, du muligvis skal overveje kraftigt. Held og lykke med at vælge dit ideelle relationelle databasestyringssystem.


  1. Hvordan erklærer man variabel og bruger den i det samme Oracle SQL-script?

  2. er der nogen måde at logge alle mislykkede sql-sætninger i oracle 10g

  3. Oracle svarende til Postgres' DISTINCT ON?

  4. Vælg antal rækker i en anden tabel i en Postgres SELECT-sætning