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.