web-dev-qa-db-fra.com

Comment faire des rapports avec MongoDB?

J'envisage MongoDB pour mon prochain grand projet, mais j'ai quelques préoccupations. En particulier, comment puis-je créer des rapports? 

Si j'ai bien compris, je ne peux pas faire le même type de jointure et d'agrégation que dans une base de données relationnelle. Les rapports que j'avais à l'esprit impliquent d'agréger un grand nombre de données de différents "tableaux" avec des critères stricts.

Est-ce facilement faisable dans MongoDB, ou est-ce que ce sera un gros casse-tête?

28
mpen

Bien que Pentaho et Jaspersoft et d’autres solutions de reporting traditionnelles disposent de moyens pour extraire les données de MongoDB, il existe deux nouvelles solutions conçues explicitement pour l’analyse et la création de rapports sur les données MongoDB:

  • JSON Studio . Il s'agit d'une solution commerciale qui vous permet de créer visuellement des pipelines d'agrégation et de les connecter à des graphiques.
  • SlamData . Il s'agit d'une solution open source qui vous permet d'exécuter des requêtes SQL directement sur MongoDB (notamment les JOINS, GROUP BY, HAVING, etc.), via l'interface graphique ou une API. La version actuelle du projet intègre la visualisation des données et vous permet de créer et d'intégrer des tableaux de bord de rapports dans les applications MongoDB.

Parce que ces deux méthodes s’appliquent au-dessus de MongoDB (par opposition à l’autre approche, c’est-à-dire extraire les données et les normaliser pour les rapports dans Mondrian ou quelque chose du genre), elles sont beaucoup plus simples et naturelles pour les rapports par MongoDB. Le revers de la médaille est que, comme les données ne sont pas chargées dans des cubes entièrement en mémoire (par exemple), la génération de rapports peut en pâtir si vous essayez de générer des rapports compliqués en temps réel.

Disclaimer: Je suis un contributeur du projet SlamData, bien que je ne sois pas affilié à JSON Studio.

19
John A. De Goes

Il semble que les outils open source tels que JasperReports et Pentaho puissent se connecter à MongoDB, même si vous souhaitez passer au navire NoSQL mais sans passer au navire NoSQL, vous pouvez utiliser une base de données ODBC ou OLE. tel que celui de Simba , puis utilisez n’importe quel outil de génération de rapports SQL normal tel que DBxtra

4
Miguel Garcia

En général, n'utilisez pas mongodb simplement parce que vous voulez essayer quelque chose de nouveau dans un environnement de production: c'est ce qui vous causera beaucoup de maux de tête. Il existe un excellent article sur Stackoverflow sur son utilisation: https://stackoverflow.com/a/1477354/1248724

En ce qui concerne les rapports: Map-réduire , en particulier incrémental vous aidera beaucoup, mais vous ne pouvez pas traiter mongoDB comme une base de données relationnelle. Ce n'est tout simplement pas un. Par exemple, la requête pour un sous-document de folie . Le mongoDB Aggregation-Framework fera l'affaire dans la plupart des cas, mais a ses limites par rapport à SQL.

2
Zarathustra

Si vous utilisez .NET, créez facilement des rapports avec 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 de base de données d'application principal, afin que ce ne soit pas un gros casse-tête . Si vos collections MongoDB sont similaires aux tables de données SQL, vous pouvez utiliser les pilotes ODBC, de cette façon est très limité, mais vous pouvez utiliser tous les services de génération de rapports fonctionnant avec la connexion ODBC . Je préfère utiliser d’abord: XtraReports "DevExpress".

2
Eugene Bosikov

Je ne suis pas sûr que vous puissiez faire dans MongoDB tous vos rapports et avoir un temps de réponse suffisant. Vous pouvez donc ajouter un outil au dessus de MongoDB à cette fin. Par exemple, icCube prend maintenant en charge MongoDB pour ce type d'utilisation. Extraire l’ensemble des données n’a aucun sens, mais la plupart du temps, les données de reporting et d’analyse ne représentent qu’une fraction de l’ensemble et il est logique de connecter un outil en mémoire OLAP pour la génération de rapports et l’analyse.

1
Marc Polizzi

autant que je sache, il n'existe pas de moyen facile d'effectuer des jointures, des agrégations, etc. de la même manière que vous le feriez dans une base de données relationnelle en Mongo. Il existe différents outils d'analyse externes que vous pouvez utiliser à cet effet. Dans mon entreprise, nous utilisons Sisense et le connectons à MongoDB via un pilote ODBC, ce qui nous permet d’utiliser une fonctionnalité semblable à SQL sur nos données et fonctionne parfaitement. Cependant, je ne connais aucun moyen de le faire de manière native dans MongoDB.

1
Dan

La création de rapports MongoDB est facilitée par le fait qu’il dispose d’une structure d’agrégation qui fournit une API pouvant être connectée à un logiciel de génération de rapports. Voici un article qui fournit des détails sur la création de rapports et la visualisation MongoDB http://blog.jinfonet.com/mongodb-reporting-visualization-jreport/

0
Bon