Здравствуйте, ronaldo9, Вы писали:
R>6. Прошедшие операции следует хранить не более 1 года.
Странное требование на самом деле. Может стоит не показывать операции более одного года?
R>1 вариант. Не хранить, сколько товара было на складе в каждый конкретный момент. Хранить только операции
Это называется двойной бухгалтерской записью, должно применяться для любого учета движения денег или товаров.
R>...Кроме того, чтобы получить состояние складов на сегодня, придется выгружать всю таблицу операций в память, чтобы провести агрегирование — теряем в производительности.
materialized\indexed views
R>А какое Ваше мнение, господа?
В любом случае надо иметь записи об остатках на начало периода (поля в той же таблице проводок, возможно помеченные флагом). Регулярно агрегировать данные, которые выходят за пределы периода и записывать их в остатки на начало.
Алгоритм получения остатков на любую дату будет одинаковым.
Есть еще один неприятный момент отказа от хранения всей истории — невозможность получить бухгалтерскую отчетность и проводить анализ, например выявлять сезонность товаров.