I en tidligere artikel kom vi med historien om Apache-webserveren, dens rolle i stigningen på internettet og hvordan dens markedsandel spises op af konkurrenter som Nginx. Apache er en del af LAMP-stack – Linux + Apache + MySQL + PHP – og det er ikke en underdrivelse at sige, at mere end halvdelen af ​​alt internettet skylder tak til LAMP.

I dag skal vi se på nogle af forskellene mellem MariaDB og MySQL, to lignende dog forskellige databaseteknologier, der bruges til at drive millioner af websteder over hele kloden.

Hvad er MySQL

MySQL er en relationel database (RDBMS), der første gang så dagens lys i 1995, skabt af Michael Monty Widenius og David Axmark. Det blev skabt, da markedet blev domineret af Microsoft og Oracle’s proprietære (og dyre) løsninger.

Gammel MySQL-side fra 1998
Gammel MySQL-side fra 1998 (Billedekilde: Archive.org)

MySQL er i dag et arketypisk brand. Dens rolle var nøglen til at opbygge internettet, som vi kender det i dag. Denne artikel i Linux Journal kaster lys over dens tidlige dage.

Med sin tidlige vedtagelse af dobbelt licens – og brug af GNU GPL til sin gratis version – banede MySQL vejen for mange andre softwareleverandører, der kom senere.

Med Michael Widenius’ ord om dobbelt licens:

…siden MySQL er et infrastrukturprodukt, der let kan integreres i andre produkter, kunne vi sælge licenser til dem, der ønskede at integrere MySQL i deres produkt, men ikke ønskede at gøre deres produkt open source.

Server-distribuerede webapplikationer, som en del af LAMP-stakken, integrerer normalt ikke MySQL og distribuerer deres kode. Dette betød, at enhver frit kunne bruge softwaren til deres egne webprodukter.

Mindre end et årti efter offentliggørelsen dominerede MySQL markedet for open source-relationelle databaser.

Google Trends viser, at den globale internetsøgningsinteresse for MySQL toppede mellem 2004 – 2005:

Interesse for MySQL over tid
Interesse for MySQL over tid

Nogle af de bemærkelsesværdige virksomheder, der bruger MySQL, inkluderer:

  • I en rapport fra 2011 nævnes Facebook, så meget som “60 millioner forespørgsler pr. sekund og næsten 4 millioner række-ændringer i sekundet” og MySQL-håndtering “stort set alle brugerinteraktioner: kan lide, dele, statusopdateringer, alarmer, anmodninger.”
  • Netflixs faktureringsdel af sin platform
  • Youtube
  • com
  • Airbnb
  • og mange andre.

En anden faktor, der bidrog til stigningen og vedtagelsen af ​​MySQL, der er værd at nævne, er phpMyAdmin.

PhpMyAdmin er et webbaseret database administrationsværktøj, der går tilbage til 1998, som kom sin vej temmelig tidligt ind i administrationskonsoller for delt hosting-udbydere, herunder cPanel. Det er et værktøj skrevet i PHP, som har gjort det nemt at administrere MySQL på LAMP-servere. Import, eksport, komposition af komplekse forespørgsler, sletning og oprettelse af tabeller, udførelse af komplekse søgninger er blot nogle af de ting, phpMyAdmin muliggjorde uden brugere nogensinde at skulle bruge Linux-terminal.

WordPress og MySQL

En af faktorerne bag MySQLs popularitet er utvivlsomt WordPress, der i dag udgør omkring 60% af CMS-systemerne eller 34% af hele nettet.

WordPress blev oprettet i 2003 af Matt Mullenweg og Mike Little som en gaffel til et andet projekt. Den blev skrevet i PHP, den brugte MySQL som sin database, og da den dukkede op, blev dens vedtagelse fanget som en vil skovbrand.

WordPress blev hurtigt synonymt med konceptet med open source-software, og det gjorde dens underliggende server stack. DisplayWP har et dejligt diagram over den krævede minimum MySQL-version til hver WordPress-udgivelse.

En af de faktorer, der øgede vedtagelsen af ​​MySQL, var GPL-siden af ​​dens licens. Da det er kompatibelt med Linux, begyndte det som standard at blive inkluderet i Linux-distributioner. I dag er det inkluderet som standard med Ubuntu.

Kort oversigt over MySQL og den relationelle databasemodel

MySQL blev udtænkt som et RDBMS (Relational Database Management System). Relationsdatabasemodellen går tilbage til 1970’erne, som skitseret af “Codds tolv bud”. Kort sagt strukturerer denne model data i tabeller, der består af kolonner og rækker. Hver række identificeres unikt med en nøgle (Primær nøgle til brug af SQL-jargon).

Disse primære nøgler kan bruges som tapper af en slags, der bruges af andre tabeller til at definere en relation til den specifikke række. Så FOREIGN KEY-kolonnen i en relationel databasetabel refererer til en PRIMARY KEY-kolonne i en anden tabel, der definerer en relation mellem rækker i forskellige tabeller.

Som Essential SQL forklarer, “Den primary key består af en eller flere kolonner, hvis data indeholdt i bruges til unikt at identificere hver række i tabellen.” Data i primære nøglekolonner skal være unikke og kan ikke være tomme eller NULL. I en relationsdatabase “har tabellen kun en primær nøgle, og dens definition er obligatorisk.”

Samtidig er “foreign key et sæt med en eller flere kolonner i en tabel, der henviser til den primære nøgle i en anden tabel. Der er ikke nogen specielle kode, konfigurationer eller tabeldefinitioner, du har brug for for at officielt “udpege” en foreign key.”

Relationsdatabase model i MySQL
Relationsdatabase model i MySQL

På denne måde med relationelle databaser er det muligt at modellere dataene på sofistikerede måder og definere forbindelser mellem forskellige stykker data. I vores enkle eksempel ovenfor har vi to tabeller med rækker, der kan relateres til hinanden, f.eks. hver person ejer en bil.

Vi kan forespørge disse data i henhold til den logik, vi har brug for, vi kan filtrere resultatsættet efter forskellige sæt kriterier, og vi kan konstruere vores forespørgsel på en langt mere kompleks måde, end vi skitserede ovenfor.

Af denne grund bruger relationelle databaser – og databaser generelt – domænespecifikke sprog, blandt hvilke SQL, der står for Structured Query Language, er den udbredte, hvis ikke det eneste, der bruges af RDBMS.

Erhvervelse af Sun

I 2008 blev MySQL AB, firmaet bag MySQL, erhvervet af Sun Microsystems. Dette firma oprettede JAVA, Solaris Unix OS og var en betydelig bidragyder til forskellige computerteknologier. Som Business Wire rapporterede dengang:

“Sun Microsystems, Inc. (NASDAQ: JAVA) annoncerede i dag, at den har indgået en endelig aftale om at erhverve MySQL AB, et open source-ikon og udvikler af en af verdens hurtigst voksende open source-databaser til ca. 1 milliard USD til samlet vederlag”

Det vil snart bevise, at denne erhvervelse ikke var nok til at forhindre Suns undergang, men det maler et billede af, hvor stor MySQL var tilbage i disse dage.

Oracle

Oracle Corporation er en leverandør af den største database med lukkede kilder i dag, Oracle-database.

Det var en direkte konkurrent til MySQL og praktisk talt antitesen til den GPL, gratis open source-softwaremodel, som MySQL blev på det tidspunkt.

Da Oracle købte Sun, og MySQL sammen med det i 2010 (vandt mod IBM for det), så FOSS-verdenen det som noget så “uhyggeligt” som et Borg-angreb i Star Trek. En bruger husker begivenheden på Quora:

MySQL var en alvorlig trussel mod Oracle – på det tidspunkt udgjorde Oracle-databasen noget højere end 80% af alle indtægter (og i betragtning af skeletbesætningen, der var nødvendig for at opretholde den, endnu mere af overskuddet).

MySQL foretog alvorlige indgreb – store Fortune 50-virksomheder med site-licenser, der koster millioner, skiftede databaser (især skrivebeskyttede) fra Oracle til MySQL, fordi den administrative omkostning var så meget lavere. Jeg ved det, da jeg hjalp med at lave nogle af disse.

Mange i MySQL-samfundet ønskede at tilføje funktioner, der ville gøre det muligt selv at bruge en gratis version af Oracle forældet. MySQL gik bestemt ned ad den sti. Værktøjer modnes og Larry var bange.

Så Oracle købte MySQL for at sikre, at det ville have en kontrol over mærket, sprede samfundet og redde dets flagskib fra de uvaskede masser.

Dette var en logisk konklusion, fordi MySQL på det tidspunkt blev så populært, at det måske var blevet betragtet som en reel trussel mod Orakles kerneforretning. Som Geekflares Ankush Thakur udtrykte det, blev MySQL så populær, at udviklerne hurtigt snart glemte, at SQL og MySQL var to forskellige ting.

Inden overtagelsen endda skete, i slutningen af ​​2009, offentliggjorde Monty Widenius, der forlod MySQL-teamet i det år for at etablere sin egen gaffel- og databaseselskab, en dramatisk appel på sin blog (vi vil citere lige begyndelsen):

Hjælp med at gemme MySQL

Jeg, Michael “Monty” Widenius, skaberen af MySQL, beder dig presserende om at hjælpe med at redde MySQL fra Oracle’s koblinger. Uden din øjeblikkelige hjælp kan Oracle muligvis eje MySQL hvilken som helst dag nu. Ved at skrive til Europa-Kommissionen (EF) kan du støtte denne sag og hjælpe med at sikre den fremtidige udvikling af produktet MySQL som et Open Source-projekt.

Overtagelsen gik ikke desto mindre en måned senere til beklagelse for mange i open source-samfundet. Widenius havde allerede forladt Sun, dannet Monty Program AB og gaflet MySQL og lagde grundlaget for MariaDB. Alt sammen med mange MySQL-udviklere.

Indtil i dag sætter folk spørgsmålstegn ved legitimiteten af ​​Montys frygt. Især da det værste scenario overhovedet ikke skete: Oracle erhvervede ikke MySQL kun for at dræbe det.

Nogle hævder, at MySQL blev købt af Oracle som intet andet end et “sikkerhedsoffer” for overtagelsen af ​​Sun. Tilbage i 2009 havde de, der havde deres øjne på databasemarkedet, grunde til at bekymre sig.

Advarsler var der. Udvikleren af ​​MySQLs hovedlagermotor, InnoDB, et firma fra Finland, blev overtaget af Oracle i 2005. Senere blev de fuldt ud fusioneret i Oracle og afsluttet det oprindelige firma. I 2006 købte Oracle skaberne af Berkeley DB, udbyder af en anden, mindre vigtig BDB-lagermotor. De cirklede rundt.

Hvad er MariaDB

MariaDB havde sin første udgivelse i oktober 2009 med version 5.1.38 Beta, baseret på MySQL 5.1.38. Det var en gaffel, der var beregnet til at “sikre, at MySQL-kodebasen var fri for altid“.

På gafle-tidspunktet var den mest almindelige frygt for, at overtagelsen var en fjendtlig overtagelse med det formål at dræbe MySQL. Denne bekymring viste sig i det mindste delvist at være ubegrundet.

Igen etablerede Monty Program AB og Percona, et firma, der leverede premium MySQL-tjenester, i 2009 Open Database Alliance. Deres mål var “at forene alle MySQL-relaterede udvikling og tjenester og give en løsning på den fragmentering og usikkerhed, som samfundet, virksomhederne og tekniske eksperter er involveret i MySQL.”

Ideen var “at blive branche-hub for MySQL open source-databasen, inklusive MySQL og derivatkode, binære filer, træning, support og andre forbedringer til MySQL-samfundet og partnerøkosystemet”

Når man ser tilbage på det: det er muligt, at disse trin har forhindret et værre scenario for den berømte database.

MariaDB vs MySQL: Kompatibilitet

Hele pointen med MariaDB’s gaffel af MySQL (opkaldt efter Widenius ‘datter) var at sikre den fremtidige adgang til MySQL og dens videre udvikling. Dette er grunden til, at MariaDB blev udtænkt som en fuld binær erstatning – en “drop-in” -erstatning, så at sige – hvilket gør det muligt for alle brugere af MySQL at udveksle en for en anden på deres systemer.

MySQL er en klient-server applikation, og både dets serverprogram mysqld, dets klient mysql og hjælpeprogrammer, ligesom mysqldump, bevarer det samme navn med MariaDB.

Udskiftning af MySQL med MariaDB bliver en problemfri proces til de fleste applikationer og formål, især WordPress. Eksisterende software, fra populære CMS-værktøjer til apps som phpMyAdmin, arbejder bare ud af boksen, og faktiske data kan eksporteres / importeres fra en til en anden uden ændringer.

MariaDBs erklærede mål er at bevare kompatibilitet med MySQL. Ifølge MariaDBs website

  • data- og tabeldefinitionsfiler er kompatible.
  • alle klient-API’er og -protokoller er kompatible.
  • Filnavne, binære filer og stier er de samme på MySQL og MariaDB.
  • Porte og stikkontakter er de samme.
  • Alle MySQL-stik – PHP, Perl, Python, Java og andre – fungerer med MariaDB.
  • MySQL-klientpakke fungerer udskifteligt med MariaDB, ligesom med MySQL.

Månedlige fusioner gennemføres for at sikre kompatibilitet og for at få nye funktioner og fejlrettelser fra Oracle.

MariaDB vs MySQL: Årsagerne bag Forking

Der var flere grunde bag MariaDB-frigivelsen. Frygten for, at Oracle simpelthen ville dræbe sin voksende konkurrent for at beskytte det mere lukrative hovedprodukt, var helt sikkert en af ​​de største. Brugere ville have mistet et fantastisk og gratis produkt!

Andre årsager var relateret til at sikre, at MySQL ville have været fri og open source. I dag er MariaDB fuld GPL-licens med hele sit sæt funktioner, mens MySQL holder en dobbeltlicens-tilgang, med premiumfunktioner, der er licenseret under proprietær, betalt licens:

“MySQL Enterprise Edition inkluderer det mest omfattende sæt avancerede funktioner, styringsværktøjer og teknisk support til at opnå de højeste niveauer af MySQL-skalerbarhed, sikkerhed, pålidelighed og oppetid. Det reducerer risikoen, omkostningerne og kompleksiteten ved at udvikle, implementere og styre forretningskritiske MySQL-applikationer.”

Hvis vi sammenligner de to her, har MariaDB en klar fordel leveret af den GPL-licens, den er frigivet på. På grund af den proprietære kodebase kan Oracle ikke lovligt drage fordel af MariaDB-koden og flette den ind i deres database.

Widenius lovede: “Når Oracle vil frigive en closed source-udvidelse til MySQL, vil vi også frigive en open source-en.”

Samfundsspørgsmål

En anden grund bag gaffelen var at holde projektet ”åbent” i den forstand, at det er et samfundsdrevet projekt (som WordPress), hvis retning og udvikling er åben ligesom dets licens. Hvis vi ser på forpligtelsesloggen, er det let at konkludere, at det meste af MySQL-koden kommer fra interne udviklere. Oracle’s udviklere takker for eksempel lejlighedsvise og bemærkelsesværdige bidrag fra samfundet, men det er langt fra MariaDB’s åbenhed og langt fra hvad MySQL plejede at være.

For at sætte tingene i perspektiv har MariaDB-serverlager på dette tidspunkt mere end 186 000 forpligtelser, 370+ filialer og 200 bidragydere. MySQL har på den anden side mere end 148 000 forpligtelser, 9 grene og 72 bidragydere.

Diskussionen om MariaDB-udvikling, dens retning, afstemning om funktionerne osv. Foregår på en offentligt tilgængelig postliste:

“Maria-udviklere” -teamet

Udover denne er der også Maria Discuss mailingliste.

Maria Captain er et team af pålidelige udviklere, som udviklere kan indsende programrettelser til. Som teamets side på Launchpad siger:

”Kaptajnerne er tillid til udviklere med skriveadgang til de vigtigste MariaDB-træer. Hvis du vil have en patch ind i træet, skal du indsende den til maria-udviklerlisten, og en eller flere af kaptajnerne vil samarbejde med dig for at få patch gennemgået, godkendt og til sidst skubbet ind i det passende MariaDB-træ.”

Der har været nogle tilfælde, hvor MariaDB’s livlige udviklingsproces viste sin fordel i forhold til Oracle’s lukkede.

I slutningen af ​​2012 blev MariaDB-stiftelsen dannet for at føre tilsyn med udviklingen af ​​databasen.

Kort efter gaffelen, sprang mange originale MySQL-udviklere til en ny kørebane og sluttede sig til MariaDB-projektet. Linux-leverandører som Red Hat, CentOS, Arch Linux, Debian, OpenSuse, Slackware, Fedora skiftede til MariaDB som standard RDBMS, såvel som BSD-distributioner, FreeBSD og OpenBSD, mens Ubuntu inkluderer MariaDB. Hele listen findes her.

Virksomheder som Alibaba Cloud, Tencent, IBM, Microsoft, Booking.com blev platin-sponsorer.

For Kinsta, som den bedste applikation, database og administrerede WordPress-hosting, er det interessant at nævne, at der blandt MariaDB Foundation-bestyrelsen er folk fra Automattic, et tydeligt tegn på, at skabere af WordPress har taget MariaDB til sig.

I årene efter opdelingen havde MariaDB en livlig udvikling, så meget, at på grund af hele sættet af nye funktioner, der blev introduceret i 2012, sprang MariaDB fra 5. * versionnummer, kompatibelt med MySQL, til 10,0, hvor hun ønsker at afspejle springet i funktioner, det havde opnået.

På grund af præstationsårsager meddelte Wikimedia Foundation i 2013, at det skiftede Wikipedia til MariaDB. Det samme skete med Google, og dets brugers liste inkluderer nu Deutsche Bank, DBS Bank, Nasdaq, Verizon, Craigslist og andre.

Blandt MySQL-brugere har vi GitHub, US Navy, NASA, Tesla, Netflix, WeChat, Facebook, Zendesk, Twitter, Zappos, YouTube, Spotify.

Siden den første udgivelse var interessen for MySQL-efterfølgeren vokset støt, som Google Search Trends viser:

Interesse for MariaDB over tid
Interesse for MariaDB over tid

MariaDB vs MySQL: Nøgleforskelle

Mens MariaDB muligvis er startet som fuldt kompatibel med MySQL, kan vi forvente, at deres stier afviger mere i fremtiden.

MariaDB vs MySQL
MariaDB vs MySQL

I hans sidste blogindlæg lykønsker Widenius Oracle med deres arbejde med version 8.0 af MySQL og beskriver nogle forskelle og advarsler såsom:

Trådpulje: svarende til problemet Nginx-server løser sammenlignet med Apache, MySQL tildelte tråde til hver klientforbindelse, og dette, som kunne sammenlignes med opstart af et helt program i en pc, var simpelthen ineffektivt. MariaDB introducerede sin egen løsning på dette i version 5.5

Usynlige kolonner er MariaDBs eksklusive funktion fra 10.3.3. De returnerer ikke resultater i en SELECT * -sætning, og behøver heller ikke at tildeles værdi i en INSERT-sætning.

MariaDB introducerer mikrosekunder i sine tidsmæssige datatyper.

Opbevaringsmotorer: MariaDB bruger inkluderer XtraDB, InnoDB, MariaDB ColumnStore, Aria, Archive, Blackhole, Cassandra Storage Engine, Connect, CSV, FederatedX, Memory storage engine, Merge, Mroonga, MyISAM, MyRocks, QQGraph, Sequence Storage Engine, SphinxSE, Spider , TokuDB. ColumnsStore er interessant præstationsmæssigt, fordi det muliggør lineær skalering til at håndtere petabytes af data. Mere om det på deres blog.

MySQL-lagringsmotorer er InnoDB, MyISAM, hukommelse, CSV, arkiv, Blackhole, Merge, Federated, eksempel.

Databasevisninger er en funktion, hvor MariaDB introducerer betydelige optimeringer ved kun at forespørge de nødvendige tabeller.

Nogle funktioner, som MySQL introducerer, er JSON-oprindelig datatype, MySQL Shell i MySQL 8.0 version – som tillader javascript og python-scripting – og fungerer ikke med MariaDB, SHA-256-baseret godkendelses plugin, hvilket forbedrer sikkerheden over mysql_native_password.

Her kan du finde den komplette liste over forskelle mellem MariaDB vs MySQL og fordelene ved førstnævnte sammenlignet med sidstnævnte.

Resumé

MySQL er under virksomhedsparaplyen fra den største kommercielle databaseleverandør i verden. Med så mange heltidsingeniører, der arbejder døgnet rundt for at udvikle nye premium-funktioner, har vi allerede nogle punkter, hvor de afviger. På den anden side indhenter MariaDB normalt når det kommer til premium-tilføjelser, men det er ikke altid umiddelbart, og der er ingen garantier.

Når det er sagt, er der dog mange scenarier, hvor MariaDB tilbyder forbedret ydelse. Føj til disse mere smidige patches og opdateringer, en mere stabil open source-fremtid og en smule mere optimisme, og du kan se, hvorfor vi på Kinsta ikke kun er fans, men også bruger MariaDB som en del af vores performance-drevne server stack.

Tonino Jankov

Tonino er en iværksætter, Linux & OSS entusiast, udvikler og teknisk underviser. Han har over ti års erfaring med udvikling og har været i blockchain-området i 3+ år. Når han ikke koder, skriver han for SitePoint og Alibaba Cloud, overvåger de nyeste skønlitterære værker på Netflix og udforsker nye rejsedestinationer.