2012-08-28 11 views
5

Biorąc pod uwagę klucz, który buduję, chciałbym trafić w datastore, aby sprawdzić, czy istnieje, ale chcę najtańszy (w czasie) sposób, aby to zrobić. To, czego szukam, jest podobne do kwerendy tylko do kluczy, ale od get, np. my_key.get (keys_only = True). Czy takie zwierzę istnieje? Dla mnie to nie wygląda. Jeśli nie, czy jest jakiś inny sposób na osiągnięcie tego, o co prosiłem?Aparat aplikacji ndb Key.get tylko zwracając klucz?

Dzięki.

+0

Może okazać się użyteczne pobranie odwzorowania o minimalnych właściwościach. Nie jestem pewien, czy to będzie jednak szybsze. – Jeremy

Odpowiedz

6

Nie, ta funkcja nie istnieje. Ponieważ nie wszystkie indeksy są indeksowane, nie ma skrótów - jedynym sposobem sprawdzenia, czy klucz istnieje, jest próba jego uzyskania, a następnie udostępnienie danych encji za darmo (w zakresie operacji dyskowych i tak - jest trochę kosztów serializacji, ale nie pobieramy opłaty za to).

PS. Czy na pewno nie próbujesz optymalizować przedwcześnie?

+0

Dzięki Guido. W odpowiedzi na twoje pytanie, nie jestem pewien, że nie próbuję optymalizować przedwcześnie. Ale użyłem appstats, aby zrobić tyle samo równolegle i całkiem dobrze obniżyłem liczbę wywołań rpc. Obiekty, które wycofuję w tym przypadku, mają właściwość TextProperty, której nie potrzebuję do widoku, tego właśnie chciałam uniknąć. Jeszcze raz dziękuję i dziękuję za wspaniałość, jaką jest ndb! – Jay

+2

Jeśli bieżący model jest używany z dwóch różnych powodów, należy rozważyć jego podzielenie na dwa osobne modele, po jednym dla każdego celu. Możesz nawet użyć tego samego identyfikatora klucza dla każdego. W ten sposób zaoszczędzisz niepotrzebne ładunki, które przynosi funkcja TextProperty. – Dave

Powiązane problemy