2010-09-15 12 views
8

In unserer Anwendung unterstützen wir benutzerdefinierte Plugins.Data Warehousing beliebige Felder

Diese Plugins generieren Daten verschiedener Typen (int, float, str oder datetime), und diese Daten sind mit Metadatenbündeln (Benutzer, aktuelles Verzeichnis usw.) sowie drei Freitextfeldern gekennzeichnet (MetrischerName, 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 Weise (Diagramme und so) ermöglicht. 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 dies sehr vereinfacht ist)

========================================================================================================= 
| BaseDir   | User | TrialNo | Project | ... | MetricValue | MetricName | Var1 | Var2  | 
========================================================================================================= 
| /path/to/me  | me  | 0  | domino | ... | 20   | Errors  | core | dumb  | 
| /path/to/me  | me  | 0  | domino | ... | 98.6  | Tempuratur | body |   | 
| /some/other/pwd | oneguy | 223  | farq | ... | 443   | ManMonths | waste | Mythical | 
| /some/other/pwd | oneguy | 224  | farq | ... | 0   | Albedo  | nose | PolarBear | 
| /path/to/me  | me  | 0  | domino | ... | 70.2  | Tempuratur | room |   | 
| /path/to/me2 | me  | 2  | domino | ... | 2020  | Errors  | misc | filtered | 

Jeder kann ein Parser-Plug hinzufügen, um den Anfang eines AirSpeed ​​metrischen Messung und wir würden unsere analisys Tools wie „einfach funktionieren“ auf dieser neuen Metrik.


Update:

man bedenkt, dass viele der ID Mess die sind vorher gut bekannt ist, kann ich meine Anforderungen erfüllen, wenn ich Analyse auf diesen Metriken ermöglichen können, und speichern Sie einfach die anderen Benutzer hinzugefügte Metriken. Wir können die Tatsache akzeptieren, dass neue Metriken für die Schwerlastanalyse 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 keine MetricTopic benötigen, eine für diejenigen, die dies tun, und eine für alle anderen Metriken, einschließlich unerwarteter.

Metrics Schema #3


Für die Prämie:

Ich werde jede Kritik akzeptieren, die zeigt, wie dieses System funktionsfähig zu machen, oder bringt sie in eine engere Abstimmung mit der Industrie Best-Practices. Literaturhinweise geben zusätzliches Gewicht.

+0

Wie wäre es mit einem Beispiel - sagen wir 10 Messwerte? –

+0

@ Jeffrey L Whitledge: Dieses Schema basiert auf Ihrem Kommentar. – bukzor

+0

@Damir Sudarevic, @ Jeffrey L Whitledge, @ S.Lott: Ich habe eine Bounty zu dieser Frage hinzugefügt, in der Hoffnung, dass Sie eine bessere Antwort denken können. – bukzor

Antwort

2

Ich könnte eine weitere Spalte für jede Metrik hinzufügen, die uns interessiert, aber die könnte in die Hunderte oder sogar Tausende reichen. 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, auf die Fakten zählen und auf die Dimensionen zugreifen.

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 Mengen, die angenehm hinzufügen) von Dimensionen (Definitionsqualitäten) und Sie sollten eine Menge Dimensionen um ein paar Fakten haben.

Kaufen Sie eine Kopie von Kimball.

+0

Ich kaufte Kimball tatsächlich auf Kindle, nachdem ich diese Frage gestellt hatte. – bukzor

+0

Ich stimme zu. Wenn ich genau hinsehe, habe ich nur vielleicht 40 verschiedene Fakten, aber ich habe immer noch das Problem, dass jemand ohne Warnung eine neue Art von Fakten hinzufügen kann, die eine Aktualisierung des Schemas erfordern. Gibt es eine allgemeine Weisheit für ein System mit unbestimmten Fakten? Eine Dimension namens FactName erstellen? – bukzor

+0

* "Sie können nicht Tausende von unabhängigen Fakten haben. Das ist fast unmöglich" * Ich verstehe nicht die Gründe hinter dieser Aussage, können Sie erklären, was du meinst? – naught101

5

Wenn ich richtig verstanden habe, suchen Sie nach einem Schema zur Unterstützung der On-Fly-Erstellung von Kennzahlen in einem DW. In einem klassischen Data Warehouse ist jede Kennzahl eine Spalte. In einem Kimball-Star 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 ist nicht einfach und nicht schnell - werfen Sie einen Blick auf this discussion.

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

+0

Danke! Zumindest habe ich jetzt einen Namen für mein Problem. Kennen Sie ein maßgebliches Schreiben über Analytik für EAV? – bukzor

+0

@bukzor, nein nicht wirklich. –

Verwandte Themen