Martin Štrunc
5.2.2013

AspectWorks RADAR – leden 2013

Ve čtvrtek 24.1.2012 se konalo druhé setkání vývojářů z naší firmy s názvem AspectWorks RADAR tentokrát v čistě programátorském prostředí pizzerie Donna na Karlově náměstí v Praze. Tématem RADARu byla Datová úložiště. Chtěli jsme si prodiskutovat alternativní technologie k relačním databázím a také probrat alternativu k MySQL v podobě jiné relační databáze, která by byla volně použitelná pro komerční účely.

Projekty v HB

V první přednášce odpoledne nás Čeči seznámil s vývojovými projekty a používanými technologiemi u našeho významného zákazníka, kterým je Hypoteční banka. HB si vyvíjí informační systémy sama, včetně hlavního bankovního systému. Vývoj probíhá již řadu let a proto se na těchto projektech nasbíralo mnoho použitých technologií na různých vrstvách aplikace a tak byly informace o tom, jak v takovém prostředí vyvíjet a udržovat software velmi zajímavé a přínosné.

MongoDB a úvod do NoSQL

Následovala moje prezentace o MongoDB a NoSQL databázích, jejímž cílem bylo udělat si přehled o nových technologiích a možnostech v oblasti datových úložišť. V první polovině prezentace jsme obecně probírali typy a vlastnosti různých NoSQL databází a v druhé části jsme se zaměřili na dokumentově orientovanou databázi MongoDB.

Diskuse: náhrada za MySQL

Prvním tématem v závěrečné diskusi byly stávající možnosti, problémy a také alternativy k relační databázi MySQL. Rizika, která v souvislosti s MySQL vnímáme:

  • špatné zkušenosti s replikací
  • občasné problémy s unicodem (konkrétně 4 bytovým UTF-8)
  • Oracle a jeho politika ohledně MySQL

Jako náhrada za MySQL nám vyšly dvě možnosti, jednak poměrně nová MariaDB, což je relační databáze z MySQL vycházející a její data jsou s MySQL binárně kompatibilní. Druhou možností by mohla být databáze PostgreSQL, která se těší velké popularitě s velkou komunitou uživatelů a vývojářů.

V případě MariaDB jsou výhody jednoznačně v tom, že by měla MySQL databázi nahradit bez komplikací, pouhou výměnou databázového stroje nad databázovými soubory. Také tím částečně eliminujeme vliv Oracle a jeho politiky na námi preferovanou relační databázi. Obzvlášť když se mnoho vývojářů k MariaDB právě ze stejného důvodu přesunulo z původního MySQL projektu po jeho akvizici Oraclem. Také existuje několik velkých projektů, které na MariaDB přešli nebo přecházejí, např. Mozilla nebo Wikipedia. Na druhé straně nám to nevyřeší zbývající problémy a navíc existuje ne úplně malé riziko, že Oracle bude nepřímo ovlivňovat i MariaDB, např. tříštěním komunity nebo dalším binárně nekompatibilním vývojem MySQL. Co se týká PostgreSQL, tam je situace maličko složitější, jako jeho největší výhodu vnímáme kompatibilitu s „plným“ Oraclem jak na úrovni SQL tak i procedurálního rozšíření PL/SQL. Nevýhodou proti MariaDB/MySQL je, že nemáme s PostgreSQL tolik zkušeností a i jeho administrace je o něco složitější.

Závěr diskuse

Shodli jsme se na tom, že ani jedna varianta, není jednoznačně lepší nebo horší, proto budeme chtít vyzkoušet obě dvě. V případě MariaDB bude test jednoduchý, náš interní produkt Orinoco běží na MySQL databázi, proto vyzkoušíme nějaké vývojové nebo testovací prostředí na MariaDB zmigrovat. Pro test PostgreSQL budeme muset počkat na vhodný projekt, tzn. aby nebyl příliš velký a zároveň jsme měli volnost ve volbě databázové platformy. Ještě několik zajímavých odkazů:

 

Diskuse: NoSQL

Část diskuse jsme věnovali i NoSQL datovým úložištím. Zatímco většina z nás má s SQL databázemi bohaté zkušenosti, v oblasti NoSQL tolik praktických použití těchto technologií nemáme. Úspěšně používáme např. Ehcache, což je key/value in-memory databáze, velice dobře integrovatelná se Springem. NoSQL databáze sledujeme již dlouho, kromě zmíněné Ehcache jsme v jednom pilotním projektu použili také BigTable, nicméně vývoj v této oblasti lze stále považovat ze velmi dynamický a každý týden můžeme číst o nových funkcích stávajících produktů, stejně jako těch úplně nových. V případě, že bychom nyní měli vyvíjet aplikaci pro cloud, byla by varianta s NoSQL datovým úložištěm jistě mezi prvními zvažovanými variantami. Konkrétni volbu bychom ale zřejmě udělat až ve fázi specifikace požadavků, podle typu aplikace. Kdybychom chtěli dokumentově orientovanou databázi, zřejmě bychom zvolili MongoDB, z důvodů výborné škálovatelnosti, bohaté funkcionality a velice kvalitní dokumentace. U sloupcově orientovaných databází by volba padla zřejmě na Cassandru nebo HBase a mezi grafovými je velmi zajímavé Neo4j. Doufáme, že se brzy objeví nějaký projekt, na kterém budeme moci NoSQL databázi využít, ať již jako primární úložiště nebo jako kombinaci různých typů úložišt v duchu Polyglot Persistence. Opět ještě několik zajímavých odkazů:

 

Příští setkání

Příště bychom si chtěli probrat Java technologie na frontendu aplikací, případně porovnat jejich výhody a nevýhody. Změníme zřejmě i formát prezentace technologií, kdy jsme vždy měli jednu dlouhou přednášku. Budeme se věnovat více tématům v několika kratších příspěvcích, tzv. lightning talks, v délce 7-15 minut, po kterých bude následovat diskuse o prezentovaných technologiích.

Vaše emailová adresa nebude zveřejněna

Komentáře

Děkujeme za váš komentář
Další