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 (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. (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 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.