pátek 18. července 2014

ORM skrývá pravou sílu relačních db

Úvod

Přestoupil jsem z dobře zajeté staré firmy pracují tradičním způsobem let devadesátých  (Oracle Forms a RDB, částečně Java1.4 či 5), do mladé, agilnější firmy používající modernější a více sexy nástroje (např. Java7, OSGi, Vaadin...).

Zde bylo krásně vidět, jak se posouvají trendy ve vývoji aplikací a jaký je rozdíl v přemýšlení mladých a starších vývojářů.

Jedním takovým ukázkovým příkladem je použití objektově relačního mapování (ORM):
  • Ve firmě "ze staré školy" se kladl veliký důraz na relační databázi. Systémy byly obvykle psané v PL\SQL a v Javě tak, aby obě technologie byly v symbióze - Náročné datové operace se soustředily do databáze, uživatelské rozhraní do Javy. ORM byl "pouze" druhotný nástroj pro snažší propojení těchto technologií.
  • Naproti tomu nadšení vývojáři v mladé firmě všechny úlohy systému soustředí jen a jen do Javy. ORM se stalo středobodem datové struktury a relační databáze je pouze skrytým úložištěm.
Nemusím ani naznačovat, že v produkčním prostředí se s rostoucími daty začaly vznikat vážné výkonnostní problémy způsobené chybějícími indexy, neefektivními dotazy a někdy i nevhodnými  programátorskými postupy.

A právě to mě přivedlo k zamyšlení se nad příčinou vzniku celé věci:

Automatickým přidáním ORM vrstvy do systému se vývojáři velice zjednodušil svět. Vytvořit a udržovat datový model aplikace se zmenšil na pár anotací v POJO objektu, kde všechno funguje snadno a automaticky. K vývoji stačí několik málo jednoduchých metod typu findByXXX a systém (v laboratorních podmínkách) běží jako po másle. Dochází k jakémusi "přeskočení" principů relační databáze a vkročení rovnou do světa Javy. Pro vývojáře je pohodlnější iterovat a filtrovat nad výsledkem dotazu než napsat takový dotaz, aby dostal do Javy jen minimální potřebné záznamy.

Právě proto jsem se rozhodl v naší firmě provést menší osvětu v podobě školní s ukázkami a předvést i méně zkušeným kolegům, co všechno se dá v relační databázi dělat a k čemu vlastně relační db původně sloužily. 

Výsledkem mého snažení se stala zajímavá sada jednoduchých ukázek, ze kterých bych rád vytvořil krátký seriál.

Jednotlivá témata:

  1. Relace a teorie relačních databází
  2. Tabulka dual
  3. Práce s časem
  4. Hrací karty
  5. Analytické funkce
  6. Rekurze v SQL