обработка больших наборов данных в веб-API и Odata

В последние недели я работал с веб-API asp.net с большим успехом. Это действительно помогло мне создать интерфейс для мобильных клиентов для программирования через http.

Я достиг точки, когда мне нужна помощь.

У меня есть новая конечная точка, которая может работать с базой данных и может возвращать 100 тыс. результатов. Я использую OData для фильтрации данных и возврата набора данных с разбивкой на страницы.

Поскольку это может произойти для нескольких запросов, меня беспокоит производительность. Каждый раз возвращать 100 тысяч записей из базы данных не идеально. Итак, у меня есть некоторые идеи.

Первый — кэшировать 100 000 результатов и каждый раз позволять OData творить с этим свою магию. Я работаю с распределенным кешем AppFabric в качестве среды с балансировкой нагрузки. Однако кэширование такого количества данных в AppFabric может привести к проблемам с памятью, поэтому думаю, что лучше этого избегать.

Следующий вариант — забыть о магии OData и отправлять фильтры, которые я использую, в базу данных и каждый раз возвращать только необходимые данные. Другими словами, каждый раз попадайте в БД.

Я мог бы рассмотреть использование обработчика кэширования, подобного версии, описанной в этой статье, для кэширования в http-кэше -> http://byterot.blogspot.ie/2012/06/aspnet-web-api-caching-handler.html. Недостатком этого является то, что если данные обновляются через другую систему, срок действия кэшированных данных не истекает.

Любые другие советы относительно того, как я могу справиться с этим сценарием, большим объемом данных, отфильтрованным с помощью odata в сочетании с веб-API?

5
задан amateur 22 July 2012 в 16:57
поделиться