Comment faire un rapport avec MongoDB?

J'envisage MongoDB pour mon prochain grand projet, mais j'ai quelques inquiétudes. En particulier, comment puis-je faire un rapport?

ma compréhension est que je ne peux pas faire le même genre de jointures et d'agrégation que je ferais normalement dans une base de données relationnelle. Le reporting que j'avais à l'esprit implique l'agrégation d'un grand nombre de données à partir de différents "tableaux" avec des critères stricts.

est-ce facile à faire en MongoDB, ou est-ce que ça va être un gros mal de tête?

27
demandé sur mpen 2013-01-11 20:49:47

7 réponses

Alors que Pentaho et Jaspersoft et d'autres de l'héritage solutions de reporting ont les moyens de pompe de données MongoDB, il y a deux nouveaux des solutions conçues explicitement pour des analyses et des rapports sur MongoDB données:

  • JSON Studio. Il s'agit d'une solution commerciale qui vous permet de construire visuellement des pipelines d'agrégation et de les connecter à des cartes.
  • SlamData. C'est une solution open source qui vous permet d'exécuter des requêtes SQL directement sur MongoDB (y compris JOINs, GROUP BY, HAVING, etc.), via l'interface GUI ou une API. Dans la version actuelle du projet, la visualisation des données est intégrée et vous permet de créer et d'intégrer des tableaux de bord de rapports dans les applications MongoDB.

parce que les deux fonctionnent sur le dessus de MongoDB (par rapport à l'autre approche, c.-à-d. pomper les données et les normaliser pour les rapports en Mondrian ou quelque chose), ils sont beaucoup plus facile et plus naturel pour les rapports en MongoDB. Le revers de la médaille, c'est que parce que les données ne sont pas chargées dans les cubes mémoire (par exemple), l'expérience de rapport peut souffrir si vous essayez de faire la génération de rapport compliquée en temps réel.

Avertissement: je suis un contributeur pour le projet SlamData, bien que je n'ai aucune affiliation avec JSON Studio.

19
répondu John A. De Goes 2016-08-31 17:20:49

il semble que les outils open source comme JasperReports et Pentaho peuvent se connecter à MongoDB, aussi si vous voulez sauter sur le vaisseau NoSQL mais sans sauter sur le vaisseau NoSQL, vous pouvez utiliser un pilote ODBC ou OLE DB comme Simba est un, puis utilisez n'importe quel outil de rapport SQL normal comme DBxtra

4
répondu Miguel Garcia 2013-01-15 15:32:03

en général, ne pas utiliser mongodb juste parce que vous voulez essayer quelque chose de nouveau dans un environnement de production: c'est ce qui vous apportera beaucoup de maux de tête. Il y a une grande Stackoverflow post pour savoir quand l'utiliser: https://stackoverflow.com/a/1477354/1248724

concernant les rapports: Map-Reduce, surtout incrémental one vous aidera beaucoup, mais vous ne pouvez pas traiter mongoDB comme une base de données relationnelle. Il n'est tout simplement pas un. Par exemple la Requête pour un sous-document de folie. Le mongoDB Agrégation-Cadre fera bien dans la plupart des cas mais a ses limites par rapport à SQL.

2
répondu Zarathustra 2017-05-23 10:30:55

si vous utilisez .NET, facile d'écrire des rapports en utilisant les rapports DexExpress. Cela fonctionne bien avec le pilote MongoDb .NET, une seule limitation, vous devez avoir des types forts pour chaque agrégation que vous utilisez dans vos données. Tous les types que vous pouvez utiliser à partir de votre fournisseur principal de l'application db, il ne sera donc pas un gros casse-tête. Si vos collections MongoDB sont similaires aux tables de données SQL, vous pouvez utiliser les pilotes ODBC, cette façon est très limitée, mais vous pouvez utiliser tous les services de rapports qui fonctionnent avec ODBC connexion. Je préfère utiliser en premier: "DevExpress" XtraReports.

2
répondu Eugene Bosikov 2015-11-18 20:39:11

Je ne suis pas sûr que vous puissiez faire en MongoDB tous vos rapports et avoir un temps de réponse suffisant. Ainsi, vous pouvez ajouter un outil sur le dessus de MongoDB. E. g., icCube aide MongoDB pour ce type d'utilisation. Il n'est pas logique d'extraire l'ensemble des données, mais la plupart du temps, les données pour le reporting et l'analyse ne représentent qu'une fraction de l'ensemble et il est logique de connecter un outil OLAP en mémoire pour le reporting et l'analyse.

1
répondu Marc Polizzi 2014-05-22 09:17:52

pour autant que je sache, il n'y a pas de moyen facile d'effectuer des jointures, agrégations, etc. comme vous le feriez dans une base de données relationnelle à Mongo. Il existe différents outils d'analyse externe que vous pouvez utiliser pour cela. Dans mon entreprise, nous utilisons Sisense et le connecter à MongoDB via un pilote ODBC, ce qui nous permet D'utiliser des fonctionnalités de type SQL sur nos données et cela fonctionne très bien. Cependant, je ne sais pas comment faire cela nativement en MongoDB.

1
répondu Dan 2015-04-14 13:45:13

MongoDB la production de rapports est facilitée par le cadre d'agrégation qui fournit une api pouvant être connectée à un logiciel de production de rapports. Voici un article qui donne des détails sur MongoDB reporting et de visualisation http://blog.jinfonet.com/mongodb-reporting-visualization-jreport/

0
répondu Bon 2014-09-23 13:56:56