Я ищу наиболее эффективный способ создания бэкэнда для хранения / обработки данных. В основном, данные отправляются на сервер, анализируются и сохраняются в БД. Затем выполняется некоторая обработка, основанная на других данных в БД, а затем генерируются оповещения по электронной почте или по смс.
Платформа - .NET, а БД - SQL Server 2005 или, возможно, 2008.
* 1005 Т.е. *
- Датчик температуры отправляет на сервер 4 байта данных.
- Сервер преобразует данные в реальное значение, скажем, 20.
- Затем значение сохраняется на БД SQL-сервера.
- Затем значение проверяется по строке в таблице, для которой установлены границы для этого датчика, т.е. 0-50
- Если за пределами границ выдается предупреждение. (Отправлено через SMS или по электронной почте.)
Все это кажется довольно простым, но я ищу лучший способ сделать это, учитывая, что идеальный сценарий состоит в том, что все это происходит в «реальном времени», и это могут быть потенциально 100 или 1000 запросов в секунду. Я хотел использовать некоторые из «новых» функций SQL 2005/08, таких как Service Broker, интеграция CLR, триггеры и т. Д., С которыми у меня мало опыта.
Шаги 1 и 2 уже выполнены.
Было бы разумно использовать Service Broker или MSMQ, учитывая количество транзакций для постановки в очередь? В какой момент я обрабатываю данные оповещения, учитывая, что мне нужно проверить данные границы? У меня есть некоторые идеи о том, как бы я хотел обработать данные, но не уверен в том, какую технологию / методологию использовать.
Моя идея состоит в том, чтобы (начиная с шага 3) передать данные брокеру служб, который, в свою очередь, вызывает процедуру CLR для обработки «бизнес-логики» данных. Или я использую триггер, чтобы добавить данные в Service Broker для обработки данных? Может ли сервисный брокер напрямую вызывать процедуру CLR? Является ли использование сервисного брокера даже правильной идеей, учитывая, что я хочу обрабатывать данные в большей степени на основе событий, чем на опрос?
Из примеров, которые я видел в Service Broker, выглядит так, как будто вам нужен код для получения данных, где все, что я действительно хочу сделать, - это добавить данные в очередь и автоматически очистить очередь (обрабатывая данные оповещения как таковые).
Я мог бы сделать все это через стандартную хранимую процедуру, но я бы хотел использовать хранимые процедуры минимально и вместо этого использовать интеграцию CLR, поскольку бизнес-логика будет намного более сложной, чем в примере.
Учитывая, что компонент Service Broker обрабатывает очереди и потоки, я подумал, что это может быть хорошим кандидатом для вызова процедуры CLR для обработки данных оповещения и отправки смс или электронной почты?
Пожалуйста, покажи мне свет! Спасибо!