14

Click here to load reader

Semistrukturierte Daten in relationalen Datenbanken

Embed Size (px)

Citation preview

Page 1: Semistrukturierte Daten in relationalen Datenbanken

Semistrukturierte Datenin relationalen Datenbanken

Ein extrem pragmatischer Ansatz

Gerrit Beine

Page 2: Semistrukturierte Daten in relationalen Datenbanken

24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 2

Inhalt

● Semistrukturierte Daten - bisher● Idee des dynamischen Datenmodells● Erfahrungen● Perspektiven

Page 3: Semistrukturierte Daten in relationalen Datenbanken

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

Page 4: Semistrukturierte Daten in relationalen Datenbanken

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

Page 5: Semistrukturierte Daten in relationalen Datenbanken

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

Page 6: Semistrukturierte Daten in relationalen Datenbanken

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

Page 7: Semistrukturierte Daten in relationalen Datenbanken

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

Page 8: Semistrukturierte Daten in relationalen Datenbanken

24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 8

Übersicht

Page 9: Semistrukturierte Daten in relationalen Datenbanken

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

Page 10: Semistrukturierte Daten in relationalen Datenbanken

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

Page 11: Semistrukturierte Daten in relationalen Datenbanken

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*

Page 12: Semistrukturierte Daten in relationalen Datenbanken

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

Page 13: Semistrukturierte Daten in relationalen Datenbanken

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

Page 14: Semistrukturierte Daten in relationalen Datenbanken

24.03.2009 Semistrukturierte Daten in relationalen Datenbanken 14

Gleich geht’s weiter