Tady se zastanu NoSQL databází - osobně mám větší pifku na lidi, kteří prosazují ORMka než na ty, kteří propagují NoSQL - resp. znám se s Karlem a on je fakt člověk, který přemýšlí.
Relační databáze jsou navržené a řešené tak aby Vám maximálně využili hw při hromadných operacích, aby garantovaly integritu dat, aby umožňovaly snadné dotazování. Tohle umí relační SQL db perfektně a snesou velkou zátěž. Vnitropodnikové systémy jsou extrémně statická záležitost - struktura dat se mění minimálně, nasazení změn je záležitost v měsících než ve dnech.
Renesance NoSQL databází z loňského roku byla způsobena nasazením relačních db v rozsahu a podmínkách pro které se absolutně nehodí. A ještě se tu bavíme o MySQL, která ty své slabší stránky (vycházející z té relační podstaty) má extrémní. Provozovat MySQL ve stovkách instancí je fakt úlet. Já jsem s NoSQL databázemi pracoval od roku 2001 - byly to dokumentační databáze - a pro určitý způsob nasazení při respektování prošlapaných cest je to perfektní nástroj - ale nesmíte je moc přiohýbat - nesmíte chtít komplexní analýzy dat, nesmíte chtít řešit komplexní vztahy mezi dokumenty, nesmíte chtít řešit hromadné operace. Databáze typu CouchDB tu jsou už relativně dlouho - jelikož data jsou v blobu, tak mohu napsat funkce které pracují s dokumentem verze1, verze2, ... Při malém počtu verzí nemusím řešit ALTER tabulek, což při stovkách ještě navíc replikovaných serverů je noční můra. Zase hromadné operace jsou pomalejší, neboť musím dynamicky zjišťovat, co jakou verzi ten či onen BLOB obsahuje. Navíc vzhledem k izolovanosti záznamu v NoSQL db (vše je v jednom BLOBu) jsou o dost jednodušší pravidla ohledně izolace transakcí, NoSQL db se také snáze replikuje - což je další výhoda při masivní paralelizaci. Jinak řada dokumentačních databází běžela interně nad SQL databází - smyslem bylo dodávat hotová krabicová řešení.
NoSQL je samozřejmě módní záležitost, která SQL vůbec neohrozí - už jen z toho důvodu, že je SQL univerzálnější (až na http komunikaci dokáži v PostgreSQL simulovat CouchDB, což CouchDB nedokáže) Na druhou stranu své místo určitě mají - tím, že vycházejí z trochu jiných paradigmat než relační db, tak umožňují lépe rozkládat zátěž než klasické databáze - ale bavíme se o aplikacích, které, jak si myslím, v ČR nikdo neprovozuje. Jinak každý nový nebo znovuobjevený produkt přitáhne pozornost - a přitáhne lidi, kterým nevyhovuje stávající technologie, z toho či jiného důvodu, a po půl roce jich většina odpadne protože zjistí, že jim nevyhovuje také, z několika se stanou zapálení fandové, z několika evangelisti, někteří u toho produktu zůstanou, protože jim sedne a vyhovuje. Rozhodně NoSQL databáze nejsou těmi databázemi, kde by se nemuselo přemýšlet - pokud chcete mít rozumně rychlou databázi a přehled o datech, tak dobrý návrh musíte mít i v případě NoSQL.