Связывание ввода функции Azure из CosmosDB: будет ли загрузка данных происходить при каждом вызове? - PullRequest
0 голосов
/ 05 мая 2018

В функциях Azure я могу легко создать входную привязку к подключению к базе данных Cosmos и указать SqlQuery для передачи некоторых данных в мою функцию при каждом вызове, как описано здесь: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb#input---example-2

Мне интересно, выполняется ли этот запрос при каждом вызове функции или происходит какое-то кэширование за кулисами (возможно, даже с использованием ChangeFeed или какого-либо другого механизма для обнаружения изменений)?

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

1 Ответ

0 голосов
/ 05 мая 2018

Запрос будет выполняться каждый раз.

Azure Функции имеют состояние без сохранения состояния. Несмотря на то, что некоторые вещи можно и нужно повторно использовать между запросами (например, соединения с удаленными ресурсами), в большинстве случаев следует предполагать, что вся загрузка будет происходить каждый раз.

В зависимости от результатов запроса, кэширование каждого из них может занимать значительный объем памяти. Помните, что вы платите за потребление памяти.

Кроме того, я не уверен, есть ли способ кешировать результаты пользовательского запроса к базе данных Cosmos, а затем иметь надежную недействительность кэша даже на основе канала изменений.

В целом, кэширование может быть эффективным в вашем сценарии, но не может быть эффективным во всех сценариях. Таким образом, кэширование по умолчанию не может быть вещью.

...