SlideShare a Scribd company logo
1 of 20
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TREœCI
                                         Bazy danych SQL.
                                         Teoria i praktyka
           KATALOG KSI¥¯EK               Autor: Wies³aw Dudek
                                         ISBN: 83-246-0503-7
                      KATALOG ONLINE     Format: B5, stron: 4882
                                         Przyk³ady na ftp: 1929 kB
       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK
                                         Bazy danych to aplikacje, z których korzystaj¹ niemal wszyscy u¿ytkownicy
                    DODAJ DO KOSZYKA     komputerów, czasem nawet nie zdaj¹c sobie z tego sprawy. W bazach danych
                                         przechowywane s¹ informacje o u¿ytkownikach witryny WWW, kontrahentach firmy
                                         czy numerach telefonów abonentów operatora telekomunikacyjnego. Baz¹ danych jest
         CENNIK I INFORMACJE             równie¿ rejestr systemu Windows i ksi¹¿ka telefoniczna w telefonie komórkowym.
                                         Jednak aby zapisaæ dane w formacie odpowiednim dla aplikacji niezbêdne s¹
                   ZAMÓW INFORMACJE      standardy. Wspó³czeœnie wykorzystywany relacyjny model przechowywania danych
                     O NOWOœCIACH        sprawdza siê znakomicie. Do manipulowania danymi zapisanymi w bazach stosowany
                                         jest inny standard: jêzyk SQL.
                       ZAMÓW CENNIK      Ksi¹¿ka „Bazy danych SQL. Teoria i praktyka” przedstawia wszystkie zagadnienia
                                         zwi¹zane z przechowywaniem i przetwarzaniem danych we wspó³czesnych aplikacjach.
                                         Przeczytasz w niej o relacyjnym i obiektowym modelu danych oraz najczêœciej
                 CZYTELNIA               stosowanych systemach zarz¹dzania bazami danych. Dowiesz siê, jakie instrukcje
                                         jêzyka SQL wykorzystywane s¹ do wprowadzania danych, przetwarzania ich
          FRAGMENTY KSI¥¯EK ONLINE       i wybierania z bazy. Nauczysz siê optymalizowaæ zapytania oraz stosowaæ indeksy
                                         i procedury sk³adowane. W ksi¹¿ce znajdziesz równie¿ praktyczne wskazówki
                                         dotycz¹ce konfigurowania serwerów baz danych i administrowania nimi.
                                             • Przechowywanie prostych danych
                                             • Relacyjny i obiektowy model danych
                                             • Typy danych w jêzyku SQL
                                             • Instrukcje jêzyka SQL
                                             • Indeksy, wyzwalacze i procedury sk³adowane
                                             • Manipulowanie danymi
                                             • Optymalizacja zapytañ
                                             • Charakterystyka najpopularniejszych systemów zarz¹dzania bazami danych
Wydawnictwo Helion                               Poznaj tajniki wspó³czesnych mechanizmów przechowywania informacji
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treści
Rozdział 1. Sposoby na przechowywanie prostych danych .................................... 7
             Typy plików .......................................................................................................................7
                 Pliki tekstowe ...............................................................................................................7
                 Pliki typowane .............................................................................................................9
                 Pliki strumieniowe .....................................................................................................10
                 Pliki amorficzne .........................................................................................................14
             Przechowywanie konfiguracji programu ...........................................................................18
                 Rejestr systemu Windows ..........................................................................................18
                 Pliki INI .....................................................................................................................21
                 Pliki XML ..................................................................................................................23
             Zaawansowane rozwiązania systemu Windows ..............................................................24
                 Pliki odwzorowane .....................................................................................................24
                 Pliki ustrukturalizowanego składowania ...................................................................35
Rozdział 2. Baza danych — rozwiązanie dla wymagających ................................ 47
             Typy baz danych ..............................................................................................................49
                 Relacyjny model danych ............................................................................................49
                 Obiektowy model danych ..........................................................................................52
             SQL (strukturalny język zapytań) ....................................................................................53
                 Charakterystyka języka SQL .....................................................................................53
                 Typy danych ...............................................................................................................57
                 Generowanie unikalnych kluczy ................................................................................75
                 Wartości NULL .........................................................................................................79
                 Predykaty ...................................................................................................................80
                 Funkcje agregujące ....................................................................................................98
                 Wyrażenia SQL ........................................................................................................105
                 Konstruktor wartości wierszy i tabel .......................................................................128
                 Transakcje ................................................................................................................130
                 SQL — język definicji danych ................................................................................131
                 SQL — język manipulowania danymi .....................................................................171
                 SQL — język nadzoru .............................................................................................191
                 Optymalizowanie zapytań ........................................................................................193
                 Tabele słownikowe ..................................................................................................227
             Projektowanie baz danych ..............................................................................................227
                 Projektowanie logiczne ............................................................................................227
                 Projektowanie fizyczne ............................................................................................235
                 Projektowanie danych. Reprezentacje danych rzeczywistych .................................238
4                                                                                          Bazy danych SQL. Teoria i praktyka


Rozdział 3. LDAP — hierarchiczna baza danych ............................................... 245
                Krótka charakterystyka bazy ..........................................................................................245
                    LDIF .........................................................................................................................246
                    Schemat ....................................................................................................................248
                Zalety i wady ..................................................................................................................252
                Instalacja i konfiguracja .................................................................................................253
                    Popularne konfiguracje serwera LDAP ...................................................................254
                    Instalacja książki adresowej LDAP .........................................................................259
                    Konfigurowanie bazy SQL jako „backendu” ..........................................................259
                Administrowanie serwerem ............................................................................................263
                    Uruchamianie i zatrzymywanie serwera ..................................................................263
                    Replikacja ................................................................................................................264
                Bezpieczeństwo ..............................................................................................................265
                    Prawa dostępu do serwera ........................................................................................269
                    Tworzenie kopii bazy danych ..................................................................................271
                Narzędzia ........................................................................................................................271
                Interfejsy dostępu do serwera LDAP .............................................................................273
                    Java ..........................................................................................................................273
                Linki ...............................................................................................................................279
Rozdział 4. Oracle 10g ................................................................................... 281
                Krótka charakterystyka dostępnych dystrybucji ............................................................281
                Zalety i wady ..................................................................................................................283
                Instalacja i konfiguracja .................................................................................................285
                    Windows ..................................................................................................................285
                    Linux ........................................................................................................................287
                    Windows i Linux ......................................................................................................290
                Administrowanie serwerem ............................................................................................290
                    Uruchamianie i zatrzymywanie serwera ..................................................................291
                    Zarządzanie bazami danych .....................................................................................293
                    Konfiguracja zestawu znaków .................................................................................298
                    Replikacja bazy ........................................................................................................300
                Bezpieczeństwo ..............................................................................................................301
                    Prawa dostępu do serwera, użytkownicy i role ........................................................302
                    Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................308
                Narzędzia ........................................................................................................................310
                    SQLPlus ...................................................................................................................310
                    Exp(ort), Imp(ort) ....................................................................................................311
                    SQLLoader ...............................................................................................................312
Rozdział 5. SQL Server 2005 .......................................................................... 315
                Krótka charakterystyka dostępnych dystrybucji ............................................................315
                Zalety i wady ..................................................................................................................317
                Instalacja i konfiguracja .................................................................................................319
                    Opis instalacji MSDE w systemie Windows 2000 ..................................................319
                Administrowanie serwerem ............................................................................................322
                    Uruchamianie i zatrzymywanie serwera ..................................................................323
                    Zarządzanie bazami danych .....................................................................................323
                    Konfiguracja zestawu znaków .................................................................................329
                    Replikacja bazy ........................................................................................................330
                Bezpieczeństwo ..............................................................................................................332
                    Prawa dostępu do serwera, użytkownicy i role ........................................................334
                    Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................340
                Metadane ........................................................................................................................348
Spis treści                                                                                                                                       5


                Narzędzia ........................................................................................................................348
                   OSQL .......................................................................................................................348
                   SQLCmd ..................................................................................................................350
                   SQLMaint ................................................................................................................351
                   BCP (Bulk Copy Program) ......................................................................................352
                   SQLDiag ..................................................................................................................354
                   Cliconfg ....................................................................................................................354
                   Microsoft SQL Server Management Studio Express ...............................................354
Rozdział 6. MySQL 5.0 ................................................................................... 355
                Krótka charakterystyka dostępnych dystrybucji ............................................................355
                Zalety i wady ..................................................................................................................356
                Instalacja i konfiguracja .................................................................................................358
                    Windows ..................................................................................................................358
                    Linux ........................................................................................................................361
                Administrowanie serwerem ............................................................................................367
                    Uruchamianie i zatrzymywanie serwera ..................................................................368
                    Zarządzanie bazami danych .....................................................................................369
                    Konfiguracja zestawu znaków .................................................................................372
                    Replikacja bazy ........................................................................................................373
                    Klaster MySQL ........................................................................................................376
                Bezpieczeństwo ..............................................................................................................379
                    Konfigurowanie bezpiecznych połączeń SSL .........................................................380
                    Prawa dostępu do serwera, użytkownicy i role ........................................................381
                    Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................386
                Metadane ........................................................................................................................391
                Narzędzia ........................................................................................................................391
                    Mysql .......................................................................................................................391
                    Mysqladmin .............................................................................................................394
                    Mysqldump ..............................................................................................................395
                    Mysqlimport .............................................................................................................396
                    Mysqlbinlog .............................................................................................................396
                    Mysqlcheck ..............................................................................................................397
                    Mysqlshow ...............................................................................................................397
                    Myisamchk ...............................................................................................................397
                    Myisampack .............................................................................................................398
                    MySQL Administrator .............................................................................................398
                    MySQLInstanceConfig ............................................................................................398
Rozdział 7. PostgreSQL 8.1 ............................................................................ 399
                Krótka charakterystyka dostępnych dystrybucji ............................................................399
                Zalety i wady ..................................................................................................................399
                Instalacja i konfiguracja .................................................................................................401
                    Windows ..................................................................................................................401
                    Linux ........................................................................................................................402
                Administrowanie serwerem ............................................................................................410
                    Uruchamianie i zatrzymywanie serwera ..................................................................411
                    Zarządzanie bazami danych .....................................................................................413
                    Konfiguracja zestawu znaków .................................................................................414
                    Konserwacja bazy danych ........................................................................................415
                Bezpieczeństwo ..............................................................................................................416
                    Konfigurowanie bezpiecznych połączeń SSL i tunelowanie SSH ..........................417
                    Prawa dostępu do serwera, użytkownicy i role ........................................................418
                    Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................420
6                                                                                          Bazy danych SQL. Teoria i praktyka


                Metadane ........................................................................................................................423
                Narzędzia ........................................................................................................................424
                   Narzędzia od strony serwera ....................................................................................424
                   Narzędzia od strony klienta .....................................................................................426
Rozdział 8. Firebird 1.5 .................................................................................. 431
                Krótka charakterystyka dostępnych dystrybucji ............................................................431
                Zalety i wady ..................................................................................................................431
                Instalacja i konfiguracja .................................................................................................433
                    Windows ..................................................................................................................433
                    Linux ........................................................................................................................434
                Administrowanie serwerem ............................................................................................436
                    Uruchamianie i zatrzymywanie serwera ..................................................................437
                    Zarządzanie bazami danych .....................................................................................439
                    Konfiguracja zestawu znaków .................................................................................440
                    Konserwacja bazy danych ........................................................................................440
                    Replikacja bazy ........................................................................................................444
                Bezpieczeństwo ..............................................................................................................445
                    Konfigurowanie bezpiecznego tunelu pomiędzy klientem i serwerem ...................447
                    Prawa dostępu do serwera, użytkownicy i role ........................................................449
                    Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................451
                Metadane ........................................................................................................................452
                Narzędzia ........................................................................................................................454
                    isql ............................................................................................................................454
                    gbak ..........................................................................................................................454
                    gfix ...........................................................................................................................455
                    gsec ..........................................................................................................................456
                    gstat ..........................................................................................................................457
                    qli .............................................................................................................................457
                Skorowidz ..................................................................................... 459
Rozdział 3.
LDAP — hierarchiczna
baza danych
        Opis technologii LDAP prezentowany w tym rozdziale będzie się głównie opierał
        na dystrybucji serwera OpenLDAP w wersji 2.x (www.OpenLDAP.org).



Krótka charakterystyka bazy
        Z pojęciem LDAP wiąże się baza danych oparta na hierarchicznej strukturze, o typie
        danych atrybut-wartość oraz protokole dostępu działającym w oparciu o TCP/IP.

        Hierarchia bazy danych przypomina drzewo katalogu plików (rysunek 3.1), gdzie DN
        (distinguish name) odpowiada ścieżce dostępu do zbioru atrybutów i identyfikuje węzeł
        drzewa (entry).

        Każdy taki węzeł posiada skojarzony z nim zbiór obiektów, które jednoznacznie defi-
        niują zbiór jego dozwolonych atrybutów. Obiekty i atrybuty dla bazy danych LDAP
        definiuje schemat bazy danych (patrz: punkt „Schemat”).

Rysunek 3.1.
Hierarchiczna
struktura bazy LDAP
246                                                      Bazy danych SQL. Teoria i praktyka


        Założeniem LDAP jest uzyskanie prostoty dostępu do danych oraz niewielka ilość
        operacji zapisu w porównaniu z operacjami odczytu obserwowana w rzeczywistych sys-
        temach. W wyniku tych założeń LDAP nie oferuje transakcji.

        Serwer LDAP może być skonfigurowany tak, aby delegował odpowiedzialność za pod-
        gałąź do innego serwera LDAP działającego zwykle na innym komputerze (przedstawia
        to rysunek 3.2). Dzięki takiemu rozwiązaniu bazy LDAP charakteryzują się dużą ska-
        lowalnością.




Rysunek 3.2. Przydział węzłów do serwerów LDAP

        W systemie skonfigurowanym jak na rysunku 3.2 każde żądanie dostępu do węzła
        o DN: dzielnica=podgorze, miasto=Krakow, kraj=PL, które zostanie zgłoszone do serwe-
        ra LDAP1, zostanie przekierowane do serwera LDAP3, który został oddelegowany
        do obsługi podgałęzi "dzielnica=podgorze,miasto=Krakow,kraj=PL". Poszczególne etapy
        obsługi żądania przedstawia rysunek 3.3.

        Obsługa przekierowania powinna zostać zaimplementowana przez program klienta.
        Istnieje jednak bardzo wiele programów klienckich nieobsługujących przekierowań
        i ignorujących informację otrzymaną od serwera LDAP1.


LDIF
        LDIF (LDAP Data Intercharge Format) jest formatem tekstowym reprezentującym
        dane LDAP. Ponieważ użyto formatu tekstowego, więc dane te mogą być z łatwością
        edytowane przez użytkownika.
Rozdział 3. ♦ LDAP — hierarchiczna baza danych                                          247


Rysunek 3.3.
Obsługa
żądania dostępu
do oddelegowanego
węzła




       W uproszczeniu format pliku LDIF przedstawia się następująco:
                    # komentarz
                    dn: <nazwa jednoznaczna>
                    <atrybut>: <wartość>
                    <atrybut>: <wartość>

       Pliki LDIF mogą jednak posiadać bogatszą strukturę. Informacje na ten temat można
       znaleźć w dokumencie RFC 2849 [1].

       Przykład pliku LDIF:
          dn: identyfikator=kowalj,miasto=krakow,kraj=pl
          objectclass: osoba
          identyfikator: kowalj
          nazwisko: kowal
          imie: jan
          wiek: 20

       Tworząc pliki LDIF, możemy łatwo przygotować bazę danych dla serwera LDAP,
       a następnie skorzystać z narzędzia ldiff2ldbm, które potrafi utworzyć na jego pod-
       stawie bazę ldbm.
          ldif2ldbm -f slapd.conf -i my.ldif

       Odwrotną operację konwersji bazy danych ldbm na format LDIF umożliwia ldbmcat.
          ldbmcat -n id2entry.dbb > my.ldif

       Jednak nie możemy użyć narzędzia ldif2ldbm, jeśli jako bazy danych dla serwera LDAP
       (tzw. backend) używamy bazy innej niż ldbm. W tej sytuacji mamy ciągle do dyspozycji
       standardowe narzędzia dostarczane z serwerem i opisane w punkcie „Narzędzia takie jak:
       ldapadd, ldapmodify, ldapdelete itd.”.
248                                                       Bazy danych SQL. Teoria i praktyka


        Utworzenie bazy danych na podstawie pliku LDIF za pomocą ldapadd przedstawia się
        następująco:
           ldapadd -v -D "identyfikator=manager,miasto=krakow,kraj=PL" -w manager -f baza.ldif

        Jeśli najpierw zatrzymamy serwer, możemy posłużyć się również narzędziem slapadd:
           slapadd -l baza.ldif -cv



Schemat
        Schemat LDAP zawiera definicje bazy danych: typy przechowywanych danych, do-
        zwolone wartości lub zakresy atrybutów, wymagalność lub opcjonalność atrybutów,
        informacje o więzach narzuconych na przechowywane wartości, takich jak brak dupli-
        katów, czy informacje o sposobie porównywania wartości. Schemat jest więc definicją
        struktury bazy.

        Schematy są odczytywane podczas startu serwera i tylko dane zgodne z regułami za-
        wartymi w schemacie są dozwolone w bazie danych LDAP.

        Z serwerem OpenLDAP dostarczanych jest kilka plików schematów, które mogą okazać
        się użyteczne dla użytkownika. Jedynie schemat core.schema jest wymagany do pracy
        serwera LDAP, pozostałe są opcjonalne.

        W dostarczonych z serwerem OpenLDAP plikach schematów zdefiniowano wiele obiek-
        tów i atrybutów, które mogą być wykorzystane przy tworzeniu własnej bazy danych.
        Przykładowo tabela 3.1 zawiera listę atrybutów wraz z odpowiadającymi im obiektami,
        które mogą okazać się przydatne podczas tworzenia własnej bazy użytkowników.

        Oczywiście użytkownik może w miarę swoich potrzeb tworzyć własne pliki schematów,
        które może dołączyć do pliku konfiguracyjnego sldap.conf za pomocą instrukcji include.

        Przykład prostego pliku schematu przedstawia listing 3.1:

Listing 3.1. Przykładowy plik schematu
           # Autor: Wiesław Dudek
           # definicja typów atrybutów

           attributetype ( 1.3.6.1.4.1.4203.666.1 NAME 'identyfikator'
                   EQUALITY caseIgnoreMatch
             SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
             SINGLE-VALUE)

           attributetype ( 1.3.6.1.4.1.4203.666.2 NAME 'nazwisko'
                   EQUALITY caseIgnoreMatch
             SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
             SINGLE-VALUE)

           attributetype ( 1.3.6.1.4.1.4203.666.3 NAME 'kraj'
                   EQUALITY caseIgnoreMatch
             SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
             SINGLE-VALUE)
Rozdział 3. ♦ LDAP — hierarchiczna baza danych                                              249


Tabela 3.1. Lista ważniejszych atrybutów zdefiniowanych w schematach dostarczonych
            wraz z serwerem OpenLDAP
                                                                          Nazwa obiektu,
                                Nazwa pola               Plik schematu
 Atrybut                                                                  w którym występuje
                                w MSOutlook              z definicją
                                                                          atrybut
 cn                             Name:                    core.schema      objectPerson
 givenName                      First Name:              core.schema      inetOrgPerson
 initials                       Middle Name:             core.schema      inetOrgPerson
 sn                             Last Name:               core.schema      objectPerson
 mail                           Email Address:           core.schema      inetOrgPerson
 title                          Job Title:               core.schema      organizationalPerson
 physicalDeliveryOfficeName     Office:                  core.schema      organizationalPerson
 o                              Company Name:            core.schema      inetOrgPerson
 postalAddress                  Business                 core.schema      organizationalPerson
                                — Street Address:
 l                              Business — City:         core.schema      organizationalPerson
 st                             Business                 core.schema      organizationalPerson
                                — State/Province:
 postalCode                     Business — Zip Code:     core.schema      organizationalPerson
 c                              Business                 core.schema      officePerson
                                — Country/Region:
 telephoneNumber                Business:                core.schema      organizationalPerson
 facsimileTelephoneNumber       Business Fax:            core.schema      organizationalPerson
 homePhone                      Home:                    cosine.schema    inetOrgPerson
 mobile                         Mobile:                  cosine.schema    inetOrgPerson
 homePostalAddress              Home — Street Address:   cosine.schema    inetOrgPerson
 manager                        Manager:                 cosine.schema    inetOrgPerson
 pager                          Pager:                   cosine.schema    inetOrgPerson


              attributetype ( 1.3.6.1.4.1.4203.666.4 NAME 'miasto'
                      EQUALITY caseIgnoreMatch
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
                SINGLE-VALUE)

              attributetype ( 1.3.6.1.4.1.4203.666.5 NAME 'dzielnica'
                      EQUALITY caseIgnoreMatch
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
                SINGLE-VALUE)

              attributetype ( 1.3.6.1.4.1.4203.666.6 NAME 'imie'
                      DESC 'Imiona'
                EQUALITY caseIgnoreMatch
                SUBSTR caseIgnoreSubstringsMatch
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
250                                                    Bazy danych SQL. Teoria i praktyka


        attributetype ( 1.3.6.1.4.1.4203.666.7 NAME 'wiek'
          EQUALITY caseIgnoreMatch
          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
          SINGLE-VALUE)

        #definicja typów obiektów

        objectclass ( 1.3.6.1.4.1.4203.666.8 NAME 'osoba'
          MUST ( identyfikator $ nazwisko $ imie)
          MAY ( wiek ) )

        objectclass (1.3.6.1.4.1.4203.666.9 NAME 'miasteczko'
          MUST ( miasto ))

        objectclass ( 1.3.6.1.4.1.4203.666.10 NAME 'rejon'
          MUST ( dzielnica ))


      Jak widzimy, każdy element schematu posiada własny identyfikator obiektu, tzw. OID
      (Object Identifier), np. OID elementu "rejon" to 1.3.6.1.4.1.4203.666.10. Numer ten
      rozpoczyna się od prefiksu przyznanego organizacji przez właściwy urząd (np. przez
      urząd IANA[2]). W przykładzie użyliśmy prefiksu 1.3.6.1.4.1.4203.666, który jest
      zarezerwowany przez OpenLDAP.org dla celów „eksperymentalnych”. Jednak mogli-
      śmy użyć dowolnego prefiksu zgodnego z notacją OID niekolidującego z prefiksami
      użytymi w innych używanych przez nas schematach, ponieważ nasz plik schematu jest
      przeznaczony tylko do własnego użytku. Kolejne elementy schematu otrzymują numery
      rozpoczynające się od prefiksu: 1.3.6.1.4.1.4203.666.1, 1.3.6.1.4.1.4203.666.2 itp.

      W naszym przykładowym pliku schematu pojawiły się dwa typy definicji: definicje
      typów atrybutów rozpoczynające się od słowa attributetype oraz definicje typów
      obiektów rozpoczynające się od słowa objectclass. Definicja typu obiektu określa,
      jakie atrybuty muszą lub mogą stać się jego składnikami.

      Składowe definicji typu atrybutu
          NAME — nazwa atrybutu. Nazwa ta, podobnie jak numer OID, powinna być
          unikalna. Jeśli schemat będzie publicznie wykorzystywany, dobrym pomysłem
          jest poprzedzanie nazw naszych atrybutów prefiksem organizacji, podobnie jak
          to ma miejsce w przypadku numeru OID.

        Dozwolone jest użycie kilku nazw dla atrybutu, np. attributetype ( 2.5.4.7 NAME
        ( 'l' 'localityName' ) SUP name ).


          DESC — opis atrybutu.
          SUP — deklaracja dziedziczenia; definiowanie nowego atrybutu na podstawie
          istniejącego.

      Przykład pochodzący z pliku core.schema — definiowanie atrybutu member:
        attributetype ( 2.5.4.31 NAME 'member' SUP distinguishedName )
Rozdział 3. ♦ LDAP — hierarchiczna baza danych                                                   251


         Atrybut member dziedziczy właściwości atrybutu distinguishedName.
                EQUALITY — określa regułę porównywania elementów (patrz: tabela 3.2).
                ORDERING — określa regułę porównywania elementów za pomocą operatorów
                <= i >= (możliwe wartości patrz: tabela 3.2).

Tabela 3.2. Reguły dopasowywania
 Nazwa                                Stosowana do     Znaczenie
 booleanMatch                         EQUALITY         porównywanie wartości logicznych
 caseIgnoreMatch                      EQUALITY         brak wrażliwości na wielkość liter i odstępy
 caseExactMatch                       EQUALITY         wrażliwe na wielkość liter, niewrażliwe
                                                       na odstępy
 distinguishedNameMatch               EQUALITY         porównywanie wartości DN
 integerMatch                         EQUALITY         porównywanie liczb całkowitych
 numericStringMatch                   EQUALITY         porównywanie ciągów numerycznych
 octetStringMatch                     EQUALITY         porównywanie ciągów bajtów
 objectIdentiferMatch                 EQUALITY         porównywanie OID-ów
 caseIgnoreOrderingMatch              ORDERING         niewrażliwe na wielkość liter i odstępy
 caseExactOrderingMatch               ORDERING         wrażliwe na wielkość liter, niewrażliwe
                                                       na odstępy
 integerOrderingMatch                 ORDERING         porównywanie liczb całkowitych
 numericStringOrderingMatch           ORDERING         porównywanie ciągów numerycznych
 octetStringOrderingStringMatch       ORDERING         porównywanie ciągów bajtów
 octetStringSubstringsStringMatch     ORDERING         porównywanie ciągów bajtów
 caseIgnoreSubstringsMatch            SUBSTR           niewrażliwe na wielkość liter i odstępy
 caseExactSubstringsMatch             SUBSTR           wrażliwe na wielkość liter, niewrażliwe
                                                       na odstępy
 numericStringSubstringsMatch         SUBSTR           porównywanie ciągów numerycznych

                SUBSTR — określa regułę porównywania elementów za pomocą znaków
                wieloznacznych (wildcards) (patrz: tabela 3.2).
                SYNTAX — typ atrybutu (najczęściej wykorzystywane typy atrybutów patrz:
                tabela 3.3).

         Przykład deklaracji:
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{30} określa atrybut typu
                DirectoryString kodowany w UTF-8 o długości maksymalnej 30 znaków.
                SINGLE-VALUE — blokuje wstawianie duplikatów.
                NO-USER-MODIFICATION — blokuje możliwość modyfikacji atrybutu.
                COLLECTIVE — atrybut będzie definiował kolekcję węzłów.
                USAGE — jedna z wartości: userApplications, directoryOperation,
                distributedOperation, dSAOperation.
252                                                          Bazy danych SQL. Teoria i praktyka


Tabela 3.3. Typy atrybutów (SYNTAX)
 Nazwa                   OID                             Znaczenie
 boolean                 1.3.6.1.4.1.1466.115.121.1.7    wartość logiczna
 DirectoryString         1.3.6.1.4.1.1466.115.121.1.15   ciąg znaków kodowany w UTF-8
                                                         Można zapisywać polskie znaki.
 distinguishedName       1.3.6.1.4.1.1466.115.121.1.12   LDAP DN
 integer                 1.3.6.1.4.1.1466.115.121.1.27   liczba całkowita
 numericString           1.3.6.1.4.1.1466.115.121.1.36   ciąg znaków numerycznych
 OID                     1.3.6.1.4.1.1466.115.121.1.38   identyfikator obiektu
 octetString             1.3.6.1.4.1.1466.115.121.1.40   ciąg bajtów, np. rysunek lub inny obiekt
                                                         binarny kodowany w standardzie Base64

           Składowe definicji typu obiektu
               NAME — nazwa obiektu. Nazwa ta powinna być unikalna.
               DESC — opis obiektu.
               SUP — deklarowanie dziedziczenia (określanie nowego obiektu na podstawie
               istniejącego).
               ABSTRACT — deklarowanie obiektu abstrakcyjnego, tj. będącego punktem wyjścia
               do definiowania nowych obiektów.
               MUST — deklarowanie atrybutów, które muszą towarzyszyć obiektowi.
               MAY — deklarowanie atrybutów, które mogą (ale nie muszą) towarzyszyć
               obiektowi.



Zalety i wady
           W podrozdziałach „Zalety i wady” standardowo występujących w każdym z następnych
           rozdziałów zostaną przedstawione wybrane cechy opisywanego systemu, które z różnych
           powodów zasługują na uwagę. Trzeba jednak pamiętać, że sytuacja na rynku informa-
           tycznym zmienia się z dnia na dzień i opisywane wady mogą zostać usunięte w kolej-
           nych wersjach, a zalety staną się standardem na rynku tego typu oprogramowania.
           Przedstawione w tej książce zestawienia mają jednak dać Czytelnikowi wyobrażenie
           na temat bieżącej sytuacji. Sam użytkownik zdecyduje, które z tych cech mają dla niego
           znaczenie. Być może pewna wada zdyskwalifikuje produkt pod kątem jakiegoś wyko-
           rzystania. Z drugiej strony użytkownik może chcieć skorzystać z pewnej opcji dostępnej
           w danym produkcie, która z pozoru wydawałaby się mało istotna.

           Śledząc zapotrzebowanie na pewne rozwiązania, wydaje się, że stworzenie listy wad
           i zalet ma sens. Użytkownik może je traktować jako pewien głos w dyskusji.
Rozdział 3. ♦ LDAP — hierarchiczna baza danych                                         253


       Przedstawiając w dużym skrócie i z pewnością nie wyczerpując tematu, można wy-
       mienić zalety i wady technologii LDAP.

       Zalety:
            małe wymagania sprzętowe;
            łatwość integracji z innym oprogramowaniem (serwerami SQL, programami
            pocztowymi itp.);
            bardzo dobra skalowalność;
            prostota w użyciu.

       Wady:
            mała szybkość i możliwości w porównaniu z bazami danych SQL;
            brak transakcji.

       Podsumowanie
       Zapytania do bazy danych SQL są dużo szybsze niż odpowiadające im zapytania do
       bazy LDAP. Co więcej, efektywność LDAP może być nawet kilkadziesiąt razy mniej-
       sza niż bazy danych SQL. Wybór rozwiązania może więc wydawać się bardzo prosty,
       jednak należy pamiętać, że bazy LDAP mają też sporo zalet. Zalety te powodują, że
       ciągle są one obiektem zainteresowania i stają się standardem dla pewnych rozwią-
       zań, np.: systemu logowania użytkowników, systemu książek adresowych, informacji
       o użytkownikach itd. Do zalet tych należy głównie prostota i łatwość integracji z in-
       nym oprogramowaniem. Otwarty protokół LDAP i współpraca serwerów LDAP z innym
       oprogramowaniem, w szczególności z bazami danych SQL, może pomóc w integracji
       systemów będących w dyspozycji użytkownika.



Instalacja i konfiguracja
       Instalacja serwera OpenLDAP jest stosunkowo prosta. Z pewnością będzie wymagać
       trochę więcej wysiłku w systemie Linux, zwłaszcza jeśli zechcemy skonfigurować bez-
       pieczne uwierzytelnienie np. przez SSL.

       OpenLDAP jest darmowym oprogramowaniem, które można pobrać ze strony www.
       openldap.org.

       Instalacja serwera OpenLDAP zarówno w systemie Windows, jak i w systemie Linux
       przebiega bardzo podobnie i składa się z następujących etapów:
         1. Zainstalowanie oprogramowania serwera.
         2. Utworzenie plików schematu bazy danych (patrz: punkt „Schemat”).
         3. Skonfigurowanie serwera polegające na modyfikacji pliku slapd.conf
            (patrz: punkt: „Plik slapd.conf”).
254                                                        Bazy danych SQL. Teoria i praktyka


           4. Utworzenie pliku LDIF z danymi naszej nowej bazy danych
               (patrz: punkt „LDIF”).
           5. Uruchomienie serwera LDAP (patrz: punkt „Uruchamianie i zatrzymywanie
               serwera”).
           6. Utworzenie bazy danych na podstawie pliku LDIF (patrz: punkt „LDIF”).

        Standardowe porty, na których nasłuchuje serwer LDAP, to port 389 dla połączenia
        nieszyfrowanego oraz 636 dla połączeń szyfrowanych TLS/SSL.


Popularne konfiguracje serwera LDAP
        Najpopularniejsze konfiguracje serwera LDAP przedstawiono na kolejnych rysunkach.
        Niektóre z nich pozwalają na rozłożenie obciążenia na kilka serwerów (patrz: rysunek 3.5
        i rysunek 3.6), celem innych jest dodatkowo uzyskanie bezpieczeństwa danych (patrz:
        rysunek 3.6).

        Konfiguracja podstawowa
        Jest to konfiguracja domyślna tworzona podczas instalacji serwera LDAP, na którą
        składa się jeden serwer (patrz: rysunek 3.4). Żądania nadchodzące od strony klienta są
        całkowicie przetwarzane na tym serwerze. Jeśli serwer nie potrafi obsłużyć żądań, infor-
        muje o tym i nie odsyła klienta do innych serwerów LDAP.

Rysunek 3.4.
Konfiguracja
podstawowa




Rysunek 3.5.
Konfiguracja
z serwerami
referencyjnymi
Rozdział 3. ♦ LDAP — hierarchiczna baza danych                                           255




Rysunek 3.6. Konfiguracja z replikacją typu MASTER-SLAVE

        Konfiguracja z serwerami referencyjnymi
        Ta konfiguracja pozwala uzyskać sieć powiązanych ze sobą serwerów LDAP, które
        odsyłają klientów do siebie nawzajem w zależności od możliwości obsłużenia ich żądań.

        Na rysunku 3.5 klient w kroku 2. otrzymuje od serwera LDAP1 referencję do serwera
        LDAP2, który zdaniem serwera LDAP1 jest w stanie obsłużyć żądanie klienta. Klient
        po otrzymaniu referencji ponawia żądanie, kierując je już do właściwego serwera.

        Serwery LDAP obsługują dwa rodzaje referencji:
          1. Referencje definiowane w pliku slapd.conf za pomocą słowa referral
               referral ldap://root.openldap.org/

             Jeśli żądanie klienta dotyczy węzła spoza obsługiwanej domeny określonej
             poprzez słowo suffix, serwer zwraca klientowi referencję do właściwego
             serwera LDAP (ldap://root.openldap.org), który może obsłużyć żądanie
             klienta lub odesłać go do innego serwera.

             Na przykład: jeśli w pliku slapd.conf określono
               suffix miasto=krakow,kraj=pl

             żądanie klienta dotyczące węzła miasto=warszawa,kraj=pl zwróci referencję
             zdefiniowaną w referral.
          2. Referencje definiowane dla węzła poprzez przypisanie węzłowi obiektu
             referral
               dn: dc=poddrzewo,dc=myserver,dc=pl
               objectClass: referral
               objectClass: extensibleObject
               dc: poddrzewo
               ref: ldap://myserver.pl/dc=poddrzewo,dc=myserver,dc=pl
256                                                        Bazy danych SQL. Teoria i praktyka


           Każde odwołanie do podgałęzi dc=poddrzewo,dc=myserver,dc=pl zwróci
           referencję: ldap://myserver.pl/dc=poddrzewo,dc=myserver,dc=pl. W ten sposób
           obsługa tej podgałęzi zostanie oddelegowana do serwera myserver.pl.

         Niestety wiele narzędzi klienta nie potrafi zinterpretować otrzymanej od serwera LDAP
         referencji i ponowić żądania z wykorzystaniem otrzymanej referencji.


      Konfiguracja z replikacją typu MASTER-SLAVE
      Konfiguracja ta pozwala zmniejszyć ryzyko utraty danych w przypadku awarii i po-
      prawić bezpieczeństwo systemu, ponieważ dane są replikowane do innych baz danych
      LDAP. Dodatkową korzyścią uzyskiwaną tutaj jest rozproszenie danych, które podob-
      nie jak w poprzednio omówionym przypadku pozwala na rozłożenie obciążenia ser-
      werów. Przykładowo: serwer LDAP2 może obsługiwać jedynie modyfikacje danych,
      natomiast serwer LDAP1 (replika) służyć do odczytywania i przeglądania danych.

      Konfiguracja ta jest oparta na architekturze MASTER-SLAVE. MASTER jest serwerem
      głównym, a modyfikacje jego bazy danych są propagowane dalej i zapisywane do baz
      danych wszystkich skonfigurowanych serwerów SLAVE.

      Przykład żądania zapisu danych do bazy serwera LDAP1 przedstawia rysunek 3.6.
      Serwer LDAP1, który jest serwerem SLAVE, informuje klienta, że takie zmiany można
      wprowadzać jedynie na serwerze MASTER, zwracając odpowiednią referencję (2).
      Klient formułuje nowe żądanie, wysyłając je tym razem pod właściwy adres (3) i uzy-
      skuje potwierdzenie (4). Zmiany wprowadzone w bazie danych serwera MASTER są
      zapisywane do dziennika replikacji (5) i od tego momentu są dostępne dla programu
      slurpd (6), który propaguje je dalej (7) do serwera SLAVE (lub wielu serwerów SLAVE).

      Przedstawiony scenariusz opisuje próbę zapisu na serwerze SLAVE. W przypadku
      próby odczytu scenariusz zakończyłby się w punkcie 2. po zwróceniu odpowiedzi przez
      serwer SLAVE.

      Dalsze informacje na temat konfigurowania replikacji są opisane w punkcie „Re-
      plikacja”.

      Konfiguracja mieszana
      Konfiguracja mieszana stanowi połączenie konfiguracji z serwerami referencyjnymi
      oraz konfiguracji z replikacją typu MASTER-SLAVE i jest podstawą budowy dużych
      systemów.

Plik slapd.conf
      Konfiguracja serwera LDAP jest oparta na pliku slapd.conf. Plik ten decyduje o wszyst-
      kich parametrach pracy serwera (patrz: tabela 3.4).

      Przykład minimalnej konfiguracji (plik slapd.conf) przedstawia listing 3.2.
Rozdział 3. ♦ LDAP — hierarchiczna baza danych                                                   257


Listing 3.2. Przykładowy plik slapd.conf
              include         ./schema/core.schema
              include         ./schema/my.schema
              #definicja bazy
              database ldbm
              suffix          "miasto=krakow,kraj=pl"
              rootdn          "identyfikator=manager,miasto=krakow,kraj=pl"
              rootpw          manager
              directory       ./data
              access to * by * write


Tabela 3.4. Lista i znaczenie parametrów konfiguracyjnych pliku slapd.conf
 Parametr                Znaczenie                             Użycie
 access                  Określa prawa dostępu do węzłów       Patrz: punkt „Prawa dostępu
                         i atrybutów.                          do serwera”.
 defaultaccess           Domyślny tryb dostępu, jeśli tryb     defaultaccess none — brak dostępu.
                         dostępu nie był określony             defaultaccess read — domyślny
                         w parametrze access.                  tryb odczytu.
 include                 Włączenie pliku (plik powinien        include core.schema — włączenie pliku
                         posiadać taki sam format jak          schematu.
                         slapd.conf).
 loglevel                Poziom logowania.                     loglevel 255 — szczegółowy poziom
                                                               logowania informacji.
 referral                Referencja zwracana klientowi         referral myserver.com
                         w przypadku żądań dotyczących
                         węzłów nieobsługiwanych
                         przez serwer.
 sizelimit               Maksymalna ilość elementów            sizelimit 100
                         zwrócona przez serwer w jednej
                         operacji odczytu.
 timelimit               Maksymalny czas (w sekundach)         timelimit 300
                         na obsługę żądania klienta.
 database                Wybrana baza danych dla serwera       database ldbm
                         LDAP.                                 database shell
                         Wszystkie parametry pojawiające       database passwd
                         się do następnego użycia parametru
                         database dotyczą tej bazy danych
                         (patrz: przykład slapd.conf
                         w punkcie „Interfejs”).
 readonly                Włącza lub wyłącza tryb read-only.    readonly on
 replica                 Informacja o powiązanym serwerze      replica uri=ldap://myserver:389
                         replikacji SLAVE.                     binddn="identyfikator=manager,
                         Patrz: punkt „Replikacja”.            miasto=krakow,kraj=pl" bindmethod=
                                                               simple credentials=manager
 replogfile              Nazwa pliku dziennika logowania       replogfile ./logs/master-ldap.replog
                         zmian w bazie danych, plik ten jest
                         używany w procesie replikacji
                         przez program slurpd.
258                                                            Bazy danych SQL. Teoria i praktyka


Tabela 3.4. Lista i znaczenie parametrów konfiguracyjnych pliku slapd.conf (ciąg dalszy)
 Parametr               Znaczenie                            Użycie
 rootdn                 DN logowania do serwera,             rootdn "identyfikator=manager,
                        (używane w opcji -D narzędzi         miasto=krakow,kraj=pl"
                        takich jak ldapadd).
 rootpw                 Hasło logowania do serwera.          rootpw manager
 suffix                 Określa węzeł podstawowy             suffix "miasto=krakow,kraj=pl"
                        dla danej bazy danych, wszystkie
                        zapytania kierowane do tego węzła
                        lub podwęzłów będą dotyczyły bazy,
                        dla której jest ustawiony suffix.
 updatedn               Określa DN uprawione                 updatedn "identyfikator=manager,
                        do wprowadzenia zmian do repliki     miasto=krakow,kraj=pl"
                        (SLAVE), powinno odpowiadać
                        klauzuli binddn dyrektywy replica
                        dla serwera MASTER.
                        Opcja dostępna tylko dla SLAVE.
 updateref              Referencja do serwera MASTER.        updateref "myserver.net"
                        Opcja dostępna tylko dla SLAVE.
 directory              Kartoteka dla bazy danych.           directory ./data
 index                  Definicje indeksów.                  index objectClass eq — indeks
                        Dozwolone wartości:                  dla obiektu objectClass.
                          none — brak indeksu,
                          eq — wyszukiwanie w indeksie
                          będzie oparte na porównaniu
                          całych elementów,
                          sub — wyszukiwanie
                          podstringów,
                          pres — wyszukiwanie
                          przez (st=*), tzn. wszystkich
                          elementów.
 objectclass            Patrz: punkt „Schemat”.
 attributetype          Patrz: punkt „Schemat”.
 schemacheck            Włączenie lub wyłączenie             schemacheck on
                        sprawdzenia pliku schematu.
 TLSCipherSuite         Akceptowalny sposób szyfrowania.     TLSCipherSuite HIGH:MEDIUM:+SSLv2
 TLSCACertificateFile   Plik z certyfikatem.                 TLSCACertificateFile cacert.pem
 TLSCACertificatePath   Kartoteka zawierająca                TLSCACertificatePath ./cert
                        certyfikaty CA.
 TLSCertificateFile     Plik z certyfikatem serwera.         TLSCertificateFile servercrt.pem
 TLSCertificateKeyFile Plik klucza prywatnego serwera.       TLSCertificateKeyFile serverkey.pem
 TLSVerifyClient        Poziom uwierzytelnienia klienta:     TLSVerifyClient demand
                        never, allow, try, demand, hard.
Rozdział 3. ♦ LDAP — hierarchiczna baza danych                                            259


Instalacja książki adresowej LDAP
       Instalacja książki adresowej LDAP w programie Microsoft Outlook Express przedsta-
       wia się następująco:
         1. W menu Narzędzia należy wybrać Konta.
         2. W oknie Konta internetowe po wybraniu Dodaj wybieramy Usługa katalogowa.
         3. W oknie Kreator połączeń internetowych należy podać URL serwera LDAP,
            np. ldap.myserver.pl lub localhost, jeśli nasz serwer uruchomiliśmy na lokalnym
            komputerze.
         4. Ustalamy, czy musimy logować się do serwera.
         5. Jeśli wybraliśmy opcję logowania do serwera, powinniśmy podać DN
            logowania i hasło, np.:
               Nazwa konta: identyfikator=manager,miasto=krakow,kraj=pl
               Hasło: manager

         6. Decydujemy, czy program MS Outlook Express powinien sprawdzać
            wpisywane adresy e-mail w bazie danych LDAP.
         7. W oknie Konta internetowe w zakładce Usługa katalogowa wybieramy z listy
            skonfigurowany przez nas serwer i naciskamy przycisk Właściwości.
         8. Wybieramy zakładkę Zaawansowane i sprawdzamy, czy ustawienie portu
            jest właściwe (jest to szczególnie ważne, jeśli serwera nie uruchomiliśmy
            na standardowym numerze portu) i jeśli jest niewłaściwe, poprawiamy je.
            Wprowadzamy również poprawnie Bazę wyszukiwania, czyli węzeł stanowiący
            podstawę przeszukiwania drzewa LDAP.
         9. Naciskamy OK.

       Aby skorzystać z tak skonfigurowanej książki adresowej:
         1. Otwieramy książkę adresową, naciskając przycisk: Adresy.
         2. W menu Edycja wybieramy Znajdź osoby.
         3. Na liście Szukaj w wybieramy skonfigurowany przez nas serwer LDAP.
         4. Wprowadzamy np. nazwę użytkownika w polu Nazwa (może być *)
            i naciskamy OK.


Konfigurowanie bazy SQL jako „backendu”
       Serwer LDAP dysponuje dużą liczbą możliwości, jeśli chodzi o wybór bazy danych
       używanej do przechowywania danych (tzw. backends): bdb, hdb, ldbm. W roli bazy
       danych (backendu) można użyć shell, aby uzyskać dostęp do wybranych skryptów po-
       włoki, lub passwd, aby uzyskać dostęp do pliku passwd. Niekoniecznie zatem w roli

More Related Content

What's hot

Wprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWydawnictwo Helion
 
Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościWydawnictwo Helion
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawWydawnictwo Helion
 
Bazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawBazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawWydawnictwo Helion
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaWydawnictwo Helion
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQLOracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQLWydawnictwo Helion
 
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danychOracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danychWydawnictwo Helion
 

What's hot (20)

SQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowySQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowy
 
Wprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danych
 
Access 2003 PL. Kurs
Access 2003 PL. KursAccess 2003 PL. Kurs
Access 2003 PL. Kurs
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
Access 2007 PL. Kurs
Access 2007 PL. KursAccess 2007 PL. Kurs
Access 2007 PL. Kurs
 
Access 2003 PL. Biblia
Access 2003 PL. BibliaAccess 2003 PL. Biblia
Access 2003 PL. Biblia
 
Access 2003 PL dla każdego
Access 2003 PL dla każdegoAccess 2003 PL dla każdego
Access 2003 PL dla każdego
 
Delphi 7 i bazy danych
Delphi 7 i bazy danychDelphi 7 i bazy danych
Delphi 7 i bazy danych
 
Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwości
 
Wprowadzenie do baz danych
Wprowadzenie do baz danychWprowadzenie do baz danych
Wprowadzenie do baz danych
 
MySQL. Opis języka
MySQL. Opis językaMySQL. Opis języka
MySQL. Opis języka
 
SQL w mgnieniu oka
SQL w mgnieniu okaSQL w mgnieniu oka
SQL w mgnieniu oka
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstaw
 
Bazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawBazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstaw
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga eksperta
 
MySQL. Podstawy
MySQL. PodstawyMySQL. Podstawy
MySQL. Podstawy
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
Java Data Objects
Java Data ObjectsJava Data Objects
Java Data Objects
 
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQLOracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
 
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danychOracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
 

Viewers also liked

4FunMedia S.A. Prospekt Emisyjny
4FunMedia S.A. Prospekt Emisyjny4FunMedia S.A. Prospekt Emisyjny
4FunMedia S.A. Prospekt EmisyjnyStockradar
 
Anton Szandor La Vey Biblia Szatana[1]
Anton Szandor La Vey   Biblia Szatana[1]Anton Szandor La Vey   Biblia Szatana[1]
Anton Szandor La Vey Biblia Szatana[1]Miroslaw Duczkowski
 
Funkcje społeczne sektora publicznego, podmioty...
Funkcje społeczne sektora publicznego, podmioty...Funkcje społeczne sektora publicznego, podmioty...
Funkcje społeczne sektora publicznego, podmioty...UJ
 
Corpus linguistics the basics
Corpus linguistics the basicsCorpus linguistics the basics
Corpus linguistics the basicsJorge Baptista
 
2. psychiatryczna opieka [rodowiskowa w polsce
2. psychiatryczna opieka [rodowiskowa w polsce2. psychiatryczna opieka [rodowiskowa w polsce
2. psychiatryczna opieka [rodowiskowa w polsceMrtinez86
 

Viewers also liked (10)

4FunMedia S.A. Prospekt Emisyjny
4FunMedia S.A. Prospekt Emisyjny4FunMedia S.A. Prospekt Emisyjny
4FunMedia S.A. Prospekt Emisyjny
 
Anton Szandor La Vey Biblia Szatana[1]
Anton Szandor La Vey   Biblia Szatana[1]Anton Szandor La Vey   Biblia Szatana[1]
Anton Szandor La Vey Biblia Szatana[1]
 
BRE-CASE Seminarium 80 - Integration of European Financial Markets - The C...
 BRE-CASE Seminarium 80  -  Integration of European Financial Markets - The C... BRE-CASE Seminarium 80  -  Integration of European Financial Markets - The C...
BRE-CASE Seminarium 80 - Integration of European Financial Markets - The C...
 
2
22
2
 
Motywacje
MotywacjeMotywacje
Motywacje
 
Funkcje społeczne sektora publicznego, podmioty...
Funkcje społeczne sektora publicznego, podmioty...Funkcje społeczne sektora publicznego, podmioty...
Funkcje społeczne sektora publicznego, podmioty...
 
Z3.01
Z3.01Z3.01
Z3.01
 
Corpus linguistics the basics
Corpus linguistics the basicsCorpus linguistics the basics
Corpus linguistics the basics
 
Testare psihologica
Testare psihologicaTestare psihologica
Testare psihologica
 
2. psychiatryczna opieka [rodowiskowa w polsce
2. psychiatryczna opieka [rodowiskowa w polsce2. psychiatryczna opieka [rodowiskowa w polsce
2. psychiatryczna opieka [rodowiskowa w polsce
 

Similar to Bazy danych SQL. Teoria i praktyka

Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaWydawnictwo Helion
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
 
SQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystkoSQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystkoWydawnictwo Helion
 
SQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawSQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawWydawnictwo Helion
 
Projektowanie struktur Active Directory
Projektowanie struktur Active DirectoryProjektowanie struktur Active Directory
Projektowanie struktur Active DirectoryWydawnictwo Helion
 
Oracle9i. Programowanie w języku PL/SQL
Oracle9i. Programowanie w języku PL/SQLOracle9i. Programowanie w języku PL/SQL
Oracle9i. Programowanie w języku PL/SQLWydawnictwo Helion
 
Oracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychOracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychWydawnictwo Helion
 
Access 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danychAccess 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danychWydawnictwo Helion
 

Similar to Bazy danych SQL. Teoria i praktyka (14)

SQL. Optymalizacja
SQL. OptymalizacjaSQL. Optymalizacja
SQL. Optymalizacja
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
 
SQL. Szybki start
SQL. Szybki startSQL. Szybki start
SQL. Szybki start
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
MySQL
MySQLMySQL
MySQL
 
SQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystkoSQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystko
 
SQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstawSQL Server 2005. Programowanie. Od podstaw
SQL Server 2005. Programowanie. Od podstaw
 
Projektowanie struktur Active Directory
Projektowanie struktur Active DirectoryProjektowanie struktur Active Directory
Projektowanie struktur Active Directory
 
JBuilder i bazy danych
JBuilder i bazy danychJBuilder i bazy danych
JBuilder i bazy danych
 
Oracle9i. Programowanie w języku PL/SQL
Oracle9i. Programowanie w języku PL/SQLOracle9i. Programowanie w języku PL/SQL
Oracle9i. Programowanie w języku PL/SQL
 
Oracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychOracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkujących
 
100 sposobów na Access
100 sposobów na Access100 sposobów na Access
100 sposobów na Access
 
Access 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danychAccess 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danych
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 

Bazy danych SQL. Teoria i praktyka

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TREœCI Bazy danych SQL. Teoria i praktyka KATALOG KSI¥¯EK Autor: Wies³aw Dudek ISBN: 83-246-0503-7 KATALOG ONLINE Format: B5, stron: 4882 Przyk³ady na ftp: 1929 kB ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK Bazy danych to aplikacje, z których korzystaj¹ niemal wszyscy u¿ytkownicy DODAJ DO KOSZYKA komputerów, czasem nawet nie zdaj¹c sobie z tego sprawy. W bazach danych przechowywane s¹ informacje o u¿ytkownikach witryny WWW, kontrahentach firmy czy numerach telefonów abonentów operatora telekomunikacyjnego. Baz¹ danych jest CENNIK I INFORMACJE równie¿ rejestr systemu Windows i ksi¹¿ka telefoniczna w telefonie komórkowym. Jednak aby zapisaæ dane w formacie odpowiednim dla aplikacji niezbêdne s¹ ZAMÓW INFORMACJE standardy. Wspó³czeœnie wykorzystywany relacyjny model przechowywania danych O NOWOœCIACH sprawdza siê znakomicie. Do manipulowania danymi zapisanymi w bazach stosowany jest inny standard: jêzyk SQL. ZAMÓW CENNIK Ksi¹¿ka „Bazy danych SQL. Teoria i praktyka” przedstawia wszystkie zagadnienia zwi¹zane z przechowywaniem i przetwarzaniem danych we wspó³czesnych aplikacjach. Przeczytasz w niej o relacyjnym i obiektowym modelu danych oraz najczêœciej CZYTELNIA stosowanych systemach zarz¹dzania bazami danych. Dowiesz siê, jakie instrukcje jêzyka SQL wykorzystywane s¹ do wprowadzania danych, przetwarzania ich FRAGMENTY KSI¥¯EK ONLINE i wybierania z bazy. Nauczysz siê optymalizowaæ zapytania oraz stosowaæ indeksy i procedury sk³adowane. W ksi¹¿ce znajdziesz równie¿ praktyczne wskazówki dotycz¹ce konfigurowania serwerów baz danych i administrowania nimi. • Przechowywanie prostych danych • Relacyjny i obiektowy model danych • Typy danych w jêzyku SQL • Instrukcje jêzyka SQL • Indeksy, wyzwalacze i procedury sk³adowane • Manipulowanie danymi • Optymalizacja zapytañ • Charakterystyka najpopularniejszych systemów zarz¹dzania bazami danych Wydawnictwo Helion Poznaj tajniki wspó³czesnych mechanizmów przechowywania informacji ul. Koœciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl
  • 2. Spis treści Rozdział 1. Sposoby na przechowywanie prostych danych .................................... 7 Typy plików .......................................................................................................................7 Pliki tekstowe ...............................................................................................................7 Pliki typowane .............................................................................................................9 Pliki strumieniowe .....................................................................................................10 Pliki amorficzne .........................................................................................................14 Przechowywanie konfiguracji programu ...........................................................................18 Rejestr systemu Windows ..........................................................................................18 Pliki INI .....................................................................................................................21 Pliki XML ..................................................................................................................23 Zaawansowane rozwiązania systemu Windows ..............................................................24 Pliki odwzorowane .....................................................................................................24 Pliki ustrukturalizowanego składowania ...................................................................35 Rozdział 2. Baza danych — rozwiązanie dla wymagających ................................ 47 Typy baz danych ..............................................................................................................49 Relacyjny model danych ............................................................................................49 Obiektowy model danych ..........................................................................................52 SQL (strukturalny język zapytań) ....................................................................................53 Charakterystyka języka SQL .....................................................................................53 Typy danych ...............................................................................................................57 Generowanie unikalnych kluczy ................................................................................75 Wartości NULL .........................................................................................................79 Predykaty ...................................................................................................................80 Funkcje agregujące ....................................................................................................98 Wyrażenia SQL ........................................................................................................105 Konstruktor wartości wierszy i tabel .......................................................................128 Transakcje ................................................................................................................130 SQL — język definicji danych ................................................................................131 SQL — język manipulowania danymi .....................................................................171 SQL — język nadzoru .............................................................................................191 Optymalizowanie zapytań ........................................................................................193 Tabele słownikowe ..................................................................................................227 Projektowanie baz danych ..............................................................................................227 Projektowanie logiczne ............................................................................................227 Projektowanie fizyczne ............................................................................................235 Projektowanie danych. Reprezentacje danych rzeczywistych .................................238
  • 3. 4 Bazy danych SQL. Teoria i praktyka Rozdział 3. LDAP — hierarchiczna baza danych ............................................... 245 Krótka charakterystyka bazy ..........................................................................................245 LDIF .........................................................................................................................246 Schemat ....................................................................................................................248 Zalety i wady ..................................................................................................................252 Instalacja i konfiguracja .................................................................................................253 Popularne konfiguracje serwera LDAP ...................................................................254 Instalacja książki adresowej LDAP .........................................................................259 Konfigurowanie bazy SQL jako „backendu” ..........................................................259 Administrowanie serwerem ............................................................................................263 Uruchamianie i zatrzymywanie serwera ..................................................................263 Replikacja ................................................................................................................264 Bezpieczeństwo ..............................................................................................................265 Prawa dostępu do serwera ........................................................................................269 Tworzenie kopii bazy danych ..................................................................................271 Narzędzia ........................................................................................................................271 Interfejsy dostępu do serwera LDAP .............................................................................273 Java ..........................................................................................................................273 Linki ...............................................................................................................................279 Rozdział 4. Oracle 10g ................................................................................... 281 Krótka charakterystyka dostępnych dystrybucji ............................................................281 Zalety i wady ..................................................................................................................283 Instalacja i konfiguracja .................................................................................................285 Windows ..................................................................................................................285 Linux ........................................................................................................................287 Windows i Linux ......................................................................................................290 Administrowanie serwerem ............................................................................................290 Uruchamianie i zatrzymywanie serwera ..................................................................291 Zarządzanie bazami danych .....................................................................................293 Konfiguracja zestawu znaków .................................................................................298 Replikacja bazy ........................................................................................................300 Bezpieczeństwo ..............................................................................................................301 Prawa dostępu do serwera, użytkownicy i role ........................................................302 Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................308 Narzędzia ........................................................................................................................310 SQLPlus ...................................................................................................................310 Exp(ort), Imp(ort) ....................................................................................................311 SQLLoader ...............................................................................................................312 Rozdział 5. SQL Server 2005 .......................................................................... 315 Krótka charakterystyka dostępnych dystrybucji ............................................................315 Zalety i wady ..................................................................................................................317 Instalacja i konfiguracja .................................................................................................319 Opis instalacji MSDE w systemie Windows 2000 ..................................................319 Administrowanie serwerem ............................................................................................322 Uruchamianie i zatrzymywanie serwera ..................................................................323 Zarządzanie bazami danych .....................................................................................323 Konfiguracja zestawu znaków .................................................................................329 Replikacja bazy ........................................................................................................330 Bezpieczeństwo ..............................................................................................................332 Prawa dostępu do serwera, użytkownicy i role ........................................................334 Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................340 Metadane ........................................................................................................................348
  • 4. Spis treści 5 Narzędzia ........................................................................................................................348 OSQL .......................................................................................................................348 SQLCmd ..................................................................................................................350 SQLMaint ................................................................................................................351 BCP (Bulk Copy Program) ......................................................................................352 SQLDiag ..................................................................................................................354 Cliconfg ....................................................................................................................354 Microsoft SQL Server Management Studio Express ...............................................354 Rozdział 6. MySQL 5.0 ................................................................................... 355 Krótka charakterystyka dostępnych dystrybucji ............................................................355 Zalety i wady ..................................................................................................................356 Instalacja i konfiguracja .................................................................................................358 Windows ..................................................................................................................358 Linux ........................................................................................................................361 Administrowanie serwerem ............................................................................................367 Uruchamianie i zatrzymywanie serwera ..................................................................368 Zarządzanie bazami danych .....................................................................................369 Konfiguracja zestawu znaków .................................................................................372 Replikacja bazy ........................................................................................................373 Klaster MySQL ........................................................................................................376 Bezpieczeństwo ..............................................................................................................379 Konfigurowanie bezpiecznych połączeń SSL .........................................................380 Prawa dostępu do serwera, użytkownicy i role ........................................................381 Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................386 Metadane ........................................................................................................................391 Narzędzia ........................................................................................................................391 Mysql .......................................................................................................................391 Mysqladmin .............................................................................................................394 Mysqldump ..............................................................................................................395 Mysqlimport .............................................................................................................396 Mysqlbinlog .............................................................................................................396 Mysqlcheck ..............................................................................................................397 Mysqlshow ...............................................................................................................397 Myisamchk ...............................................................................................................397 Myisampack .............................................................................................................398 MySQL Administrator .............................................................................................398 MySQLInstanceConfig ............................................................................................398 Rozdział 7. PostgreSQL 8.1 ............................................................................ 399 Krótka charakterystyka dostępnych dystrybucji ............................................................399 Zalety i wady ..................................................................................................................399 Instalacja i konfiguracja .................................................................................................401 Windows ..................................................................................................................401 Linux ........................................................................................................................402 Administrowanie serwerem ............................................................................................410 Uruchamianie i zatrzymywanie serwera ..................................................................411 Zarządzanie bazami danych .....................................................................................413 Konfiguracja zestawu znaków .................................................................................414 Konserwacja bazy danych ........................................................................................415 Bezpieczeństwo ..............................................................................................................416 Konfigurowanie bezpiecznych połączeń SSL i tunelowanie SSH ..........................417 Prawa dostępu do serwera, użytkownicy i role ........................................................418 Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................420
  • 5. 6 Bazy danych SQL. Teoria i praktyka Metadane ........................................................................................................................423 Narzędzia ........................................................................................................................424 Narzędzia od strony serwera ....................................................................................424 Narzędzia od strony klienta .....................................................................................426 Rozdział 8. Firebird 1.5 .................................................................................. 431 Krótka charakterystyka dostępnych dystrybucji ............................................................431 Zalety i wady ..................................................................................................................431 Instalacja i konfiguracja .................................................................................................433 Windows ..................................................................................................................433 Linux ........................................................................................................................434 Administrowanie serwerem ............................................................................................436 Uruchamianie i zatrzymywanie serwera ..................................................................437 Zarządzanie bazami danych .....................................................................................439 Konfiguracja zestawu znaków .................................................................................440 Konserwacja bazy danych ........................................................................................440 Replikacja bazy ........................................................................................................444 Bezpieczeństwo ..............................................................................................................445 Konfigurowanie bezpiecznego tunelu pomiędzy klientem i serwerem ...................447 Prawa dostępu do serwera, użytkownicy i role ........................................................449 Tworzenie kopii bezpieczeństwa i odzyskiwanie danych .......................................451 Metadane ........................................................................................................................452 Narzędzia ........................................................................................................................454 isql ............................................................................................................................454 gbak ..........................................................................................................................454 gfix ...........................................................................................................................455 gsec ..........................................................................................................................456 gstat ..........................................................................................................................457 qli .............................................................................................................................457 Skorowidz ..................................................................................... 459
  • 6. Rozdział 3. LDAP — hierarchiczna baza danych Opis technologii LDAP prezentowany w tym rozdziale będzie się głównie opierał na dystrybucji serwera OpenLDAP w wersji 2.x (www.OpenLDAP.org). Krótka charakterystyka bazy Z pojęciem LDAP wiąże się baza danych oparta na hierarchicznej strukturze, o typie danych atrybut-wartość oraz protokole dostępu działającym w oparciu o TCP/IP. Hierarchia bazy danych przypomina drzewo katalogu plików (rysunek 3.1), gdzie DN (distinguish name) odpowiada ścieżce dostępu do zbioru atrybutów i identyfikuje węzeł drzewa (entry). Każdy taki węzeł posiada skojarzony z nim zbiór obiektów, które jednoznacznie defi- niują zbiór jego dozwolonych atrybutów. Obiekty i atrybuty dla bazy danych LDAP definiuje schemat bazy danych (patrz: punkt „Schemat”). Rysunek 3.1. Hierarchiczna struktura bazy LDAP
  • 7. 246 Bazy danych SQL. Teoria i praktyka Założeniem LDAP jest uzyskanie prostoty dostępu do danych oraz niewielka ilość operacji zapisu w porównaniu z operacjami odczytu obserwowana w rzeczywistych sys- temach. W wyniku tych założeń LDAP nie oferuje transakcji. Serwer LDAP może być skonfigurowany tak, aby delegował odpowiedzialność za pod- gałąź do innego serwera LDAP działającego zwykle na innym komputerze (przedstawia to rysunek 3.2). Dzięki takiemu rozwiązaniu bazy LDAP charakteryzują się dużą ska- lowalnością. Rysunek 3.2. Przydział węzłów do serwerów LDAP W systemie skonfigurowanym jak na rysunku 3.2 każde żądanie dostępu do węzła o DN: dzielnica=podgorze, miasto=Krakow, kraj=PL, które zostanie zgłoszone do serwe- ra LDAP1, zostanie przekierowane do serwera LDAP3, który został oddelegowany do obsługi podgałęzi "dzielnica=podgorze,miasto=Krakow,kraj=PL". Poszczególne etapy obsługi żądania przedstawia rysunek 3.3. Obsługa przekierowania powinna zostać zaimplementowana przez program klienta. Istnieje jednak bardzo wiele programów klienckich nieobsługujących przekierowań i ignorujących informację otrzymaną od serwera LDAP1. LDIF LDIF (LDAP Data Intercharge Format) jest formatem tekstowym reprezentującym dane LDAP. Ponieważ użyto formatu tekstowego, więc dane te mogą być z łatwością edytowane przez użytkownika.
  • 8. Rozdział 3. ♦ LDAP — hierarchiczna baza danych 247 Rysunek 3.3. Obsługa żądania dostępu do oddelegowanego węzła W uproszczeniu format pliku LDIF przedstawia się następująco: # komentarz dn: <nazwa jednoznaczna> <atrybut>: <wartość> <atrybut>: <wartość> Pliki LDIF mogą jednak posiadać bogatszą strukturę. Informacje na ten temat można znaleźć w dokumencie RFC 2849 [1]. Przykład pliku LDIF: dn: identyfikator=kowalj,miasto=krakow,kraj=pl objectclass: osoba identyfikator: kowalj nazwisko: kowal imie: jan wiek: 20 Tworząc pliki LDIF, możemy łatwo przygotować bazę danych dla serwera LDAP, a następnie skorzystać z narzędzia ldiff2ldbm, które potrafi utworzyć na jego pod- stawie bazę ldbm. ldif2ldbm -f slapd.conf -i my.ldif Odwrotną operację konwersji bazy danych ldbm na format LDIF umożliwia ldbmcat. ldbmcat -n id2entry.dbb > my.ldif Jednak nie możemy użyć narzędzia ldif2ldbm, jeśli jako bazy danych dla serwera LDAP (tzw. backend) używamy bazy innej niż ldbm. W tej sytuacji mamy ciągle do dyspozycji standardowe narzędzia dostarczane z serwerem i opisane w punkcie „Narzędzia takie jak: ldapadd, ldapmodify, ldapdelete itd.”.
  • 9. 248 Bazy danych SQL. Teoria i praktyka Utworzenie bazy danych na podstawie pliku LDIF za pomocą ldapadd przedstawia się następująco: ldapadd -v -D "identyfikator=manager,miasto=krakow,kraj=PL" -w manager -f baza.ldif Jeśli najpierw zatrzymamy serwer, możemy posłużyć się również narzędziem slapadd: slapadd -l baza.ldif -cv Schemat Schemat LDAP zawiera definicje bazy danych: typy przechowywanych danych, do- zwolone wartości lub zakresy atrybutów, wymagalność lub opcjonalność atrybutów, informacje o więzach narzuconych na przechowywane wartości, takich jak brak dupli- katów, czy informacje o sposobie porównywania wartości. Schemat jest więc definicją struktury bazy. Schematy są odczytywane podczas startu serwera i tylko dane zgodne z regułami za- wartymi w schemacie są dozwolone w bazie danych LDAP. Z serwerem OpenLDAP dostarczanych jest kilka plików schematów, które mogą okazać się użyteczne dla użytkownika. Jedynie schemat core.schema jest wymagany do pracy serwera LDAP, pozostałe są opcjonalne. W dostarczonych z serwerem OpenLDAP plikach schematów zdefiniowano wiele obiek- tów i atrybutów, które mogą być wykorzystane przy tworzeniu własnej bazy danych. Przykładowo tabela 3.1 zawiera listę atrybutów wraz z odpowiadającymi im obiektami, które mogą okazać się przydatne podczas tworzenia własnej bazy użytkowników. Oczywiście użytkownik może w miarę swoich potrzeb tworzyć własne pliki schematów, które może dołączyć do pliku konfiguracyjnego sldap.conf za pomocą instrukcji include. Przykład prostego pliku schematu przedstawia listing 3.1: Listing 3.1. Przykładowy plik schematu # Autor: Wiesław Dudek # definicja typów atrybutów attributetype ( 1.3.6.1.4.1.4203.666.1 NAME 'identyfikator' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE) attributetype ( 1.3.6.1.4.1.4203.666.2 NAME 'nazwisko' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE) attributetype ( 1.3.6.1.4.1.4203.666.3 NAME 'kraj' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE)
  • 10. Rozdział 3. ♦ LDAP — hierarchiczna baza danych 249 Tabela 3.1. Lista ważniejszych atrybutów zdefiniowanych w schematach dostarczonych wraz z serwerem OpenLDAP Nazwa obiektu, Nazwa pola Plik schematu Atrybut w którym występuje w MSOutlook z definicją atrybut cn Name: core.schema objectPerson givenName First Name: core.schema inetOrgPerson initials Middle Name: core.schema inetOrgPerson sn Last Name: core.schema objectPerson mail Email Address: core.schema inetOrgPerson title Job Title: core.schema organizationalPerson physicalDeliveryOfficeName Office: core.schema organizationalPerson o Company Name: core.schema inetOrgPerson postalAddress Business core.schema organizationalPerson — Street Address: l Business — City: core.schema organizationalPerson st Business core.schema organizationalPerson — State/Province: postalCode Business — Zip Code: core.schema organizationalPerson c Business core.schema officePerson — Country/Region: telephoneNumber Business: core.schema organizationalPerson facsimileTelephoneNumber Business Fax: core.schema organizationalPerson homePhone Home: cosine.schema inetOrgPerson mobile Mobile: cosine.schema inetOrgPerson homePostalAddress Home — Street Address: cosine.schema inetOrgPerson manager Manager: cosine.schema inetOrgPerson pager Pager: cosine.schema inetOrgPerson attributetype ( 1.3.6.1.4.1.4203.666.4 NAME 'miasto' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE) attributetype ( 1.3.6.1.4.1.4203.666.5 NAME 'dzielnica' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE) attributetype ( 1.3.6.1.4.1.4203.666.6 NAME 'imie' DESC 'Imiona' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
  • 11. 250 Bazy danych SQL. Teoria i praktyka attributetype ( 1.3.6.1.4.1.4203.666.7 NAME 'wiek' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE) #definicja typów obiektów objectclass ( 1.3.6.1.4.1.4203.666.8 NAME 'osoba' MUST ( identyfikator $ nazwisko $ imie) MAY ( wiek ) ) objectclass (1.3.6.1.4.1.4203.666.9 NAME 'miasteczko' MUST ( miasto )) objectclass ( 1.3.6.1.4.1.4203.666.10 NAME 'rejon' MUST ( dzielnica )) Jak widzimy, każdy element schematu posiada własny identyfikator obiektu, tzw. OID (Object Identifier), np. OID elementu "rejon" to 1.3.6.1.4.1.4203.666.10. Numer ten rozpoczyna się od prefiksu przyznanego organizacji przez właściwy urząd (np. przez urząd IANA[2]). W przykładzie użyliśmy prefiksu 1.3.6.1.4.1.4203.666, który jest zarezerwowany przez OpenLDAP.org dla celów „eksperymentalnych”. Jednak mogli- śmy użyć dowolnego prefiksu zgodnego z notacją OID niekolidującego z prefiksami użytymi w innych używanych przez nas schematach, ponieważ nasz plik schematu jest przeznaczony tylko do własnego użytku. Kolejne elementy schematu otrzymują numery rozpoczynające się od prefiksu: 1.3.6.1.4.1.4203.666.1, 1.3.6.1.4.1.4203.666.2 itp. W naszym przykładowym pliku schematu pojawiły się dwa typy definicji: definicje typów atrybutów rozpoczynające się od słowa attributetype oraz definicje typów obiektów rozpoczynające się od słowa objectclass. Definicja typu obiektu określa, jakie atrybuty muszą lub mogą stać się jego składnikami. Składowe definicji typu atrybutu NAME — nazwa atrybutu. Nazwa ta, podobnie jak numer OID, powinna być unikalna. Jeśli schemat będzie publicznie wykorzystywany, dobrym pomysłem jest poprzedzanie nazw naszych atrybutów prefiksem organizacji, podobnie jak to ma miejsce w przypadku numeru OID. Dozwolone jest użycie kilku nazw dla atrybutu, np. attributetype ( 2.5.4.7 NAME ( 'l' 'localityName' ) SUP name ). DESC — opis atrybutu. SUP — deklaracja dziedziczenia; definiowanie nowego atrybutu na podstawie istniejącego. Przykład pochodzący z pliku core.schema — definiowanie atrybutu member: attributetype ( 2.5.4.31 NAME 'member' SUP distinguishedName )
  • 12. Rozdział 3. ♦ LDAP — hierarchiczna baza danych 251 Atrybut member dziedziczy właściwości atrybutu distinguishedName. EQUALITY — określa regułę porównywania elementów (patrz: tabela 3.2). ORDERING — określa regułę porównywania elementów za pomocą operatorów <= i >= (możliwe wartości patrz: tabela 3.2). Tabela 3.2. Reguły dopasowywania Nazwa Stosowana do Znaczenie booleanMatch EQUALITY porównywanie wartości logicznych caseIgnoreMatch EQUALITY brak wrażliwości na wielkość liter i odstępy caseExactMatch EQUALITY wrażliwe na wielkość liter, niewrażliwe na odstępy distinguishedNameMatch EQUALITY porównywanie wartości DN integerMatch EQUALITY porównywanie liczb całkowitych numericStringMatch EQUALITY porównywanie ciągów numerycznych octetStringMatch EQUALITY porównywanie ciągów bajtów objectIdentiferMatch EQUALITY porównywanie OID-ów caseIgnoreOrderingMatch ORDERING niewrażliwe na wielkość liter i odstępy caseExactOrderingMatch ORDERING wrażliwe na wielkość liter, niewrażliwe na odstępy integerOrderingMatch ORDERING porównywanie liczb całkowitych numericStringOrderingMatch ORDERING porównywanie ciągów numerycznych octetStringOrderingStringMatch ORDERING porównywanie ciągów bajtów octetStringSubstringsStringMatch ORDERING porównywanie ciągów bajtów caseIgnoreSubstringsMatch SUBSTR niewrażliwe na wielkość liter i odstępy caseExactSubstringsMatch SUBSTR wrażliwe na wielkość liter, niewrażliwe na odstępy numericStringSubstringsMatch SUBSTR porównywanie ciągów numerycznych SUBSTR — określa regułę porównywania elementów za pomocą znaków wieloznacznych (wildcards) (patrz: tabela 3.2). SYNTAX — typ atrybutu (najczęściej wykorzystywane typy atrybutów patrz: tabela 3.3). Przykład deklaracji: SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{30} określa atrybut typu DirectoryString kodowany w UTF-8 o długości maksymalnej 30 znaków. SINGLE-VALUE — blokuje wstawianie duplikatów. NO-USER-MODIFICATION — blokuje możliwość modyfikacji atrybutu. COLLECTIVE — atrybut będzie definiował kolekcję węzłów. USAGE — jedna z wartości: userApplications, directoryOperation, distributedOperation, dSAOperation.
  • 13. 252 Bazy danych SQL. Teoria i praktyka Tabela 3.3. Typy atrybutów (SYNTAX) Nazwa OID Znaczenie boolean 1.3.6.1.4.1.1466.115.121.1.7 wartość logiczna DirectoryString 1.3.6.1.4.1.1466.115.121.1.15 ciąg znaków kodowany w UTF-8 Można zapisywać polskie znaki. distinguishedName 1.3.6.1.4.1.1466.115.121.1.12 LDAP DN integer 1.3.6.1.4.1.1466.115.121.1.27 liczba całkowita numericString 1.3.6.1.4.1.1466.115.121.1.36 ciąg znaków numerycznych OID 1.3.6.1.4.1.1466.115.121.1.38 identyfikator obiektu octetString 1.3.6.1.4.1.1466.115.121.1.40 ciąg bajtów, np. rysunek lub inny obiekt binarny kodowany w standardzie Base64 Składowe definicji typu obiektu NAME — nazwa obiektu. Nazwa ta powinna być unikalna. DESC — opis obiektu. SUP — deklarowanie dziedziczenia (określanie nowego obiektu na podstawie istniejącego). ABSTRACT — deklarowanie obiektu abstrakcyjnego, tj. będącego punktem wyjścia do definiowania nowych obiektów. MUST — deklarowanie atrybutów, które muszą towarzyszyć obiektowi. MAY — deklarowanie atrybutów, które mogą (ale nie muszą) towarzyszyć obiektowi. Zalety i wady W podrozdziałach „Zalety i wady” standardowo występujących w każdym z następnych rozdziałów zostaną przedstawione wybrane cechy opisywanego systemu, które z różnych powodów zasługują na uwagę. Trzeba jednak pamiętać, że sytuacja na rynku informa- tycznym zmienia się z dnia na dzień i opisywane wady mogą zostać usunięte w kolej- nych wersjach, a zalety staną się standardem na rynku tego typu oprogramowania. Przedstawione w tej książce zestawienia mają jednak dać Czytelnikowi wyobrażenie na temat bieżącej sytuacji. Sam użytkownik zdecyduje, które z tych cech mają dla niego znaczenie. Być może pewna wada zdyskwalifikuje produkt pod kątem jakiegoś wyko- rzystania. Z drugiej strony użytkownik może chcieć skorzystać z pewnej opcji dostępnej w danym produkcie, która z pozoru wydawałaby się mało istotna. Śledząc zapotrzebowanie na pewne rozwiązania, wydaje się, że stworzenie listy wad i zalet ma sens. Użytkownik może je traktować jako pewien głos w dyskusji.
  • 14. Rozdział 3. ♦ LDAP — hierarchiczna baza danych 253 Przedstawiając w dużym skrócie i z pewnością nie wyczerpując tematu, można wy- mienić zalety i wady technologii LDAP. Zalety: małe wymagania sprzętowe; łatwość integracji z innym oprogramowaniem (serwerami SQL, programami pocztowymi itp.); bardzo dobra skalowalność; prostota w użyciu. Wady: mała szybkość i możliwości w porównaniu z bazami danych SQL; brak transakcji. Podsumowanie Zapytania do bazy danych SQL są dużo szybsze niż odpowiadające im zapytania do bazy LDAP. Co więcej, efektywność LDAP może być nawet kilkadziesiąt razy mniej- sza niż bazy danych SQL. Wybór rozwiązania może więc wydawać się bardzo prosty, jednak należy pamiętać, że bazy LDAP mają też sporo zalet. Zalety te powodują, że ciągle są one obiektem zainteresowania i stają się standardem dla pewnych rozwią- zań, np.: systemu logowania użytkowników, systemu książek adresowych, informacji o użytkownikach itd. Do zalet tych należy głównie prostota i łatwość integracji z in- nym oprogramowaniem. Otwarty protokół LDAP i współpraca serwerów LDAP z innym oprogramowaniem, w szczególności z bazami danych SQL, może pomóc w integracji systemów będących w dyspozycji użytkownika. Instalacja i konfiguracja Instalacja serwera OpenLDAP jest stosunkowo prosta. Z pewnością będzie wymagać trochę więcej wysiłku w systemie Linux, zwłaszcza jeśli zechcemy skonfigurować bez- pieczne uwierzytelnienie np. przez SSL. OpenLDAP jest darmowym oprogramowaniem, które można pobrać ze strony www. openldap.org. Instalacja serwera OpenLDAP zarówno w systemie Windows, jak i w systemie Linux przebiega bardzo podobnie i składa się z następujących etapów: 1. Zainstalowanie oprogramowania serwera. 2. Utworzenie plików schematu bazy danych (patrz: punkt „Schemat”). 3. Skonfigurowanie serwera polegające na modyfikacji pliku slapd.conf (patrz: punkt: „Plik slapd.conf”).
  • 15. 254 Bazy danych SQL. Teoria i praktyka 4. Utworzenie pliku LDIF z danymi naszej nowej bazy danych (patrz: punkt „LDIF”). 5. Uruchomienie serwera LDAP (patrz: punkt „Uruchamianie i zatrzymywanie serwera”). 6. Utworzenie bazy danych na podstawie pliku LDIF (patrz: punkt „LDIF”). Standardowe porty, na których nasłuchuje serwer LDAP, to port 389 dla połączenia nieszyfrowanego oraz 636 dla połączeń szyfrowanych TLS/SSL. Popularne konfiguracje serwera LDAP Najpopularniejsze konfiguracje serwera LDAP przedstawiono na kolejnych rysunkach. Niektóre z nich pozwalają na rozłożenie obciążenia na kilka serwerów (patrz: rysunek 3.5 i rysunek 3.6), celem innych jest dodatkowo uzyskanie bezpieczeństwa danych (patrz: rysunek 3.6). Konfiguracja podstawowa Jest to konfiguracja domyślna tworzona podczas instalacji serwera LDAP, na którą składa się jeden serwer (patrz: rysunek 3.4). Żądania nadchodzące od strony klienta są całkowicie przetwarzane na tym serwerze. Jeśli serwer nie potrafi obsłużyć żądań, infor- muje o tym i nie odsyła klienta do innych serwerów LDAP. Rysunek 3.4. Konfiguracja podstawowa Rysunek 3.5. Konfiguracja z serwerami referencyjnymi
  • 16. Rozdział 3. ♦ LDAP — hierarchiczna baza danych 255 Rysunek 3.6. Konfiguracja z replikacją typu MASTER-SLAVE Konfiguracja z serwerami referencyjnymi Ta konfiguracja pozwala uzyskać sieć powiązanych ze sobą serwerów LDAP, które odsyłają klientów do siebie nawzajem w zależności od możliwości obsłużenia ich żądań. Na rysunku 3.5 klient w kroku 2. otrzymuje od serwera LDAP1 referencję do serwera LDAP2, który zdaniem serwera LDAP1 jest w stanie obsłużyć żądanie klienta. Klient po otrzymaniu referencji ponawia żądanie, kierując je już do właściwego serwera. Serwery LDAP obsługują dwa rodzaje referencji: 1. Referencje definiowane w pliku slapd.conf za pomocą słowa referral referral ldap://root.openldap.org/ Jeśli żądanie klienta dotyczy węzła spoza obsługiwanej domeny określonej poprzez słowo suffix, serwer zwraca klientowi referencję do właściwego serwera LDAP (ldap://root.openldap.org), który może obsłużyć żądanie klienta lub odesłać go do innego serwera. Na przykład: jeśli w pliku slapd.conf określono suffix miasto=krakow,kraj=pl żądanie klienta dotyczące węzła miasto=warszawa,kraj=pl zwróci referencję zdefiniowaną w referral. 2. Referencje definiowane dla węzła poprzez przypisanie węzłowi obiektu referral dn: dc=poddrzewo,dc=myserver,dc=pl objectClass: referral objectClass: extensibleObject dc: poddrzewo ref: ldap://myserver.pl/dc=poddrzewo,dc=myserver,dc=pl
  • 17. 256 Bazy danych SQL. Teoria i praktyka Każde odwołanie do podgałęzi dc=poddrzewo,dc=myserver,dc=pl zwróci referencję: ldap://myserver.pl/dc=poddrzewo,dc=myserver,dc=pl. W ten sposób obsługa tej podgałęzi zostanie oddelegowana do serwera myserver.pl. Niestety wiele narzędzi klienta nie potrafi zinterpretować otrzymanej od serwera LDAP referencji i ponowić żądania z wykorzystaniem otrzymanej referencji. Konfiguracja z replikacją typu MASTER-SLAVE Konfiguracja ta pozwala zmniejszyć ryzyko utraty danych w przypadku awarii i po- prawić bezpieczeństwo systemu, ponieważ dane są replikowane do innych baz danych LDAP. Dodatkową korzyścią uzyskiwaną tutaj jest rozproszenie danych, które podob- nie jak w poprzednio omówionym przypadku pozwala na rozłożenie obciążenia ser- werów. Przykładowo: serwer LDAP2 może obsługiwać jedynie modyfikacje danych, natomiast serwer LDAP1 (replika) służyć do odczytywania i przeglądania danych. Konfiguracja ta jest oparta na architekturze MASTER-SLAVE. MASTER jest serwerem głównym, a modyfikacje jego bazy danych są propagowane dalej i zapisywane do baz danych wszystkich skonfigurowanych serwerów SLAVE. Przykład żądania zapisu danych do bazy serwera LDAP1 przedstawia rysunek 3.6. Serwer LDAP1, który jest serwerem SLAVE, informuje klienta, że takie zmiany można wprowadzać jedynie na serwerze MASTER, zwracając odpowiednią referencję (2). Klient formułuje nowe żądanie, wysyłając je tym razem pod właściwy adres (3) i uzy- skuje potwierdzenie (4). Zmiany wprowadzone w bazie danych serwera MASTER są zapisywane do dziennika replikacji (5) i od tego momentu są dostępne dla programu slurpd (6), który propaguje je dalej (7) do serwera SLAVE (lub wielu serwerów SLAVE). Przedstawiony scenariusz opisuje próbę zapisu na serwerze SLAVE. W przypadku próby odczytu scenariusz zakończyłby się w punkcie 2. po zwróceniu odpowiedzi przez serwer SLAVE. Dalsze informacje na temat konfigurowania replikacji są opisane w punkcie „Re- plikacja”. Konfiguracja mieszana Konfiguracja mieszana stanowi połączenie konfiguracji z serwerami referencyjnymi oraz konfiguracji z replikacją typu MASTER-SLAVE i jest podstawą budowy dużych systemów. Plik slapd.conf Konfiguracja serwera LDAP jest oparta na pliku slapd.conf. Plik ten decyduje o wszyst- kich parametrach pracy serwera (patrz: tabela 3.4). Przykład minimalnej konfiguracji (plik slapd.conf) przedstawia listing 3.2.
  • 18. Rozdział 3. ♦ LDAP — hierarchiczna baza danych 257 Listing 3.2. Przykładowy plik slapd.conf include ./schema/core.schema include ./schema/my.schema #definicja bazy database ldbm suffix "miasto=krakow,kraj=pl" rootdn "identyfikator=manager,miasto=krakow,kraj=pl" rootpw manager directory ./data access to * by * write Tabela 3.4. Lista i znaczenie parametrów konfiguracyjnych pliku slapd.conf Parametr Znaczenie Użycie access Określa prawa dostępu do węzłów Patrz: punkt „Prawa dostępu i atrybutów. do serwera”. defaultaccess Domyślny tryb dostępu, jeśli tryb defaultaccess none — brak dostępu. dostępu nie był określony defaultaccess read — domyślny w parametrze access. tryb odczytu. include Włączenie pliku (plik powinien include core.schema — włączenie pliku posiadać taki sam format jak schematu. slapd.conf). loglevel Poziom logowania. loglevel 255 — szczegółowy poziom logowania informacji. referral Referencja zwracana klientowi referral myserver.com w przypadku żądań dotyczących węzłów nieobsługiwanych przez serwer. sizelimit Maksymalna ilość elementów sizelimit 100 zwrócona przez serwer w jednej operacji odczytu. timelimit Maksymalny czas (w sekundach) timelimit 300 na obsługę żądania klienta. database Wybrana baza danych dla serwera database ldbm LDAP. database shell Wszystkie parametry pojawiające database passwd się do następnego użycia parametru database dotyczą tej bazy danych (patrz: przykład slapd.conf w punkcie „Interfejs”). readonly Włącza lub wyłącza tryb read-only. readonly on replica Informacja o powiązanym serwerze replica uri=ldap://myserver:389 replikacji SLAVE. binddn="identyfikator=manager, Patrz: punkt „Replikacja”. miasto=krakow,kraj=pl" bindmethod= simple credentials=manager replogfile Nazwa pliku dziennika logowania replogfile ./logs/master-ldap.replog zmian w bazie danych, plik ten jest używany w procesie replikacji przez program slurpd.
  • 19. 258 Bazy danych SQL. Teoria i praktyka Tabela 3.4. Lista i znaczenie parametrów konfiguracyjnych pliku slapd.conf (ciąg dalszy) Parametr Znaczenie Użycie rootdn DN logowania do serwera, rootdn "identyfikator=manager, (używane w opcji -D narzędzi miasto=krakow,kraj=pl" takich jak ldapadd). rootpw Hasło logowania do serwera. rootpw manager suffix Określa węzeł podstawowy suffix "miasto=krakow,kraj=pl" dla danej bazy danych, wszystkie zapytania kierowane do tego węzła lub podwęzłów będą dotyczyły bazy, dla której jest ustawiony suffix. updatedn Określa DN uprawione updatedn "identyfikator=manager, do wprowadzenia zmian do repliki miasto=krakow,kraj=pl" (SLAVE), powinno odpowiadać klauzuli binddn dyrektywy replica dla serwera MASTER. Opcja dostępna tylko dla SLAVE. updateref Referencja do serwera MASTER. updateref "myserver.net" Opcja dostępna tylko dla SLAVE. directory Kartoteka dla bazy danych. directory ./data index Definicje indeksów. index objectClass eq — indeks Dozwolone wartości: dla obiektu objectClass. none — brak indeksu, eq — wyszukiwanie w indeksie będzie oparte na porównaniu całych elementów, sub — wyszukiwanie podstringów, pres — wyszukiwanie przez (st=*), tzn. wszystkich elementów. objectclass Patrz: punkt „Schemat”. attributetype Patrz: punkt „Schemat”. schemacheck Włączenie lub wyłączenie schemacheck on sprawdzenia pliku schematu. TLSCipherSuite Akceptowalny sposób szyfrowania. TLSCipherSuite HIGH:MEDIUM:+SSLv2 TLSCACertificateFile Plik z certyfikatem. TLSCACertificateFile cacert.pem TLSCACertificatePath Kartoteka zawierająca TLSCACertificatePath ./cert certyfikaty CA. TLSCertificateFile Plik z certyfikatem serwera. TLSCertificateFile servercrt.pem TLSCertificateKeyFile Plik klucza prywatnego serwera. TLSCertificateKeyFile serverkey.pem TLSVerifyClient Poziom uwierzytelnienia klienta: TLSVerifyClient demand never, allow, try, demand, hard.
  • 20. Rozdział 3. ♦ LDAP — hierarchiczna baza danych 259 Instalacja książki adresowej LDAP Instalacja książki adresowej LDAP w programie Microsoft Outlook Express przedsta- wia się następująco: 1. W menu Narzędzia należy wybrać Konta. 2. W oknie Konta internetowe po wybraniu Dodaj wybieramy Usługa katalogowa. 3. W oknie Kreator połączeń internetowych należy podać URL serwera LDAP, np. ldap.myserver.pl lub localhost, jeśli nasz serwer uruchomiliśmy na lokalnym komputerze. 4. Ustalamy, czy musimy logować się do serwera. 5. Jeśli wybraliśmy opcję logowania do serwera, powinniśmy podać DN logowania i hasło, np.: Nazwa konta: identyfikator=manager,miasto=krakow,kraj=pl Hasło: manager 6. Decydujemy, czy program MS Outlook Express powinien sprawdzać wpisywane adresy e-mail w bazie danych LDAP. 7. W oknie Konta internetowe w zakładce Usługa katalogowa wybieramy z listy skonfigurowany przez nas serwer i naciskamy przycisk Właściwości. 8. Wybieramy zakładkę Zaawansowane i sprawdzamy, czy ustawienie portu jest właściwe (jest to szczególnie ważne, jeśli serwera nie uruchomiliśmy na standardowym numerze portu) i jeśli jest niewłaściwe, poprawiamy je. Wprowadzamy również poprawnie Bazę wyszukiwania, czyli węzeł stanowiący podstawę przeszukiwania drzewa LDAP. 9. Naciskamy OK. Aby skorzystać z tak skonfigurowanej książki adresowej: 1. Otwieramy książkę adresową, naciskając przycisk: Adresy. 2. W menu Edycja wybieramy Znajdź osoby. 3. Na liście Szukaj w wybieramy skonfigurowany przez nas serwer LDAP. 4. Wprowadzamy np. nazwę użytkownika w polu Nazwa (może być *) i naciskamy OK. Konfigurowanie bazy SQL jako „backendu” Serwer LDAP dysponuje dużą liczbą możliwości, jeśli chodzi o wybór bazy danych używanej do przechowywania danych (tzw. backends): bdb, hdb, ldbm. W roli bazy danych (backendu) można użyć shell, aby uzyskać dostęp do wybranych skryptów po- włoki, lub passwd, aby uzyskać dostęp do pliku passwd. Niekoniecznie zatem w roli