Khorsun Vlad wrote:

Если тебе нужно отражать показания сотен датчиков *немедленно*, то никакая СУБД тебе не подойдёт.

Это ещё почему? Вполне быстро можно выбрать 100 последных записей по индексу. Минимальный уровень латентности не реалтаймовский, но и 10сек это много. Все показания отображать не надо, только те, которые выбрали активные юзеры. Вообщем мгновенной производительности БД вполне хватает чтобы преваривать оцениваемый поток данных. Единственная видимая пока грабля - предел номера транзакции, которая хотя вылезет через годы, но тоже неприятно.

Тебе *придётся* писать агентов, которые будут получать данные с датчиков,
хранить локальную историю показаний, реагировать на мгновенные отклонения и
передавать эти данные в центральный апп-сервер, который уже будет раздавать
их клиентам для отображения. Ну и потом уже спокойно, не торопясь писать данные
в центральную БД для менее срочных отчётов и истории. Но, в первую очередь,
сохранять полученные данные в *локальный* лог, причём без кеширования и иной
буферизации в системе.

Это только если поток данных столь высок, что БД не справится.

Для начала нужен всего лишь кластерный индекс по паре (id датчика, время).

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

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

   А, массив в файле. Да, можно выкрутиться. Но ты всё равно попробуй.
Создай десяток тысяч скажем мегабайтных файлов и почитай по 1КБ из середины
нескольких десятков. И так - много раз.

Ну понятно что процедура открытия/закрытия файла недешёвая, но в моём случае обычно выборка по группе максимум с несколько десятков датчиков.

"Я приемлю" - это не аргумент.

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

Расскажешь потом к чему пришёл и какие хар-ки получил, будет интересно ;)

У есть менее нагруженная аналогичная система. При тестировании на слабом железе вылезают ньюансы связанные механизмом работы индесов в FB, которые негде толком не расписаны. Вот я спрашивал уже:
http://groups.google.com/group/ru-firebird/browse_thread/thread/b88a40cf580fbd30


Ответить