Учитывая: механизм вычисления С#, который загружает объектную модель, сжимает огромное количество чисел и сохраняет результаты в пару гигантских мегаиндексированных таблиц базы данных в SQL Server. Эти таблицы предоставляют данные для веб-интерфейсов, других программных модулей и отчетов SQL Server Reporting Services 2005.
Мне удалось сделать двигатель намного быстрее в последней версии программного обеспечения, достаточно быстро, чтобы он мог предоставлять данные по запросу - иногда даже быстрее, чем время, необходимое для запроса базы данных для предварительно рассчитанных чисел, Я очень доволен этим.
Этот прорыв означает, что мы можем генерировать данные по запросу для веб-интерфейсов и других программных модулей. Но таблицы кэша еще не могут умереть, потому что они потребляются отчетами SSRS (или, более конкретно, хранимыми процедурами, которые запрашивают таблицы и предоставляют данные для SSRS.)
Кэш-таблицы - это боль, во многом так же, как любой кеш - это боль в мире программного обеспечения. Не вдаваясь в подробности, у них есть проблемы с синхронизацией, проблемы с блокировкой и т.д. И т.д. Программное обеспечение будет работать гораздо лучше, если мне не придется беспокоиться о том, чтобы обновлять эти проклятые таблицы.
Но как еще я могу получить данные в SSRS? Я провел несколько исследований и ничего не выглядел многообещающе:
- Мы можем предоставить данные через веб-службу и использовать SSRS XML DPE. Но это выглядит отвратительно - я прав, что вам нужно самостоятельно разобрать свой SOAP-конверт?! И он не поддерживает XPath, а проприетарный диалект XPath-y? Наши авторы отчетов знают T-SQL и что они лучше всего.
- Использование SQL CLR для размещения нашего API нежелательно - это большое приложение, и вы ничего не можете сделать без создания объекта приложения и входа в систему и т.д.
- Использование SQL CLR для связи с веб-службой в веб-приложении - это наиболее перспективно до сих пор (эта статья была полезной http://www.simple-talk.com/sql/sql-server-2005/practical-sql-server-2005-clr-assemblies/.) Кто-нибудь пробовал этот подход? Он работает нормально, может ли он предоставлять большие наборы данных? OTOH Я отключен дополнительной настройкой, которую нам нужно будет делать на клиентских серверах БД.
- Приветствуются любые другие предложения.