2013-01-11 4 views
25

Ich überlege MongoDB für mein nächstes großes Projekt, aber ich habe ein paar Bedenken. Wie kann ich berichten?Wie funktioniert die Berichterstellung mit MongoDB?

Mein Verständnis ist, dass ich nicht die gleichen Arten von Joins und Aggregation tun kann, die ich normalerweise in einer relationalen Datenbank tun würde. Die Berichterstattung, die ich im Sinn hatte, besteht darin, eine Menge Daten aus verschiedenen "Tabellen" mit strengen Kriterien zu aggregieren.

Ist dies in MongoDB leicht machbar, oder wird es große Kopfschmerzen geben?

+0

Pre-Aggregation und inkrementelle MR helfen immens hier: http://docs.mongodb.org/manual/use-cases/pre-aggregated-reports/ – Sammaye

+0

@Sammaye: Diese "Pre-Aggregation" klingt wie es erfordert ein immense Voraussicht. Zu Beginn meines Projekts weiß ich nicht, welche Berichte in die Pipeline kommen werden, was bedeutet, dass ich ein Skript schreiben muss, um diese zusammengesetzten Dokumente "neu zu erstellen", und dann zurückgehen und so ziemlich alles umgestalten halte sie auf dem Laufenden und bete, dass ich nichts verpasst habe. Wie ist das überhaupt machbar? – mpen

+0

Wenn es relevant ist, müssen diese Berichte nicht wirklich auf dem neuesten Stand sein und müssen nicht in einem Herzschlag laufen. Vielleicht 30 Sekunden zu generieren, und genau innerhalb von ~ 24 Stunden ist sinnvoll. – mpen

Antwort

4

Es scheint, dass die Open-Source-Tools wie JasperReports und Pentaho eine Verbindung zu MongoDB herstellen können, auch wenn Sie zum NoSQL-Schiff springen möchten, aber ohne zum NoSQL-Schiff zu springen, können Sie einen ODBC- oder OLE-DB-Treiber wie Simba's one verwenden. und dann verwenden Sie ein normales SQL-Reporting-Tool wie DBxtra

1

Nicht sicher, Sie können in MongoDB alle Ihre Berichterstattung und eine ausreichende Reaktionszeit haben. Sie könnten zu diesem Zweck ein Tool oben auf MongoDB hinzufügen. Zum Beispiel unterstützt icCube jetzt MongoDB für diese Art der Verwendung. Es macht keinen Sinn, den gesamten Datenbestand zu extrahieren, aber die Daten für das Reporting und die Analyse machen meistens nur einen Bruchteil des Ganzen aus und es ist sinnvoll, ein In-Memory-OLAP-Tool für Berichte und Analysen anzuschließen.

2

Im Allgemeinen nicht mongodb verwenden, nur weil Sie etwas Neues in einer Produktionsumgebung versuchen wollen: das ist, was Ihnen viele Kopfschmerzen bringen wird. Es gibt eine große Stackoverflow Post über, wenn es zu benutzen: https://stackoverflow.com/a/1477354/1248724

Berichterstattung In Bezug auf: Map-Reduce, vor allem inkrementellen werden Sie helfen, eine Menge, aber Sie können nicht mongoDB als relationale Datenbank behandeln. Es ist einfach keiner. Zum Beispiel die Abfrage für ein Filialdokument Wahnsinn. Die mongoDB Aggregation-Framework funktioniert in den meisten Fällen gut, hat aber ihre Grenzen im Vergleich zu SQL.

1

bietet, so weit ich weiß, gibt es keine einfache Möglichkeit, Joins, Aggregationen usw. auf die gleiche Weise wie in einer relationalen Datenbank in Mongo durchzuführen. Es gibt verschiedene externe Analyse-Tools, die Sie dafür verwenden können. In meiner Firma verwenden wir Sisense und verbinden es mit MongoDB über einen ODBC-Treiber, der uns SQL-ähnliche Funktionalität auf unseren Daten verwenden lässt und es funktioniert großartig. Ich kenne jedoch keine Möglichkeit, dies nativ in MongoDB zu tun.

17

Während Pentaho und Jaspersoft und andere Legacy-Reporting-Lösungen Möglichkeiten haben Daten abzupumpen von MongoDB, gibt es zwei neuere entwickelt Lösungen explizit für Analytik und Berichterstattung über MongoDB Daten:

  • JSON Studio. Dies ist eine kommerzielle Lösung, mit der Sie Aggregationspipelines visuell erstellen und mit Diagrammen verbinden können.
  • SlamData. Dies ist eine Open-Source-Lösung, mit der Sie SQL-Abfragen direkt auf MongoDB (einschließlich JOINs, GROUP BY, HAVING usw.) über die GUI-Schnittstelle oder eine API ausführen können. In der aktuellen Version des Projekts ist die Datenvisualisierung aktiviert und Sie können Dashboard-Berichte in MongoDB-Anwendungen erstellen und einbetten.

Da beide oben auf MongoDB laufen (gegenüber dem anderen Ansatz, d. H.pumpen die Daten aus und normalisieren sie für die Berichterstattung in Mondrian oder so etwas), sie sind viel einfacher und natürlicher für MongoDB Berichterstattung. Die Kehrseite ist, dass die Berichterstellung beeinträchtigt wird, wenn die Daten nicht in Speichercomputern mit vollem Speicher geladen werden (zum Beispiel), wenn Sie versuchen, eine komplizierte Berichterstellung in Echtzeit durchzuführen.

Haftungsausschluss: Ich bin ein Mitwirkender für das SlamData-Projekt, obwohl ich keine Verbindung mit JSON Studio habe.

2

Wenn Sie .NET verwenden, einfach Berichte mit DexExpress-Berichten zu schreiben. Es funktioniert gut mit MongoDb .NET-Treiber, nur eine Einschränkung, Sie müssen starke Typen für jede Aggregation, die Sie in Ihren Daten verwenden. Alle Arten, die Sie von Ihrem Hauptanwendungs-DB-Anbieter verwenden können, so wird es keine großen Kopfschmerzen sein. Wenn Ihre MongoDB-Sammlungen den SQL-Datentabellen ähneln, können Sie ODBC-Treiber verwenden. Dies ist zwar sehr begrenzt, Sie können jedoch alle Berichtsdienste verwenden, die mit einer ODBC-Verbindung arbeiten. Ich bevorzuge zuerst zu verwenden: "DevExpress" XtraReports.

+0

Sind Sie mit DexExpress verbunden? – mpen

+0

Nein, war nie angegliedert. Ich verwende nur ihre Komponenten für Windows und Web. –

+0

@EugeneBosikov, wie binden Sie die Berichte an die Datenquelle? eine gute Dokumentation für den Anfang? Danke –

Verwandte Themen