Analiza standardu Z39.50 pod kątem możliwości przechowywania parametrów konfiguracyjnych w bazie LDAP

Tomasz Wolniewicz
UMK

1. Wstęp

Nazwa Z39.50 odnosi się do międzynarodowego standardu: ISO 23950: "Information Retrieval (Z39.50): Application Service Definition and Protocol Specification" oraz standardu ANSI/NISO Z39.50. Standard Z39.50 opisuje protokół dostępu do informacji katalogowych (bibliograficznych). Jest zaimplementowany w większości dużych systemów bibliotecznych. Na świecie jest kilkaset serwisów Z39.50, które mogą służyć zarówno jako adresy testowe jak i faktyczne źródła informacji. Rozwój standardu Z39.50 jest koordynowany przez Z39.50 Maintenance Agency przy Bibliotece Kongresu USA. W jej archiwum można znaleźć pełną dokumentację.

Na temat korzystania z Z39.50 opublikowano RFC-2056 [] dotyczące sposobu adresowania zapytań. Propozycje nie są na razie implementowane, producenci oprogramowania stosują swoje własne konwencje formułowania zapytań.

Pomysł utrzymywania parametrów serwerów Z39.50 w usłudze LDAP jest motywowany trudnością konfiguracji oprogramowania klienckiego. Przykładem podobnego rozwiązania mogą być prace nad opisem ExplainLite [] tworzonym w języku XML. Zakładamy, że w bazie LDAP będzie można przechowywać również konfigurację w formacie XML (jako wartość wydzielonego atrybutu).

Bezpośrednią motywacją do zajęcia się protokołem Z39.50 w ramach projektu LDAP są równoległe prowadzone prace rozwojowe nad katalogiem rozproszonym KaRo[].

Podstawowym celem niniejszego dokumentu jest określenie sposobów przechowywania konfiguracji w ramach bazy LDAP oraz odpowiednie zdefiniowanie grupy parametrów konfiguracyjnych typowego serwera protokołu Z39.50. Obecna analiza ma na celu przygotowanie podstaw implementacji prototypowego rozwiązania. Proponowany standard schematu LDAP będzie w przyszłości wymagał rozbudowy, tak by objąć wszystkie aspekty protokołu Z39.50.

2. Podstawowe obiekty związane ze standardem Z39.50

Na najwyższym poziomie abstrakcji w ramach systemu Z39.50 mamy do czynienia z następującymi elementami:
  1. komputer na którym jest posadowiony program serwera Z39.50,
  2. instancja serwera Z39.50, rozumiana jako program nasłuchujący na porcie internetowym,
  3. baza obsługiwana przez instancję serwera Z39.50.

Na jednym komputerze może pracować wiele instancji serwera Z39.50

Jedna instancja serwera Z39.50 może obsługiwać wiele baz.

Z punktu widzenia użytkownika najistotniejszym obiektem jest baza.

Użytkownik systemu Z39.50 korzysta z bazy, którą zazwyczaj kojarzy z instytucją. Parametry techniczne (adres serwera, port, identyfikator bazy w serwerze) są dla niego całkowicie nieistotne i niee powinny być dla niego widoczne.

Dostęp do bazy za pośrednictwem protokołu Z39.50 wymaga określenia szeregu dodatkowych parametrów. Protokół definiuje szereg operacji, z których najważniejsze to:

Operacje search i scan wymajają określenia atrybutów przeszukania, te określa się zazwyczaj przy pomocy standardu Bib-1 []. Ten standard przyporządkowuje najbardzije typowym rodzajom zapytań (np. autor, tytuł, wydwanictwo itd.) wartości numeryczne. Poza atrubutami określającymi temat zapytania, Bib-1 definiuje również atrybuty relacji, pozycji i struktury. Relacje to równość i nierówności, pozycja określa ogreniczenia położenia napisu wyszukiwanego w wyrażenia odnalezionych, struktura pozwala na wprowadzenie dodatkowych ograniczeń, np., aby dopasowanie wyszukiwało wyłącznie pełne słowa.

Określenie właściwego zestawu parametrów może zależeć zarówno od ustawień samej bazy (np. zdefiniowanych i udostępnianych indeksów), jak i implementacji. Czasami zmiana parametrów struktury prowadzi do zaskakujących rezultatów, z tego powodu konieczne jest dostrojenie całego zestawu parametrów do konkretnego rodzaju zapytania.

Kolejną trudność sprawiają formaty wyników. Informacja bibliograficzna jest zapisywana z w różnych standardach. Obecnie najbrardziej rozpowszechniony jest zapis w jednej z wersji MARC, ale coraz popularniejsze staje się prezentowanie wyników w formacie XML. Niezależnie od samego formatu opisu, konieczne jest wzięcie pod uwagę sposobu kodowania znaków diakrytycznych. W tym zakresie spotykamy się również z wieloma możliwościami. Nowoczesne implementacje używają UTF-8, starsze stosują jedną z kilku konwencji rozpowszechnionych wcześniej. Niekiedy sam serwer Z39.50 dokonuje przekodowania w locie na jakąś stronę kodową (co wiąże się zazwyczaj z utratą informacji). W przypadku rozbudowanego opisu zawierającego obok opisu bibliograficznego również informację o egzemplarzach, zdarza się, że część bibliograficzna jest kodowana inaczej niż część dotycząca egzemplarzy. Kolejnym zagadnieniem jest kodowanie wyrażenia wyszukiwawczego, które może być również inne od dotychczas wymienionych. Serwery Z39.50 działające w Polsce prezentują pełną gamę możliwych rozwiązań.

Konfiguracja oprogramowania dostępowego do protokołu Z39.50 jest zazwyczaj zapisywana w plikach tekstowych.

3. Problemy wydajnościowe związane z katalogiem rozproszonym

Polski katalog rozproszony KaRo [] jest systemem eksploatowanym od lipca 2001 i w tym czasie uzyskał znaczną popularność. Obecne (luty 2002) dzienne liczby przeszukań przekraczają 5000, a maksimum godzinne 1000.

Wadą katalogu rozproszonego jest to, że bardzo wiele przeszukań obciąża niewielkie serwery lokalne. Może to być szczególnie uciążliwe w sytuacjach kiedy na jednym komputerze zainstalowano wiele baz. O ile przeszukania pojedynczych baz na ogół rozkładają się w czasie w taki sposób, że komputer nie jest przeciążany, to przeszukanie rozproszone jest realizowane jednocześnie na wszystkich bazach i może prowadzić do bardzo istotnego spadku wydajności bazy. Wielokrotne odwołania do tej samej bazy (przez różnych użytkowników) mogą używać zbyt dużej liczby licencji i w konsekwencji uniemożliwiać użytkowanie bazy nawet przez jej właścicieli. Dotychczasowe doświadczenia pokazują, że należy brać pod uwagę następujące ograniczenia systemu Z39.50:

  1. liczba operacji wykonywanych na jednym komputerze (limity wydajnościowe komputera),
  2. liczba sesji nawiązanych z instancją serwera Z39.50 (limity licencyjne),
  3. liczba sesji nawiązanych z jedną bazą (limity licencyjne mogą dotyczyć bazy, a nie instancji serwera).

4. Założenia projektowe

Proponowane rozwiązanie powinno:

  1. umożliwiać użytkownikowi popularnych interfejsów do protokołu Z39.50 proste skonfigurowanie dostępu do bazy która go interesuje
  2. umożliwiać konfigurację katalogu rozproszonego z uwzględnieniem opisanych powyżej ograniczeń wydajnościowych.

4.1. Indywidualna konfiguracja interfejsu użytkownika

Większość znanych programów korzystających z protokołu Z39.50 używa z tekstowych tablic konfiguracyjnych. Proponowane rozwiązanie powinno umożliwiać tworzenie odpowiednich tablic poprzez kontakt z bazą LDAP. Ponieważ każdy program ma inny format tablicy, należy uwzględnić kilka najbardziej znanych.

Należy przyjąć, że użytkownik jest zainteresowany konkretną bazą danych skojarzoną z instytucją (np. biblioteką) co w naturalny sposób przekłada się na fragment drzewa DIT. Najwłaściwszą wydaje się struktura oddzielnej gałęzi z zawierającej instytucje, a pod nimi bazy danych. Innym dopuszczalnym rozwiązaniem jest korzystanie globalnej bazy LDAP i przechowywanie danych konfiguracyjnych w obiekcie zdefiniowanym poniżej poziomu konkretnej instytucji (biblioteki).

4.2. Konfiguracja katalogu rozproszonego

Katalog rozproszony powinien umożliwiać przeszukiwanie grupy baz wybranych z płaskiej listy. Katalog powinien uwzględniać opisane powyżej ograniczenia wydajnościowe.

Katalog rozproszony powinien zezwalać na wyświetlanie podlisty ograniczanej jakimś kryterium, np. lokalizacją bazy, typem implementacji, specjalizacją biblioteki itd. Najwłaściwsza konfiguracja drzewa, to płaska lista opisów baz. Podlista może być tworzona jako wynik opracji ldapsearch z odpowiednim filtrem.

4.3. Konfiguracja techniczna

Z powodów wygody zarządzania, najwłaściwszą strukturą DIT jest odwzorowanie obiektów opisanych w p. 2, a zatem komputer jako obiekt nadrzędny dla instancji serwera Z39.50, będących z kolei obiektami nadrzędnymi baz.

Z wyjątkiem limitów wydajnościowych, wszystkie parametry elementów systemu Z39.50 mogą być przenoszone w dół drzewa konfiguracji technicznej. Niepotrzebne przenoszenie parametrów w dół jest jednak wadą, kiedy trzeba dokonać zmiany konfiguracji (na przykład adresu internetowego komputera), w takiej sytuacji wystąpi konieczność poprawienia adresów w wielu obiektach, co może źródłem błędów.

Wydaje się, że najwłaściwszym rozwiązaniem jest dopuszczenie występowania atrybutów opisujących elementy systemu Z39.50 na wszystkich poziomach gałęzi technicznej, z założeniem automatycznego dziedziczenia atrybutów w dół. Wystąpienie niepustego atrybutu na poziomie niższym automatycznie wyłącza dziedziczenie tego atrybutu na ten poziom. Z uwagi na specyficzne właściwości implementacji serwerów Z39.50 właściwe jest wprowadzenie szablonów konfiguracyjnych, do których można się odwołać. Podobnie jak w przypadku dziedziczenia, odpowiednie atrybuty szablonu są wyłączane jeżeli w opisie wystąpi niepusty atrybut danego typu. Szablony są przechowywane w oddzielnym fragmencie drzewa LDAP, w podobny sposób jak elementy systemów Z39.50.

Z powodu powyższych założeń każdorazowy odczyt parametrów bazy jest związany z czteroma operacjami odczytu w bazie LDAP, a następnie odpowiednim zhierarchizowaniem wyników (z uwzględnieniem ograniczeń dziedziczenia). Wspomniane operacje są operacjami odczytu, a nie przeszukania, więc nawet przy korzystaniu z bazy LDAP w trybie on-line nie powinny powodować zauważalnego opóźnienia.

Konfiguracja techniczna ma sens wyłącznie dla odpowiedniej implementacji katalogu rozproszonego. Tylko katalog rozproszony może stosowa ograniczenia wydajnościowe. Również tylko dla katalogu rozproszonego sensowna jest stosowanie profili implementacji itp.

4.4. Proponowane rozwiązanie

Na podstawie powyższego opisu można stwierdzić, że w bazie LDAP należy przechowywać opisy obiektów Z39.50 w postaci nieustrukturalizowanej (patrz 4.1 i 4.2) oraz ustrukturalizowaniej (4.3). Jeżeli opis jednej bazy występuje w obu formach, to należy zadbać o ich synchronizację.

Dotychczasowe doświadczenia wskazują, że właściciele baz nie zawsze zatrudniają informatyków, którzy są w stanie prawidłowo określić parametry swoich serwerów Z39.50. Z powodu niejednorodności implementacyjnych wiele parametrów należy ustawiać metodą prób i błędów. W zależności od przypadku, synchronizacja obiektu ustrukturalizowanego i nieusturukturalizowanego powinna przebiegać w jednym bądź drugim kierunku. Zaproponujemy rozwiązanie, które będzie uwzględniało oba warianty.

Każda baza (w postaci ustrukturalizowanej lub nie) może posiadać atrybut wskazujący na obiekt który powinien być z nią synchronizowany, jak i obiekt, z którym należy się synchronizować. Umieszczenie takich wskazań pozwoli na implementacji synchronizacji w standardzie „push” – inicjowanie synchronizacji przez modyfikację obiektu nadrzędnego, jak i „pull” – inicjowanie synchronizacji przez obiekt podrzędny, w stałych odstępach czasu. Mamy tu do czynienia z klasycznymi modelami replikacji (z tym, że opisana synchronizacja następuje między obiektami o różnej strukturze).

5. Elementy opisu

Obiekt ustrukturalizowany

element opisupoziom, na którym może wystąpić
adres IPkomputer
port TCPserwer
nazwa instytucjikomputer, serwer, baza
URI instytucjikomputer, serwer, baza
DN instytucjikomputer, serwer, baza
wewnętrzna nazwa bazybaza
opisowa nazwa bazybaza
szablonkomputer, serwer, baza
nazwa implementacjikomputer, serwer
wersja implementacjikomputer, serwer
dodatkowy parametr określającykomputer, serwer
parametry autoryzacyjneserwer, baza
obsługiwane operacje Z39.50 (init, scan, search, present, explain, delete itd.)serwer, baza
określenie obsługiwanych formatów opisów (USMARC, OPAC, GRS-1, itd.)komputer, serwer, baza
kodowanie w opisie bibliograficznym (UTF-8, ALA, ISO-LATIN-?, itd.)komputer, serwer, baza
kodowanie w innych obszarach wyniku (elementy opisu egzemplarza, wyniki operacji scan, itd.) (j.w.)komputer, serwer, baza
kodowanie danych wejściowych (wyrażeń wyszukiwawczych) (j.w.)komputer, serwer, baza
obsługiwane indeksy wyszukiwawczekomputer, serwer, baza
obsługiwane atrybuty dopasowania i relacjikomputer, serwer, baza
liczba dozwolonych operacji równoczesnychkomputer
liczba dozwolonych przeszukań równoczesnychkomputer
liczba dozwolonych dowiązań równoczesnychkomputer, serwer, baza
wskazanie obiektu podrzędnegobaza
wskazanie elementu nadrzędnegobaza
parametry autoryzacyjne procesu synchronizującegobaza

Uwagi:

Przy opisie obsługiwanych indeksów wyszukiwawczych należy uwzględnić:

Przy opisie obsługiwanych atrybutów dopasowania i relacji należy uwzględnić:

Z uwagi na to, że większość obiektów standardu Z39.50 posiada przypisane im identyfikatory (OID), wszędzie gdzie to możliwe należy unikać wartości tekstowych zamieniając je na wartości OID zgodne z standardem. Oznacza to, że docelowo obsługa drzewa LDAP będzie wymagała specjalizowanego narzędzia operującego rozwijalnymi listami.

Opis obiektu nieustrukturalizowanego może zawierać każdy z elementów opisu obiektu ustrukturalizowanego z wyjątkiem:

  1. liczby dozwolonych operacji równoczesnych
  2. liczby dozwolonych przeszukań równoczesnych
  3. liczby dozwolonych dowiązań równoczesnych

Literatura

1 http://www.one-2.org/ rfc-2056 Uniform Resource Locators for Z39.50. R. Denenberg, J. Kunze, D. Lynch. November 1996. http://karo.umk.pl http://www.loc.gov/z3950/agency/defns/bib1.html Bib-1 Attribute SetZZ