MySQL, PostgreSQL a SQLite: jaké jsou rozdíly mezi databázovými systémy?
MySQL, PostgreSQL a SQLite patří mezi nejoblíbenější relační databáze s bezplatnou licencí. Svým výkonem a rychlostí se vyrovnají i svým proprietárním konkurentům a jsou podporovány v celé řadě programovacích jazyků. V čem se od sebe liší?
Při výběru ideálního databázového systému je nutné zohlednit parametry projektu i finanční možnosti společnosti. Úplně prvním krokem je však uvědomit si, zda budeme potřebovat relační, nerelační nebo kombinovanou databázi a jestli chceme sáhnout po proprietárním či open source softwaru.
Implementace MySQL či MariaDB bez starostí
Ušetřete si práci s konfigurací infrastruktury pro databázový systém. Se službou DBaaS (Database as a Service) můžete spustit databázi do několika minut.
Zatímco výběr relační, nerelační či kombinované databáze je zcela závislý na charakteru zpracovávaných dat, volba mezi open source a komerčním systémem je otevřenější. Z hlediska funkcí i výkonu jsou nejoblíbenější nástroje z obou kategorií srovnatelné. Hlavní dělící linií tak bývá výhoda nižších nákladů na straně open source (či public domain) a zajištěná podpora společně se smluvními zárukami na straně proprietárního softwaru.
Ještě před několika lety byly proprietární databázové systémy výrazně populárnější, trend se však postupem času vyrovnává. V grafu níže je seznam nejpoužívanějších SQLSQLSQL je anglická zkratka pro Structured Query Language, což lze přeložit jako strukturovaný dotazovací jazykvíce i NoSQLNoSQLNoSQL je typ databáze, která není založená (pouze) na relačních tabulkách jako v případě SQLvíce databází. V první desítce se kromě proprietárních nástrojů od Oracle, IBM a Microsoftu umisťují také systémy s bezplatnou licencí jako MySQL (částečně open source), PostgreSQL, MongoDB, Elasticsearch nebo SQLite.
Popularita databázových systémů
Srovnání nejoblíbenějších databázových systémů (SQL i NoSQL) k lednu 2022 podle skóre popularity. Zdroj: Statista.com
Aby bylo srovnání databází relevantní, rozhodli jsme se zaměřit na relační databázové systémy s bezplatnou licencí. Z desítky nejoblíbenějších se tak jedná o MySQL, PostgreSQL a SQLite. Ty si postupně představíme a následně srovnáme jejich vlastnosti v přehledné tabulce.
MySQL
MySQL patří od svého založení v roce 1995 mezi stálice na poli databázových systémů. Důležitým mezníkem byl pak leden 2010, kdy vývoj přebrala firma Oracle. Těsně před akvizicí však jeden z původních zakladatelů, Michael Widenius, inicioval vznik alternativní větve MySQL, která dostala pojmenování MariaDBMariaDBMariaDB je relační databáze, která vznikla jako alternativní větev MySQLvíce. Ta od svého vzniku získává na oblíbenosti a momentálně je čtvrtou nejpoužívanější relační databází s bezplatnou licencí.
Hlavním důvodem odštěpení byly obavy o udržení open source charakteru projektu. Oracle totiž prosadil tzv. dvojí licenci MySQL – základní otevřenou a několik komerčních s pokročilejšími funkcemi.
Aby bylo možné (nejen) MySQL používat, je nutné ho nasadit na server či cloud s určitým operačním systémem. V tomto případě si lze vybrat mezi operačními systémy Linux, Windows, FreeBDS, Solaris nebo OS X. K implementaci se pak používá jazyk C nebo C++.
Při volbě vhodného databázového systému je klíčový seznam podporovaných programovacích jazyků, s nimiž lze se systémem pracovat. Je proto důležité si ujasnit, které jazyky budou v projektu používány.
U MySQL nechybí celá řada nejpoužívanějších jazyků jako je Javascript, Python, Java, C/C++ nebo Ruby. Na rozdíl od obou dalších srovnávaných softwarů podporuje navíc i Eiffel a Erlang, stále používané programovací jazyky s historií shodně sahající až k roku 1986.
Jednou z nevýhod MySQL může být dvojí licencování, kdy je v některých případech nutné doplnit funkce prostřednictvím placených pluginů či komerčních licencí. Na druhou stranu nebude u MySQL nikdy nouze o kvalitní podporu – ať už od Oracle, silné uživatelské komunity nebo prostřednictvím dalších firem. Také v MasterDC optimalizujeme nejen MySQL, ale i další typy databází.
PostgreSQL
Ze všech tří databázových systémů je PostgreSQL nejstarší – jeho kořeny sahají až ke konci osmdesátých let. Jelikož se jedná o standardní open source software, podílí se na jeho vývoji široká celosvětová komunita.
PostgreSQL lze nasadit nejen na stejné operační systémy jako MySQL, ale navíc také na HP-UX, NetBSD, OpenBSD či UNIX. Jazykem používaným pro implementaci tohoto databázového systému je C.
Ze všech tří srovnávaných systémů má PostgreSQL nejkratší výčet podporovaných jazyků. Doplnit podporované programovací jazyky je však (nejen) v PostgreSQL možné prostřednictvím rozšíření.
PostgreSQL vyniká nad MySQL a SQLite větší snahou o striktnější dodržení SQL standardů. Rovněž je možné ho rozšiřovat za běhu a jeho silnou stránkou je i široká komunita či podrobná dokumentace. Nevýhodou může být výkon paměti. PostgreSQL totiž pro každé připojení klienta alokuje určité množství paměti (kolem 10 MB). Při připojení velkého počtu klientů tak bývá při čtení náročných požadavků méně výkonný než MySQL a SQLite.
SQLite
Databázový systém SQLite existuje od srpna 2000 a je k dispozici pod licencí public domain. To znamená, že se tvůrci zcela vzdali svých autorských práv, takže pro hypotetický soudní spor o užití licence by neměl existovat žádný žalobce. Ne všechny státy však uznávají tuto licenci, což může znamenat právní komplikace.
Pro tyto případy je u SQLite možné získat zdarma obdobu licenčního oprávnění, které umožňuje jeho bezproblémové použití i v zemích, jejichž právní řád nic jako public domain (úplné vzdání se autorství) nezná.
Open source vs public domain
Udělení licence open source musí být schváleno OSI (Open Source Initiative), která výslovně zaručuje důležité svobody spojené s daným kódem – možnost úprav bez svolení, využití k libovolnému účelu, vytváření nového software s použitím původního kódu nebo sdílení upraveného či neupraveného open source software s ostatními. Schválení OSI ale znamená určitou byrokratickou zátěž, proto někteří vývojáři volí vzdání se autorství neboli „licenci” public domain.
Ačkoliv mohou obě licence fungovat v praxi velmi podobně, nemusí tomu tak být vždy. U public domain totiž záleží z jakého státu je autor, z jaké země pocházíte vy a roli hraje i odkud jsou vaši zákazníci či uživatelé. Zorientovat se v právních systémech všech států není nic snadného, doporučuje se proto obrátit na právníky, kteří posoudí rizika a podmínky použití takových software v rámci různých jurisdikcí.
Dalším specifikem SQLite je jeho server-less povaha (databázový systém se neinstaluje na server). Nefunguje totiž jako samostatná aplikace, ale spíš jako knihovna, kterou vývojáři vkládají do svých aplikací. Jedná se tak o vestavěný databázový systém. Ač je takový přístup v mnoha ohledech pohodlný, je třeba počítat s omezeními, například nelze psát skripty na straně serveru nebo snadno replikovat (pouze) databázi do dalších uzlů.
Díky své jednoduchosti má SQLite vazbu na největší počet jazyků ze všech tří srovnávaných systémů. Mimo jiné si rozumí i s programovacím jazykem R, jež je jedním z nejpoužívanějších v oblasti zpracování statistických dat.
Výhody, ale i nevýhody, SQLite plynou z velké části z jeho server-less charakteru. Samotný systém zabere velmi málo místa (do 1 MB) a odpadají s ním také starosti ohledně implementace. Problém může být naopak bezpečnost, jelikož zde není možné zakomponovat ochranné prvky na straně serveru. Oproti MySQL nebo PostgreSQL navíc nelze provádět více zápisů či úprav dat v jeden okamžik.
Srovnání MySQL, PostgreSQL, SQLite a MariaDB
Vybrat vhodný databázový systém rozhodně není práce na pár minut a informace obsažené v tomto článku slouží spíše k prvotnímu nasměrování. Pro lepší přehlednost jsme základní vlastnosti nejpoužívanějších bezplatných SQL databázových systémů shrnuli do tabulky.
MySQL | PostgreSQL | SQLite | MariaDB | |
Rok založení | 1995 | 1989 | 2000 | 2010 |
Licence | Open source/ proprietární | Open source | Public domain | Open source |
Implementace: OS serveru | Linux Windows FreeBDS Solaris OS X |
To samé jako MySQL plus: HP-UX NetBSD, OpenBSD UNIX |
server-less | Linux Windows FreeBSD Solaris |
Implementace: jazyk | C/C++ | C | C | C/C++ |
Podporované jazyky v základu | Základní balík* plus: Ada C# D Delphi Eiffel Erlang Haskell Objective-C OCaml Ruby Scheme |
Základní balík* plus: Delphi |
Základní balík* plus: Actionscript Basic C# D Delphi Forth Objective-C OCaml Ada Fortran Haskell Lisp Lua MatLab PL/SQL R Ruby Scala Scheme Smalltalk |
Základní balík* plus: Ada C# D Eiffel Erlang Go Haskell Objective-C OCaml Ruby Scheme |
Do procesu rozhodování je nutné zahrnout i mnoho dalších parametrů, jako jsou možnosti API, výkon a rychlost na dané infrastruktuře a v konkrétním prostředí, podporované datové typy, správa uživatelů nebo způsoby replikace.
Co se týče výkonu a rychlosti, obecně lze o nejpoužívanějších bezplatných i komerčních databázových systémech prohlásit, že dosahují srovnatelných hodnot. Platí však, že vlastnosti a konfigurace zvolené databáze musí být co nejvíce přizpůsobené účelu použití. S tím mohou poradit třeba odborníci na optimalizaci databáze.
Na výkon a rychlost zpracovávání SQL dotazů i zápis do databáze má velký vliv také samotná infrastruktura, na které je databázový systém nasazený. Vývojáři proto často sahají po řešeních „database as a service”, jež navíc umí zaručit vysokou dostupnost a bezpečnost dat.