В последние недели я работал с веб-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?