MongoDb для сбора производственных данных

Я сталкиваюсь с проблемой нового типа, с которой я никогда не сталкивался. Так что я хотел бы, чтобы кто-то, кто был более осведомлен, чем я, хотел бы найти правильные указатели

Друг попросил меня помочь ему спроектировать систему управления для производственной линии. Проект звучит действительно интересно, и я не могу перестать думать об этом.

Я уже обнаружил, что могу управлять системой с помощью сервера node.js. Пока все хорошо (интерфейс HTML5 здесь мы идем)! Но где я действительно хочу, чтобы эта система выделялась - это набор системных показателей. Система сообщает обо всех вещах, таких как температура, расход и т. Д., И эти метрики передаются до нескольких сотен раз в секунду на метрику... и это работает 24/7.

Моя мысль состоит в том, чтобы сохранить это в базе данных MongoDb и сделать статистику в реальном времени. "Конкуренция", если хотите, похоже, сохраняет это в базе данных сервера SQL и позволяет операторам экспортировать агрегированные данные в Excel и делать статистику в Excel.

Каковы стратегии ведения статистики в реальном времени с использованием MongoDb?

Я действительно хотел бы обеспечить мгновенную обратную связь и мониторинг на основе этих показателей. Например, средняя температура за последние 24 часа, всплески и т. Д., А также включение оповещений. На сервере не будет много продвинутой статистики. Если это необходимо, я бы включил экспорт данных в такую ​​программу, как SPSS.

MongoDb хорошо подходит для этого? Я хотел бы использовать машину Linux вместо машины Windows с SQL Server и интерфейсом управления WinForms. Одних только лицензионных сборов достаточно, чтобы оттолкнуть меня, хотя я знаю, что это не относится к людям, покупающим технику.

Это будет размещено не в облаке, а на одном сервере в сети. Рядом с управляемой машиной я разместлю сенсорный интерфейс, который через браузер будет связываться с сервером node.js для вызова команд ПЛК. Может быть несколько машин, которым нужно управлять, и все они будут управляться одним и тем же центральным сервером node.js.

Оборудование управляется контроллерами PLC от http://beckhoff.com/.

Я не полный новичок, когда дело доходит до MongoDb, но я никогда не помещал ничего, что я сделал, в производство, и я бы не включил MongoDb в свое резюме... пока!

РЕДАКТИРОВАТЬ: Кажется, что оператор $ inc это путь. Но что, если я не хочу получать как ежедневные, так и среднечасовые данные, а также непрерывную подачу, которая обновляет график на экране данными каждую секунду, используя socket.io. Это хорошая идея, чтобы обновить документ для каждого из агрегатов, которые мне нужны. Я действительно также хочу сохранить каждое измерение, но, возможно, я мог бы агрегировать это на основе в секунду, чтобы не хранить до 1000 записей в секунду на показатель?

2 ответа

Решение

Что я действительно ищу, так это структуру агрегации: http://docs.mongodb.org/manual/tutorial/aggregation-examples/

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

Прочитайте этот потрясающий пост в блоге! http://devsmash.com/blog/mongodb-ad-hoc-analytics-aggregation-framework

Кроме того, любой, кто хочет сделать что-то подобное, должен взглянуть на это, чтобы увидеть, как сохранить отдельные события. Например, мне не нужно сохранять данные дольше недели, поэтому для меня более чем достаточно скользящего журнала: http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging

При этом я очень близок к созданию действительно приятной установки и начинаю чувствовать уверенность в том, что это хороший выбор по сравнению с MySQL или MSSQL.

MongoDB определенно может быть использован для вашего сценария. Посмотрите http://www.slideshare.net/pstokes2/social-analytics-with-mongodb, http://docs.mongodb.org/manual/use-cases/pre-aggregated-reports/ или статистику в реальном времени: MySQL(/Drizzle) или MongoDB? больше на эту тему

Другие вопросы по тегам