java - subir - Comprobando si la entidad existe en el almacén de datos del motor de la aplicación google.
cuenta de desarrollador google play gratis (3)
¿Cuál es la mejor / más rápida forma de verificar si una entidad existe en un datastore de motor de la aplicación google? Por ahora estoy tratando de obtener la entidad por clave y verificar si el get () devuelve un error.
No conozco el proceso de obtener una Entidad en el almacén de datos. ¿Hay una forma más rápida de hacer solo este control?
Lo que propusiste sería la forma más rápida de saber si tu entidad existe. Lo único que te hace más lento es el tiempo que lleva buscar y deserializar tu entidad. Si tu entidad es grande, esto puede ralentizarte.
Si esta acción (verificar la existencia) es un cuello de botella importante para usted y tiene entidades grandes, puede rodar su propio sistema de verificación utilizando dos entidades: primero, tendría su entidad existente con datos, y una segunda entidad que almacena la referencia a la entidad real, o tal vez una entidad vacía donde la clave es solo una variación de la clave de entidad original que puede calcular. Puede verificar la existencia rápidamente usando la segunda entidad, y luego buscar la primera entidad solo si los datos son necesarios.
La mejor forma en que pienso sería simplemente diseñar tus claves para que sepas que no habría duplicados, o que tus operaciones son idempotentes, de modo que incluso si se sobrescribiera una entidad anterior, no importaría.
Puede buscar usando una List<Key>
contiene solo una Key
, ese método devuelve un Map<Key, Entity>
que puede verificar si contiene un valor real o null
, por ejemplo:
Entity e = datastoreService.get(Arrays.asList(key)).get(key);
En general, creo que sería más fácil ajustar el get()
en un intento / captura que devuelve null
si se captura la EntityNotFoundException
.
com.google.appengine.api
ha quedado en desuso en favor del cliente de App Engine GCS.
¿Has considerado usar una consulta? Adivinar y verificar no es una forma escalable de encontrar una entidad en un almacén de datos. Se puede crear una consulta para recuperar entidades del almacén de datos que cumplan un conjunto específico de condiciones:
https://developers.google.com/appengine/docs/java/datastore/queries
EDITAR:
¿Qué pasa con la consulta de solo clave? Las consultas de solo clave se ejecutan más rápido que las consultas que devuelven entidades completas. Para devolver solo las claves, use el método Query.setKeysOnly ().
new Query("Kind").addFilter(Entity.KEY_RESERVED_PROPERTY, FilterOperator.EQUAL, key).setKeysOnly();
Fuente: [1]: http://groups.google.com/group/google-appengine-java/browse_thread/thread/b1d1bb69f0635d46/0e2ba938fad3a543?pli=1 ? http://groups.google.com/group/google-appengine-java/browse_thread/thread/b1d1bb69f0635d46/0e2ba938fad3a543?pli=1