Возможный шаблон проектирования для бизнес-сценария с большим набором результатов из хранимой процедуры SQL Server

Сценарий: мне дали задачу, которая включает в себя создание веб-API, который будет принимать параметр даты в URL, как показано ниже:

https://server/controllerrouting/payments?requestdate=08/13/2016 

Этот API вызовет хранимую процедуру, которая использует дату из URL в операторе выбора. Затем API вернет набор результатов в виде ответа json вызывающему приложению, которое не будет внешним приложением.

Проблема: обычно это не проблема для возврата набора результатов, возвращенного при выполнении хранимой процедуры. Однако ожидается, что результирующий набор вернет до 350000 записей по 350 байтов для каждой записи.

Возможное дизайнерское решение?

Я смотрю на использование PushStreamContent Класс и отправка данных в поток для потребителя.

Вопрос

После выполнения хранимой процедуры и чтения набора результатов, используя DataReaderМогу ли я отправить каждую запись в поток в этой точке в логике?

Что-то вроде:

if (reader.HasRows)
{
     while (reader.Read())
     {
         1.format record 
         2.serialize to json
         3.push record to stream
    }
}
else
{
   return msg("No rows found");
}

reader.Close();

Как правильно это сделать? Можно ли просто вернуть большой объект json клиенту и не беспокоиться о необходимости потоковой передачи данных? Нужно ли рассматривать подкачку с помощью хранимой процедуры или просто получить все записи сразу, а затем передавать клиенту только порцию за раз? Мне трудно понять, как лучше всего атаковать эту ситуацию.

0 ответов

Другие вопросы по тегам