Анализ в реальном времени большого количества точек данных, предоставляемых веб-сервисом - PullRequest
1 голос
/ 29 марта 2011

История. У меня есть клиент веб-службы на основе Java, на котором выполняются извлечения данных, которые «могут обновляться» каждые 60 секунд 24 * 7 * 365.

Существует более 1000 точек данных, которые мне необходимо отслеживать, если новое обновление доступно в режиме реального времени. Если доступна новая точка данных, мне нужно добавить новое значение в базу данных MySQl.

Затем мне нужно как можно скорее проанализировать / отобразить данные в графической форме в веб-приложении на базе Java.

У кого-нибудь есть советы относительно эффективной архитектуры программного обеспечения? В частности:

  • Схема базы данных, одна большая таблица против множества маленьких таблиц
  • База данных добавляется, нужно ли мне реализовать какую-то многопоточность для оптимизации производительности?
  • Каков наилучший триггерный механизм для расчета и отправки обновлений в веб-приложение?

Любой совет / конструктивная критика приветствуется.

Спасибо

1 Ответ

1 голос
/ 29 марта 2011

Это не огромное количество данных / быстрых изменений. то есть хранение входных значений в памяти не требует больших затрат. Хотя вы еще не сказали, что происходит с захватом точек данных - если для захвата каждой из них требуется 1 секунда, а затем, запустив ее в одном потоке, вы не сможете перебрать набор за 60 секунд: вы ' нужно будет посмотреть на многопоточность.

Если у вас есть контроль над кодом, который подготавливает входные данные для обработки, то стоит подумать о реализации обработки в том же исполняемом файле, но подумайте о блокировке. Выполнение сопоставления из задания cron на этой частоте имеет почти пограничный характер - существует ряд ограничений, которые варьируются в зависимости от реализации cron - и вам необходимо подумать о том, что произойдет, если один вызов занимает больше времени, чем фактический интервал для обработки - если бы это был я, я бы сделал это при сборе данных или в качестве демона.

Схема базы данных, одна большая таблица против множества маленьких таблиц

Ответ в том, что одна таблица обычно предпочтительнее нескольких таблиц - безусловно, предпочтительнее 1000 таблиц!

База данных добавляется, нужно ли мне реализовать какую-то многопоточность для оптимизации производительности?

Только если вы действительно создаете / обновляете 1000 строк при каждом вызове и ДОЛЖНЫ иметь ответ в реальном времени ниже допустимого отклонения около 10 мс.

Каков наилучший триггерный механизм для расчета и отправки обновлений в веб-приложение?

Это слишком расплывчато, чтобы дать разумный ответ.

отображать данные в графической форме

Опять же, очень расплывчатый вопрос - является ли вывод единственным логическим значением? Набор порядковых значений? Что-то еще?

Этот javascript плоттер может быть полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...