Poohlizel jsem se po databazich se schopnosti synchr.replikace uz pred rokem a jestlize si pridate dalsi podminky – stabilni knihovny rozhrani, dostupne c++ headers a linux, nemate prakticky co nasadit…
Zkoumali jsme Oracle – pekne nastroje pro vyvoj, nadherna databaze, clustery, ale kdyz prislo na OCI resp. OCCI, dostavate slabe misto, ktere neni jak obejit – problemy s ABI kompatibilitou, nekdy vam prozmenu spadne aplikace na tom, ze databaze jednou za cas vyhodi hlasku pro zmenu hesla a OCI nepodporuje kod vyslany databazi..
Kdyz prislo na postgresql, skoncili jsme to po dvou dnech ve stavu, kdy replikace resena pomoci pgpool prestavala byt stabilni a narusila se konzistence obou databazi.
Nakonec to tedy vyhralo technologicky nejslabsi reseni – mysql. Kod sice obsahuje neopravene bugy stare 4–5let, syntaxe ulozeneho SQL je oproti Oracle archaicka, ulozene procedury jsou podporovany prakticky jen od verze 5, navic existuje pouze jediny pouzitelny nastroj pro vyvoj a debugovani, jenze jakmile prijde rec na propojeni se systemem a moznosti clusteru, tak jako jedina nabizi potrebnou stabilitu.
Zajimal by me vas nazor…
Neckermann se pro svuj webshop (v predvanocnich nakupnich orgiich 3500 hits/sec) take rozhodl pro mysql cluster. Financne i vykonove spicka. Je treba ovsem rici, ze na implementaci se podilela mysql sama s nekolika vyvojari, kteri realizovali jakasi vylepseni, ktere nejsou v beznem kodu.
Rad bych se zeptal, co si mam predstvit pod: ‚syntaxe ulozeneho SQL je oproti Oracle archaicka‘
Podivejte se na MySQL 5.4. Mela by se daleko lepe chovat na viceprocesorovych systemech. Odstranili take nejaka uzka hrdla pri praci s filesystemem. Obecne by mel jit vykon na slusnem HW hodne nahoru. De facto vyvojari z MySQL zapracovali do produkcni db google patche a nejake patche od Percony. Bohuzel se stabilitou verze 5.1 natoz 5.4 je to zatim tak spatne (spousta, pro me pomerne fatalnich bugu, jako necekane prepnuti transakcniho modu read commited na repeatable read apod.), ze bych to do produkce zatim nenasazoval.
Kdyz jsem cast systemu vyvijel puvodne v Oracle, zvyknul jsem si na pohodli. To pohodli vychazelo jednak ze syntaxe (to je ciste subjektivni zalezitost – musim rici, ze mi PL/SQL vyhovovalo vice nez podpora ANSI/ISO standardu od mysql), druhy duvod byl pragmatictejsi a tykal se podpory spravy chyb a vyjimek v mysql. Oproti moznostem Oracle je mysql 5.1 stredoveka sudlice, v 5.4 jsou jiz sice pridany signaly (uprimne zatim jsem nemel cas procist k tomu vice), ale presto mi prijde zpusob zapisu nepohodlny. Jestlize chcete primo v databazove ulozene logice vytvorit komplexni vrstvu a nejsou k dispozici funkce zjistujici napr. kod posledni chyby nebo jeji textovy popis, stava se debugovani takoveho systemu spis slepeckou alchymii (mate moznost vytvorit handlery na konkretni kody chyb, ale vzdy je potreba zajistit ohlidani celeho zbyleho stavoveho prostoru a tam uz neni k dispozici prostredek pro blizsi identifikaci selhani). Vse je samozrejme mozne kombinovat s prostredky identifikace chyb v databazovem rozhrani aplikace (pouzivam mysql++), to uz ale neni ciste reseni dusledky nekdy boli..
Nejsem si úplně jistý s implementací SQL/PSM v MySQL. Samo SQL/PSM má řešení výjimek o něco silnější než PL/SQL v Oraclu – můžete zachytit jak obecnou výjimku (případně varování), tak třídu chyb i explicitně určenou chybu. Koncept handlerů je docela netypický, ale opět je mnohem silnější než EXCEPTION v PL/SQL. Analogie CONTINUE handleru v PL/SQL chybí. viz http://www.postgres.cz/…%99%C3%ADkaz
Myslím si, že zachytávání chyb je v MySQL úplné, pouze do 5.4 chyběl příkaz SIGNAL. Nechápu, že něco tak základního z původní implementace vypadlo. Na druhou stranu – u MySQL nebylo asi moc lidí, kteří by rozuměli uloženým procedurám.
Presne tak, jak ja bych rad pouzival PostgreSQL, kdyby umela replikaci tak jednoduse a stabilne jako MySQL. Ty 4 roky stare bugy napriklad ve zpracovani subselectu me na MySQL taky toci. Replikaci v PostgreSQL slibuji od verze 8.4 jako jeji soucast. To by mohlo Postgresu hodne pomoct. Z MySQL mam posledni dobu dost rozporuplne pocity, i kdyz vykonove na zakladni nekomplexni dotazy nema konkurenci a replikaci rozbeha i laik behem par minut.