2. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 2
Inhalt
● Semistrukturierte Daten - bisher
● Idee des dynamischen Datenmodells
● Erfahrungen
● Perspektiven
3. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 3
Semistrukturierte Daten
● Keine allgemeine Struktur
● Tragen selbst Strukturinformationen
● Kein allgemeines ERD möglich, weil
– Objekte unterscheiden sich
– Objekte besitzen unbekannte Attribute
– Objekte können komplett abweichen
4. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 4
Bisherige Ansätze
● Wenn man nur einen Hammer kennt...
● Speicherung in RDB statt XML, LDAP
● Neue Attribute durch neue Tabellenspalten
● Probleme
– Keine sauberen Updates möglich
– Langsam, da viele NULL-Werte
5. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 5
Bisherige Ansätze
● Lösung 1
– Ergänzte Attribute in zusätzlicher Tabelle
– Zwei Tabellen pro Entität
– Extreme Performanceeinbußen (Joins!)
● Lösung 2
– Auslieferung vordefinierte „Anwenderspalten“
– begrenzte Anzahl, Datentypen
6. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 6
Idee des dynamischen Datenmodell
● 2006 während Diplomarbeit entstanden
● Aufgabe: Reengineering einer Artikeldatenbank
● Extrem viele semistrukturierte Daten
● Technologische Basis:
– .NET 2.0
– NHibernate
– MS SQL Server 2005
7. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 7
Idee des dynamischen Datenmodell
● Daten nicht anhand ihrer Struktur speicher
● Metamodell des ERD in SQL ablegen:
– Typen
– Entitäten
– Attribute
– Objekte
– Wertetabellen für primitive Typen
9. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 9
Idee des dynamischen Datenmodell
● Vorteile
– Extrem schnelle Updates
– Konstante Zahl von Tabellen
● Nachteile
– Extrem komplexe Queries
– Unglaublich langsame Joins
10. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 10
Idee des dynamischen Datenmodell
● Lösungen für die Nachteile
– Views für Klassen dynamisch erzeugen
– Mit INSTEAD-OF Triggern wie Tabellen nutzen
– Umschreiben der CUD-Statements
– Neuanlage der Views bei Änderung der Klasse
– Einführung von Vererbung
– Updatesicherheit durch Editierflags
11. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 11
Erfahrungen
● Erster Performancetest
– 1 Million Artikeldaten schreiben: 30 Stunden
– *gnarz*
– Logging von NHibernate abschalten
– 1 Million Artikeldaten schreiben: 3 Minuten
– *strahl*
12. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 12
Erfahrungen
● Anwendung auf SQL Server 2005
– Keine spürbaren Performancenachteile
– Getestet auf Minimal-System (512 MB RAM)
● Einschränkungen
– Notwendigkeit von INSTEAD-OF Triggern o.ä.
– Stored Procedures von Triggern erzeugbar
– PostgreSQL, MS SQL Server 2005
13. 24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 13
Ausblick
● Vergleich mit LDAP Extensible Object
● Objekte mit mehreren Klassen
● Portierung auf zusätzliche DBMS
● Untersuchungen zur Performance