Alexander V. Skvortsov wrote:
Втупую (псевдокод):
sql->ParamByName("preiod_begin")->Value=Now()-3.5;
sql->ParamByName("preiod_end")->Value =Now();
Это если запросы совсем простые. Если же интервал идет из гуя, плюс
вычисляем некие средние/агрегаты, делаем джойны, то попотеть придётся.
Конечно, можно подобрать такую пару разработчиков (X и Y), что затраты
на мозговую деятельность для X по переходу от "втупую" к "не втупую"
будут сравнимы с затратами на мозговую деятельность для Y по созднию
своего хранилища в плоском файле. Но таки плоский файл не очень
обеспечивает ту самую D из ACID при сбоях. Или становится не очень плоским.
Плоский файл в данном случае почти идеальное решение:
- нет update
- insert в хронологическом порядке (автоматически получаем кластерный
индекс по времени).
- delete тоже в хронологическом порядке - не будет дырок.
- все данные числовые фиксированного размера. Размер файлов будет
существенно меньше за счёт отсутствия какого либо оверхэда.
Я бы подумал на такой схемой. Если считать что каждый клиент затрагивает
только небольшой диапазон данных, то можно по запросу вливать в БД некий
интервал времени, который ему нужен, из плоского файла. А потом уже строить
отчёт. Или даже лучше - прямо по сети на комп клиента сливать.
--