MariaDB vs Postgres vs SQL Server

MariaDB vs Postgres vs SQL Server
« kdy: 16. 04. 2021, 21:59:57 »
Kdo mate zkusenosti s temito databazemi, co preferujete? Ja jsem z postgres ponekud rozcarovan, delamv nem uz 2 roky a je tam hodne bugu v query planneru - musi se to porad nejak workaroundovat. S MariaDB jsem zatim moc nedelal. A SQL Serverem jsem delal jen na VS, ale tipuju, ze to bude asi bude fungovat velice dobre.

Je tady nekdo kdo ma zkusenosti s Postgres a jeste s nejakou jinou z techto 2 databazi?


PanVP

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #1 kdy: 16. 04. 2021, 22:05:42 »
A dál? Jako o co ti jde? Co čekáš?

MariaDB skvělá na ty eshopy, co občas dělám, řekněme - že LAMP byla a je klasika.
MS SQL je drahá, ale spolehlivá databáze.
PostgreSQL funguje.
Stejně to jsou všechno podobné mrchy.

Zkus si MongoDB a budeš koukat na drát, jaký s tím jdou suprový věci a jak rychle v tom některé projekty napíšeš.

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #2 kdy: 16. 04. 2021, 22:06:24 »
Nepovaužuji se za velkého odborníka, ale pokud jste s plannerem v PostgreSQL nespokojený, s MariaDB budete zoufalý. Optimalizovat query nad dva, tři joiny je pro MariaDB stále ještě neřešitelný problém. Nicméně, chtělo by to rozebrat spíš na konkrétní situaci, než takto obecně. Je možné, že nevolíte správnou strukturu dotazů a query planneru nedáváte dobrou možnost pro sestavení správného plánu.

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #3 kdy: 16. 04. 2021, 22:06:56 »
MariaDB nemá smysl s těmi druhými dvěma databázemi srovnávat. PostgreSQL a MS SQL jsou ve soustě věcí srovnatelné, v některých je lepší ta, v jiných druhá. Záleží na konkrétním použití, asi bych nestavěl jednu nad druhou.

Spíš napište, s čím konkrétně máte problémy u PostgreSQL. Občas se tu vyskytuje Pavel Stěhule, ten vám určitě k PostgreSQL řekne víc.

PanVP

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #4 kdy: 16. 04. 2021, 22:10:25 »
Nicméně, chtělo by to rozebrat spíš na konkrétní situaci

Tak nějak, pokud to nemá být vlákno "Zeď nářků".

Mezi námi, povedlo se mi sprasit dotazy i v MSSQL a přišel jsem na to až po roce provozu.  ::)
Ne snad, že bych čubčil data, ale nejprve Select trval desetinu sekundy, pak půl sekundy a po roce pět minut ;D


Re:MariaDB vs Postgres vs SQL Server
« Odpověď #5 kdy: 16. 04. 2021, 23:07:10 »
Kdo mate zkusenosti s temito databazemi, co preferujete? Ja jsem z postgres ponekud rozcarovan, delamv nem uz 2 roky a je tam hodne bugu v query planneru - musi se to porad nejak workaroundovat. S MariaDB jsem zatim moc nedelal. A SQL Serverem jsem delal jen na VS, ale tipuju, ze to bude asi bude fungovat velice dobre.

Je tady nekdo kdo ma zkusenosti s Postgres a jeste s nejakou jinou z techto 2 databazi?

Nejvíc zkušeností mám samozřejmě s Postgresem, ale znám i obě druhé databáze. U MySQL se dá mluvit o kvalitnějším planneru až od 8čky, zrovna tak implementaci joinů. U komplikovanějších dotazů na trochu větších datech může být Postgres 10x rychlejší (všimněte si, kolik nových věcí v MySQL 8 je napsáno podle Postgresu). Na druhou stranu MySQL má jednodušší planner a index optimized tables (tabulky jsou organizované podle primárního klíče). Tudíž triviální dotazy, které jdou přes primární klíč, jsou u MySQL rychlejší. MySQL má také jinak reference v indexech, díky čemuž je u MySQL výrazně rychlejší UPDATE, pokud je nad modifikovanou tabulkou hodně indexů (vyšší desítky).

Postgresu vyhovuje dobře normalizované databázové schéma - je to hodně klasická relační databáze, která je ale silná díky extenzím, a bohaté nabídce práce s daty. XML, JSON, HStore, PostGIS - tam si myslím, že je nabízí komfort srovnatelný s Oraclem, a v drtivé většině případů podobný výkon (v OLTP). Vůči MySQL má výrazně pohodlnější, bohatší SQL s větší shodou se standardem, ale na to aby to člověku k něčemu bylo, tak je potřeba umět SQL. Navíc umí věci, které běžně ostatní os db neumí - např. více sloupcové statistiky, speciální indexy - pro GIS, pro LIKE, Dávno před Oraclem, a MS Postgres uměl podmíněné indexy. Roky umí Postgres použít víc indexů nad jednou tabulkou, atd - na druhou stranu MySQL má náskok v replikacích - v multimasteru - má to dost omezení (ale to je v ok v duchu MySQL), ale na eshopy to stačí. Pro Postgres zatím žádné multimaster řešení není tak etablované. Zase naopak vestavěná primary-hot standby replikace je výrazně lepší než to, co nabízí MySQL (možná něco podobného má komerční Enterprise MySQL). Command line nástroje jsou výrazně lepší u Postgresu (např. exportované CSV je skutečné CSV, a ne něco, co se CSV někdy podobá). MySQL má naopak propracovaný MySQL workbench. Postgres je komunitní sw (vývoj není soustředěný v jedné firmě). U MySQL nebo MariaDB je vývoj naopak centralizovaný.

MS SQL je relativně starý produkt doplněný o pěkné technologie pro OLAP - paměťový column store, .. MSSQL má svoje SQL (vychází to z Sybase, a je to zajímavý mix SQL a procedurálního kódu). Je to poměrně old school - mimo ANSI/SQL - a je to hodně vzdálené Oracle (naopak Postgres je z relačních databází Oracle nejblíž - syntaxí, stylem). Postgres má lepší SQL, modernější a o  vesmír lepší uložené procedury. MSSQL naopak optimalizovat některé konstrukce - umí push aggregate, umí procpat predikáty skrze funkce. Microsoft SQL má dobré GUI a výborné datové pumpy. Postgres je UNIX databáze, a perfektně zapadá do Linuxu. Naopak MS SQL je odjakživa Win db (poslední 2 roky je i pro Linux, ale teď se Linuxové verzi nemluví). A Microsoft si vytunil SQL pro Win a Win pro SQL. Nicméně neslyšel jsem, že by byl Postgres (v OLTP) výrazně pomalejší než MS SQL. Záleží dotaz od dotazu.

U všech nových databází je optimalizace postavená na odhadech výsledku dotazu. Pokud se odhad povede (tak v 70%), tak MSSQL a Postgres a možná nový MySQL 8 budou dávat data plus mínus stejně rychle - čekáte buďto na IO nebo na RAM. Pokud se odhad nepovede - moc nebo málo, tak ten výkon může být dost tragický. Jelikož je to postavené na heuristikách, a různě nastavených konstantách, tak každá databáze má trochu jinak odhady, a tudíž dobře a špatně optimalizuje jiné dotazy. Jinak storage je ve všech případech MVCC. A jelikož typický programátor ví o db plus mínus prd, tak se přetlačuje s optimalizátorem, místo toho, aby se snažil umožnit db mít správné odhady - případně podepřít dotazy správnými indexy (což taky programátoři moc nedávají - bo neumí číst prováděcí plány (takže neví, kam dát index), a typicky znají jen jednoduchý a složený index, a tím končí.


PanVP

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #6 kdy: 16. 04. 2021, 23:12:18 »

Mluvíte o originální MySQL nebo o MáničkaSQL?

Mimochodem, po oddělení MySQL a MáničkaSQL - oba projekty se ubírají svojí cestou nebo se nějak přenáší featury z jedné do druhé?
« Poslední změna: 16. 04. 2021, 23:17:21 od PanVP »

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #7 kdy: 16. 04. 2021, 23:31:38 »
Mluvíte o originální MySQL nebo o MáničkaSQL?

Verze 8 (zmiňovaná) se týká jistě MySQL. Máňa má verze 5.5 a pak až 10.0+.

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #8 kdy: 16. 04. 2021, 23:38:34 »

Mluvíte o originální MySQL nebo o MáničkaSQL?

O MáničceSQL jsem neslyšel, ale poslední roky už se s nepotkávám s lidma, kteří píší weby, takže neznám hantýrku. To co jsem napsal ale +/- platí o MySQL, Mariidb i Perconě. Zapoměl jsem napsat, že u MySQL je možné už od 5ky mít jiný engine (což je v případě MySQL docela velký kus databáze včetně např. optimalizátoru). Vzniklo pár zajímavých engines (implementace column store). U Postgresu je tato možnost až od 12ky, kdy se ale spíš jedná jen o formát uložení dat (transakční mechanismus, optimalizátor zůstává), a teď Citus (Microsoft) releasnul první verzi sloupcového storage.

Přiznám se, že v Čechách neznám nikoho, kdo by MySQL dobře uměl, a rozuměl mu od optimalizace po konfiguraci. Jsou tu asi lidi, co umí nakonfigurovat MySQL, ale nemyslím si, že by rozuměli databázím obecně - pro ně tuning db, je tuning konfigurace (čímž se získá pár procent výkonu - ale je možné, že u MySQL to jinak nejde). Co se týče Postgresu, tak minimálně vím o 4 lidech v republice, kteří umí Postgres na top úrovni - máme i českého commitera Tomáše Vondru. Dost fíčur pro Postgres napsali češi, a je se kde zeptat. U MySQL narazíte na experty, kteří vám místo přidání indexu poradí přepis aplikace do Monga. U MySQL se problémy řeší spíš silou, u Postgresu víc inženýrsky. U MySQL je hodně prezentací o tom, jak napsat SQL dotaz - u Postgresu jak funguje optimalizátor (předpokládá se, že každý umí SQL), jak si napsat extenzi nebo jak si napsat vlastní index. MySQL a Postgres jsou dva naprosto odlišné technické světy a dvě odlišné kultury.

Z MySQL vznikly dva forky - jeden kvůli osobě zakladatele (MariaDB), a druhý kvůli rychlejší a kvalitnější opravě bugů (Percona). U Postgresu vzniklo několik forků a extenzí, které přináší technický posun, progres - EDB, Postgres Pro, Green Plum, RedShift, Timescale, Citus, .. Záleží samozřejmě, kdo se dívá a jak vidí do hloubky, ale jsou to absolutně různé světy.

PanVP

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #9 kdy: 16. 04. 2021, 23:57:23 »
MariaDB

Maria -> Marie -> Máňa / Mánička.

Jinak, řekněme IMHO, MáničkaDB se používá na věci jako "Aby bylo kam ta data dávat".
Jednak to je historicky a jednak se na ní obvykle žádné větší nároky nekladou.

Projekty se optimalizovaly pro Oracle DB, osobně jsem si kdysi dělal různé certifikace na Oracle 10g a rozhodně se to nebralo style MáničkaDB "Zapnu, narvu tam data a ono to něco bude dělat."

Rozhodně se optimalizuje pro MSSQL - od pokročilých view a trigry (což se na Máně nedělalo - a v případě trigrů to snad ani dřív nešlo). Až po OLAP / datové kostky. Používá se to řekněme poněkud jinak než MáňaDB. Ale MSSQL je hodně drahé. Teď už pro svůj provoz nepotřebuje WidloServer, ale stačí tomu nějaký ten enterprise linux, což nic nemění na tom, že to je prostě dost drahá sranda.

Z mého pohledu jsou buď projekty velké, kam se použije MSSQL a cena za licenci se tam ztratí/použije se Express s limitem 10 GB (15?) nebo právě projekty "směšné", na které stačí MáňaDB.

Mezi námi, žádný ze zákazníků už nehoní ani PgSQL ani Oracle. Všichni mají MáňaDB a ti větší MYSQL. Vlastně nic mezi tím.

Takové PS: Ad Máňa DB - pokud člověk zadá apt-get install mysql a ono mu to nainstaluje MáňaDB, je to stejné, jako kdyby na instalačním USB Debianu byl instalátor Windows. Další věc je, že třeba používání datových konektorů z MYSQL proti MáňaDB porušuje licenční podmínky atd....

Doplním, že sám sebe nepovažuji za odborníka na databáze.
« Poslední změna: 16. 04. 2021, 23:59:35 od PanVP »

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #10 kdy: 16. 04. 2021, 23:57:30 »

Mluvíte o originální MySQL nebo o MáničkaSQL?

Mimochodem, po oddělení MySQL a MáničkaSQL - oba projekty se ubírají svojí cestou nebo se nějak přenáší featury z jedné do druhé?

Až z té druhé věty jsem pochopil, že myslíte MariaDB. Někde jsem slyšel, že už MariaDB a MySQL začínají být nekompatibilní na aplikační úrovni. U MariaDB i u MySQL se objevily podobné fíčury ale v různém pořadí, ale bez toho, abych kontroloval zdrojáky ( a to se mi nechce) neumím říct, jestli tam dochází k přejímání patchů (kódu) nebo jen k inspiraci. Oficiálně se o tom moc nemluví. Na různých webech, kde před 4 rokama se MySQL a MariaDB prezentovaly společně, tak to už není. Na planet MySQL už nejsou příspěvky od lidí, kteří by dělali na Mariii. Občas se tam objeví příspěvek lidí od Percony. Podíval jsem se na planet MariaDB, a tam jsou jen věci o MariaDB a Perconě.

MySQL 8 by měla být hodně překopaná - má komplětně nový executor a optimalizátor. Po takovém zásahu už moc nejde přenášet patche, a je skorem jednodušší patch napsat znovu než portovat. Ty databáze se binárně rozjedou, a jediné co bude společné bude komunikační protokol.

PanVP

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #11 kdy: 17. 04. 2021, 00:12:01 »

Doplním, že velkou konkurencí pro MánaDB (resp. jakékoliv MySQL) dnes není MSSQL, ale spíš třeba MongoDB resp. NoSQL databáze obecně. Pokud jste to ještě nezkoušel, zkuste to.
Jestliže programujete v nějakém OOP, je to úžasně rychlé z hlediska vývoje.
Vyhnete se situacím, kdy přemýšlíte, jak tabulku poskládat a pokud nepoužíváte automatizované nástroje, tak jak jí změnit. Rychlost samozřejmě hovoří ve prospěch "pořádných" databází. Ale právě MáňaDB obsluhuje 90% všech eshopů, pro které může být Mongo lepší volba.

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #12 kdy: 17. 04. 2021, 00:12:56 »

Z mého pohledu jsou buď projekty velké, kam se použije MSSQL a cena za licenci se tam ztratí/použije se Express s limitem 10 GB (15?) nebo právě projekty "směšné", na které stačí MáňaDB.

Mezi námi, žádný ze zákazníků už nehoní ani PgSQL ani Oracle. Všichni mají MáňaDB a ti větší MYSQL. Vlastně nic mezi tím.

Asi přesnější by bylo, že žádný z vašich zákazníků nehoní Pg a Oracle.

Může být. Pokud používáte db, abyste měli kam něco uložit, tak je to jedno. A takových aplikací je hodně.

Pokud ale nad daty děláte nějakou analýzu, tak licenčně může být MSSQL drahá záležitost - to se trochu kroutí i banky a telco. A to je MSSQL vůči Oraclu za rozumné peníze. Což je prostor pro Postgres, bo na 40 CPU to trhá asfalt a nestojí vás to ani korunu.

A pak je dost firem a lidí, kteří nepoužívají db jen jako uložiště a pro ně je Postgres to pravé ořechové. A Postgres je, když se to umí, hodně rychlá a robustní databáze - běží na ní Fortuna, běží nad ní GoodData, Aukro, Job.cz a tedy až na GoodData, který má vyšší desítky serverů a možná 100TB strukturovaných dat, tak ostatní beží na pár serverech bez potřeby horizontálního škálování. Mraky podniků mají Postgres interně kvůli Jire a confluence. Jsou různé přístupy jak pracovat s databází - někomu vyhovuje MySQL a jiným zas Postgres - nebo jiné db.

PanVP

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #13 kdy: 17. 04. 2021, 00:24:29 »
běží na ní

Velmi zajímavé!
Já PgSQL neodsuzuji, jen že se s tím nepotkávám.
Jsem samozřejmě rád, že PgSQL žije a že je využívaná.
Nicméně "mainstream" jsou právě MSSQL, MáňaDB a hodně na vzestupuje myslím i to Mongo.

Další výhoda MáňaDB je v tom, že běží na zařízeních Synology.
Několikrát jsem (v malých firmách) viděl systémy opřené o databázi právě na nějakém NASu.

Abych Mongo jen nechválil, je to komerční produkt a taky se dokáže slušně prodražit, klidně 5-15k USD ročně, což cenou konkuruje některým konfiguracím MSSQL (podle licenčního modelu).

Doplnění: Vaše argumenty pro PgSQL beru, nezpochybňuji a jsem za ně rád!
« Poslední změna: 17. 04. 2021, 00:29:44 od PanVP »

Re:MariaDB vs Postgres vs SQL Server
« Odpověď #14 kdy: 17. 04. 2021, 00:27:38 »

Doplním, že velkou konkurencí pro MánaDB (resp. jakékoliv MySQL) dnes není MSSQL, ale spíš třeba MongoDB resp. NoSQL databáze obecně. Pokud jste to ještě nezkoušel, zkuste to.
Jestliže programujete v nějakém OOP, je to úžasně rychlé z hlediska vývoje.
Vyhnete se situacím, kdy přemýšlíte, jak tabulku poskládat a pokud nepoužíváte automatizované nástroje, tak jak jí změnit. Rychlost samozřejmě hovoří ve prospěch "pořádných" databází. Ale právě MáňaDB obsluhuje 90% všech eshopů, pro které může být Mongo lepší volba.

Mongo má suprovou vlastnost horizontálního škálování, ale pokud ho nasadíte v single módu, tak to žádný rychlík není a je to dost primitivní. Každý ten model má svoje - v SQL a relačních databázích si musím rozmyslet, jak rozdělit data, ale pak je mohu jednoduše a rychle spojovat (ve starších verzích MySQL je nešlo rychle spojovat). V Mongu musím nasypat všechno na jednu hromadu, protože pak už nemám JOIN - nebo na úrovni toho nejpomalejšího, co je v relačních db. To, že tam můžu nasypat cokoliv může vést k tomu, že po X letech můsím u čtených dat verifikovat formát při čtení.  Relační databáze líp drží strukturu.

Jinak ale dnešní relační db bezproblémově umí pracovat s JSONem, XMLkem, takže určitou svobodu v ukládání tam máte také. Přidání nebo zrušení sloupce jsou na moderních relačních db (alespoň na Postgresu) roky atomické operace (jenom se mění metadata, na vlastní data se nesahá). Relační databáze (alespoň klasické) nikdy nebudou umět tak dobře a jednoduše horizontálně škálovat jako NoSQL - to relační model spolu s ACID neumožňuje (kdežto aktualizace jednoho dokumentu ve shodě s CAP teorémem je na to jako dělaná). Když nepotřebuji horizontální škálování (a eshop pro střední evropu nic takového nepotřebuje), tak nemám důvod používat NoSQL (když umím SQL). Je dobré mít přehled - jsou věci na které se relační db nehodí nebo NoSQL jsou výrazně praktičtější - třeba správa logů, fulltext, IoT, ..