Clavius a on-line www katalog vlastními silami – proč a jak
Proč alternativní vytvoření on-line katalogu
Knihovna Výzkumného ústavu bezpečnosti práce slouží odborným potřebám oboru bezpečnosti a ochrany zdraví při práci. Automatizovaný knihovní systém Clavius je zde v provozu zhruba tři roky (byl proveden převod dat ze systému MAKS), z toho poslední rok ve své MS SQL verzi. Ke zveřejnění přírůstků katalogu knihovny VÚBP slouží původně tištěná, po přechodu na AKS Clavius elektronická, publikace OKO [5] (elektronická forma byla dodavatelem pro VÚBP vytvořena na zakázku). Katalog Clavius je na intranetu VÚBP implementován jako LWWW modul dodavatele, firmy LANius s.r.o., a je přístupný přes VPN i externím spolupracovníkům VÚBP. Snaha zpřístupnit katalog knihovny VÚBP co nejširšímu okruhu zájemců vedla k přirozenému rozhodnutí jej publikovat na internetu na firemních stránkách VÚBP [6]. (tento web je hostován na serveru podporujícím MySQL).
Zveřejnění den staré verze katalogu na svých serverech nabízí dodavatel AKS Clavius - až potud se zdálo vše bez problémů. Po seznámení se s cenovými podmínkami a vlastní realizací zveřejnění katalogu SQL verze, které se autorům zdály být vskutku pozoruhodnými, se situace začala jevit poněkud jinak. Důležitým faktorem při rozhodnutí nevyužít služeb dodavatele bylo i rozhraní LWWW - nepříliš pohledné a uživatelsky přítulné, s nedostatečnou možností vlastní grafické úpravy tak, aby ladila s ostatními stránkami firemního webu. Jinými slovy: knihovnou a webmasterem požadované úpravy LWWW by vyžadovaly tolik práce, že se jednodušší zdálo uživatelské rozhraní znovu napsat. Naše dosavadní zkušenosti s intranetovým provozem on-line katalogu navíc nesvědčí o 100 % spolehlivosti vyhledávání implementovaného dodavatelem v AKS Clavius.
Hledali jsme jiný způsob publikace katalogu knihovny. Původní záměr využít výstupu OKO se ukázal být neproveditelný z důvodu příliš velkého objemu dat (není divu, výstup OKO byl vytvořen pro řádově desítky záznamů a celý katalog jich obsahuje přes 10 000). Rozhodli jsme se tedy exportovat data potřebná k sestavení katalogu knihovny vlastními silami a nad nimi vytvořit vlastní jednoduché vyhledávací rozhraní. Nevýhodou tohoto postupu je nutnost napsat vlastní rozhraní, výhod je hned několik, z programátorského a uživatelského hlediska například:
- kontrola a znalost všech procesů spojených s publikací katalogu (a tím pádem i možnost pozdějších modifikací);
- minimalizace objemu přenášených dat (přenos pouze těch dat, která nesou relevantní informaci);
- modularita;
- možnost vytvoření vlastní vyhovující grafické úpravy a funkcionality uživatelského rozhraní katalogu za použití nativního programovacího prostředku;
- snadná obsluha.
Zobrazení katalogu a jeho prohledávání jsou na vlastním exportu nezávislé, uživatelské rozhraní lze samozřejmě dále zdokonalovat. Konkrétně v tomto případě první on-line www verze katalogu knihovny VÚBP [7] je uživatelské rozhraní napsáno v PHP nad daty katalogu uloženými v databázi MySQL. Neobsahuje rejstříky klíčových slov a autorů, protože ty nebyly součástí zadání, ale níže popsaným způsobem lze i tato data jednoduše exportovat a uživatelské rozhraní příslušně rozšířit.
Jak - popis postupu sestavení a zobrazení katalogu
Výsledné řešení důsledně využívá vlastností a možností prostředí MS SQL, Windows a FTP tak, že v maximální možné míře všechny kroky automatizuje. Od knihovny jakožto konečného uživatele vyžaduje pouze spuštění dávky .bat - i to by šlo zautomatizovat, dali jsme ale přednost "ruční" publikaci zkontrolované verze katalogu. Po identifikaci uložení zdrojových dat je základním problémem přenos poměrně velkého objemu dat z prostředí MS SQL (ve VÚBP) do MySQL (host web) a současné zautomatizování celého procesu.
Identifikace tabulek, kterých je třeba použít jako zdrojů dat pro katalog, v nepřehledné struktuře databáze Clavius, která ani vzdáleně nepřipomíná normalizovanou, byla jednou z prvních obtíží. Naštěstí se ukázalo, že jde o překážku spíše psychologickou a většina potřebných dat je uložena v podobě formátu UNIMARC, i když ne přímo ve formě vhodné k dalšímu zpracování – to bylo řešeno vytvořením pohledu, který vhodně upravuje "UNIMARC" data a přidává k nim zbývající požadované položky. Dalšími úskalími se při automatickém spouštění ukázaly být počet exportovaných záznamů, možnosti přímého exportu dat z MS SQL do textového souboru a automatický zápis do zvoleného adresáře. I tyto problémy se však poměrně snadno podařilo zvládnout volbou vhodných příkazů, přesunem zápisu souboru do dávky spouštěné uživatelem a vytvořením výsledného textového souboru přes pomocný formát xls.
Kroky exportu aktuální verze katalogu:
- Automatické generování dat k sestavení katalogu a exportu - pravidelné automatické spouštění jobu, který vygeneruje tabulku/tabulky se všemi daty potřebnými k sestavení katalogu - využití možností prostředí MS SQL; nastaveno tak, že každý den je na SQL serveru k dispozici pro export verze katalogu z předchozího pracovního dne
- Vytvoření vhodného formátu exportovaných dat - struktura exportovaných dat (dlouhá textová pole) a možnosti exportu dat implementované na MS SQL serveru vedly k nutnosti exportovat data nejprve ve formátu xls a poté převést do textového souboru, který je možno importovat do MySQL:
- export dat do xls - DTS balíček na MS SQL serveru
- vytvoření textového souboru se sloupci oddělenými tabelátorem k přijetí na hostitelském serveru - řešeno skriptem ve Visual Basic
- komprimace textového souboru - pomocí freewarové utility GZIP, distribuované pod GNU licencí
- FTP přenos - pomocí DOSového FTP dostupného z příkazové řádky
Krok 1 je časově nejnáročnější část celého procesu exportu katalogu – v našem případě trvá na MS SQL serveru pro 10 000 záznamů katalogu cca 20minut. (Poznámka pro čtenáře znalé T-SQL – tato hrůzyplná doba je způsobena nevyhnutelnou nutností použít při generování obsahu některých výsledných polí kurzorové tabulky.) Job používá v databázi Clavius při čištění dat a generování zdrojové tabulky www katalogu vlastních uložených procedur a pohledů. Znaky, které by mohly později "rozhodit" textový soubor importovaný do hostitelského prostředí (line feed, tabelátor...), jsou již v této fázi nahrazeny mezerou.
Kroky 2 až 4 spouští jediná dávka, která vytvoří textový soubor vhodného formátu; ten se zkomprimuje a odešle na cílový server, kde se rozbalí a načte do prostředí databáze MySQL. Celý proces vytvoření exportovaného souboru, přenosu a importu trvá při řádově 10 000 záznamech něco přes minutu (může být i déle podle objemu přenášených dat, momentálnímu zatížení sítě a samozřejmě kapacitě linky) a končí hlášením, že data byla úspěšně naimportována. Importovaná data se v uživatelském rozhraní okamžitě zobrazí. Spuštění dávky ze strany uživatele/knihovny vyžaduje mít namapovaný přístup k adresáři, do kterého se zapisují soubory xls a txt v kroku 2, dále schopnost spustit z příkazové řádky příkaz DTSrun (krok 2a) - tj. instalovanou konzoli MS SQL; ze strany MS SQL serveru je minimálním požadavkem nastavení tohoto uživatele databáze Clavius v roli Datareader s právem přistupu k tabulce vygenerované krokem 1.
Tolik stručný popis vytvoření vlastního katalogu na hostitelském serveru ze zdroje Clavius. Myslíme, že použitý postup není bez zajímavosti ani pro jiné vlastníky AKS Clavius a po drobných úpravách "na tělo", případně vynechání některých kroků, může posloužit jako návod vytvoření vlastní alternativy k LWWW. Případným zájemcům o podrobnosti rádi poskytneme další informace.