2012-08-28 10 views
5

Data una chiave che costruisco, vorrei colpire il datastore per vedere se esiste, ma voglio il modo più economico (in tempo) per farlo. Quello che sto cercando è come una query solo per le chiavi ma da get, ad es. my_key.get (keys_only = True). Esiste un animale del genere? Non mi sembra così. Se no, c'è un altro modo per ottenere ciò che sto cercando?motore app ndb Key.get restituisce solo la chiave?

Grazie.

+0

Potrebbe essere utile recuperare una proiezione con proprietà minime. Non sono sicuro se sarà più veloce. – Jeremy

risposta

6

No, questa funzionalità non esiste. Poiché non tutte le entità sono indicizzate, non esiste una scorciatoia: l'unico modo per verificare se esiste la chiave è cercare di ottenerlo, e quindi i dati dell'entità sono disponibili gratuitamente (in termini di operazioni su disco comunque) c'è un po 'di costi di serializzazione ma non ci stiamo facendo pagare per quello).

PS. Sei sicuro di non voler ottimizzare prima del tempo?

+0

Grazie Guido. In risposta alla tua domanda, non sono certo che non sto cercando di ottimizzare prematuramente. Ma ho usato gli appstats per fare altrettanto in parallelo e ho abbattuto abbastanza bene le chiamate su rpc. Le entità che sto ritirando in questo caso hanno una proprietà Text che non ho bisogno per la vista, questo è quello che stavo cercando di evitare. Grazie ancora e grazie per la bellezza che è ndb! – Jay

+2

Se il modello corrente viene utilizzato per due motivi diversi, è consigliabile suddividerlo in due modelli separati, uno per ogni scopo. Puoi anche utilizzare lo stesso ID chiave per ciascuno. In questo modo si salva il carico utile non necessario che porta TextProperty. – Dave

Problemi correlati