Czy najlepiej jest zapytać przy użyciu keys_only = True, a następnie get_multi lub po prostu pełnego zapytania?

Używam NDB z pythonem 2.7 z włączonym trybem threadafe.

Rozumiem, że zapytania do podmiotów z NDB nie używają lokalnej pamięci podręcznej lub memcache, ale trafiają bezpośrednio do magazynu danych w przeciwieństwie do pobierania według nazwy klucza. (Reszta pytania może być zbędna, jeśli to założenie jest nieprawidłowe.)

Czy dobrym paradygmatem byłoby więc tylko zapytanie z keys_only = True, a następnie get_multi, aby uzyskać pełne jednostki?

Korzyści byłyby takie, że keys_only = Prawdziwe zapytania są znacznie szybsze niż keys_only = Fałsz, get_multi może potencjalnie po prostu trafić memcache i wywołując get_multi, twoje jednostki są teraz zapisywane w memcache na wypadek, gdybyś musiał wykonać zapytanie ponownie.

Wadą jest to, że masz teraz wywołanie zapytania RPC + wywołanie get_multi i myślę, że istnieje ograniczenie, w jaki sposób jednostki, które możesz wywołać w jednym get_multi, dlatego Twój efektywny rozmiar zapytania może być ograniczony.

Co myślisz? Czy powinniśmy zapytać tylko za pomocą keys_only = True, a następnie wykonać get_multi? Czy istnieją pewne minimalne i maksymalne limity wielkości zapytań, które sprawiają, że ta technika nie jest tak skuteczna, jak tylko wykonanie zapytania zwracającego pełne jednostki?

questionAnswers(1)

yourAnswerToTheQuestion