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?
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:
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.
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
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.
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".
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.
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.
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/