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 тоже в хронологическом порядке - не будет дырок.
- все данные числовые фиксированного размера. Размер файлов будет существенно меньше за счёт отсутствия какого либо оверхэда.

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



--


Ответить