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

Я столкнулся с новым типом проблемы, которую я не пытался решить раньше. Поэтому я хотел бы, чтобы кто-то более знающий, чем я, указал несколько указателей в правильном направлении :-)

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

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

Моя идея состоит в том, чтобы сохранить это в базе данных MongoDb и сделать некоторую статистику в реальном времени. «Соревнование», если хотите, похоже, сохраняет это в базе данных SQL-сервера и позволяет операторам экспортировать агрегированные данные в Excel и выполнять статистику в Excel.

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

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

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

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

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

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

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


person Jay Pete    schedule 19.07.2013    source источник
comment
Хотя MongoDB бесплатна, для производственной системы я бы рекомендовал платить за годовую подписку не только для получения поддержки, но и для оплаты дальнейшего развития MongoDB. 10gen.com/products/mongodb-subscriptions   -  person WiredPrairie    schedule 20.07.2013
comment
Я уже изучил это, и цена базового пакета подписки все еще намного меньше, чем плата за SQL-сервер + подходящее оборудование. 2500 долларов в год меня не так пугают, если я смогу получить хорошую установку.   -  person Jay Pete    schedule 20.07.2013


Ответы (2)


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

person Sridhar Nanjundeswaran    schedule 19.07.2013
comment
Потрясающий! Сразу посмотрю! Как вы думаете, является ли MongoDb излишним? - person Jay Pete; 20.07.2013

Что мне действительно нужно, так это платформа агрегации: 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-фантастическое-для-веденияжурнала

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

person Jay Pete    schedule 21.07.2013