Adatbá Adatbázisok MSc szint 4. . té témakö makör
Hierarchikus adatmodell és az LDAP
ME 2009
Dr. Kovács László
Adatbá Adatbázis adatmodellek adatmodellek tí típusai A piaci DBMS rendszerek adatmodellje - gépközeli - teljes (műveleti, struktúra, integritási rész) - egzakt - igazodik a fizikai megvalósítási lehetőségekhez
SPARQL ER
1960
1970 HDM
EER
1980 NDM
ODMG UML
1990 RDM
XQuery
2000
idő idő
ORDM MDDM XMLXML-DB LDB
OWL
GEIAL Kovács László
1
Adatmodell Adatmodell alapfogalmak Adatmodell: matematikai formalizmus az adatok tárolására és kezelésére vonatkozólag Adatmodell komponensei: - struktúra leíró - művelet leíró - integritás leíró Séma: az adatrendszer szerkezetének a modellel történő leírása Előfordulás: a sémára illeszkedő konkrét, megvalósuló adatrendszer
meta séma
nyelvi elemek
séma
szerkezet, típus
előfordulás
érték, változó
GEIAL Kovács László
Hierarchikus adatmodell A hierarchikus adatmodell fő jellemzői: - hierarchikus kapcsolati viszonyok támogatása - hatékony kapcsolat tartás a hierarchia mentén - nehézkes adatkezelés a hierarchiára nem illeszkedő kapcsolatoknál - szalagos tárolási mechanizmushoz való illeszkedés - merev struktúra - rekord orientált műveleti rész - összetett algoritmusok szükségesek a lekérdezésekhez - egyszerű integritási elemek
A hierarchikus adatmodell célja az egyszerű fizikai implementáció biztosítása
GEIAL Kovács László
2
Hierarchikus adatmodell rekord
mezo
Az adatmodell elemei -
MEZŐ REKORD PCR (VPCR) HIERARCHIA ADATBÁZIS
dolgozó -projekt
dolgozó - hierarchia
GEIAL Kovács László
Hierarchikus adatmodell Az adatmodell elemei - MEZŐ: elemi adat, egy érték a DBMS szemszögéből jellemzői: név, adattípus, kulcs-e pl.: név CHAR, kód INTEGER KEY - REKORD: egybetartozó mezők együttese jellemzői: név, szerkezet pl.: DOLGOZO (kod INT KEY, nev CHAR) - PCR (VPCR): 1:N kapcsolat két rekord között jellemzői: kapcsolt rekordok azonosítói pl.: UZEM : DOLGOZO - HIERARCHIA: kapcsolódó rekordok rendszere (fa struktúra) - ADATBÁZIS: a rendszerben tárolt hierarchiák együttese GEIAL Kovács László
3
Hierarchikus adatmodell ER modell konverziója hierarchikus modellre
Elemi tulajdonság Kulcs tulajdonság Egyed Összetett tulajdonság Többértékű tulajdonság 1:1 kapcsolat 1:N kapcsolat N:M kapcsolat
Mező Kulcs mező Rekord Több mező (a részekből) PCR + részletező rekord PCR PCR ?
A többértékű tulajdonságnál külön relációt hozunk létre az ismétlődő értékek tárolására, amely 1:N kapcsolatban áll a szülő rekorddal
Az N:M kapcsolat nem illik bele a hierarchikus modell világába GEIAL Kovács László
Hierarchikus adatmodell többértékű tulajdonság megvalósítása
A
T
R
S A S1
S2
R
S1
S2
T Bizonyos információk (S szerepe) elvesznek a konverzióban
GEIAL Kovács László
4
Hierarchikus adatmodell N:M kapcsolat megvalósítása
A rekord
B rekord
A
B
B
A
Redundáns tárolási mód: mindkét rekord elemei duplán tárolódnak Redundancia hátránya: hely pazarlás + költségesebb módosítás + ellentmondás veszély GEIAL Kovács László
Hierarchikus adatmodell Adatelemek
fizikai tárolási mechanizmusa
A rekordelőfordulások sorosan tárolódnak a hierarchiának megfelelően A fa linearizálásán (pl. egy left-down bejárás) alapszik A gyerek rekord a szülő után tárolódik A gyerek előfordulások a rekordtípus szerint rendezettek könyvtár
könyv
KT1
olvasó
példány
KT1
K1
K2
P1
K1
P1
K2
P2
P2
P3
KT2
O1
O2
P3
O1
O2
K3
O3
P4
KT2
K3
P4
O3
GEIAL Kovács László
5
LDAP adatkezelő adatkezelő Lightweight Directory Access Protocol Az X.500 szabványon alapul (1992) Directory service (RFC1777) (nem DBMS) Hierarchikus adatmodell Egyszerű adatszerkezet Olvasás centrikus Nincs tranzakció kezelés Kliens szerver struktúra Elosztott katalógus kezelés Szabványos védelmi mechanizmus
GEIAL Kovács László
LDAP adatkezelő adatkezelő LDAP keretrendszer struktúrája virtuális directory
LDAP API kliens
v
DBMS
GEIAL Kovács László
séma
LDAP Szerver A
ACL
fizikai directory
fizikai directory
LDAP Szerver B
LDAP Szerver C
A DBMS fölé épít ki egy API réteget
6
LDAP adatkezelő adatkezelő Replikációs struktúra Célja: rendelkezésre állás növelése lekérdezési hatékonyság növelése adatvesztés elleni védelem
LDAP szerver processz
Replikációs Szerver processz
GEIAL Kovács László
LDAP adatkezelő adatkezelő LDAP protokoll A kapcsolat üzenetváltás alapú Minden üzenetnek egyedi azonosítója van Egy üzenet egy elemre vonatkozik, ezért egy kéréshez több válaszüzenet tartozhat A kliens párhuzamosan több üzenetet küldhet
kliens
LDAP Szerver A
Üzenet API típusai: DCL: connect, bind, unbind, abandon DML: add, delete, modify DQL: search, compare GEIAL Kovács László
7
LDAP adatkezelő adatkezelő Séma elemei Virtuális gyökér Elem (entry)
Azonosító (DN) Osztály-típus Attributumok Nincs megkötés a hierarchiára Rugalmas fa felépítés DN: mutatja az elérési útvonalat (figyelem: a gyökérelem a lista végén)
GEIAL Kovács László
dn: dc=iit,dc=uni-miskolc,dc=hu dn: o=ab,dc=iit,dc=uni-miskolc,dc=hu
LDAP adatkezelő adatkezelő Elemek megadása LDIF : elemek szöveges leíró formátuma dn: uid=bjensen, ou=people, dc=example, dc=com objectclass: top objectclass: person cn: Barbara Jensen givenName: Barbara sn: Jensen uid: bjensen mail:
[email protected] description: Manager, Switching Products Division
Lefoglalt nevek: o: szervezet; ou:szervezeti egység; c: ország; l: hely; cn: megnevezés GEIAL Kovács László
8
LDAP adatkezelő adatkezelő Attributumtípus specifikáció: - OID - név - alaptípus - egyértékű vagy többértékű - érték megkötés (intervallum) attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' ) DESC 'RFC2256: ISO-3166 country 2-letter code' SUP name SINGLE-VALUE ) attributetype ( 2.5.4.16 NAME 'postalAddress' DESC 'RFC2256: postal address' EQUALITY caseIgnoreListMatch SUBSTR caseIgnoreListSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) GEIAL Kovács László
LDAP adatkezelő adatkezelő Osztály specifikáció: - név - OID - alaptípus (öröklés) - jelleg (strukturális, absztrakt,..) - kötelező attributumok listája - opcionális attributumok listája
objectclass ( 2.5.6.2 NAME 'country' DESC 'RFC2256: a country' SUP top STRUCTURAL MUST c MAY ( searchGuide $ description ) )
A TOP jelöli a gyökér, az általános alaposztályt
GEIAL Kovács László
9
LDAP adatkezelő adatkezelő Séma összefoglalás Directory Information Base 1 N N
1
Entry Elem 1
N
Attribute Tulajdonság 1
N
N
M
1
ObjectClass osztály 1
Value N érték
N
M
AttributeType tulajdonság domain
N
GEIAL Kovács László
LDAP adatkezelő adatkezelő Hozzáférés ellenőrzés Az LDAP rendszer egyik fontos feladata az adatok hozzáférés védelmének biztosítása: - távoli elérések - heterogén adatok együttese Védelmi modell az ACL elven alapszik műveletek felhasználók
ACL
objektumok egyed, mező Szabályok megadása: konfigurációs állomány LDAP adatbázis GEIAL Kovács László
10
LDAP adatkezelő adatkezelő Hozzáférés ellenőrzés A konfigurációs bejegyzés alakja: TO objektum BY felhasználó művelet A megadott műveletet engedélyezi a megadott objektumra a megadott felhasználó számára Objektum megadása: * | dn.base=DN | dn.one=DN | dn.subtree=DN | d.regex = DN filter=kif attrs=tul.lista Felhasználó megadása: * | self | anonymous | users | dn.regex = DN Művelet megadása: none | auth | search | read | write GEIAL Kovács László
LDAP adatkezelő adatkezelő Hozzáférés ellenőrzés Minta LDAP fa: 0: o=suffix 1: cn=Manager,o=suffix 2: ou=people,o=suffix 3: uid=kdz,ou=people,o=suffix 4: cn=addresses,uid=kdz,ou=people,o=suffix 5: uid=hyc,ou=people,o=suffix Objektum kijelölés: dn.base="ou=people,o=suffix" dn.one="ou=people,o=suffix" dn.subtree="ou=people,o=suffix"
2 3,5 2,3,4,5
base: aktuális csomópont, elem one: egy szinttel alatta lévő elemek subtree: kiinduló részfa GEIAL Kovács László
11
LDAP adatkezelő adatkezelő Hozzáférés ellenőrzés to dn.one="ou=people,o=suffix" filter=(objectClass=person) to *
by self write by anonymous auth by * read
to dn.subtree="dc=example,dc=com" attr=homePhone by self write by dn.children=dc=example,dc=com" search Konfigurációs bejegyzés: access to dn.base="" by * read access to dn.base="cn=Subschema" by * read access to * by self write by users read by anonymous auth GEIAL Kovács László
LDAP adatkezelő adatkezelő Hozzáférés ellenőrzés Felhasználók megadása Rendszergazda: minden tevékenységet végezhet Konfigurációs állományban:
rootdn rootpw
DN PWD
Normál felhasználó: Az LDAP fa elemeihez társul, az elemnek van userPassword mezője A felhasználók leírása tehát az adatbázisban történik. A felhasználó azonosító neve a kapcsolt elem DN értéke.
GEIAL Kovács László
12
LDAP adatkezelő adatkezelő Hozzáférés ellenőrzés minta 1. connect / anonymous csak a gyökeret látja
dc=iit
2. connect / bind:KOL mindent lát, kivéve a jelszót azt csak az sn=KOL-ban
o=ab sn=KOL
sn=KOL userPassword
csak az sn=KOL alatt módosíthat, hozhat létre új elemet
Bejelentkezés: dn: sn=KOL,o=ab,dc=iit pwd: KOL
LDAP adatkezelő adatkezelő Hozzáférés ellenőrzés OpenLDAP-ban Az ellenőrzésnél fontos a szabályok pozíciója A LDAP szerver az első illeszkedő szabályt használja fel
access to dn.one="o=ab,dc=iit" attrs=userPassword by self write by anonymous auth by dn.base="dc=iit" write by * none access to dn.subtree="sn=KOL,o=ab,dc=iit" by dn.base="sn=KOL,o=ab,dc=iit" write access to dn.subtree="sn=BRJ,o=ab,dc=iit" by dn.base="sn=BRJ,o=ab,dc=iit" write access to * by self write by users read by anonymous auth
13
LDAP adatkezelő adatkezelő LDAP elem felvitel: add(DN,attvallist) DN: elem DN Attvallist: attributum értékek listája LDAP elem keresés: search(base-DN,scope, attlist, filter, limits) base-DN: a keresési fa gyökere scope: keresési szint (base, onelevel, sub) attlist: lekérdezett attributumok listája filter: keresési paraméter limits: idő és méret korlátozás Speciális szűrők: =, ~=, !, &, | sn=smith*
cn~=smit
(&(mail=*)(!(telephoneNumber=*)))
GEIAL Kovács László
LDAP adatkezelő adatkezelő OpenLDAP parancsfile: ldapadd –h ldap.example.com –D "cn=directory manager" –w secret -f updates.ldif dn: o=abcs,dc=iit,dc=uni-miskolc,dc=hu objectclass: dcObject objectclass: organization o: abcs dc: iit
ldapsearch -h ldap.example.com -s base -b "uid=bjensen,ou=people,dc=example,dc=com" "(objectclass=*)"
GEIAL Kovács László
14
LDAP adatkezelő adatkezelő Készítse el az alábbi ER modellhez az LDAP adatmodellt db
lakcim M ugyfel nev
ar N
N
1
konyv isbn
adoszam kiado
cim
nev
varos
GEIAL Kovács László
LDAP adatkezelő adatkezelő Adja meg az LDAP adatmodellhez az alábbi lekérdezésekhez tartozó műveleteket: 1. A teljes adathalmaz 2. Az x városbeli kiadók nevei 3. Az x nevű ügyfél rendelt könyveinek címei ? 4. Ügyfélnevek a rendelt könyvek darabszámával együtt ?
GEIAL Kovács László
15
OpenLDAP adatkezelő adatkezelő Ingyenes LDAP szerver OpenLDAP: ldapadd ldapdelete ldapmodify ldapsearch ldapwhoami slapd slapdpasswd slapd.conf
data schema doc
LDAP szerver szolgáltatás
GEIAL Kovács László
OpenLDAP adatkezelő adatkezelő SLAPD.CONF konfigurációs állomány moduleload moduleload access to by by by
back_bdb.la back_ldap.la
* self write users read anonymous auth
database bdb suffix "dc=iit,dc=uni-miskolc,dc=hu" rootdn "dc=iit,dc=uni-miskolc,dc=hu" rootpw secret directory ./datakl index objectClass eq
GEIAL Kovács László
16
OpenLDAP adatkezelő adatkezelő Új adatbázis létrehozása (slapd.conf): database suffix rootdn directory
bdb "dc=iit" "dc=iit" ./dataiit
LDAP szolgáltatás indítása OS>net start ”OpenLDAP Directory Service” Ellenőrző lekérdezés: OS>ldapsearch –x –b “” –s base “(objectClass=*)” namingContexts
GEIAL Kovács László
OpenLDAP adatkezelő adatkezelő Saját séma létrehozása Új LDIF formátumú séma állomány létrehozása (schema katalógus) Típusok: Name OID Description boolean 1.3.6.1.4.1.1466.115.121.1.7 boolean value directoryString 1.3.6.1.4.1.1466.115.121.1.15 Unicode string 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 integer numericString 1.3.6.1.4.1.1466.115.121.1.36 numeric string OID 1.3.6.1.4.1.1466.115.121.1.38 object identifier octetString 1.3.6.1.4.1.1466.115.121.1.40 arbitary octets A séma bevonása (slapd.conf): include
./schema/iit.schema
GEIAL Kovács László
17
OpenLDAP adatkezelő adatkezelő attributetype ( 12.12.12.1 NAME 'nev' DESC 'azonosito nev' SUP name) attributetype ( 12.12.12.2 NAME 'varos' DESC 'varos neve' SUP name) attributetype ( 12.12.12.3 NAME 'adoszam' DESC 'adoszam' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{128} attributetype ( 12.12.12.4 NAME 'isbn' DESC 'konyv isbn kod' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} attributetype ( 12.12.12.5 NAME 'cim' DESC 'konyvcim' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} attributetype ( 12.12.12.6 NAME 'ar' DESC 'konyv ara' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{128}
)
)
)
)
GEIAL Kovács László
attributetype ( 12.12.12.7 NAME 'db' DESC 'darabszam' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{128} ) attributetype ( 12.12.12.8 NAME 'lakcim' DESC 'lakcim' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) ## objectclass ( 12.12.13.1 NAME 'kiado' DESC 'kiado' SUP top STRUCTURAL MUST ( adoszam $ nev) MAY ( varos )) objectclass ( 12.12.13.2 NAME 'konyv' DESC 'konyv' SUP top STRUCTURAL MUST ( iksbn $ cim) MAY ( ar )) objectclass ( 12.12.13.3 NAME 'ugyfel' DESC 'vevo ugyfel' SUP top STRUCTURAL MUST ( nev $ lakcim $ db) GEIAL Kovács László
18
OpenLDAP adatkezelő adatkezelő Elemek, rekordok felvitele ldapadd –x –D “dc=iit” –w secret –f p1.lc
dn: dc=iit objectclass: dcObject objectclass: organization dc: iit o: geial dn: dc=k1,dc=iit objectclass: kiado objectclass: dcObject dc: k1 adoszam: au nev: Kossuth varos: Budapest
dn: dc=k2,dc=iit objectclass: kiado objectclass: dcObject dc: k2 adoszam: au2 nev: Elvira varos: Miskolc dn: dc=ko2,dc=k1,dc=iit objectclass: konyv objectclass: dcObject dc: ko2 isbn: ib12 cim: Viragok harca ar: 321
GEIAL Kovács László
OpenLDAP adatkezelő adatkezelő Elemek, rekordok felvitele dn: dc=u1,dc=ko1,dc=k1,dc=iit objectclass: ugyfel objectclass: dcObject dc: u1 nev: Peter kodb: 675 lakcim: Eger
GEIAL Kovács László
19
OpenLDAP adatkezelő adatkezelő Elemek, rekordok lekérdezése Teljes adatsor: ldapsearch
-x –b ”dc=iit” ”(objectclass=*)”
Miskolci kiadok nevei: ldapsearch
-x –b ”dc=iit” ”(varos=Miskolc)” nev
GEIAL Kovács László
OpenLDAP adatkezelő adatkezelő Mintafeladat (határidő:2009.03.03) 1. A 193.6.5.72 alatti LDAP szerverben, hozzon létre egy részfát 2 kiadó, 4 könyv, 6 ugyfel bejegyzéssel a kiado – könyv – ugyfel hierarchiaban. 2. Indulo nevek: BRJ,… 2+1 betű (ez az induló jelszó is) mindenki változtassa meg a jelszavát 3. séma: objectclass ( 2.5.6.24 NAME 'kiado' DESC 'kiado' SUP top STRUCTURAL MUST ( adoszam $ nev) MAY ( varos )) objectclass ( 2.5.6.25 NAME 'konyv' DESC 'konyv' SUP top STRUCTURAL MUST ( isbn $ cim) MAY ( ar )) objectclass ( 2.5.6.26 NAME 'ugyfel' DESC 'vevo ugyfel' SUP top STRUCTURAL MUST ( nev $ lakcim $ kodb)) GEIAL Kovács László
20