|
|
pl:dydaktyka:sbd:2009:projekty:skos-ldap:start [2010/02/11 12:59] sbd09 |
pl:dydaktyka:sbd:2009:projekty:skos-ldap:start [2019/06/27 15:50] |
====== 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.: | |
* Administrator Danych Systemu SkOs - Sekretariat Uczelnianego Centrum Informatyki AGH (pawilon C1, pok.401) | |
* [[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol]] | |
* przykładowy link: [[http://regent2.uci.agh.edu.pl/skos/search/osoba_opis.php?osoba_id=3401]] | |
| |
{{:pl:dydaktyka:sbd:2009:projekty:skos-ldap:projekt_konceptualny_16.pdf|}} | |
| |
{{:pl:dydaktyka:sbd:2009:projekty:skos-ldap: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//. | |
| |
<code>ldap => SET client_encoding TO latin1; | |
SET</code> | |
| |
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: | |
<code> | |
$ odbcinst -j | |
unixODBC 2.2.11 | |
DRIVERS............: etc/odbcinst.ini | |
SYSTEM DATA SOURCES: etc/odbc.ini | |
USER DATA SOURCES..: home/wojcieh/.odbc.ini | |
</code> | |
| |
Wprowadzamy zmiany w plikach konfiguracyjnych: | |
* **odbc.ini**\\ | |
<code> | |
; | |
; 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 | |
| |
</code> | |
* **odbcinst.ini**\\ | |
<code> | |
[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 | |
| |
</code> | |
| |
Sprawdzamy, czy konfiguracja przebiegła pomyślnie (ostatni argument to nazwa użytkownika): | |
<code> | |
$ isql -v PgSQL wojcieh | |
+---------------------------------------+ | |
| Connected! | | |
| | | |
| sql-statement | | |
| help [tablename] | | |
| quit | | |
| | | |
+---------------------------------------+ | |
SQL> | |
</code> | |
| |
==== 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 ===== | |
| |
| |
| |
| |
| |
| |
| |
| |
| |