To jest stara wersja strony!
Analiza warunków technicznych i implementacja prototypu modułu dostępu do danych Składu Osobowego AGH (SkOs) przy pomocy protokołu LDAP
Kowalczyk, Curzytek
Do zrobienia:
analiza struktury danych przechowywanych w SkOs,
wykonanie projektu bazy danych,
rozpoznanie możliwości pobierania danych z SkOs (uzyskanie dostępu do bazy, parsowanie
HTML) i przygotowanie procedur importu,
wykonanie prostego interfejsu webowego dostępu do nowej bazy,
analiza protokołu LDAP i istniejących serwerów; określenie wymagań (serwer, itd.) i wybór rozwiązania,
udostępnienie danych z bazy przy pomocy protokołu LDAP.
Linki, itd.:
projekt_konceptualny_16.pdf
projekt_logiczny_16.pdf
Raport końcowy
Baza została stworzona w DBMS (Database Management System) PostgreSQL 8.4.2 na podstawie zaprojektowanego diagramu ERD. System operacyjny, na którym był realizowany projekt to Linux Debian, wersja testowa – squeeze. Pakiety były instalowane przy pomocą dostępnych repozytoriów systemu operacyjnego. Nazwa katalogu domowego: wojcieh.
Etapy realizacji projektu baz danych LDAP pracowników AGH
1. Utworzenie i modyfikacja bazy danych
Nazwa bazy danych przechowującej tabele LDAP: ldap.
Podczas testów okazało się, że do poprawnego odczytywania danych z bazy SQL do bazy hierarchicznej niezbędne jest ustawienie zmiennej client_encoding na latin1.
ldap => SET client_encoding TO latin1;
SET
Po ustawieniu client_encoding na wartość utf-8 większość danych była gubiona. Nie wiemy jaka jest tego dokładna przyczyna i czy jest to tylko fenomen związany z Debianem, czy też na innych systemach operacyjnych dzieje się podobnie. Dokumentacja OpenLDAP mówi z kolei, że do przechowywania wszystkich tekstowych wartości atrybutów oraz nazw wyróżnionych używany jest zbiór znaków UTF-8.
Problem ten pociąga za sobą kilka istotnych konsekwencji. W celu administrowania bazą danych została wykorzystana strona administracyjna, jaką dostarcza framework DJANGO. Django wymaga kodowania znaków w formacie UTF-8. Dochodzi więc do konfliktu pomiędzy administrowaniem relacyjnej bazy danych, a poprawnym działaniem bazy hierarchicznej. Problem ten został rozwiązany w sposób prowizoryczny, poprzez utworzenie jeszcze jednej bazy danych przechowującej całą strukturę relacyjnej bazy danych. W tym celu został stworzony odpowiedni skrypt basha. Rozwiązanie takie nie jest najlepsze, ponieważ aby uwzględnić zmiany w bazie LDAP trzeba skopiować dane z jednej do drugiej bazy.
Mamy więc dwie bazy danych:
aghldap z tabelami diagramu ERD, protokołu LDAP oraz tabelami utworzonymi przez framework Django, client_encoding = utf8
ldap z tabelami i widokami protokołu LDAP, client_encoding = latin1, utworzona na podstawie bazy aghldap przy pomocy skryptu basha
Bazy są dostępne bez konieczności podawania hasła. Należy zmienić jedynie użytkownika i nadać mu odpowiednie prawa do modyfikacji struktury baz.
2. Konfiguracja ODBC – interfejsu pozwalającego połączyć się aplikacjom z systemem zarządzania bazą danych
Wymagane pakiety:
unixodbc, libiodbc2 – niezbędne biblioteki i narzędzia
odbc-postgresql – sterownik ODBC dla DBMS PostgreSQL
Po zainstalowaniu pakietów w shellu sprawdzamy lokalizację plików konfiguracyjnych:
$ odbcinst -j
unixODBC 2.2.11
DRIVERS............: etc/odbcinst.ini
SYSTEM DATA SOURCES: etc/odbc.ini
USER DATA SOURCES..: /home/wojcieh/.odbc.ini
Wprowadzamy zmiany w plikach konfiguracyjnych:
;
; odbc.ini
;
[ODBC Data Sources]
PgSQL=PostgreSQL
[PgSQL]
Driver = /usr/lib/odbc/psqlodbc.so // pełna ścieżka do drivera
Description = Connection to LDAP/POSTGRESQL
Servername = localhost
Port = 5432 // domyślnie 5432
Protocol = 6.4
FetchBufferSize = 99
Username = wojcieh // nazwa użytkownika bazy danych
Password = wojcieh9
Database = ldap // nazwa bazy danych z tabelami LDAPa
ReadOnly = no
Debug = 1
CommLog = 1
[ODBC]
InstallDir = /usr/lib/odbc // ścieżka do katalogu ze sterownikami
[ODBC]
Trace = 1
Debug = 1
Pooling = No
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/odbc/psqlodbc.so // pełne ścieżki do driverów
Setup = /usr/lib/odbc/libodbcpsqlS.so
UsageCount = 2
Sprawdzamy, czy konfiguracja przebiegła pomyślnie (ostatni argument to nazwa użytkownika):
$ isql -v PgSQL wojcieh
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
3. Konfiguracja serwera LDAP (wersja 2.4.19)
4. Konfiguracja Django w celu zarządzania bazą danych (python wersja 2.5.5, django wersja 1.1.1)
Wygląd i opis interfejsów stron obsługujących bazy danych
1. Strona administracyjna relacyjnej bazy danych
2. Strony wykorzystane do wyszukiwania i prezentacji wyników
Inne opcje dostępu i wykorzystania bazy danych LDAP
Import danych z istniejącego systemu SKOS do bazy LDAP
Problemy jakie wystąpiły w trakcie realizacji projektu, proponowane rozwiązania i kierunki rozwoju