Я использую NDB с python 2.7 при включенном потоковом режиме.
Я понимаю, что запрос для сущностей с NDB не использует локальный кеш или memcache, но идет прямо в хранилище данных, в отличие от получения по имени ключа. (Остальная часть вопроса может быть излишней, если это предположение неверно.)
Следовательно, хорошая парадигма заключалась бы только в том, чтобы запрашивать ключи с помощью key_only = True, а затем делать get_multi для получения полных объектов?
Преимущества заключались бы в том, что keys_only = True запросы намного быстрее, чем keys_only = False, get_multi потенциально может просто нажать memcache и, вызвав get_multi, ваши сущности теперь будут сохранены в memcache, если вам нужно снова выполнить запрос.
Недостатки в том, что у вас теперь есть вызов вызова RPC + get_multi, и я думаю, что существует ограничение на то, как сущности могут вызывать один get_multi, поэтому ваш эффективный размер запроса может быть ограничен.
Как вы думаете? Должны ли мы когда-либо запрашивать с помощью keys_only = True, тогда выполните get_multi? Существуют ли определенные минимальные и максимальные пределы размера запроса, которые делают этот метод не столь эффективным, как просто выполнение запроса, который возвращает полные объекты?