Prepacte o co tu ide? Ak chcete pokracovat vo vyvoji tak pokracujte. Nikto Vam v tom nebrani. Koli tomu branit zluceniu Oracle a Sun-u mi pripada uuuuuuuuuuplne scestne (inac celkovo situacia kedy v amerike firmy budu spojene ale v europe rozdelene bude zaujimava).
Za dalsie nerozumiem preco vsetci potrebujete MySQL? Dlhe roky som (okrem Oracle a Ingres) pouzival PostgreSQL. Co take ma MySQL co PostgreSQL nema? Ak chcete vymenujem vam co PostgreSQL ma a MySQL nie (na famy o rychlosti rovno zabudnite).
Ano např. v té RAM. PostgreSQL i když používám v práci, a umím ho nakonfigurovat, je to pořád relativně velký moloch. Ano MySQL umí být taky nenažrané a pěkně, ale k čemu mě bude databáze optimalizovaná na milióny záznamů, když potřebuju 5 tabulek o pár stovek záznamů. V případě MySQL je to typicky na hostingových serverech otázka právě nějaké té stovky „databází“ v jednom serveru o desítkách tabulek s tisícovkami záznamů.
Máte pravdu že PostgreSQL není embedded databáze, ale s tou pamětí je to trochu filozofická diskuse …
Pokud mám v počítači 4GB paměti, proč by proboha měla zůstat volná, když si ji může sebrat některý proces a díky tomu fungovat podstatně rychleji? Podmínkou samozřejmě je že ji nesežere „navždy“ ale že ji na požádání vrátí pokud bude potřeba.
Nehledě na to že v Linuxu většinu paměti sežere disková cache, což je zcela mimo PostgreSQL, a spotřeba paměti v PostgreSQL se dá poměrně dobře řídit (počet connections, work mem, maintenance work mem, …).
MySQL je u tak velkého počtu webových aplikací používáno zejména proto že dotyční programátoři pořádně nic jiného neznají (kdysi dávno to byl i můj případ). To zaprvé.
Zadruhé fámy o rychlosti jsou fámy, a to zejména v případě (a) složitějších dotazů a (b) škálovatelnosti, případně v kombinaci (a) a (b). Ukazují to jak umělé benchmarky, tak i zkušenosti z praxe.
MySQL se používá z jednoduchého důvodu. Protože si PostgreSQL hrálo na hogo fogo, která si bude diktovat podmínky.
MySQL prostě fungovala. Malá databáze, multiplatformní, nedělala ze sebe bůhvíjaký technický projekt nadsvětového významu. Tím pádem se rozšířila na webech jak na Windows (kde PostgreSQL dlouho ofňovala nos), tak na Linuxu.
PostgreSQL si hrála na tak důležitou, že se složitostí rovnala Oracle, ne-li ještě hůře. Spolu s dalšími fakty (mnoho verzí PostgreSQL nebyla spolehlivá a sem tam zničila data) to jednoduše PostgreSQL prohrála.
To že až v poslední době (několika let) začíná být rozumně použitelná databáze, která si přestává klást podmínky a uvědomuje si, že nehraje o prim, to už je pozdě. První db (MySQL) je zkrátka první.
I když věřím, že lidé od Postgresu by to rádi viděli jinak, ale v zásadě Posgtreska si to zavinila svým přístupem sama.
Jinak jako databázový administrátor, který vyzkoušel leccos mi u MySQL spoustu věcí chybí, nicméně protože znám kontext, Postgreska se nemohla rozšířit, protože vývojový tým se choval jako idioti. Teď už to nezvrátí.
Když tvrdíte že PostgreSQL se složitostí rovná Oracle, kterých oblastí se to týká? Já totiž o Oracle něco málo vím (i když spíš z vývojářského pohledu ale i o administraci), a většinou mi PostgreSQL přijde daleko jednodušší a konzistentní. Je to dáno i tím že Oracle má prostě víc různých fičurek které se musí (resp. mohou) nějak konfigurovat.
Rozhodně si nemyslím že by si „PostgreSQL hrála na důležitou“ – můj dojem je že je kladen velký důraz na to aby to všechno bylo uděláno „správně“ což bohužel třeba u té MySQL občas neplatí.
Co se týká podpory Windows, tak PostgreSQL už od počátku byl Unix-based projekt bez nějakých velkých ambicí prorážet na jiné platformě, a přiznávám že mi to tak celkem vyhovuje. Omezuje to potenciální uživatele – částečně asi ano, protože si musí zajistit stroj s daným systémem, ale v době virtualizace to asi není až takový problém. I když je fakt že to představuje určitý administrační overhead pokud jinak mají jenom Windows mašiny.
Co se týká rozšíření různých db na webhostinzích – on je to takový začarovaný kruh. Začínající programátor chce nějakou jednoduchou databázi, aby si mohl na webu udělat nějakou minimaplikaci – webhosting podporuje MySQL, protože ono je to triviální na instalaci a většině to tak nějak stačí. Programátor začne používat MySQL, naučí se v tom, pro jeho účely mu to stačí (resp. kašle na to co to neumí), a používá to pro případné další projekty. To že mu to vlastně nestačí, že by chtěl pořádnou recovery apod. zjistí většinou až ve chvíli kdy se to nějak pokazí.
Navíc hostingů podporujících PostgreSQL je (alespoň v Čechách) minimum, a většinou to příliš neumí. Jenomže je ke zlepšení nic nenutí, protože zákazníkům „stačí“ MySQL.
Souhlasím že hodně staré verze (6.x a částečně 7.x) byly docela chybové, ale od řady 8.x je to naprosto o něčem jiném.
Každopádně rád bych slyšel nějaký konkrétní příklad kdy nebo v jakém ohledu se vývojový tým „choval jako idioti“ – nejsem sice vývojář PostgreSQL ale konference sleduji a nic takového jsem nezaznamenal. Sem tam se sice objeví nějaká obsáhlejší diskuse nad zamítnutými featurami, ale důvody zamítnutí jsou vesměs velmi racionální.
Hodne veci nema. Priklad postgresql nedava moznost vyberu background databaze. Tedy zpusob jak budou data ulozena. Dalsi velkou nevyhodou je ze u postgresu je problem s poctem soucasne prihlasenych uzivatelu. Nevim jestli jste ho nekdy nasazoval pro treba vice nez 200 domen. Pak byste daval pouze jeden pristup jednomu. Ale co treba 1000 domen. To uz poradne neudelate. Dalo by se pokracovat i dal. Ale toto je to proc je mysql na treba hostingu tak oblibena. Postgresem proste nahradit nejde.
Btw, clustering, obousmerna replikace. To nema postgres vubec vyresene.
My sme ho nasadzovali len ako backend k nasim aplikaciam radovo 25–100 connectov z Javy cez connection pool. Nerozumiem dobre kde je problem, nemozte vytvorit viac DB na roznych portoch a davat tam vzdy max 200 connectov?
Co sa tyka clusteringu a replikacie:
http://wiki.postgresql.org/…tion_Pooling
Pre mna ale uvazovat o clusteringu a replikacii nad databazou v ktorej nefunguju poriadne ani transakcie a recovery je uplne smiesne (a dufam ze vam doslo ze hovorim o MySQL).
Já tyhle třenice MySQL vs. PostgreSQL nemám zrovna v lásce, ale tak pěkně popořadě:
1) Možnost výběru storage engine v PostgreSQL kdysi dávno byla, ale upustilo se od toho protože to bylo zoufale neefektivní – než spousta různých nedodělaných storage enginů (jako v MySQL), to radši jeden skutečně promyšlený a dotažený.
BTW můžete si v MySQL zvolit storage engine pro systémové katalogy? Nemůžete, pořád je to jen MyISAM, což je u tak kritické části databáze poněkud nemilé. Nemyslíte?
2) Nerozumím tomu „pořádně neuděláte“ ohledně počtu connections. Resp. vy si samozřejmě v postgresql.conf můžete nastavit max_connections třeba na 10.000, ale otázka je k čemu vám to bude – asi se nedá očekávat že všech 10000 uživatelů může efektivně pracovat současně.
3) Ad clustering a obousměrná replikace – ano, to v PostgreSQL skutečně není. Ale pracuje se na tom a znám minimum případů které to skutečně potřebují. Nicméně např. v 8.5 bude hot-standby, což je velký krok kupředu.
Ještě mne napadá – na podzimní PostgreSQL konferenci se rozdávaly USB klíčenky od EnterpriseDB (komerční klon PostgreSQL), Nahráno tam bylo pár reklamních dokumentů od EnterpriseDB, a jeden z nich se zabýval právě srovnáním PostgreSQL (resp. EnterpriseDB) a MySQL.
Dostupné je to i na netu – http://www.enterprisedb.com/…itepapers.do (cca v polovině stránky je PostgreSQL vs MySQL).
Jasně, je nutno to brát s rezervou – přeci jenom je to propagační materiál, ale žádné lži tam nejsou a je to pěkné stručné shrnutí problematiky.
No, ono jak se to vezme …
Technologicky to konkurence určitě není – tam je Oracle o několik kategorií jinde, ať už s ohledem na základní vlastnosti nebo možnosti dalších balíčků (statspack, RAC, …).
Cenově a fakticky ale ano, protože spousta firem používá Oracle jenom jako „fancy excel“ tj. oni jsou rádi že „mají Oracle“ ale v podstatě používají jen minimum vlastností které odlišují Oracle od MySQL. A až přijdou na to že tím můžou ušetřit hodně $$$ tak to Oracle bude mít těžší. A s ohledem na krizi se všichni snaží „cutovat costy“ úplně všude, IT nevýjimaje.
Hlavně jde o to, proč MySQL prodával, když chce zasahovat do dalšího směřování projektu.
> Co take ma MySQL co PostgreSQL nema?
MySQL má oproti PostgreSQL obchodní značku, kterou zná kde kdo. To se v OSS často podceňuje, protože to vývojáře nezajímá. Ale pro úspěch projektu je to zásadní věc. Ale souhlasím s tím, že když MySQL skončí, tak se použije/vytvoří něco jiného a život jde dál. Prostě je to konkurenční boj a tam žádná nostalgie ani city nemají co dělat.
Konečně někoho napadlo, že když se o hrálo o to, která db to bude, tak PostreSQL zapomnělo, že se nehraje jen na technickém poli. Ale také o to, kdo tu vlastně bude jako první databáze.
Navíc v době, kdy se o to hrálo měla požadavky, které na hw a sw nebyly běžné. Nerad to říkám, ale polovina boje se hrála na Windows, kde PostgreSQL měla tehdy nesplnitelné požadavky pro běžného webaře (například PostreSQL běžela pouze na Windows NT, které potřebovala velmi drahý, tehdy nadprůměrný stroj a licence na NT byla drahá), takže MySQL, která fungovala na běžném hw to začala vyhrávat.
Dnes tu kdosi psal, že 4GB RAM není problém., To ano, ale DNES! Tehdy, kdy paměti v počítači měly pár MB byla situace jiná. A tak se rozšířilo MySQL a prostě se rozšířilo jako značka.
Ono je moc hezké, že třeba Tomáš Vondra tu argumentuje tím, co má PosgtreSQL dnes, ale blahosklonně zapomíná, že se tento boj hrál v minulosti, kde PostgreSQL dělala vše pro to, aby prohrála s co největším propadem a samozřejmě se jí prohrát podařilo.
A získat zpět pozice je asi stejné, jako když toužíte po nádherné holce (která Vás chce) a máte nosánek nahoru, že jí můžete mít kdykoli chcete. A najednou Vás předběhne chlápek, který s ní bude mít 4 děti a bude miliardář. A zkuste si teď tu ženu získat zpět! Minimální šance. A tak je to s PostgreSQL. Mohla dobýt svět, ale měla v rozhodující bitvě v minulosti nosánek nahoru. A teď už jí skoro nikdo nechce.
Je irelevatní, jaká je PostgreSQL dnes, už je jí to houby platné. Tečka.
Eh? To zní jako kdybyste v minulosti zvolil na nějaký projekt MySQL a ze svého špatného rozhodnutí obviňujete PostgreSQL, protože její vývojáři vždy sázeli více na kvalitu než na propagaci.
Vzpamatujte se, to není otázka soupeření mezi A a B, tady nejsou žádní vítězové a poražení. Někdo prostě používá MySQL, někdo PostgreSQL, někdo třeba Oracle. Vždyť je to jedno :-)
Ano, já jsem argumentoval dnešním stavem protože to prostě dává smysl. Ale PostgreSQL používám někdy od roku 2002/2003, a už tehdy jsme pro projekty volili PostgreSQL přes MySQL (a stávající jsme postupně portovali). Protože to prostě už tehdy dávalo smysl a dodnes toho rozhodnutí naprosto nelituji!
Ale pokud byste se chtěl podívat do minulosti, tak prosím – asi se shodneme že základní vlastnosti každého produktu jsou určeny už na jeho počátku a velmi těžko se postupně mění. MySQL původně vznikla jako nástroj pro generování reportů, tj. databáze určená pro malý počet uživatelů pracující s víceméně read-only daty a provádějící relativně jednoduché dotazy – z toho plynou problémy které dnes má. PostgreSQL původně vznikl jako akademický projekt jehož cílem byla víceuživatelská a velmi spolehlivá relační databáze, ale je pravda že akademické prostředí a víceméně experimentální povaha má taky svoje důsledky.
A k těm 4GB paměti – já jsem rozhodně nepsal že PostgreSQL vyžaduje 4GB paměti, to si prosím můj příspěvek přečtěte znovu. Já jsem psal že stěžovat si že aplikace použijí volnou paměť je logický nesmysl. protože paměť je k tomu aby se používala. PostgreSQL se dá samozřejmě provozovat s daleko menšími nároky na paměť a efektivně se dá se to velmi efektivně řídit přes parametry v konfiguračním souboru.
Ale aby bylo jasno – já proti MySQL v podstatě nic nemám, resp. moje výhrady k ní jsou čistě racionální a nejsem žádný „anti-MySQL fanatik“ a připouštím že jsou oblasti ve kterých je lepší než PostgreSQL. Prostě je znát že MySQL je obchodní značka s marketingem, vlastním supportem apod. zatímco PostgreSQL je primárně vývojářská komunita (byť existují na něm založené komerční produkty typu EnterpriseDB).
Trochu s nadsazkou:
MySQL se asi porad drzi, protoze to pouziva spousta bastlicu a mysql ma ruzne nestandardni featury odporujici standardum. Kdyz pak takovej bastlic nahodou prijde k normalni databazi, tak mu ty jeho dotazy nefunguji a vrati se k Parodii.
Mysql je taky za urcitych okolnosti (alespon se to tvrdi) rychlejsi nez ostatni. No aby nebyla, kdyz to nedela polovinu veci, co delaji normalni databaze. A tak se pouziva treba u tech webu delanejch doma na kolene, kde autorum zrejme nevadi, kdyz jim vypadne spojeni s db v polovine vykonavani prikazu a dostane se to do nekonzistnentniho stavu.
Trcohu vazneji:
Prijde mi, ze o mysql se proste vic mluvi nez o konkurentech a dela v tom vic lidi, nabizi to snad kazdy free web hosting. Takze kdyz nekdo zacina, tak zacne na mysql a php. Bohuzel – prijde mi, ze spousta lidi si tim akorat vypestuje ruzne spatne navyky a pak se nestaci divit, kdyz prejde k nejake normalni databazi.
Jedna z věcí, kterou MySQL má a PostgreSQL ne – rozšíření na serverech nabízejících (free) hosting. I když se PosgreSQL na takových serverech občas objevuje, rozšíření MySQL je zde mnohem výraznější. PostgreSQL jsem si oblíbil už v roce 2000, kdy jsem na něj poprvé narazil při první instalaci FreeBSD (stejně jako jsem si oblíbil FreeBSD), ale bohužel není tak oblíbený u poskytovatelů některých služeb.
Ano, ale to je takový začarovaný kruh – hosting nabízí jen MySQL – zákazníci se spokojí s MySQL – hosting nemá důvod poskytovat něco jiného než MySQL – hosting nabízí jen MySQL – …
Spíš než vlastnosti těch databází tam hraje roli tahle setrvačnost. Řešení je jediné – nespokojit se s MySQL, a když už se nenajde vhodný tuzemský hosting tak hledat v zahraničí. Dnes už to naštěstí není problém.
Pani googlujte PBXT, a potom si polozte otazku, ci MySQL ako DB Server ma vyznam pre vyvoj DB. Ano oddelenie storage engines je potrebne pre jednoduchy navrh a vyvoj DB ako celku. Pokial by sme nemali MySQL, ktora to umoznuje alebo obdobnu DB, tak by vyvoj v DB svete nebol taky rychly.
Treba sa pozriet na to, ako MySQL prispieva, nie ci je idealna pre vsetky aplikacie. Google tiez vyuziva MySQL resp. ich orezany variant, ze by naozaj nevedli preco?
Preco oddeleny storage je POTREBNY pre jendoduchy navrh DB ak je vsetok zdrojovy kod open (pochopil by som ak by server bol proprietarny a umoznoval storage plugin)?
Cim prosim vas prispela MySQL k vyvoju DB? Prisla s niecim zaujimavym, novym?
MySQL je fajn baza a nech si ju pouziva kazdy na co chce, ale naco je tato peticia?
No moment – jedna věc je logické „oddělení“ storage engine s cílem zjednodušit vývoj (což je v PostgreSQL), druhá věc je vytvoření veřejného API přes které se dají doplňovat další a další storage engines (což je v MySQL).
Ale skutečně mi není jasné jak tímto oddělením přispívá MySQL k rychlosti vývoje DB technologií … Netvrdím že masová dostupnost MySQL nepřispívá k rozvoji DB, ale se kterými pojmy nebo technologiemi MySQL přišla? Kromě „automagic“ funkcionality, pochopitelně.
Uvedomte si preco, storage engines su vyvijane pre MySQL, je to prave tym striktnym api. Je komplikovane nieco taketo vyvijat pre Postgres. Pozrite si prave to PBXT, myslite ze to je design, ktory sa nemoze zasadne hodit? No ja viem o niektorych oblastiach, kde sa to z hladiska postupov vyuziva. Ide zvycajne o bezpecnost, ktora v minulosti a v podstate este niekde aj v pritomnosti vyuziva magnetoopticke disky preto, aby sa nedali udaje mazat. Vyuzivali sa rozne neDB systemy, lebo riesenie nebolo. A vyzera to tak, ze coskoro taketo riesenie bude a v tejto oblasti bude nasadzovane, lebo nema konkurencie. Podla prvotnych vysledkov je performance viac nez prijatelna.
Trochu se točíme v kruhu. Jsem názoru že tvrzení „výhodou MySQL je podpora několika storage enginů a API pro jednoduché doplnění dalšího“ je nesmysl, protože důsledkem toho je že enginů je sice několik, ale v podstatě žádný není dotažený.
Mně osobně se více zamlouvá filozofie PostgreSQL, podle které je lepší mít jeden storage engine, ale zase lépe vymyšlený a vyladěný. Což ale nemusí nutně znamenat že ten storage engine je nenávratně zadrátován a nelze ho s přiměřenou snahou nahradit – cituji z Wikipedie (http://en.wikipedia.org/wiki/PostgreSQL):
„Yahoo! for web user behavioral analysis, storing 2 petabytes and claimed to be the largest data warehouse using a heavily modified version of PostgreSQL with an entirely different column-based storage engine and different query processing layer. While for performance, storage, and query purposes the database bears little resemblance to PostgreSQL, the front-end maintains compatibility so that Yahoo can use many off-the-shelf tools already written to interact with PostgreSQL“
Jinými slovy Yahoo vzalo PostgreSQL, totálně překopalo storage a query processing, a ukládá do toho 2 PB dat o uživatelích.
Lenze taketo prekopanie si nemozu dopriat mensie firmy, ktore dodavaju ucelene riesenia. Je to neskutocne jednoduchsie napasovat storage engine cez MySQL API ako prekopavat PostgreSQL. Skus si to pozriet v zdrojakoch. Neexistuje idealny storage engine, pre vsetky podmienky riesenia. Moznost zapisu jedineho zaznamu je velmi zvlastna poziadavka, ale je to legitimna poziadavka pri istych situaciach. Taktiez performance pri roznych poziadavkach na DB je rozna v storage engine-och. Tu su moznosti MySQL velkym pozitivom.
Som si vedomy a Yahoo tiez, ze pri istych typoch queries je PostgreSQL na tom omnoho lepsie. Rovnako vsak isty typ queries MySQL zvlada velmi dobre.
Nekonecne hadky PostgreSQL vs. MySQL su uplne bezpredmetne. Ich schopnosti su dane prioritami vyvoja oboch DB rieseni. Obe si musia vediet najst svoje miesto. Kazdy sa zameriava na nieco ine. Zatial plati, ze obe si toto miesto nachadzaju. Ked to tak nebude, jedna DB tu nebude.
Nie je to nic nezvycajne v DB svete.
Ja tvrdim, ze MySQL do istych prostredi je spravnym rozhodnutim. Rovnako do istych prostredi je PostgreSQL. Viem o prostrediach kde by som nic okrem Oracle nenasadzoval. A mnoho prostredi je vysostne Microsoft friendly…
Je vsak jedno prostredie kde DB doteraz nemohlo byt nasadzovane a MySQL toto pole obsadzuje. Rovnako mnohe spolocnosti si robia performance study a vyuzivaju rozne DB v roznych prostrediach.
„Lenze taketo prekopanie si nemozu dopriat mensie firmy, ktore dodavaju ucelene riesenia.“ – nechapu. Pokud jsem firma, co dodava ucelene reseni pro zakaznika, pak mam bud dost penez na vyvoj libovolne specialni technologie nebo neschopne vedeni. Jestlize by se objevil duvod pro implementaci ultra-special-vyjimecneho storage enginu, pak necht zakaznik plati – i programator ma doma par hladovych krku.
MySQL exceluje v dotazech typu „select * from customers“, nicmene takove dotazy jsou pouzivane jen bastlici v jednoduchych aplikacich typu obchod se zradlem pro psy. PostgreSQL je naopak do urcite miry kompatibilni s Oracle (PL/SQL), coz je vyhoda jak hrom. Nicmene na obranu MySQL musim dodat, ze se mi pred lety, kdyz jsem jel na WinXP, PostgreSQL nepodarilo nainstalovat s FAT32, instalator mi proste rekl, ze ten FS neni dost dobry (WTF?).
Souhlasim, ze nejdulezitejsi je moznost vyberu. Tahle diskuse se ale oklonila od zpravicky – jestli chce komunita pokracovat ve vyvoji MySQL, tak prosim, ja jim budu drzet palce. Ale ten humbuk s fuzi Oracle/SUN mi pripada dost hystericky.
Řada vývojářů v MySQL nepovažuje storage engines právě za šťastný nápad – pokud sledujete vývoj a blogy v „Planet MySQL“. Díky tomu dodnes není pro MySQL k dispozici jediný bezproblémový univerzální storage. InnoDB je kvalitní, ale nepodporováno fulltextem, MyIsam neposkytuje konzistenci – Falcon a MariaDB jsou v dlouhodobém beta stadiu.
JJ, Mel jsem moznost mluvit s jednim zamestnancem MySQL a on rikal ze implementovat referencni integritu mezi ruznymi storage engines je peklo a ze to nikdy nemuze poradne fungovat. Pred dvema lety „neoficialne“ prozradil, ze pracuji na novem skvelem hyper-super enginu ktery vsechny ostatni nahradi – jak to dopadlo netusim.
Komu by zánik mysql vadil? Vždyť je tady Postgresql, která je dnes již stejně rychlá jako MySQL a narozdíl od MySQL je to opravdová SQL databáze.
Dnešní MySQL není ani ryba ani rak.. Původní koncept malé a rychlé databáze už úplně neplatí (tady je lepší použít sqllite) a paletu SQL a funkcionalit se vyspělých databází nedosahuje… Subselecty napriklad jsou uplne mimo … apod