Šablonování a indexování Aleš Kutín Sekce datamanagemenetu Vývojový tým Univerzitního informačního systému Mendelova zemědělská a lesnická univerzita v Brně Výjezdní zasedání UIS Lednice, 23. – 26. 10. 2002
Obsah I Indexování a dohledávání implementace dohledávání v UIS metody indexování indexované tabulky aktualizace indexů – současný stav, problémy plánované změny zamyšlení nad metodami výběru v UIS Výjezdní zasedání UIS
Obsah II Šablonování základní principy typy atributů výhody šablonování stinné stránky aplikační pohled Výjezdní zasedání UIS
Indexování I zadání vzorku nalezení vyhovujících záznamů Implementace dohledávání v UIS zadání vzorku nalezení vyhovujících záznamů omezení výběru (práva, subjekty, období, ...) finální výběr (předvedení funkce dohledávání) Výjezdní zasedání UIS
Indexování II Implementace dohledávání v UIS zaměříme se na první krok – dohledání vyhovujících záznamů na DB úrovni požadavky: rychlost dohledání možnost zadávání různých vzorků (části slov, čísla) vyhledávání podřetězců přímo nad záznamy v databázi je pomalé (vyřazuje použití databázových indexů) možné klíče mohou být uloženy v různých tabulkách, šablonách rychlosti lze dosáhnout použitím pouze relačního operátoru ‘=‘ a tím využitím DB indexů Výjezdní zasedání UIS
Indexování III Databázový index a předpoklady jeho použití index – databázový objekt urychlující hledání, plní funkci obsahu knihy stromovitá struktura, fyzicky uložen na disku (jako tabulka) pro efektivní použití indexů musíme data patřičně připravit: předem zkonvertovat na výsledný vyhledávaný formát (v UISu velká písmena bez diakritiky) – jakékoli volání funkce nad prohledávaným sloupcem index vyřazuje předem uložit všechny možné kombinace klíčů, které po zadání uživatelem mají vést k nalezení indexované hodnoty (pak můžeme vyhledávat pomocí ‘=‘) z uvedených požadavků plyne nutnost vytvoření zvláštní datové struktury pro ukládání jednotlivých klíčů – indexovací tabulky každá jedna indexovaná položka musí mít vlastní index. tabulku Výjezdní zasedání UIS
Indexování IV Metody indexování metodou indexování rozumíme postup kterým ze vstupní zdrojové projekce obdržíme množinu 1 – n klíčů sloužících k dohledání jednoho řádku indexované tabulky zdrojová projekce – hodnota v jednom sloupci tabulky (RC), zřetězení více sloupců (jméno a příjmení), výstup DB funkce metody indexování v současnosti podporované v UIS indexování celých údajů plné podřetězcové indexování indexování podřetězců od začátku slova indexování slov (příklady různých metod přímo v DB) Výjezdní zasedání UIS
Indexování V Indexované tabulky v současnosti je indexováno celkem 8 tabulek: uživatelé uchazeči předměty pracoviště obce části obce střední školy obory na SŠ Výjezdní zasedání UIS
Indexování VI Aktualizace indexů při vkládání nových záznamů a změně stávajících je nutné přebudovat dotyčné klíče v indexovací tabulce, aby byla funkce dohledávání stále aktuální v současné implementaci se indexy aktualizují nepřímo: při změně / vložení je generován pouze záznam o změně (pomocí DB triggeru) samotné oindexování je zajišťováno externím skriptem spouštěným v určitých časových intervalech (5 minut) výhoda – generace klíčů probíhá mimo databázi – nezpomaluje ji nevýhoda – změny se projevují až po určitém časovém úseku – zvláště palčivé při nutnosti opětovného dohledání právě zadaného záznamu Výjezdní zasedání UIS
Indexování VII Plánované změny současné řešení se ukázalo dlouhodobě nevhodným – stížnosti uživatelů probíhá přesun celého procesu indexování na databázovou úroveň – tj. přímo do triggerů spouštěných DML operacemi nové řešení bude mít okamžitý účinek zpomalení bude při přidávání / změně jen jednoho nebo „mála“ řádků (typická operace přes aplikační rozhraní) zanedbatelné postup přechodu přepsání indexovacích metod z Perlu do PL/SQL nahrazení skriptu doindexuj procedurou v PKG_INDEX koncový uživatel nezaregistruje změny Výjezdní zasedání UIS
Indexování VIII Alternativy k dohledávání kromě dohledávání lze výběr řešit: rozbalovací seznamy zaškrtávací pole výhoda alternativních způsobů – nemusí se odesílat nový HTTP požadavek (znovunačtení stránky) – rychlejší zvláště při silném provozu nevýhodou je použitelnost pouze do určitého počtu záznamů (řádově stovky) – pak již nepřehledné, zpomalují načítání stránky v některých případech je volba způsobu výběru sporná zvláště u hromadných zadávání bude třeba vyvinout sofistikovanější pomůcky (kombinace obou způsobů), např. výběr s historií závislé popupy Výjezdní zasedání UIS
Šablony I Základní principy šablonování šablonovaná tabulka – běžná databázová tabulka „číselníkového“ (tj. s jednosložkovým primárním klíčem) se kterou je asociována alespoň jedna šablona šablona – v širším pohledu dvojice tabulek – šablonové a atributové, mechanismus pomocí nějž jsou některé sloupce jednoho záznamu kořenové tabulky převáděny na řádky v tabulce atributové šablonová tabulka – definice sloupců – atributů atributová tabulka – vlastní úložiště dat mutování – rozšíření celé struktury o další rozměr typy mutování přes mutační tabulku (jazyky, ukončení předmětu) obecné Výjezdní zasedání UIS
Šablony II Typy atributů fyzicky je hodnota uložena v atributové tabulce vždy jako textové pole pro odlišení na aplikační úrovni (kontroly, zobrazení) vypracován systém typů atributů: obecné (řetězec, číslo, logická hodnota) odkazy do číselníků speciální (s dodatečnou kontrolou, formátováním – telefonní číslo) LARGE – dlouhé texty, binární data (fotka) kromě typu obsahuje definice každého atributu údaje povinný – aplikační kontrola vyplnění vícenásobný – možnost zadání více než jedné hodnoty práva pro čtení a zápis subjekt atributu Výjezdní zasedání UIS
Šablony III Výhody použití šablon obrovská flexibilita – přidání (i dočasné) atributu do šablony vyžaduje pouze přidání jednoho řádku do šablonové tabulky výhodnější z hlediska fyzického ukládání (nevznikají mnohasloupcové tabulky s většinou položek NULL) možnost uchovávání informace o poslední změně pro každý atribut zvlášť definice práv ke každému atributu možnost vícenásobných atributů třídění atributů podle skupin do různých šablon možnost odděleného skladování BLOB/CLOB sloupců trojrozměrnost při mutování Výjezdní zasedání UIS
Šablony IV Stinné stránky náročné zobrazování, relační operace nad atributy obtížné zajištění referenční integrity – nemožnost použití constraintů, nutná vlastní implementace => zpomalení nemožnost použití UNIQUE omezení hodnoty ukládány jako text – implicitní konverze u čísel znemožňuje použití indexů některé sloupce jsou zbytečně v základních tabulkách (typicky datumy, řetězce), jiné by bylo naopak vhodné přesunout ze šablon do tabulek (číselné hodnoty – cizí klíče, které jsou NOT NULL u většiny řádků a přes které se v SELECTech často připojují další tabulky) Výjezdní zasedání UIS
Šablony V Aplikační pohled jestliže z hlediska datového vyznívá použití šablon jednoznačně kladně, z aplikačního hlediska má současná implementace určité mezery šablony v UISu – ideou byla maximální univerzálnost – „řízeno daty“ – bez zásahu programátora automatické přidávání atributů, omezování při nedostatku práv důsledkem této univerzálnosti je někdy málo user-friendly chování aplikací řešení – Šablony a formuláře II. ??? Výjezdní zasedání UIS
Dotazy ? Výjezdní zasedání UIS