Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilKryštof Neduchal
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.