Дизайн доступа к данным: несколько наборов результатов для одной хранимой процедуры или один набор результатов для каждой хранимой процедуры

Что является лучшим подходом к созданию сложного объекта (нетерпеливая загрузка). Один вызов хранимой процедуры, которая возвращает несколько наборов результатов, или несколько вызовов хранимых процедур с одним набором результатов каждый? Я создаю свой DAL, используя шаблоны T4/text в .NET, поэтому я склоняюсь к последнему.

Спасибо!


person rro    schedule 30.09.2013    source источник
comment
Подозреваю, что это должен быть ваш звонок - вы жертвуете производительностью для менее сложного/более удобного кода.   -  person Rikalous    schedule 30.09.2013


Ответы (2)


Это зависит от общей архитектурной модели вашего приложения. Если вы используете так называемый шлюз табличных данных или Active Record, то последний, вероятно, лучше. Если вы используете так называемую модель предметной области или Дизайн на основе предметной области, первое гораздо более уместно.

person Charles Bretana    schedule 30.09.2013

Я не могу вспомнить, когда в последний раз мы писали хранимую процедуру, которая возвращала более одного набора результатов за один раз. Редко, когда это на самом деле является общей выгодой.

Единственная причина, по которой я могу когда-либо сделать что-то подобное, - это (а) производительность - например. если для SELECTS требуются временные таблицы или много настроек, которые были бы общими для всех них, или (b) если данные подвержены риску изменения между вызовами и хотят использовать сериализуемую семантику изоляции.

Если все наборы строк независимы друг от друга и не имеют общих настроек, обязательно разделите их. Стоимость круговых поездок на самом деле не является существенным фактором, если вы используете протоколы подключения более низкого уровня (например, TCP/IP или именованные каналы, а не какую-то болтливую технологию, такую ​​как SQL поверх XML). Более того, если вы можете вызывать sprocs по отдельности, это означает, что вы можете вызывать их асинхронно и параллельно и, возможно, даже достигать превосходной производительности, если хотите потрудиться.

person John Wu    schedule 30.09.2013