Как сделать отчетность с MongoDB?

Я рассматриваю MongoDB для моего следующего крупного проекта, но у меня есть пара проблем. В частности, как я могу сделать отчетность?

Я понимаю, что я не могу выполнять те же виды объединений и агрегации, которые я обычно делал бы в реляционной базе данных. Отчетность, которую я имел в виду, включает в себя объединение большого количества данных из разных "таблиц" со строгими критериями.

Это легко выполнимо в MongoDB, или это будет большая головная боль?

Ответ 1

В то время как Pentaho и Jaspersoft и другие устаревшие системы отчетности имеют способы перекачивать данные из MongoDB, существуют два новых решения, специально разработанные для аналитики и отчетности по данным MongoDB:

  • Студия JSON. Это коммерческое решение, которое позволяет визуально создавать конвейеры агрегации и подключать их к диаграммам.
  • SlamData. Это решение с открытым исходным кодом, которое позволяет запускать SQL-запросы непосредственно на MongoDB (включая JOINs, GROUP BY, HAVING и т.д.) Через интерфейс GUI или API. Текущая версия проекта включает в себя визуализацию данных и позволяет создавать и вставлять отчеты о тире в приложения MongoDB.

Поскольку оба они работают поверх MongoDB (по сравнению с другим подходом, то есть откачкой данных и их нормализации для отчетности в Mondrian или что-то еще), они намного проще и естественнее для отчетов MongoDB. Оборотная сторона заключается в том, что, поскольку данные не загружаются в кубы всей памяти (например), опыт отчетов может пострадать, если вы попытаетесь сделать сложное создание отчетов в режиме реального времени.

Отказ от ответственности: я являюсь автором проекта SlamData, хотя у меня нет связи с JSON Studio.

Ответ 2

Похоже, что инструменты с открытым исходным кодом, такие как JasperReports и Pentaho, могут подключаться к MongoDB, также если вы хотите перейти на корабль NoSQL, но без перехода на корабль NoSQL вы можете использовать драйвер ODBC или OLE DB, такой как Simba one, а затем использовать любой обычный инструмент отчетности SQL, такой как DBxtra

Ответ 3

В общем, не используйте mongodb только потому, что вы хотите попробовать что-то новое в производственной среде: вот что принесет вам много головных болей. Существует большое сообщение Stackoverflow о том, когда его использовать: fooobar.com/questions/15194/...

Что касается отчетности: Map-Reduce, особенно инкрементный, вам очень поможет, но вы не можете рассматривать mongoDB как реляционную базу данных. Это просто не одно. Например, Query для безумства вложенного документа. В большинстве случаев структура агрегации mongoDB будет преуспевать, но имеет свои ограничения по сравнению с SQL.

Ответ 4

Если вы используете.NET, легко писать отчеты, используя отчеты DexExpress. Он хорошо работает с драйвером MongoDb.NET, только одним ограничением, у вас должны быть сильные типы для каждой совокупности, которые вы используете в своих данных. Все типы, которые вы можете использовать у своего основного поставщика услуг db, поэтому это не будет большой головной болью. Если ваши коллекции MongoDB похожи на таблицы данных SQL, вы можете использовать драйверы ODBC, этот способ очень ограничен, но вы можете использовать любые службы отчетов, которые работают с ODBC-соединением. Я предпочитаю использовать сначала: "DevExpress" XtraReports.

Ответ 5

Не уверен, что вы можете сделать в MongoDB все свои отчеты плюс достаточное время ответа. Таким образом, для этой цели вы можете добавить инструмент поверх MongoDB. Например, icCube теперь поддерживает MongoDB для такого использования. Нет смысла извлекать весь набор данных, но большая часть данных времени для отчетов и аналитики представляет собой лишь часть целого, и имеет смысл подключить инструмент OLAP в памяти для отчетности и аналитики.

Ответ 6

насколько я знаю, нет простого способа выполнять объединения, агрегации и т.д. так же, как в реляционной базе данных в Монго. Для этого вы можете использовать различные инструменты внешней аналитики. В моей компании мы используем Sisense и подключаем его к MongoDB с помощью драйвера ODBC, который позволяет использовать SQL-подобные функции для наших данных, и он отлично работает. Однако я не знаю, как это сделать в MongoDB.

Ответ 7

Отчетность MongoDB упрощается, поскольку она имеет структуру агрегирования, которая предоставляет api, который может быть подключен к программному обеспечению для отчетности. Вот статья, в которой представлены подробности отчетности и визуализации MongoDB http://blog.jinfonet.com/mongodb-reporting-visualization-jreport/