2009-06-29 14 views
2

Wir haben ein System, das viele Ereignisse als Folge eines Telefonanrufs/Web-Anfrage/SMS/E-Mail usw. generiert, jedes dieser Ereignisse muss gespeichert werden können und für die Berichterstattung verfügbar sein (für MI/BI usw.), jedes dieser Ereignisse hat viele Variablen und passt nicht zu einem bestimmten Schema.Schema-less Data Warehouse und Reporting

Die Struktur des Ereignisses Dokument ist ein Schlüssel-Wert-Paar-Liste (cdr = 1 & name = Paul & Dauer = 123 & Postleitzahl = l21). Derzeit haben wir ein SQL Server-System, das dynamisch erzeugte spärliche Spalten verwendet, um unser (flaches) Dokument zu speichern, von dem wir Berichte haben, die gegen die Daten laufen. Aus verschiedenen Gründen suche ich nach anderen Lösungen.

Ich bin auf der Suche nach Vorschlägen für ein System (offen oder geschlossen), das uns ermöglicht, diese Ereignisse (unabhängig vom Schema) zu pushen und darüber hinaus Berichte und Analysen bereitzustellen.

Ich habe Pentaho und Jasper gesehen, aber die meisten scheinen sich mit einem System zu verbinden, um die Daten daraus zu bekommen, um dann darüber zu berichten. Ich möchte wirklich nur in der Lage sein, ein Dokument einzubringen und es zur Verfügung zu stellen, über das berichtet werden kann.

So viel wie ich CouchDB Liebe, die ich für ein System suchen, das schema weniger einreichenden von Daten und Berichterstattung auf es (ähnlich wie Pentaho, Jasper, SQL Reporting/Analytics Server usw.)

Antwort

3

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.

+0

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

+0

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

+0

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

0

Sind diese Systeme schemalos, oder wurden die Schemas nicht bestimmt? Wechseln die Schemas häufig?

+0

Das Schema wird vollständig vom Client, von der Anwendung, von den von uns verwendeten Aufrufskripts definiert. Das heißt, die Anrufe, die wir tätigen, haben eine sehr hohe Wahrscheinlichkeit, dass sie sehr unterschiedliche Spalten enthalten. Es ist sehr einfach zu sehen, dass wir am Ende eines Telefonats mehr als 1000 verschiedene Messungen durchführen. – Kinlan

+0

Ich denke, ich habe noch nie mit einem solchen Problem gearbeitet. Sie haben tatsächlich mehrere Schemas. Selbst wenn, um die Daten schnell zu speichern, Sie eine einfache Schlüssel/Wert DB haben, um Berichte zu erstellen, muss jeder Client ein Schema haben - und unterschiedliche Schemas für jeden Client, nehme ich an! –

+0

Abhängig von der Kampagne, die Clients möglicherweise ausführen, und den "Anwendungen", die zu einem beliebigen Zeitpunkt ausgeführt werden, gibt es ein Schema. Dieses Schema existiert jedoch möglicherweise nur 20 Minuten, bevor der Client es je nach Bedarf ändert. – Kinlan

-1

Jetzt denke ich, ich sehe die zugrunde liegenden Anforderungen. Dies ist eine Online- oder Telefonumfrageanwendung mit benutzerdefinierten Umfragen. Der Weg, mit dieser Anforderung umzugehen, besteht darin, die Analytik auf den Client zu übertragen. Mit keinem Online-Tool können Sie Schemaänderungen in 20 Minuten umdrehen.

Ich habe diese Art von Anforderung schon einmal gesehen und es läuft auf den Kunden hinaus, der einige Statistiken zu einer bestimmten Umfrage machen möchte. Wenn Sie ihnen eine CSV basierend auf den Feldern (d. H. Mit benannten Header-Spalten) in ihrer jeweiligen Umfrage geben können, können sie sie in Excel importieren und von dort aus drehen.

Diese sollte relativ einfach von einem konfigurierbaren Online-Umfrage-System zu implementieren, wie Sie in der Lage sein sollten, die Umfrage-Konfiguration zu lesen. Der Kunde wird sich freuen, dass er mit seinen Zahlen in Excel spielen kann, da er sich nicht mit einem Drittanbieter-Tool herumschlagen muss. Jeder kompetente Verkäufer sollte in der Lage sein, dies zum Vorteil des Kunden zu machen. Sie können ein Spiel in der Art von 'verwenden und Sie können vertraute Tools wie Excel verwenden, um Ihre Zahlen zu analysieren'. (oder SAS, wenn sie so geneigt sind)

Wickeln Sie den Exporteur in eine Webseite ein, damit er sie selbst herunterladen und aktuelle Daten erhalten kann.

Beachten Sie, dass sich die Räder lösen, wenn Sie mehr Daten haben als 65535 Teilnehmer pro Umfrage, da dies nicht auf eine Tabellenkalkulation passt. Excel 2007 erhöht dieses Limit auf 1048575. Umfragen mit diesem Antwortvolumen werden jedoch wahrscheinlich in der Minderheit sein. Eine mögliche Problemumgehung ist, ein Mittel bereitzustellen, um zufällige Beispiele der Daten zu erhalten, die klein genug sind, um in Excel zu arbeiten.

Edit: Ich glaube nicht, dass es andere Lösungen gibt, die ausreichend flexibel für diese Art von Anwendung sind. Sie haben einen heiligen Gral der Umfrage-Statistiken beschrieben.

Ich denke immer noch, dass die grundlegende Strategie ist, ihnen einen Daten-Dump zu geben. Sie können es bis zu einem gewissen Grad vorab paketieren, indem Sie OLE-Automatisierung verwenden, um eine Pivot-Tabelle zu erstellen und etwas partiell verdaut zu liefern. Die API für Pivot-Tabellen in Excel ist ein bisschen haarig, aber das ist sicherlich durchaus machbar. Ich habe VBA-Code geschrieben, der in der Vergangenheit programmatisch Pivot-Tabellen erstellt, so dass ich aus eigener Erfahrung sagen kann, dass dies machbar ist.

Das Problem wird ein bisschen komplexer, wenn Sie Verteilungen von (sagen wir) Antwortzeiten berechnen und melden möchten, da Sie die Anzeigen konstruieren müssen. Sie können, wenn nötig, Pivot-Diagramme programmieren, aber das Automatisieren der Berichtskonstruktion durch Excel auf diese Weise wird ein gutes Stück Arbeit sein.

Sie könnten einige Kilometer von R (www.r-project.org) erhalten, wie Sie ein Framework erstellen können, mit dem Sie Daten importieren und maßgeschneiderte Berichte mit ein wenig R-Code generieren können. Dies ist kein Endbenutzer-Tool, aber Ihre Kundenbasis klingt trotzdem so, als würden sie in der Lage sein, bereits vordefinierte Berichte zu erstellen.

+0

Es ist in der Nähe, es ist ein IVR-System, das jedes Skript ausführen kann, nicht nur Umfragen.Zum Beispiel kann ein grundlegendes Skript bis zu 500 Variablen aus dem Aufruf messen, einschließlich der Zeit, um auf eine Abfrage nach einer Frage zu antworten, dem Ergebnis der Frage usw., auf einer grundlegenden Ebene. Ja, wir liefern bereits eine CSV-Ergebnistabelle, aber mit hartcodierten Spalten (es ist wirklich unmanagable), ein Entity-Value-Schema ist nicht performant, also haben wir das diskontiert - deshalb haben wir uns für eine SQL Server dynamische Spalten (durch spärliche Spalten) entschieden und ich versuche festzustellen, ob es andere Lösungen gibt :) – Kinlan

+0

And der andere Punkt ist, dass (ohne unhöflich zu unseren Kunden zu sein) ist, dass sie entweder die Daten nicht analysieren können, die wir bereits präsentieren, und wir die Berichterstattung für sie in zusammengefasster Form verwalten müssen; Oder sie wollen den CSV-Export, den wir bereits bereitstellen, einfach nicht manipulieren wollen. – Kinlan

+0

(Die folgenden Grenzen überschreiten meine Bluntness-Quote für den Tag): Wenn sie ihre Daten nicht analysieren können, was ist dann ihr Deal? Stellen Sie die Domain-Expertise zur Verfügung, die sie nicht zu haben scheinen? Weißt du, worum es in ihren Skripten geht? Irgendwann muss jemand herausfinden, was er will und was es bedeutet. Wenn sich das ständig ändert, dann sind vielleicht auch einige Prozessänderungen erforderlich, aber GIGO. –