I erlaubt Glauben Sie nicht, dass es ein DBMS gibt, das das macht, was Sie wollen, und dass ein Standard-Reporting-Tool verwendet werden kann. Analyse-Systeme mit niedriger Latenz sind nicht schnell und einfach zu erstellen. Die geringe Latenz bei unstrukturierten Daten ist ziemlich ambitioniert.
Sie müssen jedoch die Daten in einer Art Datenbank speichern.
Ich denke, dass Sie Ihre Problemdomäne näher betrachten müssen. Versuchen Sie, analytische Berichte mit niedriger Latenz oder einen Betriebsbericht auszuführen, der bei bestimmten Ereignissen eine Aktion im Unternehmen auslöst? Bei Systemen mit niedriger Latenzzeit müssen Sie sehr rücksichtslos darüber sein, was betriebliches Reporting und was Analyse ausmacht.
Bearbeiten: Entmutigen Sie die "potenziell beide" Denkweise, es sei denn, das Unternehmen bereit sind zu zahlen. Investmentbanken und Hedge-Fonds geben viel Geld aus und kaufen Supercomputer, um Echtzeit-Analysen durchzuführen. Es ist keine triviale Angelegenheit. Es ist noch weniger trivial, wenn Sie versuchen, ein solches System für hohe Betriebszeiten zu bauen.
Auch bei Apps wie Premium-SMS-Diensten und .com-Anwendungen wird das Geschäft oft zurückgesetzt, wenn Sie eine realistische Kostenanalyse des Problems durchführen. Ich kann das nicht genug sagen. Be wirklich, wirklich rücksichtslos über 'Echtzeit' Anforderungen.
Wenn das Unternehmen wirklich Echtzeitanalysen benötigt, können Sie hybride OLAP-Architekturen erstellen, bei denen Sie eine führende Partition auf der Faktentabelle haben. Dies ist eine Architektur, in der die Fakttabelle oder der Cube für historische Daten vollständig indiziert ist, aber eine kleine führende Partition hat, die nicht indiziert ist und daher relativ schnell Daten in sie einfügt.
Analytische Abfragen Tabelle durchsuchen die relativ kleine führende Datenpartition und verwenden effizientere Methoden auf den anderen Partitionen. Dadurch erhalten Sie Daten mit niedriger Latenz und die Möglichkeit, effiziente analytische Abfragen für die Verlaufsdaten auszuführen.
Einen nächtlichen Prozess ausführen, der zu einer neuen führenden Partition übergeht und die vorherige Lead-Partition konsolidiert/indiziert.
Dies funktioniert gut, wenn Sie Elemente wie Bitmap-Indizes (auf Datenbanken) oder materialisierte Aggregationen (auf Cubes) haben, die bei Einfügungen teuer sind. Die Lead-Partition ist relativ klein und billig für Table-Scan-Scans, aber effizient, um sie in den Rill einzufügen. Der Roll-Over-Prozess konsolidiert diese führende Partition inkrementell in die indizierten Protokolldaten, sodass sie effizient für Berichte abgefragt werden können.
Bearbeiten 2: Die allgemeinen Felder können Kandidaten sein, um Dimensionen in einer Faktentabelle (z. B. Aufrufer, Zeit) einzurichten. Die weniger gebräuchlichen Felder sind (vermutlich) kodierend. Für ein effizientes Schema können Sie das optionale Coding in einen oder mehrere 'junk' dimensions. verschieben.
Kurz gesagt, eine Junk-Dimension ist eine, die jede bestehende Kombination von zwei oder mehr Codes darstellt. Eine Zeile in der Tabelle bezieht sich nicht auf eine einzelne Systemeinheit, sondern auf eine eindeutige Kombination von Codierung. Jede Zeile in der Dimensionstabelle entspricht einer eindeutigen Kombination, die in den Rohdaten auftritt.
Um einen analytischen Wert zu haben, müssen Sie die Daten immer noch so organisieren, dass die Spalten in der Junk-Dimension etwas konsistent aussagekräftiges enthalten. Dies geht auf einige Anforderungen zurück, um sicherzustellen, dass die Zuordnungen aus den Quelldaten sinnvoll sind. Sie können mit Elementen umgehen, die nicht immer aufgezeichnet werden, indem Sie einen Platzhalterwert verwenden, z. B. eine Zeichenfolge mit der Länge Null (''
). Dies ist wahrscheinlich besser als Nullen.
Potenziell, beide - im Moment besteht eine Notwendigkeit für niedrige Latenz (das Unternehmen nutzt Echtzeit, aber wir wissen es nicht) Analytik und Reporting. Operationell können wir jedoch Entscheidungen über sehr neue Aktionen in der "anderen" Datenbank treffen, die sehr häufig abgeschnitten wird. Leider müssen die gleichen Daten, die für operative Entscheidungen zur Verfügung stehen, unseren Kunden auch über Analysen zur Verfügung stehen. – Kinlan
Im Moment denke ich, dass es zwei Phasen sein wird. Die DB (Anrufdetails werden im Wesentlichen aufgezeichnet), die der Speicherung der Daten gewidmet sind, und ein Berichts-/Analysesystem. – Kinlan
Ok, cool, danke für die Änderungen. Wenn ich den Echtzeit-Aspekt für jetzt ignorieren kann. Wir haben einen Fall, in dem die Fakten und auch die Dimensionen aus Mangel an einem besseren Wort "dynamisch" sein können - das heißt, es gibt keine festen Schemata (abgesehen von ein paar gemeinsamen Variablen), also was ich suche, ist etwas, mit dem ich umgehen kann Dies. Im Moment haben wir eine einzelne Anrufdetaildatensatztabelle, wobei jede Zeile einen Aufruf darstellt und die Spalten die in diesem Aufruf festgelegten Variablen darstellen (deren Spalten dynamisch erstellt werden können und nicht zu 99% der Zeit ausgefüllt werden können) – Kinlan