Nové trendy v kvalifikaci objektů Ing. Aleš Kutín kutin@uikt.mendelu.cz Univerzitní informační systém III., Lednice 2004
Obsah Opakování Co je nového Parametrické kvalifikátory Dynamické kvalifikátory Aktuální problémy Diskuse, dotazy Univerzitní informační systém III., Lednice 2004
Opakování kvalifikátor (Q) - mechanizmus pro výběr podmnožiny objektů daného typu splňující určité vlastnosti kvalifikátor je: příkaz SELECT jazyka SQL vracející sloupec identifikátorů objektů dané třídy (ID uživatele) databázová entita (číselník kvalifikátorů) třída kvalifikátorů – dána typem omezovaných objektů (uživatelé -> číselník uživatelů -> uživatelské kvalifikátory mechanismus implementován na DB úrovni (PL/SQL) Univerzitní informační systém III., Lednice 2004
Opakování stavebním kamenem kvalifikátorů jsou podmínky (student programu, zaměstnanec ústavu, předmět fakulty,...) kombinací různých podmínek lze postihnout velice specifické skupiny kvalifikátor uložen v DB strukturovaně (podmínky + jejich hodnoty), sestavení dotazu a vyhodnocení je automatizováno hlavní výhoda a smysl existence: odkazovatelnost – použití všude, kde je potřeba uchovat seznam objektů dané vlastnosti nikoliv jeho výčtem, ale specifikací vlastností „vedlejší“ výhoda: nahrazení SELECTů v aplikacích Univerzitní informační systém III., Lednice 2004
kvalifikátor = skupina (uživatelů) Opakování podrobný popis principů a postupů jádra kvalifikátorů je mimo rozsah příspěvku běžný uživatel, integrátor i aplikační programátor se bez jeho znalostí obejdou pro pochopení dalšího výkladu, stejně jako ovládání aplikací využívajících Q postačí pamatovat, že: kvalifikátor = skupina (uživatelů) detailnější pojednání o konceptu lze najít: loňská prezentace „Kvalifikátory“ Diplomová práce autora Univerzitní informační systém III., Lednice 2004
Co je nového po 1,5 roce ostrého provozu se kvalifikátory staly nedílnou součástí jádra UIS za rok uplynulý od úvodní prezentace se mnohé změnilo ... dále rozvíjel systém implicitního přidělování (podrobně popsaný loni) – v současnosti přes 20 subsystémů, dnes plně standardizováno řada možností zmíněných před rokem byla implementována (dokumentový server, dvacítky) další aplikace na své nasazení teprve čekají, jiné se ukázaly jako „slepá ulička vývoje“ nová řešení si vyžádala četné zásahy do jádra systému kvalifikace (PKG_KVALIFIKATOR), základní principy se ovšem ukázaly jako dostatečně obecné a flexibilní („šetrné znásilňování“) Univerzitní informační systém III., Lednice 2004
Parafikátory parametrické kvalifikátory (parafikátory) rozšiřují koncept kvalifikace o možnost zadat hodnotu vybrané podmínky (podmínek) až v momentě vyhodnocení běžné kvalifikátory ‘Studenti PEF’, ’Studenti AF’, ’Studenti LDF’ tak lze nahradit jediným parafikátorem ‘Studenti dané fakulty’ akceptujícím jako parametr ID fakulty v principu se parametrické a klasické kvalifikátory neliší, pracují se stejnými podmínkami a vyhodnocují se stejně parametrický kvalifikátor je jednoznačně určen svým ID a dále hodnotami parametrů (rozdíl oproti klasickým) podporovány jsou až čtyřparametrické kvalifikátory (v praxi jednoznačně převládají jednoparametrické) UNION parafikátorů je také implementován Univerzitní informační systém III., Lednice 2004
Parafikátory v DS primárním důvodem nasazení parametrických kvalifikátorů byla nová správa složek v dokumentovém serveru (DS) původní koncept automatických nástěnek byl zobecněn a hromadná správa oprávnění zajištěna parafikátory nový pojem v DS – typ automatické složky typ (nástěnka ústavu, předmětu) odpovídá nějaké databázové entitě (pracoviště, předměty) zakládání a rušení složek zajišťují klasické kvalifikátory odpovídajících tříd (první použití „neuživatelských“ Q) zvláštní tzv. funkční parafikátory umožňují stromovou strukturu vytvářených složek (autom. nástěnka ústavu je vytvářena pod nástěnkou odpovídající fakulty) Univerzitní informační systém III., Lednice 2004
Parafikátory v DS automatická složka jednoznačně identifikována svým typem (fakultní složka) a parametrem (ID fakulty) hlavní využití parafikátorů: automatická práva automatické složky u každého typu autom. složky evidovány uživatelské parafikátory s odpovídajícími právy nová automatická nástěnka dostává při založení parafikátory definované pro daný typ, do nichž je dosazen parametr složky další implicitní práva vkládá správce pomocí parametrických i klasických kvalifikátorů refresh (obnova) práv – viz dále Univerzitní informační systém III., Lednice 2004
Parafikátory jinde model evidence nároku jednoparametrickým a klasickým kvalifikátorem uvedený v DS použit i v novějších systémech implicitního přidělování použití přímo v aplikacích (místo SELECTu) – zatím spíše ojedinělé (nedůvěra, problém části SELECT) víceparametrické PQ jako „mustry“ dynafikátorů v nových dvacítkách (viz dále) masivní nasazení v novém novém právním systému (viz samostatná přednáška) nový Výběr – zatím nebylo plně analyzováno (paraf. x dynaf., čekání na n.n.p.s.) Univerzitní informační systém III., Lednice 2004
Dynamické kvalifikátory další zobecnění kvalifikace – podmínky a jejich hodnoty nejsou ukládány v DB, ale předávány „dynamicky“ v čase vyhodnocení dynamické kvalifikátory (dynafikátory) opět využívají stejných typů podmínek jako Q a PQ, stejně tak metod jádra dynafikátory nejsou uloženy v DB (nemají ID ani žádnou evidenci) – primární cíl užití je aplikační vrstva Univerzitní informační systém III., Lednice 2004
Dynamické kvalifikátory u klasických i parametrických Q fungují vyhodnocovací funkce takřka „bezešvě“ – dotaz je předpřipraven a uložen v DB u dynafikátorů nutno počítat s určitou režií nezbytnou pro kontrolu vstupu a sestavení SELECTu (pro jedno volání neznatelné) zmenšení režie – použití alternativního způsobu vyhodnocování pomocí metod PKG_KVALIFIKATOR prepare, execute a bind (podobně jak DBI – viz demonstrace) běžné nasazení v aplikacích zatím vázne (neinformovanost aplikačních, problém části SELECT) Univerzitní informační systém III., Lednice 2004
Dynamické kvalifikátory výkladní skříní dynafikátorů se stal modul Seznamy_studentu.pm (implementace dvacítek), jehož jádro bylo s jejich pomocí kompletně přepsáno původní dvacítky: důmyslné API (všestranná použitelnost v mnoha aplikacích) málo efektivní jádro zajišťující výběr (složitý kód, nevhodné SQL konstrukce IN, chyby výstupů) nepřehledná evidence sloupců originální návrh modulu nepostihoval některé fenomény jako přerušení nebo mezifakultní studium – zdroj chyb celý mechanizmus výběru založen na parametru období, tabulce S_PRUBEH_STUDIA a operátoru IN (delší odezvy při velkém počtu řádků a sloupců) informace z historických období nebyly korektní – využití stavových záznamů Univerzitní informační systém III., Lednice 2004
Dynamické kvalifikátory nová verze modulu beze zbytku přebírá Perlové API i výsledný vzhled a chování na webu (vývojář ani uživatel nevidí změny) zcela nové jádro používá pro výběr studentů dynafikátory třídy studium (!!!) jednotlivé rozbalovací seznamy filtru – omezení jsou implementovány kvalifikátorovými podmínkami, které jsou složeny do výsledného SELECTu pomocí procedur PKG_KVALIFIKATOR rozdíl proti běžným dynafikátorům – databáze provádí jen složení dotazu – vyhodnocení přes DBI (řešení problému části SELECT) zcela nová evidence sloupců navázaná na evidenci tabulek v kvalifikátorech (jediná skutečně nová aplikace) DB jádro je doplněno poměrně komplexním Perlovým kódem (UNIONy, „mustry dynafikátorů“, období x předmět, ...) Univerzitní informační systém III., Lednice 2004
Dynamické kvalifikátory dynafikátory využívají historických evidenčních tabulek (forma, obor, atd.), které nebyly původně k dispozici historická správnost je zajištěna přidáváním tzv. časových omezení k některým podmínkám – seznam vyhodnocován vždy k určitém okamžiku: aktuální datum (u aktivních období) poslední den období (u skončených) nové dvacítky přinesly: faktická správnost zpřehlednění správy (přidávání nových sloupců nebo omezení) rychlejší odezva (provádí se jediný, efektivní SELECT) pro nové Hromadné zprávy byl modul upraven: možnost vrátit dynafikátor v rozložené podobě (podmínky + hodnoty) použití uživatelských podmínek platných k danému okamžiku Univerzitní informační systém III., Lednice 2004
Aktuální problémy provoz a další rozšiřování kvalifikátorů jako bezesporu efektivního nástroje jádra jsou komplikovány některými problémy jedná se především o: transparentnost a metody jejího zajištění problém části SELECT rozhraní DBI:Oracle nedokonalosti PL/SQL jednotlivé problémy jsou v různém stádiu řešení některé představují pouze malou nepříjemnost, jiné jsou zásadní Univerzitní informační systém III., Lednice 2004
Transparentnost transparentnost = veškeré změny vyplývající z nějaké operace v systému jsou prováděny okamžitě po jejím ukončení (student je vyřazen -> ihned se mu deaktivuje karta) transparentnost důležitá v implicitním přidělování – nároky musí být obnovovány (refresh) při změně statusu uživatele metody zajištění transparentnosti na DB vrstvě: triggery (nelze – chyba ORA-04091) balíky – zapouzdření DML operací, „balíková mezivrstva“ – použito v implicitním přidělování každý systém implicitního přidělování má vlastní „refresh“ proceduru pro obnovu nároků daného uživatele procedura čte z definiční tabulky nároků jednotlivé kvalifikátory, zjišťuje zda jim uživatel vyhoví a pokud ano, má-li kvalifikovaný nárok Univerzitní informační systém III., Lednice 2004
Balíková mezivrstva Univerzitní informační systém III., Lednice 2004
Transparentnost procedury balíkové mezivrstvy měnící status uživatele pak po provedení vlastních DML změn volají „refresh“ procedury jednotlivých implicitních systémů problém – některé tabulky (typicky studované předměty) jsou měněny přímo (INSERT, UPDATE, DELETE) a ne přes balíkovou mezivrstvu kvalifikátory využívající sloupce z těchto tabulek pak jsou netransparentní – aktualizace subsystémů, kde jsou použity musí být explicitně zajišťována triviální řešení – kompletní refresh – spustit „refresh“ procedury pro všechny uživatele – v současnosti používáno délka operace řádově desítky minut – možno spouštět max. jedenkrát denně v době nízké zátěže s rostoucím počtem uživatelů a impl. systému bude čím dál náročnější Univerzitní informační systém III., Lednice 2004
Transparentnost - DS jakékoliv efektivní řešení musí vycházet z tabulkového přístupu ke kvalifikátorům, nikoliv z individuálního (aplikován v refresh procedurách) počet kvalifikátorů použitých v Dokumentovém serveru u automatických nástěnek je o několik řádů vyšší než v typickém implicitním systému (desítky x tisíce) v DS jsou masivně použity netransparentní kvalifikátory (nástěnky předmětů) je zřejmé, že triviální řešení refreshe je pro DS nepoužitelné navržen speciální postup – parafikátory nejsou vyhodnocovány pro jednoho uživatele ani pro jeden parametr, ale pro všechny kombinace parametrů najednou vhodným spojením dosaženo výborného výkonu (čas kolem jedné minuty, včetně propagace práv), který umožnil spouštění refreshe každou hodinu Univerzitní informační systém III., Lednice 2004
Transparentnost – řešení z přístupu aplikovaného v DS by mělo vycházet i konečné řešení pro ostatní implicitní systémy další přístupy vyhodnocovat pouze netransparentní Q (problém) využití stromu kvalifikátorů (spíš pro zrychlení individuálního refreshe, problém s parafikátory) Univerzitní informační systém III., Lednice 2004
Problém části SELECT jádro kvalifikátorů nijak zvlášť neřeší strukturu části SELECT primární funkce – kvalifikace objektů – vystačí se sloupcem ID v aplikační vrstvě v 95% případů ID nestačí – rozšíření všech druhů kvalifikátorů je omezeno řešení problému: připojování relevantních tabulek k výstupu kvalifikační funkce výhoda – jednoduché, nevýhoda – neefektivní, nelze vždy použít vracení více sloupců přímo tabulkovými funkcemi nutnost evidence sloupců, předávání parametrů – řešitelné omezení PL/SQL – v současnosti nepřekonatelné, nutno obcházet náhradní postupy: provádění dotazu v Perlu (DB jej pouze skládá) – použito ve dvacítkách vracení jednoho sloupce – řetězce + zpracování v Perlu (v rámci metody UIS::select – proveditelné, málo obecné Univerzitní informační systém III., Lednice 2004
Další problémy Parametry při komunikaci mezi Perlem a PL/SQL přes rozhraní DBI lze použít pouze skalární hodnoty (ne například hashe) obtížné předávání nutných parametru u parafikátorů a dynafikátorů řešení existuje – různé způsoby u PQ a DQ Problémy v PL/SQL především způsob bindování parametru při provádění příkazů v některých případech nelze vázaných proměnných použít -> degradace výkonu Univerzitní informační systém III., Lednice 2004
Závěrem během uplynulého roku zaznamenaly kvalifikátory bouřlivý vývoj a staly se nedílnou součástí jádra UIS vymanily se z obálky pouhých „automatických skupin“ a začaly být vnímány v plné šíři jako „zobecněné SELECTy“ vývoj směřuje k vytvoření samostatné vrstvy mezi databází a aplikacemi zcela odstiňující aplikační programátory od jazyka SQL Univerzitní informační systém III., Lednice 2004
Děkuji za pozornost. Dotazy ? Univerzitní informační systém III., Lednice 2004