V mé praxi databázového inženýra narážím často na ten samý problém. „Máš pravdu chtělo by to změnit, ale nemůžeme to udělat protože …“ A následuje série důvodů objektivních i těch subjektivních. Když se v databází se realizuje něco, co pak je nutno změnit a vy to přesto změnit nemůžete, tak těmto věcem v databázi a vůbec v programování říkám Bludné balvany.
Možná to znáte. Jedete krásnou rovnou krajinou s mírnými kopečky. A pojednou se objeví obrovský balvan a vy žasnete kde se tam v té krajině vzal. Chcete jej pohnout, nebo zničit, aby nenarušil ráz krajiny. Ale on je příliš veliký a vy příliš slabý, abyste ten balvan odstranily, nebo s ním alespoň pohnuly. A pak si v duchu kladete pouze otázku. Je toto vůbec možné? A nezůstává Vám nic jiné než tento bludný balvan obejít.
I ve virtuální světe se vyskytují bludné balvany. Na rozdíl od těch reálných nejsou vidět. Jsou zakopané ve směsi kódu a dat. Ačkoliv nejsou vidět, víte o nich, protože kdykoliv na ne narazíte a chcete s nimi pohnout nejde to, nebo velice těžko. To proto, že jsou „zadrátované“ na množství různých místech kódu.
Jednoduše nejdříve musí být zásobárna kamene. Ty naše pocházejí ze Skandinávie. Ty virtuální z nutnosti provést určitou funkčnost. Pak musí být nosič, který urve kámen z masívu. Tím je v přírodě ledovec. Ve virtuálním světě vývojář s ad-hoc řešením. Jenomže ledovec s kamenem nehne, dokud nemá pohon a tím je sníh a chladné počasí, který živý ledovec a ten roste a posouvá se i s balvanem krajinou. Ve virtuálním světe je chlad nahrazený termíny, nebo snahou dokončit práci co nejdříve. Tím sněhem jsou kolegové, kteří se chovají pasívně, nebo nemají čas se problémem zabývat a diskutovat o něm. A tak se bludný balvan posouvá krajinou a ten virtuální kódem, kde se „zadrátuje“ na co nejvíce místech. V realitě přijde oteplení a balvan zůstane tam, kde jej ledovec zanechal.
Někdy to jde velice těžko, ale pár jednoduchých pravidel jsem z praxe odpozoroval:
Je velice jednoduché navrhnout databázovou strukturu a napojit přímo na ní aplikaci, která čte a zapisuje data přímo do tabulek databáze. Nevýhodou tohoto řešení je, že aplikace se až příliš spoléhá na existující databázové objekty. Řešením je položit mezi aplikací a databázi rozhraní (interface). A je jedno jestli databázové (view, funkce), nebo aplikační.
Jednak tím urychlíte použití SQL jazyka pro různé výběry a manipulace s daty. A jednak přestanete být závislý na aplikaci, přes kterou tečou data. Když připojíte k takové databázi jinou aplikaci, tak se Vám adapter na data bude psát mnohem pohodlněji.
Existuje takzvaná salámová metoda. Kdy začnete řešit pouze část databáze, to, co Vás nejvíce trápí až do zadrátovaní do aplikace. Pak si zase ukrojíte další kolečko ze salámu, a to se pokusíte napasovat do existující databáze. Někdy se to povede jednoduše a někdy, když se v databázi vyrojí bludné balvany těžce.
Např:
Pěkný článek,
za mě pár postřehů
-úplně nejdůležitější je bod 1, který je zároveň téměř nemožné zavést již v existující aplikaci. Frontend by například o databázových objektech neměl vědět vůbec nic a všechno si brát např přes view. Stejně tak pokud píšete větší aplikaci a je potřeba mít několik modulů tak i volání mezi moduly se musí dělat přes stejný interface
-odkazovat se v kódu na číslo řádku v číselníku mi nepřijde příliš čitelné, používáme spíš unique VARCHAR(6) sloupec ZKRATKA, který se v kódu lépe čte a lze ho použít např v dokumentaci či nastavení
-servisní sloupec používáme ještě navíc kdo a kdy záznam vytvořil
Díky za článek, už jsem myslel že databázový inženýr je vymírající druh..
tomh
SQL Developer
Přečteno 31 915×
Přečteno 19 529×
Přečteno 19 483×
Přečteno 17 225×
Přečteno 16 211×