Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

DbMan Výjezdní zasedání UISLednice, 23. – 26. 10. 2002 Ing. Milan Šorm Vedoucí vývoje a provozu Vývojový tým Univerzitního informačního systému Mendelova.

Podobné prezentace


Prezentace na téma: "DbMan Výjezdní zasedání UISLednice, 23. – 26. 10. 2002 Ing. Milan Šorm Vedoucí vývoje a provozu Vývojový tým Univerzitního informačního systému Mendelova."— Transkript prezentace:

1 dbMan Výjezdní zasedání UISLednice, 23. – 26. 10. 2002 Ing. Milan Šorm Vedoucí vývoje a provozu Vývojový tým Univerzitního informačního systému Mendelova zemědělská a lesnická univerzita v Brně

2 2 Obsah  Proč dbMan vznikl  Kde dbMana najít  Jaké funkce dbMan nabízí  Srovnání s jinými SQL konzolemi  Architektura dbManu  Jak dbMana rozšiřovat Výjezdní zasedání UIS

3 3 Proč dbMan vznikl  potřeba pracovat s RDBMS Oracle levně a přitom komfortně  potřeba pracovat s více RDBMS současně a ve stejném prostředí  snaha automatizovat řadu datamanažerských úkonů  vyzkoušet si nové techniky programování v Perlu  uvést se do světa open-source Výjezdní zasedání UIS

4 4 Kde dbMan najdu  primární vývoj probíhá na UIS/PEF (server is.mendelu.cz )  release putuje na PAUSE  PAUSE zajistí distribuci na CPAN  na freshmeat.net lze nalézt odkaz  instalaci nejlépe provedeme takto: perl –MCPAN –e shell cpan> install DBIx::dbMan Výjezdní zasedání UIS

5 5 Funkce dbMana  SQL konzole, historie příkazů, podpora readline knihovny  DBI/DBD pro spojení s RDBMS (20 nativních databází, CSV, Xbase, RAM, Proxy, ODBC aj.)  vícenásobné spojení na RDBMS, auto SQL  transakce, explain plan, seznam a popis objektů  long SQL, stránkování, TAB kompletace, nápověda  tvorba příkazových skriptů/jejich provádění  import CSV, clipboard (vč. unioncopy)  editace objektů ( vim – barevná syntaxe)  benchmarking, podpora různých výstupních formátů  rozsáhlé možnosti snadného rozšiřování Výjezdní zasedání UIS

6 6 Výhody/nevýhody  univerzální nástroj pro mnoho RDBMS  snadno rozšiřitelný  přívětivý (historie, TAB kompletace)  řada datamanažerských nástrojů  rychlý na pomalých linkách (možnost náhrady za DBAstudio)  díky obecnosti slabá podpora specifik jednotlivých RDBMS  vzhledem k užití Perlu netriviální instalace  absence GUI (zatím)  chybějící lokalizace (zatím)  není standardní součástí žádného velkého RDBMS Výjezdní zasedání UIS

7 7 Architektura dbManu I Výjezdní zasedání UIS dbMan core dbMan interfaces dbMan DBI DBI/DBDReadLine/Tk dbMan extensions dbMan MemPool dbMan history dbMan config

8 8 Architektura dbManu II Výjezdní zasedání UIS Zjištění události Tvorba akce Předání akce do rozšíření Moje akce? Vyber rozšíření s max. prior. Vyber další rozšíření v pořadí ne ano Vykonej akci Příznak? Změň akci, příp. nastav příznak ne

9 9 Architektura dbManu III Výjezdní zasedání UIS Akce COMMAND Akce SQL Cmd StandardSQL Akce SQL_RESULT SQL ShowResult Akce SQL_OUTPUT SQL OutputTable Akce OUTPUT StandardSQL Akce NONE FallbackOutput

10 10 Jak dbMana rozšiřovat I  Je třeba vytvořit rozšiřující modul DBIx::dbMan::Extension::Název  modul může být umístěn např. v aktuálním adresáři nebo tam, kam míří extensions_dir v konfiguračním souboru  modul musí být potomkem DBIx::dbMan::Extension a musí mít minimálně předefinovánu funkci IDENTIFICATION()  dále je vhodné definovat funkce preference() a handle_action()  další funkce (později) umožní přidat další funkcionalitu (nápovědu, TAB kompletaci…) Výjezdní zasedání UIS

11 11 Jak dbMana rozšiřovat II  Identifikace vrací řetězec obsahující trojici údajů AUTOR-MODUL-VERZE, kde každý údaj je šestice cifer  AUTOR je číselný kód autora modulu (přiděluje contributor dbManu, pro pokusy použijte 999999 )  MODUL je číselný kód modulu (přiděluje si každý autor sám v rámci své číselné řady)  VERZE je číselný kód verze pro určení nejnovější varianty  při nalezení více kandidátů se stejným AUTOR-MODUL je jako modul zaveden kandidát s nejvyšším kódem VERZE Výjezdní zasedání UIS

12 12 Jak dbMana rozšiřovat III  Preference je celé číslo určující, v jakém pořadí jsou do rozšíření předávány akce  standardní akce mají preferenci 0  fallback– a output– mají preferenci < 0  výkonné moduly mají preferenci < 1000  command-parsery mají preferenci < 2000  preprocesory mají preferenci < 3000  makroprocesory mají preferenci < 4000  větší preference mají URGENT handlery (např. odstranění počátečních a koncových mezer apod.) Výjezdní zasedání UIS

13 13 Jak dbMana rozšiřovat IV  Ukázková páteř nového rozšíření: package DBIx::dbMan::Extension::Název; use strict; use vars qw/$VERSION @ISA/; use DBIx::dbMan::Extension; $VERSION = '0.01'; @ISA = qw/DBIx::dbMan::Extension/; 1; sub IDENTIFICATION { return "999999-000001-000001"; } sub preference { return 50; } sub handle_action { my ($obj,%action) = @_; # %action modification or something making $action{processed} = 1; return %action; } Výjezdní zasedání UIS

14 14 Jak dbMana rozšiřovat V  handle_action() má za úkol zpracovat %action ( $action{action}, může měnit celý hash) a případně nastavit příznak $action{processed}  je-li příznak nastaven, jde se na další rozšíření, jinak se restartuje cyklus předávání do rošíření  výstupy je nutné soustředit do akce OUTPUT, aby na ně mohl někdo jiný reagovat (stránkování, výstup do souboru)  na akci NONE nereaguje nikdo – kompletně splněná akce se tedy označuje jako NONE  průchod rozšířeními zobrazí SET TRACING ON Výjezdní zasedání UIS

15 15 Jak dbMana rozšiřovat VI  k dispozici je řada pomocných objektů  $obj->{-interface}  $obj->{-dbi}  $obj->{-mempool}  $obj->{-config}  $obj->{-core}  několikerý způsob práce s daty  %action uchová data do vyřízení události  $obj->{-mempool} uchová data do ukončení dbMana  $obj->{-config} uchovává data trvale Výjezdní zasedání UIS

16 16 Jak dbMana rozšiřovat VII  další funkce  for_version() určuje, jaký dbMan akceptuje rozšíření  known_actions() stanovuje, o jaké akce se zajímáme  init() je voláno při zavádění rozšíření  done() je opakem init()  cmdhelp() umožní obohatit výstup příkazu HELP  cmdcomplete() definuje pokyny pro TAB kompletaci  interface objekt umožňuje alokaci/dealokaci promptu, reálný výstup a práci s historií příkazů  mempool objekt nabízí funkce pro storage dat a funkce pro registraci/deregistraci údajů (např. typy formátů) Výjezdní zasedání UIS

17 17 Jak dbMana rozšiřovat VIII  mimo definice rozšíření můžeme dále rošiřovat:  interface objekty  dědí vlastnosti základního interface  musí nabízet funkci pro získání akce (typicky načtení příkazu)  musí nabízet funkci pro výstup  musí nabízet funkci pro definici šířky terminálu (výstupy formátovaných tabulek)  mohou rozšiřovat práci s historií  mohou zavádět TAB kompletaci  implicitně definován interface cmdline ( dbman ) a triviální tkgui ( xdbman ), bylo by pěkné vylepšit tkgui a vytvořit curses/slang variantu a příp. qtgui nebo gtkgui  vlastního dbMana  formou patchů zaslaných contributorovi  formou vlastní branch na freshmeatu Výjezdní zasedání UIS

18 18 Dotazy ? Výjezdní zasedání UIS


Stáhnout ppt "DbMan Výjezdní zasedání UISLednice, 23. – 26. 10. 2002 Ing. Milan Šorm Vedoucí vývoje a provozu Vývojový tým Univerzitního informačního systému Mendelova."

Podobné prezentace


Reklamy Google