Zapomeňte na MySQL - podruhé

MyEgo.cz

home foto blogy mywindows.cz kontakt

Zapomeňte na MySQL - podruhé

PHP 17.04.04

Děkuji Ottymu za pěkný link na porovnání MySQL a PostgreSQL. Přes hloupoučké reakce některých klučíků na můj předchozí článek, tato nezávislá analýza na openacs.org... zcela s mým článkem souhlasí. ;)

Přeji příjemné čtení!

Co jsem psal já?

Ona MySQL totiž není databáze. Je to primitivní filesystém. Filesystém, který navíc ani nepodporuje (pořádně) transakce, což je další obrovský problém. Pro libovolné aplikace.

Je načase říci, že MySQL je špatná databáze, která je v konečném důsledku pomalá a nepodporuje správné programátorské zvyky a postupy. Tahat data na klienta, kvůli sub-SELECTu, či TRIGGERu je mimořádně špatná koncepce!

Kdyby se lidi weboví chtěli naučit trošku více SQL a PL/SQL a začali používat (taky open-source) PostgreSQL či Firebird, namísto MySQL, řada složitých aplikací by běžela mnohem rychleji!!

Co píše ta analýza?

MySQL is just a glorified filesystem with a SQL interface. MySQL has no subqueries. MySQL has no stored procedures. MySQL has no triggers. MySQL only has table-level locking.

Jinak řečeno, moje dlouhodobé znalosti, mají drtivou převahu oproti flames klučíků, co se mezi sebou poplácávají po ramenou, to jediné jim jde ;) Moc pěkné ;) Před pár dny zavedené recenze komentářů, a publikování těch smysluplnných, má smysl. Flames... už nejsou.

PS: ta analýza MySQL byla psaná v roce 2000, před 4 lety, a smutné je, že je stále platná!!!


Komentáře

  1. 1 Vlado Raab 17.04.04, 01:04:19
    FB

    houby tomu rozumím to nezapírám :oops:

    je fakt že je mysql hloupé ale proč se tak ubohá věc databáze /filesystémrozrostl vždyť co se týče PHP tak se asi nejvíce spojuje s MySql proč když je tak nedokonalá. Bude to tím že lidé chtěji snadno pracovat s "databází" ale dále se o to nezajímají co a jak? Pokud nemáš vzdělání nebo potřebu se dále vzdělávát tak ti je stejně jedno co je to ORACLE, DB2, či MS SQL možná trochu nesourodá skupinka ale jako příklad se to dá.

    Je fakt že pokud ti někdo neustále buší na rameno a předkládá ti jenom jednu volbu PHP a MySql tak ti logicky tato volba utkví a už ani nepátráš proč by tomu tak mělo či nemělo být?

    Udělejme jednu věc a to tu, že se budeme ptát PROČ? je tomu tak a zda není ALTERNATIVA k tomu co známe a nesmíme přestat a neustále se dotazovat co jak a proč?

  2. 2 Radek Hulán 17.04.04, 01:04:29
    FB

    [1] rozšířenost nemá nic společného s kvvalitou. Osvěta je potřeba, i proto je nutné napsat zapomeňte na MySQL a používejte PostgreSQL, čím více lidí to udělá, tím dříve se jí zbavíme..

    Uvažuji, že bych přepsal Nucleus pod PostgreSQL, ale... pro GNU systém to je problém. Naprostá většina hostingů má jen MySQL.

  3. 3 Jiří Macich ml. 17.04.04, 02:04:26
    FB

    Mě by spíš zajímalo, proč to, co je podle odbodníků špatné, se hojně používá a většinou více, než to vychvalované znalci.

    Nemyslím teď, že rozšířenost = záruka kvality, ale proč se prostě nepoužívá lepší věc? 8O

  4. 4 Radek Hulán 17.04.04, 02:04:37
    FB

    [3] to je shoda okolností, marketingu, konstelace hvězd a magie ;) O některých řešeních všichni vědí, že nejsou ideální, ale... kdysi dávno se implementovali třeba proto, že je to JEDNODUCHÉ, viz třeba EasyBlog vs. Nucleus, a pak se triviální nástroj používá i pro složité projekty... A ve chvíli, kdy tento triviální nástroj (MySQL) získá slušnou pozici, tak se jen upevňuje, NAPROSTÁ většina lidí tomu nerozumí, je STÁDOVITÁ, říkají si, má to každý, tak to ASI BUDE DOBRÉ...

    Kvalita nemá s rozšířením NAPROSTO NIC společného.. S průměrností, s tím ano..

  5. 5 Jiří Macich ml. 17.04.04, 02:04:47
    FB

    [4] K EasyBlogu - který složitý projekt ho používá? Čistě jen ze zvědavosti. Snad ne jako ... ehm ... redakční systém?

    Na můj malinký blogíček stačí (no, i když to zdržení vyřešení anchorů mě štve), kdybych dělal nějaký spravodajský web, tak se na něj vykašlu, to je jasné.

    A když jsou tu tedy odborníci. Nemohou teoreticky svým odborným názorem dát flek onomu "NAPROSTÁ většina lidí tomu nerozumí, je STÁDOVITÁ, říkají si, má to každý, tak to ASI BUDE DOBRÉ" Třeba "NAPROSTÁ většina lidí tomu nerozumí, ale v oblasti vzdělaný člověk doporučuje to a to a tak tomu většina lidí důvěruje a požívá to."

  6. 6 SuE 17.04.04, 11:04:50
    FB

    Rozšíření mysql je patrně dáno cenou a nabídkou - drtivá většina stránek na internetu je amatérská .. no a když se to někdo naučí a ono to finguje a dobře, tak proč to nepoužívat dál? to není neschopnost nebo lenost .. to je pragmatismus. Oracle je drahá databáze. A na tu malé projekty nemají a těch je nejvíc. Nebavíš se tu s profíky z velkých firem, ti se těžko budou zajímat o blogy a přiznejme si, i o nucleus. Úspěšnost nucleusu je také dána tím, že běží na mysql a tudíž se dá nainstalovat na téměř jakýkoli hosting. To JE plus mysql.

    Mnohem větší přínos by myslím mělo provnání - v oracle řeším tenhle problém takto - jak ho vy řešíte na mysql?

    BTW, když ti tu napíšu něco kritického, budeš mi říkat holčička ? :-)

  7. 7 pavelm 17.04.04, 03:04:11
    FB

    [5] Easy blog samozřejmě žádný složitější projekt nepoužívá, protože to prostě není možné. Použít MySQL databázi pro rozsáhlejší projekt však možné je, což ale ještě nutně neznamená, že je to dobrý nápad. Právě například nemožnost používat vnořené SELECTy může být při konstrukci některých dotazů (Nemluvím o žádných složitých dotazech.) vážným omezením. Je také pravda, že například systém ORACLE je daleko výkonější než MySQL a jak psal už Radek, ve srovnání s Oracle se MySQL jeví opravdu jako trochu chytřejší souborový systém.

    Myslím, že MySQL je tak rozšířené hlavně proto, že je zadarmo a například pro ukládání článků a jejich následné vybírání podle jednoduchých kritérií je dostačující. Použítí MySQL za každou cenu u jakéhokoliv složitějšího projektu už moc smysl nedává.

    Jak byste například v MySQL řešili jednoduchý problém: Vypište počet kateder, ve kterých pracují více než 3 učitelé. V ORACLE to jde snadno vnořeným SELECTEM: SELECT count(kat) AS pocet_kateder FROM (SELECT kat, count(cislo) FROM ucitele group by kat having count(cislo)<3) 8O

  8. 8 Radek Hulán 17.04.04, 03:04:31
    FB

    [6] SuE, a mohl bych ti říkat holčička? Mě se to zdá takové.. moc milé :wink:

  9. 9 ja 17.04.04, 03:04:58
    FB

    [7] no konkretne tento dotaz zapisu v mysql4.1 takto:

    SELECT COUNT(kat) AS pocet_kateder FROM (SELECT kat, COUNT(cislo) FROM ucitele GROUP BY kat HAVING COUNT(cislo)<3)

    Ano, pokud budu budovat skolni databazi, postavim to na robustnim reseni od oraclu, jednak se mi to zaplati a druhak vim ze pravdepodobnost selhani je mala. Navic mam podporu od oraclu, jim ze ma kreditni karta jiste libi, takze kdyz budu mit problem vyresi ho i skakanim po usich a tleskanim pec nam spadla.

    Ale v zadnem pripade to neznamena ze je MySQL spatna, je to vec volby, ja ji pouzivam a at si pan Hulan (ano videl jsem jeho CV a padnul jsem na prdel, divim se ze se tu s nami zahazuje) rika co chce, pro me potreby je mysql dobra. Pokud vim ze nepotrebuji pouzivat transakce (coz je nejvetsi problem mysql) a dejme tomu zminene viewy (ktere budou) tak pouziju mysql. Je rychla a stabilni (pokud ji umi clovek nakonfigurovat).

    Konkretni pripad:

    Databaze na MySQL, obsah cca 60GB (zaindexovany temer cely cesky inet), fulltextove vyhledavani bylo dilem okamziku ... mysql s tim nemela absolutne zadny problem, proc, protoze spravne navrhnuta a nastavena DB.

    BTW: zajimalo by mne, proc kazdy srovnava Oracle vs MySQL. Pokud to prezenu, jak chcete srovnavat Skodovku s dejme tomu Ferrari ? Srovnavejte rovneho s rovnym, a ne takoveto nesmyslne demagogie.

    Howgh, tohle tema nema cenu, stejne se nic nevyresi, stoupne navstevnost a ja si mysql budu pouzivat stejne dal.

  10. 10 Radek Hulán 17.04.04, 04:04:22
    FB

    [9] jen tak pro info, můj článek začíná "Děkuji Ottymu za pěkný link na porovnání MySQL a PostgreSQL.", Oracle tam není.. A PostgreSQL je skutečná databáze, ne filesystém jako MySQL, a je rovněž OpenSource..

  11. 11 pavelm 17.04.04, 05:04:04
    FB

    [9] Ale v zadnem pripade to neznamena ze je MySQL spatna, je to vec volby, ... Záleží hlavně na tom, co od databáze očekávám a na co ji potřebuji. To ale snad už vyplynulo z mého předchozího komentáře.

    -- musím to asi fakt opakovat mockrát, ona to bohužel NENÍ věc volby, dělám-li světový systém, fe-dacto musím použít MySQL, i když existuje řádově lepší PostgreSQL. MySQL je mizerný filesystém, ne databáze...--

  12. 12 Vlado Raab - Empyrea 17.04.04, 05:04:32
    FB

    [2] :!: zbavíme ? : 8)

    to je silné tvrzení.

    Tak úplně nesouhlasím. Vysvětlím: nejde o to se mysql zbavit ale o osvětu a informovanost na malé věci proč ne? -potřebujete si archivovat příspěvky z webu jenž vám návštěvníci poslali tak si je uložte do MySql. To nikomu neberu.:P

    Dělám-li redakční systém, obchod, nebo nějakou jinou složitější aplikaci tak je lépe se zeptat co s tím v budoucnu budu dělat je to na dva měsíce nebo to je na několik let.

    Beru za to peníze a tak odvádím 100% práci. chci ať je se mnou zadavatel spokojen a případné doporučení jeho známým nikdy není na škodu ba naopak.:D

    NEJVĚTŠÍ CHYBA co dělají uživatel při práci ANALÝZA PROJEKTU v tomto bodě zjistím co se ode mne chce a pak se ještě jednou zeptám zda je to správně.

    -odkaz na stránku kde je test několika databází http://www.sqlite.org/speed...

    OpenSource jistě by se našly i stránky s rozsáhlejšími testy, chcete je taky?
    hosting :

    Není pravda že chybí hosting pro PostgreSQL jenom u nás jsou minimálně tři není to moc ale stačí to. Google.com mi hodil 605,000. odkazu na dotaz "postgreSql hosting free" :D podmínkou je angličtina :?:

    PostrgreSql :

    Proč by to mělo být problém přepsat do PostgreSQL ostatně jsem tě o to chtěl požádat, ale předběhl jsi mne svým návrhem, Druhá věc je časová náročnost této činnosti.

    GNU a PostgreSQL :

    osobně jsem se setkal s několika projekty pod GNU jenž měly více alternativních databází dokonce jsem se setkal s vorzí pro oracle 8,9i a to vedle PostgreSQL a MySQL.

    Tak hodně zdaru v práci rADo
    PS: možná se někomu může zdát, že přebírám Radkovy názory. Omyl!!! Není tomu tak veškeré informace jenž jsou prezentovány porovnávám z více pramenů a pokud se tyto prameny shoduji tak je poté prezentuji s případnými odkazy na dané zdroje.

    Stále platí: Věř, ale komu věříš měř

    a v současné době internetu, kde si každý může publikovat co ho napadne, to platí bvojnésob.

  13. 13 Radek Hulán 17.04.04, 05:04:50
    FB

    [12] pěkný komentář, tedy, spíše celý článek :)

    Napsal jsem o převodu Nucleusu z MySQL do PostgreSQL do vývojářského fóra, uvidíme, jaké budou reakce, jen pro sebe bych to nedělal..

    http://forum.nucleuscms.org...

    Mimochodem, zde jsou informace o PostgreSQL česky, doporučuji VŠEM ke čtení:

    http://postgresql.ok.cz/

  14. 14 Vita/Marabu 17.04.04, 10:04:10
    FB

    [7] Tedy... ja bych to resil tak ze bych si na to vybral postgress. Na informacni system je mysql mizerna volba a pokud to nekdo udela tak je jeho spatna vizitka ze neumi zvolit spravny prostredek.

    Pokud bych prebral po nekom neco takoveho udelaneho v mysql tak bych na takove dotazy pouzival bud temporary table pokud by nebyly moc caste, pokud castejsi tak bych ji nechal normalni. Pochopitelne trigger by byl lepsi, postgress by byl lepsi, mssql by bylo lepsi... firebird by byl lepsi ale obcas clovek musi delat s tim co ma a ne s tim co chce.

  15. 15 dgx 17.04.04, 11:04:31
    FB

    O MySQL verze 3.x nemam taky zadne velke mineni. Ale srovnavejme srovnatelne.

    Argumentovat clankem (openacs.org), ktery vznikl v roce 2000, tedy vlastne v dobe, kdy MySQL byla skutecne jen jednoducha hracka, je trosku kratkozrake. To vazne proti MySQL vetsi trumf nemate?

    Další odkaz [12] vede na http://www.sqlite.org - zde testy kupodivu vyhrava databaze SQLite. To je ale prekvapeni. Ovsem je tu take videt vyrazny rychlostni naskok MySQL oproti PostgreSQL.

    Nesnazim se v zadnem pripade chvalit MySQL, to rozhodne ne. Ale jen vase argumenty, ktere jsou zatim slabe.

  16. 16 Radek Hulán 18.04.04, 04:04:25
    FB

    [15] no, ona je RYCHLOST a rychlost, pokud je MySQL 2-3x rychlejší na některé SELECTy než PostgreSQL, ale... pokud těch SELECTů musí udělat namísto 1 třeba 15 (protože neumí sub-SELECT), pak už není 2-3x lepší, ale 5-7x horší :!:

  17. 17 Vita/Marabu 18.04.04, 12:04:40
    FB

    [4] s tim znacne nesouhlasim. Kvalita nema s rozsirenim nic spolecneho jen v odvetvich do kterych nikdo moc poradne nevidi. Cim vic do 'systemu' vidi i laik, tim mensi je sance ze se tohle stane. Cim vic ho pouziva laik ktery do nej nevidi, tim vetsi sance je ze se to stane - tam uz je to jen otazka medialni kampane.

    [16] Nuz to co jsi psal driv (vyber top clanku) apod. se da udelat pomoci agregace. Lze to udelat i pomoci temporary table (nebo i normalni tabulky) - koneckoncu ten subselect sam o sobe neni o nic moc jineho nez prave temporary table. Je to skrabani se pravou rukou na levem uchu... ale to muzes dat tezko za vinu mysql. Ty mas holt problem v situaci kdy rozvijis puvodne blogersky system uz kamsi i za hranice e-zinu - a tam se nedostatky puvodni dobre volby databaze pro blogersky system srazi s pozadavky na rozsahlost e-zinu.

    Spis bych to videl tak na oddeleni nucleus blog - tak jak byval driv - ten nechat na mysql... a k tomu proste udelat nucleus zin ktery pojede na postgress. Jinak budes kvuli puvodni volbe porad dal narazet na omezeni DB, budes se bud patlat se smyckama nebo temp tabulkama a cely system bude stejne nakonec zoufale neefektivni - coz je typicka dan za univerzalitu.

  18. 18 Zdeněk Merta 25.04.04, 04:04:05
    FB

    Nadpis clanku zni: "Zapomente na MySQL" - proc se jim neridis a neprepis Nucleus treba na zminovany PostgreSQL. Proc o tom pouze uvazujes a bez zbytecnych reci to neudelas?
    Argument, ze vetsina hostingu nabizi pouze MySQL je lichy. Hostingu s PGSQL je dostatek a mozna prispejes k rozsireni jejich poctu. Staci, kdyz lide uvidi nekterou z vyhod pouziti opravdove databaze. Co neuvidim nebo nevyzkousim na vlastni pest, k tomu jsem znacne skepticky.
    Takhle to vypada, ze neco hlasas, ale sam se tim neridis.

    Bohuzel spousta lidi dava znamenko = mezi spojeni relacni databaze a MySQL. Vetsina z nich nikdy nepotrebovala neco lepsiho. Taky proc pouzivat opravdovou databazi treba na knihu navstev, jednoduche diskuzni forum nebo jednoduchy redakcni system.
    Je to jen o pouziti spravneho nastroje na urcitou vec.

    Na zaver jeste par otazek. Nucleus neznam a bohuzel nemam cas se na nej podivat. Takze:
    V souvislosti s prepisem do PGSQL uvazujes pouze o prepisu struktury DB na syntax PGSQL - nebo hodlas pouzivat slozitejsi veci jako: transakce, triggery, pohledy, stored procedures?
    V pripade, ze ano - jak moc je casove narocne tyto veci zakomponovat do jiz hotoveho systemu? Nebo jinak - jak moc univerzalni je jadro Nukleus(u). Je mozne jednoduse menit napr. zdroj dat - relacni db, xml db, objektov db, ...?

  19. 19 Radek Hulán 25.04.04, 07:04:34
    FB

    [18] Nucleus je světový GNU systém. Ve světě je PostgreSQL na minimu hostingů, stejně tak jako v ČR. Pokud bych psal Nucleus JEN pro sebe, rozhodně použiji PostgreSQL. Ale... MySQL je, bohužel, mimořádně špatná, ale, mimořádně rozšířená. A to je, pro světový systém, a jeho rozšíření, mnohem důležitější, než "technologická kvalita".

  20. 20 Pavel Stěhule 30.04.04, 08:04:08
    FB

    [3] Proč se rozšířila MySQL. Jednak proto, že svou funkcionalitou dostačuje pro hodně věcí. Viděl jsem a vidím taky používat MySQL tam, kde by se rozhodně používat neměla, a její nasazení má šíleně negativní dopad na návrh aplikace. Další podstatný důvod byl, že v dobách vzniku hostingů a vůbec zavádění inetu neměla alternativu. PostgreSQL byla tou dobou někde ve verzi 6.x - uměla sice fůru vychytávek, které MySQL dodnes nemá, ale byla o hodně pomalejší (o hodně znamená o hodně:)). Třetím důvodem je obecně mizerná znalost SQL.

  21. 21 ikso 15.02.06, 09:02:22
    FB

    rADo: Aký je tvoj názor na databázu FoxPro ? Učíme sa ju v škole a myslím, že nie je zlá, ale dá to prácu, kým sa s ňou človek naučí pracovať.