2012-08-28 12 views
5

Dada una clave que construyo, me gustaría acceder al almacén de datos para ver si existe, pero quiero la forma más barata (en tiempo) de hacerlo. Lo que estoy buscando es como una consulta de solo claves pero de get, p. my_key.get (keys_only = True). ¿Existe tal animal? A mí no me parece. Si no, ¿hay alguna otra forma de lograr lo que busco?aplicación engine ndb Key.get solo devuelve la clave?

Gracias.

+0

Puede que le resulte útil recuperar una proyección con propiedades mínimas. Sin embargo, no estoy seguro si eso será más rápido. – Jeremy

Respuesta

6

No, esta funcionalidad no existe. Dado que no todas las entidades están indexadas, no hay atajos: la única forma de comprobar si la clave existe es tratar de obtenerla, y luego usted tiene los datos de la entidad disponibles de forma gratuita (en términos de operaciones de disco de todos modos). hay un poco de costo de serialización, pero no estamos cobrando por eso).

PS. ¿Estás seguro de que no estás tratando de optimizar prematuramente?

+0

Gracias Guido. En respuesta a su pregunta, no estoy seguro de que no estoy tratando de optimizar de forma prematura. Pero he usado appstats para hacer tanto como mucho en paralelo y he cortado bastante bien en llamadas de rpc. Las entidades que estoy retirando en este caso tienen una TextProperty que no necesito para la vista, eso es lo que quería evitar. Gracias de nuevo y gracias por la genialidad que es ndb! – Jay

+2

Si su modelo actual se usa por dos razones diferentes, considere dividirlo en dos modelos separados, uno para cada propósito. Incluso puede usar el mismo ID de clave para cada uno. De esta forma, guarda la carga innecesaria que aporta TextProperty. – Dave

Cuestiones relacionadas