Мы создаем новое приложение в .net 3.5 с базой данных SQL-сервера. База данных довольно большая, около 60 таблиц с данными. Приложение .net имеет функцию для переноса данных в эту базу данных из ввода данных и из сторонних систем.
После того, как все данные доступны в базе данных, система должна выполнить много расчетов. Логика расчета довольно сложна. Все данные, необходимые для расчетов, находятся в базе данных, а выходные данные также должны храниться в базе данных. Сбор данных будет происходить каждую неделю, и расчет должен производиться каждую неделю для создания необходимых отчетов.
В связи с вышеописанным сценарием я думал сделать все эти вычисления с использованием хранимой процедуры Проблема в том, что нам также нужна независимость данных, и хранимая процедура не сможет нам этого предоставить. Но если я все это время делаю в базе данных .net по запросу, я не думаю, что она сможет быстро закончить работу.
Например, мне нужно запросить одну таблицу, которая вернет мне 2000 строк, тогда для каждой строки мне нужно запросить другую таблицу, которая вернет мне 300 результатов, чем для каждой строки этого мне нужно запросить несколько таблиц (около 10) чтобы получить необходимые данные, сделайте расчет и сохраните результат в другой таблице.
Теперь мой вопрос, я должен продолжить с решением хранимых процедур и забыть о независимости базы данных, так как производительность важна. Я также думаю, что время разработки будет намного меньше, если мы будем использовать решение хранимых процедур. Если кто-то из клиентов хочет получить это решение, скажем, в базе данных oracle (потому что он не хочет поддерживать другую базу данных), то мы портируем хранимые процедуры в базу данных oracle и поддерживаем две версии для любых будущих изменений / улучшений. Аналогичным образом другие клиенты могут запрашивать другие базы данных.
2000 строк, о которых я упоминал выше, относятся к продукту skus. 300 строк, которые я упомянул, имеют различные атрибуты, которые мы хотим вычислить, например, стоимость обработки, транспортные расходы и т. д. В 10 упомянутых мной таблицах содержится информация о конвертации валюты, конвертации единиц, сети, области, компании, цене продажи, количестве проданных за день и т. д. В итоговой таблице вся информация хранится в виде звездообразной схемы цель анализа и отчетности. Цель состоит в том, чтобы в любой момент получить информацию о продукте, чтобы каждый знал, какой атрибут продажи продукта стоит нам денег и где мы можем сделать улучшение.