Vlákno názorů k článku PostgreSQL 14: nové funkce, nástroje a interní optimalizace od klokan - "Linux databázového světa" není nic kacířského, ale asi...

  • Článek je starý, nové názory již nelze přidávat.
  • 19. 5. 2021 1:34

    klokan

    "Linux databázového světa" není nic kacířského, ale asi je to otřelé klišé. Spíš mi připadá, že PostgreSQL je mezi databázemi tím, čím je Python mezi programovacími jazyky. Projekt dlouho existoval aniž by byl udělal díru do světa, a teprve po mnoha letech si najednou vývojáři všimli jeho kvalit, začali ho používat ve velkém a stal se tak referencí. To srovnání s Linuxem ale sedí v tom smyslu, že mnohým firmám se dneska opravdu víc vyplatí přispívat do PostgreSQL a tím ho zároveň přizpůsobovat vlastním potřebám, než interně vyvíjet vlastní databázi nebo být zcela závislí na Pračku, IBM nebo Microsoftu.

  • 19. 5. 2021 10:46

    oss

    Hlavny uspech Postgre je ze je zadarmo a sucasne to nie je MySQL. Nic ine by som za tym nehladal. Vykonovo ani "UX"-om to na komercne databazy stale nema.

    A s tym vendor lockom to tiez uz nie je nic hrozne ako pred 20-timi rokmi.

  • 19. 5. 2021 11:14

    Pavel Stěhule

    V OLTP si myslím, že Postgres je výkonnostně stejně jako komerční databáze. Ukazuje se to při migracích z Oracle, MS, nebo DB2. Většinou stačí upravit pár dotazů, poladit indexy a aplikace jede srovnatelně.

    V OLAPu tam je to samozřejmě jiné - Postgres má zatím jen minimální podporu pro OLAP. Na druhou stranu u Postgresu nejsou licence. A tudíž nejsou ani licence na CPU. Tudíž něco se dá dohnat hardwarem. Sám MS používá Postgres pro analýzu Win telemetrie, kterou má postavenou nad Citusem (extenze do Postgresu). Chytře jde na to také Timescale (pro time series data).

    Postgres není Oracle a MSSQL. Je to jenom databázový engine, kde je cílem, aby gro se dalo udělat jednoduše, a spolehlivě. Není to balík aplikací jako je Oracle nebo MSSQL. Postgres také není tak konfigurovatelný jako Oracle. U Postgresu se dost spoléhá na extenze (Postgres dokážu extenzemi přiohnout o 180°). Oracle má hromadu šikovných fíčur, ale také má dost nectností, a z dnešního pohledu ne dobře navržených vlastností (které nejde změnit z důvodu zachování zpětné kompatibility). Dneska už si nemyslím, že by Postgres byl pozadu za komerčními databázemi. Všechny ty databáze mají vlastní cestu. V něčem jsou porovnatelné a v něčem vlastně vůbec porovnávat nejdou, jelikož jdou vlastní cestou.

    Ten vendor lock už není tak hrozný právě díky Postgresu (a MySQL, a Mongu, a Redisu, ...). Dost firem se přesvědčilo, že z toho Oracle lze zmigrovat.

    19. 5. 2021, 11:16 editováno autorem komentáře

  • 19. 5. 2021 11:52

    Ivan Brezina

    Pokud jde o OTLP a soucasny trend kdy se dava do DB cim dal mene logiky, tak v tehle oblasti uz prakticky neni kam rust. Neni jak zvysit vykon, tak max. jsou jeste mozne nejake IN MEMORY extenze a caching vysledku SQL dotazu primo v RAM. Jinak je na tom Postgres hodne podobne jako komercni databaze.

    Oracle, MSSQL a dalsi komercni DB ted ziskavaji naskok diky nastrojum na administraci, active session history, capacity planning, post-mortem analysis, ...

    Dalsi rozdil je v tom, ze dnes Oracle vlastni Javu a ovlivnuje jeji vyvoj. JDBC standarty 4.1,4.2 prinesly nektere zajimave vlastnosti ktere Oracle umel vzdy ale v Jave je nebylo mozne pouzivat - jako napr. setQueryTimeout().

    19. 5. 2021, 11:52 editováno autorem komentáře

  • 19. 5. 2021 12:42

    Pavel Stěhule

    To je pravda. Postgres nejaké nástroje má pro zpětnou analýzu (ale je to jenom nejnutnější základ, bez jakýchkoliv interaktivních nástrojů). Co se týká capacity planningu, tam a) jednak není úplně jasné, jak problém dobře řešit v OLTP (omezení paměti vede k větší zátěži IO, CPU a delšímu držení zámků), b) předpokládá se řešení virtualizací. U Postgresu nemusím mít jeden db server, který obsluhuje desítky aplikací, u kterých musím řídit zdroje, ale mohu mít desítky virtuálních serverů s izolovanými pg servery dedikovanými jednotlivým aplikacím.

    Samozřejmě, že Oracle si může přiohnout JDBC podle potřeby Oracle. To není nic nového. Extenze JDBC už existují desítky let, např. pushování přístupových práv, atd. IT ale není jen o Javě. Ale proprietární extenzi JDBC má i Postgres - např. COPY API. Nastavení timeoutu pro dotaz, to asi není nic speciálního pro Oracle. Dnes to umí všechny databáze.

    19. 5. 2021, 12:43 editováno autorem komentáře

  • 19. 5. 2021 11:57

    Miroslav Šilhavý

    Vykonovo ani "UX"-om to na komercne databazy stale nema.

    Jde o to, co si představujete pod pojmem "databáze". Někdo si pod tím představuje výhradně balík programů na správu a tvoření dotazů a funkcí a zpracování dat. Někdo jen engine, ke kterému se připojí čímkoliv chce - programem, který vytváří, konzolí, GUI, ...

    PostgreSQL byl výjimečný od začátku (pamatuji ještě, když se jmenoval Postgres95). Ve skutečnosti jsem nikdy nepochopil, proč se ujalo MySQL, protože nepřinášelo žádnou výhodu, pouze u celé generace začínajících programátorů zkazilo představu o tom, jak má databáze fungovat a co od ní má programátor požadovat.

    Výkon je velmi solidní, nicméně mám pocit, že pro jeho dosažení musí člověk znát víc, než u komerčních databází. Ty šly daleko víc vstříc tomu, aby solidně obsloužily i SQL-prasátka. To se samozřejmě v praxi docela hodí, dá se pracovat aniž by byl v týmu jakýkoliv skutečný odborník (který jen ostatní "zdržuje svými nesmysly"). Ostatně, to souvisí i s tím, co píše Pavel, zaměření na OLAP.

  • 19. 5. 2021 13:19

    Ondřej Kolín
    Zlatý podporovatel

    LAMP byl dostupny na kazdem freehostingu, tak snadna je odpoved. Takze kdyz jsme delali prvni aplikace, pouzivali jsme tohle ;)

  • 19. 5. 2021 13:26

    dw

    No, mysql sa ujalo hlavne preto ze je dalko menej striktne ako postgres. Mysql 8 uz ma sice defaultne zapnuty striktny mod, ktory ale vecsina adminov hned po instalacii vypne, pretoze vecsina aplikacii by nefungovala.

    Proste postgres kladie na vyvojara daleko vacsie naroky, s mysql to zvladne kdejaky patlal.

  • 19. 5. 2021 13:47

    ded.kenedy

    Ve skutečnosti jsem nikdy nepochopil, proč se ujalo MySQL

    Ten důvod byl prostý, jmenoval se MyISAM. Pro některé typy zátěže [čti webové aplikace] byl opravdu rychlý a to do té míry, že se vyplatilo obětovat transakce, referenční integritu i hromadu vlastností SQL a to vše dát na oltář výkonu, kterého na konci devadesátých let nebylo tolik jako dnes.

  • 19. 5. 2021 14:01

    Miroslav Šilhavý

    MyISAM. Pro některé typy zátěže [čti webové aplikace] byl opravdu rychlý a to do té míry, že se vyplatilo obětovat transakce, referenční integritu i hromadu vlastností SQL a to vše dát na oltář výkonu

    Přiznám se, že jsem nepotkal za ta léta situace, kdy by se to vyplatilo. Obvykle to bylo spíš kvůli neznalosti programátora, který neuměl navrhnout aplikaci, aby výkon získala právě z transakcí a integrity, aby neiterovali data v aplikaci a load přenesli na databázi, která má spoustu možností a schopností, jak úlohu vyřešit inteligentně. Obvykle se pak veškerý zdánlivě získaný výkon přeplatil zátěží aplikace (PHP není žádná výhra na práci s daty).

    Děsně moc to zkazilo pojem "SQL" mezi začínajícími programátory. Když mi někdo řekne, že ovládá SQL, moje druhá otázka je, jestli MySQL a teprve třetí (pro jistotu), jestli ví o nových vlastnostech nových verzí mysql. Na tu třetí jsem ještě nepotkal nikoho, kdo by se orientoval.

  • 19. 5. 2021 14:23

    ded.kenedy

    Přiznám se, že jsem nepotkal za ta léta situace, kdy by se to vyplatilo.

    Tak si vzpomeň, jak vypadal tvůj osobní počítač v roce 1999 a uvědom si, že servery na tom nebyly o moc líp.

    výkon získala právě z transakcí a integrity

    Eh? Transakce i referenční integrita jsou vždy režie navíc. Z toho opravdu výkon nezískáš, ani když se rozkrájíš na nudličky.

    aby výkon získala právě z transakcí a integrity, aby neiterovali data v aplikaci a load přenesli na databázi, která má spoustu možností a schopností, jak úlohu vyřešit inteligentně

    V té době (a často i dnes) webové aplikace používaly databázi jako hloupé uložiště, kam se data občas zapsala a vytáhla primitivním selectem. Tam moc prostoru pro inteligenci není, a právě proto trojková MySQL na svou dobu byla vynikající volba, protože sice toho moc neuměla, ale na tehdejší poměry to uměla velice rychle.

  • 19. 5. 2021 14:39

    Pavel Stěhule

    refernční integrita něco stojí. Ale transakce mohou databázi zrychlit, pokud se řeší zápis. MyISAM bylo tak rychlé protože zápis končil ve filesystémové cache.

  • 19. 5. 2021 14:44

    Miroslav Šilhavý

    V té době (a často i dnes) webové aplikace používaly databázi jako hloupé uložiště, kam se data občas zapsala a vytáhla primitivním selectem. Tam moc prostoru pro inteligenci není, a právě proto trojková MySQL na svou dobu byla vynikající volba, protože sice toho moc neuměla, ale na tehdejší poměry to uměla velice rychle.

    Takových situací v reálném životě ani tehdy moc nebylo. Obvykle člověk potřeboval data setřídit, mít referenci na nadřazenou entitu, ... To vše se s MySQL řešilo na aplikační úrovni a daleko dráž. Ale souhlasím, že databáze o jedné placaté tabulce vyšla líp s MySQL.

  • 19. 5. 2021 15:45

    ded.kenedy

    Takových situací v reálném životě ani tehdy moc nebylo

    Takovych situaci bylo nescetne mnoho. Delani ruznych primitivnich webu/CMS a e-shopu me tehdy docela slusne zivilo a bylo to porad na jedno brdo.

    Na uvodni strance sis selectem vytahl prvnich deset clanku "select * from articles order by ts desc limit 10". A pak pomoci odkazu si mohl precist clanky. Z URL si clovek vytahl id a pak jel jeden jednoduchy dotaz za druhym, nejdriv "select * from articles where id = $id", ktery vytahl informace o clanku (v pripade e-shopu o produktu) a pak si clovek vytahl obrazky "select * from pics where article_id = $id", pripadne diskuze "select * from messages where article_id = $id". Trochu vetsi vzruso bylo kdyz se v e-shopu parovaly polozky v objednavce pomoci joinu, ale to je tak vsechno.

    Neuveritelne nudne programovani, ktere opravdu plnotucny databazovy system nepotrebuje a prostor pro zrychleni, jak jsi tu tvrdil, tu opravdu neni.

    Obvykle člověk potřeboval data setřídit, mít referenci na nadřazenou entitu, ... To vše se s MySQL řešilo na aplikační úrovni a daleko dráž.

    A? Vsechno toto tehdejsi MySQL podporovala. Takze pokud byl nekdo tak mimo a resil to na aplikacni urovni, tak by mu opravdu ani Oracle nepomohl.

  • 19. 5. 2021 16:09

    Miroslav Šilhavý

    Neuveritelne nudne programovani, ktere opravdu plnotucny databazovy system nepotrebuje a prostor pro zrychleni, jak jsi tu tvrdil, tu opravdu neni.

    S tím úplně nesouhlasím. Každá z těch vyjmenovaných entit má na sobě navázané další. Např. u článku chcete vidět jméno autora, tak máte referenci na tabuli autorů. U zpráv taktéž. Možná jste u komentářů řešil schvalování (někým dalším). Článek mohl být ještě nebo už neveřejný. Obrázek z článku tím pádem mohl být ještě / už znepřístupněný.

    To všechno jsou běžné operace, které se už v devadesátkách řešily. Buďto jste si to navázal a joinoval, nebo jste data staticky duplikoval ze seznamů do obsahových tabulí, nebo jste je dotahoval dalším (sub)selectem. Duplikování informací je drahé, zejména při updatu - musíte updatovat všechny záznamy, které informaci převzaly. (Sub)select v rámci aplikace je taky drahý. Takže zbydou akorát ty joiny a tam už prostě MySQL pajdalo.

    Pochopitelně, když popíšete příklad tak zjednodušeně, jako jste ho popsal, tak to působí úplně jinak. Ano, často systémy vznikaly z jednoduchých a vlastnosti, které jsem vyjmenoval, se dodělávaly. Ve výsledku to sežralo víc prostředků, než kdyby se to dělalo pořádně. To platilo i tenkrát.

  • 19. 5. 2021 17:28

    ded.kenedy

    S tím úplně nesouhlasím. Každá z těch vyjmenovaných entit má na sobě navázané další. Např. u článku chcete vidět jméno autora, tak máte referenci na tabuli autorů. U zpráv taktéž. Možná jste u komentářů řešil schvalování (někým dalším). Článek mohl být ještě nebo už neveřejný. Obrázek z článku tím pádem mohl být ještě / už znepřístupněný.

    A? Co jsi tim chtel rict? Klauzuli where opravdu zvladala i MySQL a stejne jako bezne spojeni. Pokud to nekdo prasil na aplikacni urovni, lepsi databaze by mu nepomohla.


    Pochopitelně, když popíšete příklad tak zjednodušeně, jako jste ho popsal, tak to působí úplně jinak. Ano, často systémy vznikaly z jednoduchých a vlastnosti, které jsem vyjmenoval, se dodělávaly. Ve výsledku to sežralo víc prostředků, než kdyby se to dělalo pořádně. To platilo i tenkrát.

    Ano, ty aplikace byly opravdu tak jednoduche a na jedno brdo. Ty funkce navic, co popisujes, jsou jen banality, ktere jde resit (a resili se) pridanim par atributu, coz bylo to hlavni, v cem se jednotlive aplikace lisily.

  • 19. 5. 2021 17:38

    Miroslav Šilhavý

    Klauzuli where opravdu zvladala i MySQL

    Where zvládalo i tenkrát. Join zvládá ještě dodnes s výkonnostními problémy.

  • 19. 5. 2021 15:31

    dw

    Eh? Transakce i referenční integrita jsou vždy režie navíc. Z toho opravdu výkon nezískáš, ani když se rozkrájíš na nudličky.

    Ak sa nemozem spolahnut na integritu dat, ktore dostanem z db, tak to musim poriesit v aplikacii. A to je spravidla daleko vyssia rezia naviac.

  • 19. 5. 2021 16:08

    ded.kenedy

    Nebo to nemusis resit vubec a muzes predpokladat, ze pracujes s validnimi hodnotami. V te dobe to bylo naprosto bezne a validni rozhodnuti, stejne jako treba obetovat transakce.

    Z dnesniho pohledu to zni mozna desive, ale je potreba si uvedomit, ze tehdejsi pocitace mely procesory pracujici na pouhych stovka megahertz a pameti v radech desitek megabytu. Pro kontext je dobre zminit, ze teprve nekdy v druhe polovine devadesatych let se zacaly opoustet primitivni souborove databaze, kde transakce ani referencni integritu nikdo neresil a "bez problemu" na tom bezely obrovske prumyslove a obchodni spolecnosti, takze to z pohledu tehdejsi doby nebylo uplne mimo.

  • 19. 5. 2021 16:16

    Miroslav Šilhavý

    Nebo to nemusis resit vubec a muzes predpokladat, ze pracujes s validnimi hodnotami. V te dobe to bylo naprosto bezne a validni rozhodnuti, stejne jako treba obetovat transakce.

    Nebylo. I v té době se vědělo, že je to hazard a programátorská prasárna. Už tenkrát, kdy bylo uživatelů internetu asi pět a půl, se docela pravidelně projevovaly nekonzistence vzniklé z tohoto "validního rozhodnutí". Obvykle se pak programátor před zákazníkem tvářil děsně důležitě a "opravoval data".

    Z dnesniho pohledu to zni mozna desive, ale je potreba si uvedomit, ze tehdejsi pocitace mely procesory pracujici na pouhych stovka megahertz a pameti v radech desitek megabytu.

    Přiměřeně malá byla i datová nálož i zatížení. Ke své době to zvládaly přiměřeně k potřebám.

    transakce ani referencni integritu nikdo neresil a "bez problemu" na tom bezely obrovske prumyslove a obchodni spolecnosti, takze to z pohledu tehdejsi doby nebylo uplne mimo

    Klam. Data se v takovém případě zamykala a čekalo se, než skončí úloha, která data mění. S tím se počítalo opravdu běžně, ale nikdo si netroufl zároveň zapisovat a číst (nota bene číst pro zápis).

    S příchodem webových aplikací bylo naprosto jasné, že takový přístup k řešení už není možný. Souborové databáze se opouštěly ne kvůli jejich "souborovosti" (ta by nebyla zas až tak na obtíž), ale právě kvůli tomu, aby se daly úlohy bezpečně zpracovávat souběžně a v kódu dokola neřešit zamykání a co v takovém případě dělat.

  • 19. 5. 2021 18:43

    ded.kenedy

    I v té době se vědělo, že je to hazard a programátorská prasárna. Už tenkrát, kdy bylo uživatelů internetu asi pět a půl, se docela pravidelně projevovaly nekonzistence vzniklé z tohoto "validního rozhodnutí".

    Uplny stroj casu. Tyto pohadky patrily do programatorskeho folkloru tehdejsi doby, ale realita byla nekde uplne jinde, a opravdu to nebyl realny problem.

  • 19. 5. 2021 18:52

    Miroslav Šilhavý

    Tyto pohadky patrily do programatorskeho folkloru tehdejsi doby, ale realita byla nekde uplne jinde, a opravdu to nebyl realny problem.

    Já jsem tyto "pohádky" sledoval v přímém přenosu. Obvykle se ten "neproblém" (ne)řešil nějakou obezličkou, která měla za účel snížit pravděpodobnost výskytu, Pak to byla zase jen otázka času, kdy datová nálož a vytížení doběhly tu obezličku. Ve výsledku takto slátaná aplikace běhala pomaleji. Ale je fakt, že už tenkrát se našli experti, co tvrdili, že to není potřeba dělat, a že by to bylo pomalé a kdovíco ještě. Ještě obvyklejší bylo, že tehdejší matláci ani netušili, že existují nějaké relační databáze, které se o celý problém postarají - jen se je naučit. Tento folklór přetrvává dodnes - a dodnes nerozumím tomu, proč je tak velký mentální problém se naučit několik málo zásad pro práci se SQL a RDBMS (pro začátek stačí jen BEGIN a COMMIT). I kdyby se to nenaučili nijak oslnivě a využili jen základy, aplikace by rozhodně nebyla pomalejší.

  • 19. 5. 2021 19:58

    Pavel Stěhule

    Ono něco fungovalo, a něco nefungovalo. Na jednu stranu, kamarád adminoval roky relativně bezproblémový provoz reality.cz, co snad dodnes běží na MyISAM. Na stranu druhou, když jsem dělal v IlikeThis, tak jedna aplikace rozesírala db tak často, že člověk, co jí měl na starosti ji dokázal dát dohromady během čtvrt hodiny. Měl natrénováno, jelikož to dělal tak 2x 3x do týdne.

    Mohli být zabugované některé verze, některé operace, a vzhledem k tomu, že na MyISAM se fsync nevolá, a je na filesystému, kdy si flushne, tak bylo ve hvězdách, jak a co se rozbije při havárii. Vybavuji si ohromnou nechuť tehdejších adminů (cca rok 2004) k jakému koliv upgrade MySQL.

    Něco podobného pamatuji se starými verzemi MS Accessu. To se rozbíjelo, jen když se na to člověk špatně podíval. Když ale člověk věděl, co nedělat, a držel se toho, tak mohl napsat docela velkou aplikaci. Dost aplikací pro kupónovou privatizaci běželo nad MSAccessem, docházkové systémy, systémy pro agendy v pojišťovnách. A MS Access byla chuťovka. To MySQL byl držák vůči accessu :).

  • 19. 5. 2021 17:06

    dw

    Z dnesniho pohledu to zni mozna desive...

    V "devedesiatkach" som bol uz IT aktivny. Obrovske spolocnosti uz vtedy neriesili ako server pc zavrete niekde pod schodami, ale bezali na mainframoch.

    Z dnesneho pohladu je skor desive to, ze vedsina mladsich vyvojarov akoby ani len netusila ze server na ktorom bude aplikacia bezat sa diametralne lisi od pc na ktorom vyvijaju. Napr, jeden argument za vsetky "io operacie su inrelevantne, pretoze dnesne disky su neuveritelne rychle". Ako takej trubke vysvelit ze na servri ma ten disk spravidla mountnuty cez siet z diskoveho pola a aj napriek rychlosti je to blokove zariadenie, kde je sice mozny nahodny pristup ale rychlost io operacii bude klesat umerne k tomu kolko uzivatelov bude pozadovat data? Neda si vysvetlit ze k datam ulozem v zdielanej pamati serveru ma viacero uzivatelov okamzity paralelny pristup...

  • 19. 5. 2021 17:37

    ded.kenedy

    V "devedesiatkach" som bol uz IT aktivny. Obrovske spolocnosti uz vtedy neriesili ako server pc zavrete niekde pod schodami, ale bezali na mainframoch.

    Blahopreji. Jsou lidi, kteri v devadesatkach resili informacnich systemy ve FoxPro, na kterych bezely prumyslove i obchodni spolecnosti se stovkami zamestnancu a miliardovymi obraty.

  • 19. 5. 2021 17:42

    dw

    Jsou lidi, kteri v devadesatkach resili informacnich systemy ve FoxPro, na kterych bezely prumyslove i obchodni spolecnosti se stovkami zamestnancu a miliardovymi obraty.

    Jj, tiez sme mali zopar ludi ktori neriesili nic ine len podivnost zvanu foxpro, hovorili sme im pacienti... To ale nebola celkom len databaza, pretoze foxpro riesila aj aplikacnu vrstvu.

  • 19. 5. 2021 14:33

    Pavel Stěhule

    Koncem 90 let byla MySQL jediná dostupná databáze pro webové aplikace. Komerční databáze byly pro internet brutálně drahé. A MySQL dlouho neuměl transakce - MySQL byl bastl MyISAM + SQL interpret. Byl to bast, ale umělo to SQL (což tehdy představovalo vyšší třídu), a bylo to zadarmo, a běželo to na každém PC. Stejně jako PHP. Člověk se na to musí dívat jinak. Dnešní MySQL a dnešní PHP jsou úplně jiné produkty než tehdy, ale tehdy umožnili dost lidem začít programovat a uživit se tím. A je fakt, že v té době existovali i o dost horší technologie, a i profi programátoři, kteří používali MSSQL, které jsem znal, mi tvrdili, že transakce a zámky jsou zbytečné záležitosti.

  • 19. 5. 2021 14:49

    Miroslav Šilhavý

    @Pavel Stěhule

    Já si teda ty devadesátý léta pamatuju, a ani tenkrát nebyl problém používat Postgres pro webové aplikace. Jakmile člověk potřeboval pět, šest tabulek, nějaké číselníky, tak mohl zvolit buďto MySQL a sloučit si data v aplikaci, nebo je sjoinovat v Postgresu. Co si pamatuju, v postgres95 nebo postgresql 6 (to už si nevzpomenu) byl jen cross join, ale podmínky to řešily a indexy se s malou nápovědou chytaly (bylo to komické, ale fungovalo to dobře: SELECT ... FROM a, b WHERE a.id=b.fk AND a.id > 0 AND b.id > 0 [bez posledních dvou podmínek se index nechytl]). To dalo už tenkrát MySQL spolehlivě na gatě.

  • 19. 5. 2021 15:42

    Pavel Stěhule

    Já jsem začal s Postgresem až od sedmičky. Nicméně ty raný verze Postgresu svoje mouchy měly. Do přepsání memory managementu měl Postgres problémy s memory leakama (ale to MySQL taky - vzpomínám si na jeden incident s MySQL u zákazníků u jednoho z prvních eshopů u nás, MySQL se restartnul každých 50K dotazů). Hlavně Postgres neběžel na windows (což byl takový paradox - www aplikace drtivě běžely na Linuxu, ale drtivě se psaly ve win), a nebyl na hostinzích (poněvadž Postgresovou db jednoduše někomu nenasdílíte. Záloželo, co člověk dělal. Jako storage MySQL mohlo fungovat docela dobře. Jakmile se ale začalo joinovat nebo používat subselecty, tak to MySQL nedávalo. V roce 2011 jsem dělal pro GoodData testy Postgresu a MySQL a na pár MB tabulkách byl Postgres řádově rychlejší. 100MB tabulky už pro MySQL příliš velké (pro JOIN) a museli jsme si pomáhat workaroundem (když se použila inmemory tabulka, tak MySQL uměl hashjoin, ale když máte 10K tabulek a víc, tak inmemory tabulky jsou průser).

    MySQL 5 vypadala docela nadějně (přidali tam pár funkcí kvůli možné podpoře SAPu). Ale pak SAP tuhle cestu definitivně zavřel, a MySQL spálilo fůru let na vývoji Falconu (a vývoj MySQL se posunul dopředu až za Oracle).

  • 19. 5. 2021 18:30

    TomKo

    Koukám, že to ve free databízích bylo tehdy prašť jako uhoď. Já byl nucen okolo roku 2000 dělat na Interbase resp Firebirdu a to byl tedy také zážitek - Ta db se brutálně zpomalovala od cca 250 uživatelů. Takže X měsíců běželo všechno parádně a pak najednou ze dne na den bum...

  • 21. 5. 2021 9:12

    oss

    Mozem mat sice schopnu databazu zadarmo, ale ak ten ekosystem nanic (ako v pripade Postgre, MySQL, Monga), tak v konecnom doledku mozem prerobit na plate vyvjarov, ked mi budu neumerne dlhu dobu riesit problemy, konzietnciu a vykon.

    Ako chapem, ze pre mensie firmy sa viac oplati nieco co je zadarmo a za cas to bezi (mozno aj uspokoji ich potreby). Ale tie komercne databazy maju naozaj pridanu hodnotu, hlavne ak sa neriesi len nejaky prezentacny web.

    Ked som v roku 2013 prvykrat skusil MS SQL 2008, tak som ukazal MySQL prostrednik a povedal som si, ze open source databazu uz nikdy. Nestoji to za tie nervy, mizeny vykon a hlavne, ze free edicie MS SQL zvladnu viac dat ako MySQL/MariaDb.

    Postgre nehodnotim ako zlu databazu, ale MS SQL to stale nie je (vid clanok a CTE), a to hlavne ekosystemom okolo, plus response time (pri rovnakych datach, rovnakych indexoch a rovnakych nicim spacialnych selectoch dava horsie casy).

  • 21. 5. 2021 9:34

    dw

    No, na transact sql sa da zvyknut - spolupracoval som nejaku dobu na mssql kde bola bussines logika v db... ak to mam porovnat s postgresom, tak jednoznacne postgres. A ekosystem okolo... ako licencia na max 64 jadier, draha jak svina? Za tie prachy ta db fakt nestoji...

  • 21. 5. 2021 12:50

    oss

    To bol sarkazmus :D