2012-04-23 24 views
5

Moja aplikacja może obliczyć małą liczbę kluczy, dla których jednostki często nie istnieją w magazynie danych. Na przykład, mogę wysłać luzem 15 kluczy, z których tylko 4 zwrotne.Koszt uzyskania brakującego elementu

Dokumenty po prostu stwierdzają, że pobieranie jest naliczane jako jedna operacja odczytu. Czy to nadal jest prawdą, gdy Podmiot nie istnieje?

Odpowiedz

4

Zapłacisz za kluczową alokację (za klucz) i zostaną zmienione małe opłaty (obecnie kosztuje 0,01 USD za 100 000 operacji).

Jeśli rozumiem billing page uzyskanie 10 podmiotów za pomocą kluczy będzie kosztować 10 małych jednostek + przeczytane jednostki * znalezione jednostki.


postanowiłem sprawdzić, czy ja, tl; dr jesteś nie spodoba wyniki.

Stworzyłem prosty model i program obsługi żądający modelu 10.000 razy.

class DevNull(db.Model): 
    pass 

class EmptyHandler(webapp2.RequestHandler):  
    def get(self): 
     for i in xrange(10): 
      keys = [db.Key.from_path('DevNull', i*j+1) for j in xrange(1000)] 
      res = DevNull.get(keys) 

      print len(res) 

Za każdym razem, gdy operacja odczytu wynosi 10.000 operacji odczytu, liczba impulsów rośnie, 5 z nich zabiłoby darmowy limit.

+0

Nie przydzielam kluczy, które jest potrzebne tylko wtedy, gdy chcesz, aby GAE utworzył dla Ciebie unikalny identyfikator. Moja aplikacja może obliczyć, które klucze musi wyszukać, ale mogą nie istnieć. Dokument, do którego prowadzi łącze, stwierdza, że ​​każdy GET (za pomocą klucza) kosztuje tylko jedną jednostkę odczytu (brak małych jednostek). Aby wyjaśnić, nie wiem, czy jestem obciążony za brakujące jednostki, a także zwrócone Entity – Doug

+0

@Doug przeczytać aktualizację. –

+0

"Ilość przydziału odczytu za każdym razem o 10.000 operacji odczytu, 5 z nich zabiłoby darmowy limit." - tak, 5 razy 10.000 to 50 000. –

0

"Nie, obciążają Cię tylko podmioty, które istnieją i są zwracane."

Mam kciuki, że to będzie oficjalna odpowiedź od Google. : D

+1

Niestety. :-) Wyszukiwanie nieistniejącego klucza wymaga prawie tyle samo wysiłku, co wyszukanie istniejącego klucza. Do czasu, gdy dowiadujemy się, że nie ma żadnej istoty, którą już wcześniej uczyniliśmy. –

+0

Rozumiem. Ale to nie jest to samo z zapytaniami, prawda? query.fetch (100), który zwraca tylko 50 encji, jest obciążany tylko za to 50 + 1, prawda? – Albert

+0

Tak, limit pobierania nie uwzględnia kosztów - tylko rzeczywista praca wykonana w celu spełnienia zapytania. Nie jestem pewien, co zostanie obciążone, jeśli funkcja fetch() zwróci 0 elementów, powinna nadal kosztować coś, prawdopodobnie w zależności od tego, ile indeksów zostało skonsultowanych. Zwróć również uwagę, że jeśli określisz przesunięcie, funkcja pobierania() może zwrócić 0 wyników, ale zostanie pobrana opłata za pomijane elementy w celu spełnienia offsetu. Prawdopodobnie powinienem się zamknąć, ponieważ nie znam tu wszystkich szczegółów. –

Powiązane problemy