replicacion - ¿Cómo hacer informes con MongoDB?
replicacion mongodb (7)
Estoy considerando MongoDB para mi próximo gran proyecto, pero tengo algunas preocupaciones. En particular, ¿cómo puedo informar?
Según entiendo, no puedo hacer el mismo tipo de uniones y agregación que normalmente haría en una base de datos relacional. El informe que tenía en mente involucra agregar una gran cantidad de datos de diferentes "tablas" con criterios estrictos.
¿Es esto factible en MongoDB, o va a ser un gran dolor de cabeza?
por lo que sé, no hay una manera fácil de realizar uniones, agregaciones, etc. de la misma manera que lo haría en una base de datos relacional en Mongo. Existen diferentes herramientas analíticas externas que puede usar para esto. En mi empresa usamos Sisense y lo conectamos a MongoDB a través de un controlador ODBC, lo que nos permite utilizar la funcionalidad similar a SQL en nuestros datos y funciona muy bien. Sin embargo, no sé de una manera de hacer esto de forma nativa en MongoDB.
Parece que las herramientas de código abierto como JasperReports y Pentaho pueden conectarse a MongoDB, también si quieres saltar al barco NoSQL pero sin saltar al barco NoSQL, puedes usar un controlador ODBC u OLE DB como el de Simba , y luego usar cualquier herramienta de informes SQL normal como DBxtra
No estoy seguro de que pueda hacer en MongoDB todos sus informes, además de tener suficiente tiempo de respuesta. Entonces podrías agregar una herramienta encima de MongoDB para ese propósito. Por ejemplo, icCube ahora admite MongoDB para este tipo de uso. No tiene sentido extraer todo el conjunto de datos, pero la mayoría de las veces los datos para los informes y análisis representan solo una fracción del total y tiene sentido conectar una herramienta OLAP en memoria para informes y análisis.
Los informes MongoDB se hacen más fáciles porque tienen el marco de agregación que proporciona una API que se puede conectar a un software de informes. Aquí hay un artículo que proporciona detalles sobre informes y visualización de MongoDB http://blog.jinfonet.com/mongodb-reporting-visualization-jreport/
Si está utilizando .NET, es fácil escribir informes usando informes DexExpress. Funciona bien con el controlador MongoDb .NET, solo una limitación, debe tener tipos fuertes para cada agregación que esté utilizando en sus datos. Todos los tipos que puede usar desde su proveedor de db de la aplicación principal, para que no sea un gran dolor de cabeza. Si sus colecciones MongoDB son similares a las tablas de datos SQL, puede usar controladores ODBC, de esta manera es muy limitado, pero puede usar cualquier servicio de informes que funcione con conexión ODBC. Prefiero usar primero: "DevExpress" XtraReports.
Si bien Pentaho y Jaspersoft y otras soluciones de generación de informes heredadas tienen formas de extraer datos de MongoDB, hay dos soluciones más nuevas diseñadas explícitamente para análisis e informes sobre datos de MongoDB:
- JSON Studio . Esta es una solución comercial que le permite construir visualmente tuberías de agregación y conectarlas a gráficos.
- SlamData . Esta es una solución de código abierto que le permite ejecutar consultas SQL directamente en MongoDB (incluidos JOIN, GROUP BY, HAVING, etc.) a través de la interfaz GUI o una API. La versión actual del proyecto tiene la visualización de datos incorporada, y le permite crear e incrustar informes tableros de tablero en aplicaciones MongoDB.
Debido a que ambos se ejecutan sobre MongoDB (frente al otro enfoque, es decir, extrayendo los datos y normalizándolos para informar en Mondrian o algo así), son mucho más fáciles y más naturales para los informes de MongoDB. La otra cara es que, debido a que los datos no se cargan en cubos de memoria total (por ejemplo), la experiencia de generación de informes puede verse afectada si intenta generar complicados informes en tiempo real.
Descargo de responsabilidad : soy colaborador del proyecto SlamData, aunque no tengo ninguna afiliación con JSON Studio.
En general, no uses mongodb solo porque quieras probar algo nuevo en un entorno de producción: eso es lo que te traerá muchos dolores de cabeza. Hay una gran publicación de sobre cuándo usarla: https://.com/a/1477354/1248724
En cuanto a los informes: Map-Reduce , especialmente uno incremental te ayudará mucho, pero no puedes tratar mongoDB como una base de datos relacional. Simplemente no es uno. Por ejemplo, la búsqueda de una locura de subdocumento. El mongoDB Aggregation-Framework funcionará bien en la mayoría de los casos, pero tiene sus límites en comparación con SQL.