ablonovn a indexovn Ale Kutn Sekce datamanagemenetu Vvojov
Š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 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 2
Obsah II II. Šablonování ± základní principy ± typy atributů ± výhody šablonování ± stinné stránky ± aplikační pohled Výjezdní zasedání UIS 3
Indexování I 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 4
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 5
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 6
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 7
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 8
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 9
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ř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 10
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 11
Š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 12
Š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 13
Š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 14
Š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 15
Š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 16
Dotazy ? Výjezdní zasedání UIS 17
- Slides: 17