У нас есть продукт, работающий под управлением Sql Server Express 2005 и использующий в основном ASP.NET. В базе данных около 200 таблиц, некоторые из которых (4 или 5) могут расти с 300 до 5000 строк в день и хранить историю 5 лет, поэтому они могут увеличиваться до 10 миллионов строк.
Мы создали платформа отчетности, которая позволяет клиентам создавать отчеты на основе шаблонов, полей и фильтров.
Мы сталкиваемся с проблемами производительности почти с самого начала, мы стараемся, чтобы отчеты отображались менее 10 секунд, но некоторые из них увеличиваются до 25 секунд (особенно на этих клиентов с долгой историей).
Мы продолжаем проверять индексы и пытаемся улучшить запросы, но у нас возникает ощущение, что мы можем сделать лишь так много. Конечно, тот факт, что запросы генерируются динамически, не помогает в оптимизации. Мы также добавили несколько таблиц, в которых хранятся избыточные данные, но затем у нас возникла дополнительная проблема с поддержанием этих данных в актуальном состоянии, а также в Sql Express есть ограничение на размер баз данных.
Теперь мы сталкиваемся с точкой, в которой мы должны решить, хотим ли мы отказаться от отчетов в реальном времени или, может быть, сократить историю, чтобы иметь лучшую производительность.
Я хотел бы спросить, какой подход рекомендуется для этого типа систем.
Кроме того, стоит ли нам искать сторонние инструменты / платформы? Я знаю, что OLAP может быть вариантом, но можем ли мы заставить его работать на Sql Server Express или, по крайней мере, с лицензией, которая достаточно дешевая, чтобы распространять ее на тысячи развертываний?
Спасибо