nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Dynamisches und Anpassbares Schema?

Von: Danny Gerst (dannygerst@gmx.de) [Profil]
Datum: 26.04.2009 09:35
Message-ID: <75ih61F18rtk8U1@mid.uni-berlin.de>
Newsgroup: de.comp.datenbanken.misc
Hi,

für eine Berichtsanforderung, die Daten aus den verschiedensten Quellen
darstellen soll, bin ich auf der Suche nach einer geeigneten flexiblen
Lösung. Das Problem kommt in der Art auch bei DWH (Data Warehouse) auf,
doch wäre dieses zum jetzigen Zeitpunkt nicht praktikabel. Falls euch
der Begriff Basisdatenbank in diesem Zusammenhang etwas sagt, ist das
genau das Ziel was es zu erreichen gilt.
Die Basisdatenbank hält die Daten nach dem ET aus dem ETL
Prozess(Extract Transform Load) und dient als Ausgangsbasis für ein DWH.

Ich habe eine Entität bspw. Kunde. Jede Quelle stellt den Kunden
unterschiedlich da und auch die Berichtsanforderung ist von Fachbereich
zu Fachbereich verschieden.

Welche Lösung ist nun besser:

Eine Enität Kunde in der Basisdatenbank, die nach dem ETL alle
relevanten Daten aus den Quellen für die Berichte vorhält?
Diese Lösung hat den Nachteil, dass Schemaänderungen in den
Quellsystemen unter Umständen eine Änderung dieses Schemas erfordert. Im
schlimmsten Fall die Löschung einiger Attribute. Damit müssen auch alle
Berichte, die auf diese Tabelle aufbauen angepasst werden.

Oder eine Tabellenstruktur, die es ermöglicht die Entität Kunde
dynamisch zu beschreiben. Ich denke dabei an die Verwaltung der
Attribute, Typen und Längen wie auch Fremdschlüsselbeziehungen in
Tabellen. Das Schema kann so dynamisch angepasst werden ohne das ältere
Daten verloren gingen. Dabei muss genausten die Versionisierung des
Abgespeicherten Schemas im Auge behalten werden.

Zur Verdeutlichung ein Beispiel:

Tabelle "Entität"
E_id
Bezeichung

Tabelle "Feld"
F_id
Bezeichung
Type

Tabelle "Entität_zu_Feld"
E_id
F_id
Version
Wert

View "Kunde"
select f.bezeichung, ef.wert from Entität e
join Enität_zu_Feld ef on ef.e_id = e.e_id
join Feld f on ef.f_id = f.f_id
where e.bezeichung like 'Kunde'
and ef.Version = 3;

Leider finde ich hierzu keine Literatur oder ein Keyword mit dem ich in
Google suchen könnte. Dies mag vllt damit zusammenhängen, dass dieser
Ansatz nicht praktikabel ist. Oder bei größeren Datenvolumina die
Performance drastisch verschlechtert.


Hat einer von euch eine Idee?


Vielen Dank im voraus,

Danny


[ Auf dieses Posting antworten ]

Antworten