Data Warehousing beliebige Felder

8

In unserer Anwendung unterstützen wir benutzerdefinierte Plugins.

Diese Plugins erzeugen Daten verschiedener Typen (int, float, str oder datetime), und diese Daten werden mit einer Menge von Metadaten (Benutzer, aktuelles Verzeichnis usw.) sowie drei Freitextfeldern ( MetricName, Var1, Var2).

Jetzt haben wir einige Jahre dieser Daten und ich versuche ein Schema zu entwerfen, das einen sehr schnellen Zugriff auf diese Metriken in einer analytischen Art und Weise ermöglicht (Diagramme und ähnliches). Dies ist einfach, solange es nur wenige Metriken gibt, an denen wir interessiert sind. Wir haben jedoch eine große Anzahl unterschiedlicher Metriken mit unterschiedlichen Granularitäten und möchten Daten speichern, die vom Benutzer hinzugefügt wurden, um spätere Analysen zu ermöglichen (möglicherweise nach eine Schemaänderung).

Beispieldaten: (Bitte beachten Sie, dass dies sehr vereinfacht ist)

%Vor%

Jeder kann ein Parser-Plug-in hinzufügen, um mit der Messung einer AirSpeed-Metrik zu beginnen, und wir möchten, dass unsere Analyse-Tools mit dieser neuen Metrik "funktionieren".

Aktualisierung:

In Anbetracht der Tatsache, dass viele der Metriknamen bereits bekannt sind, kann ich meine Anforderungen erfüllen, wenn ich die Analyse dieser Metrik aktivieren und einfach die anderen vom Benutzer hinzugefügten Metrik speichern kann. Wir können die Tatsache akzeptieren, dass neue Metriken für Schwerlastanalysen nicht verfügbar sind, ohne das Schema zu bearbeiten.

Was denkst du über diese Lösung?

Ich habe unsere Metriken in drei Faktentabellen aufgeteilt, eine für Fakten, die kein MetricTopic benötigen, eine für diejenigen, die dies tun, und eine für alle anderen Metriken, einschließlich unerwarteter Fakten.

Für das Kopfgeld:

Ich werde jede Kritik akzeptieren, die zeigt, wie dieses System funktioneller gestaltet werden kann, oder es in Übereinstimmung mit den Best Practices der Branche bringt. Literaturhinweise geben zusätzliches Gewicht.

    
bukzor 15.09.2010, 23:41
quelle

2 Antworten

5

Wenn ich es richtig verstehe, suchen Sie nach einem Schema, das die direkte Erstellung von Kennzahlen in einem DW unterstützt. In einem klassischen Data Warehouse ist jede Kennzahl eine Spalte. In einem Kimball-Stern müssten Sie also für jede neue Kennzahl eine Spalte hinzufügen - ändern Sie das Schema.

Was Sie haben, ist ein EAV-Modell, und Analysen auf EAV sind nicht einfach und nicht schnell - werfen Sie einen Blick auf diese Diskussion .

Ich würde vorschlagen, dass Sie Tools wie splunk , die für diese Art von Problemen geeignet ist.

    
Damir Sudarevic 16.09.2010 11:58
quelle
2
  

Ich könnte für jede uns interessierende Metrik eine weitere Spalte hinzufügen, die aber in die Hunderte oder gar Tausende gehen kann. Ich würde ein Skript schreiben, nur um das Schema zu aktualisieren, und das riecht nach schlechtem Design.

Sie haben nicht so viele Fakten. Es gibt nicht so viele Einheiten.

Fakten haben Einheiten. Sekunden, Pfund, Bytes, Dollar.

Sie müssen das "Star Schema" -Design überprüfen. Sie haben Dimensionen (wahrscheinlich eine Menge) und messbare Fakten (wahrscheinlich sehr wenige).

Sie haben eine Verknüpfung zwischen Fakten und allen zugehörigen Dimensionen. Sie können eine Summe erstellen, sich auf die Fakten verlassen und die Dimensionen durchgehen.

Sie können nicht Tausende von unabhängigen Fakten haben. Das ist fast unmöglich. Aber Sie können Tausende von Kombinationen von Dimensionen haben, das ist üblich.

Separate Fakten (messbare Quantitäten, die angenehm hinzufügen) von Dimensionen (Definitionsqualitäten) und Sie sollten eine Menge Dimensionen um einige Fakten haben.

Kaufe eine Kopie von Kimball.

    
S.Lott 15.09.2010 23:48
quelle