Directory Services vs. Relationale Datenbanken

Werbung
Directory Services vs. Relationale Datenbanken
LDAP und das relationale Datenbankmodell
LDAP im Schnelldurchlauf
•
•
•
•
Wald von Bäumen aus Knoten
Jeder Knoten hat mindestens die Attribute dn, objectClass
Attribute sind ein- oder mehrwertig, haben Syntax (Typ)
Besonderes mehrwertiges Attribut objectClass bestimmt, welche
Attribute vorhanden sind MÜSSEN und DÜRFEN
• Einwertiges Attribut dn enthält den Pfad durch den Baum und ist
Schlüssel (PK)
LDAP-Baum
dn: o=company, c=de
objectClass: top
dn: ou=personen, o=company, c=de
objectClass: top, organisationalUnit
Container für Personen-Objekte
dn: pk=4711, ou=personen, o=company, c=de
objectClass: top, person, inetOrgPerson, posixAccount
pk: 4711
cn: Vorname Nachname
Copyright ©2002 by NetUSE AG
dn: ou=Ressources, o=company, c=de
objectClass: top, organizationalUnit
Container für Ressourcen
dn: pk=0815, ou=personen, o=company, c=de
objectClass: top, person, inetOrgPerson, posixAccount
pk: 0815
sn: Vorname2 Nachname2
2
SQL im Schnelldurchlauf
• Datenbank als Kollektion von
Tabellen, Tabellen als
Kollektion von Spalten,
Spalten haben Typen
• Spalten sind NULL, NOT
NULL. Spalten sind
einwertig.
• Eine Spalte oder Gruppe von
Spalten ist der PK.
Copyright ©2002 by NetUSE AG
3
SQL Operationen
• SQL erlaubt komplexe
Operationen auf Tabellen:
– Selektion (WHEREClause) wählt Zeilen
– Projektion (Spaltenliste)
wählt Spalten
– Aggregation (GROUP
BY-Clause) erlaubt
Zählungen
– Join erlaubt
Tabellenverknüpfungen
– Rename erlaubt SelfJoins und damit rekursive
Strukturen (Bäume etc)
Copyright ©2002 by NetUSE AG
4
LDAP Anwendungen
• Authentisierung
– am OS (PAM)
– an der Anwendung
(mod_auth_ldap etc.)
• Konfigurationsdaten
– Netscape Roaming
– sendmail Aliases etc.
• Verzeichnis (Recherche)
– Adreßverzeichnisse
Copyright ©2002 by NetUSE AG
• Characteristika:
– kurze Verbindungen
• connect, query,
disconnect
• connect, disconnect
(authentication only)
– triviale Queries
• Existenzanfragen
• Attributanfragen
(dn, attribut) -> (werte)
• Objektauslesung
(dn) -> (attribute, werte)
5
SQL Anwendungen
• Datenspeicher für
Anwendungsdaten
– Persistente Daten
– Normalisierte Daten
• Business Rules
– Integritätsbedingungen
– Accessfunktionen
• Lockingmechanismen
– Zugriff durch mehrere
Instanzen derselben
Anwendung
– Zugriff durch
verschiedene
Anwendungen
Copyright ©2002 by NetUSE AG
• Characteristika:
– lange Connects mit
vielen Queries
– langlaufende Queries
• Joins
• Sortierungen
• berechnete Werte
– viele Schreiboperationen
• konkurrente
Schreiboperationen ->
Locking
• zusammengesetzte
Schreiboperationen ->
Transaktionen
6
Relationenmodell in Verzeichnisdiensten
• Woher kommen die Daten im Verzeichnis?
– Welches ist das führende System?
• Wie strukturiere ich den Verzeichnisbaum?
– Nebenbedingungen:
• Replikation
• Naming Attributes
• Wie strukturiere ich meine objectClasses?
– Welche Art von Anfragen wird erwartet?
• Sollte ich nicht doch lieber ein RDBMs nehmen?
Copyright ©2002 by NetUSE AG
7
Häufige Designprobleme in LDAP
• LDAP wird als führende
Datenbank eingesetzt
• LDAP wird stark beschrieben
• LDAP wird konkurrent
beschrieben
• LDAP dynamisch
beschrieben
• Es bestehen abzufragende
Beziehungen zwischen
LDAP-Objekten
• LDAP wird zur
Reportgenerierung
verwendet
Copyright ©2002 by NetUSE AG
• Der LDAP-Bestand wird
hierarchisch strukturiert
• Der LDAP-Bestand muß
hierarchisch strukturiert
werden
8
LDAP wird als führende Datenbank eingesetzt
• LDAP-Attribute haben eine
Syntax (einen Typ)
– Typen sind zahlreich und
im Standard vordefiniert
– Typen sind schwer
erweiterbar
– Integritätsbedingungen
können nicht definiert
werden.
• iPlanet erlaubt Plugins,
die Integrität checken
können.
Copyright ©2002 by NetUSE AG
• Beziehungen zwischen
Objekten sind in LDAP nur
schwer darstellbar und
instabil.
– PK ist immer der dn
– dn's sind jedoch unter
Umständen instabil
– Aliases sind ein
optionales Feature von
LDAP
• Nur Blattknoten können
Aliases sein.
9
LDAP wird stark beschrieben
• LDAP ist als Protokoll für
Leseoperationen optimiert.
• Es existiert noch kein
standardisiertes Bulk-Update
Protokoll.
– In OpenLDAP und
iPlanet ist der LDAPDatenspeicher ein
Sleepycat DB/3.
– In einigen LDAP-Servern
sind Schreiboperationen
ungeschickt
implementiert.
• Flush nach jedem Write.
Copyright ©2002 by NetUSE AG
• Replikation zwischen
Servern skaliert sich nicht
gut bei starken
Schreiboperationen.
– Nicht standarisiert.
– Oft als reguläre
Schreiboperation eines
privilegierten Benutzers
implementiert ("triviale
Implementierung")
• iPlanet kann immerhin
out-of-sync Replica
automatisch neu
aufbauen.
10
LDAP wird konkurrent beschrieben
• LDAP definiert einzelne add
oder modify-Operationen als
atomar.
• LDAP kennt keine Locks und
keine Transaktionen
– Synchronisation und
Konsistenz sind damit
Sache der Anwendung.
Copyright ©2002 by NetUSE AG
11
LDAP wird dynamisch beschrieben
• Viele LDAP-Server
speichern die
Schemadefinition out-ofband
– Externe Dateien, die per
include in die
Serverkonfiguration mit
eingebunden werden.
• Damit ist eine Änderung des
Schema im Betrieb und
durch LDAP unmöglich.
– Dies fördert sehr
entspannte objectClassDefinitionen ("MAY"Inflation)
Copyright ©2002 by NetUSE AG
• Out-of-band
Schemadefinition macht
Introspektion schwierig
– Welche objectClasses
kennt der Server?
Welche Attribute
erlauben und definieren
sie?
12
Beziehungen zwischen LDAP-Objekten
• Der PK in LDAP ist immer
der dn.
– Der dn ist nicht opaque,
sondern hat Struktur:
Pfadinformation.
– Konsequenz: dn's sind
instabil.
• Verschiebt man ein
Objekt im Baum, ändert
sich der dn.
• Damit sind alle
Referenzen auf das
Objekt ungültig.
• LDAP kennt keine JOINOperation
– Prejoined Structures über
Aliases oder andere
Referenzen
• keine dynamisch
zusammengesetzten
Strukturen.
• Aliases sind nicht
generisch (Leaf-Nodes
only).
– iPlanet dn Plugin
Copyright ©2002 by NetUSE AG
13
LDAP wird zur Reportgenerierung verwendet
• LDAP kennt keine
Aggregation
– Reports können nur
durch Durchlesen des
Bestandes erstellt
werden.
• LDAP kennt keine
serverseitigen Funktionen
– Funktionswerte können
nur durch Durchlesen
des Bestandes erstellt
werden.
Copyright ©2002 by NetUSE AG
• LDAP kennt keinen JOIN
– Reports machen oft
Gebrauch von ad-hoc
Beziehungen zwischen
Teilmengen
• ohne Join können diese
nicht effizient generiert
werden.
14
Hierarchische Struktur im LDAP I
• Der PK in LDAP ist immer
der dn.
• Der dn enthält
Strukturinformation.
 Ändert sich die Position
eines Objektes in der
Struktur, ändert sich der PK
dieses Objektes
• Klassischer Fall von nicht
normalisierter Struktur:
• Daten und Struktur nicht
getrennt
Copyright ©2002 by NetUSE AG
• Ein Objekt ist oft Mitglied in
verschiedenen Hierarchien
– Mitarbeiter ist einsortiert
• organisatorisch
("Abteilung 1.3.2")
• räumlich ("Deutschland,
SH, Kiel, Hauptstelle")
• projektbezogen ("IT
Infrastruktur, Netzwerke,
UMTS-Pilot")
– Redundante
Datenhaltung durch nicht
normalisiertes
Datenmodell
15
Hierarchische Struktur im LDAP II
• LDAP erlaubt die
Partitionierung des
Bestandes nur nach
Teilbäumen
– Erzwingt die Bildung von
Hierarchien im Bestand
– Erzwingt damit instabile
dn's
Copyright ©2002 by NetUSE AG
16
Fazit I
• LDAP ist der Teil von X.500,
der "brauchbar" war.
• LDAP verwirft elementare
Erkenntnisse des
relationalen Datenmodells.
• Damit ist auch der
brauchbare Teil von LDAP
aus der Sicht des
Datenbankdesigners
unbrauchbar und gefährlich.
Copyright ©2002 by NetUSE AG
• Der Einsatz von LDAP als
führende Datenbank ist zu
vermeiden.
• LDAP-Bestände sind
möglichst als flache Tabellen
zu strukturieren.
• Nichttriviale Dinge sind mit
LDAP nicht zu realisieren.
• Triviale Dinge sind mit LDAP
schwierig oder gefährlich.
17
Warum dann keine relationalen Systeme?
• Deutschland, 9.00 Uhr:
– 150.000 MA loggen sich
ein.
– Jedes Login ist ein
Connect, gefolgt von
einem Disconnect.
– Jeder Connect erzeugt in
Oracle einen fork, einen
exec und einen 5 MB
schweren Subprozeß
– der dann sofort
weggeworfen wird.
Copyright ©2002 by NetUSE AG
• LDAP als wire-protocol ist
genormt.
• LDAP als query-language ist
unbrauchbar, aber sehr
rigide genormt.
• LDAP ist auf
connect/disconnect
optimiert.
18
Warum dann keine relationalen Systeme?
• MySQL?
– Connect/disconnect
problemlos
– read-mostly
– Replikation
– Hat volle SQL-Syntax
•
•
•
•
•
Selektion
Projektion
Aggregation
Join
Rename
• Als wire protocol nicht
genormt
– aber: Source liegt offen,
GPL bzw. LGPL
• In kommerziellen Clients
nicht unterstützt.
– aber mod_auth_mysql,
PAM usw
• Trivial zu implementieren.
• Kein IETF-Prozeß.
– Speichereffizienter als
iPlanet oder OpenLDAP
Copyright ©2002 by NetUSE AG
19
Und XML?
• LDAP und XML haben strukturell viel gemeinsam
– Rückkehr zu hierarchischen (Datenbank-) Systemen.
– Liste der Nachteile dieser Systeme in Datenbanken
101 nachlesbar.
• Keine führende Datenhaltung in hierarchischen
Systemen!
– Wir haben in den Betrieben für viel Geld diesen Unsinn
gerade ausgerottet und nun kommt er mit wieder. Mit
Macht!
Copyright ©2002 by NetUSE AG
20
Herunterladen