5

Existen ventajas para almacenar claves sobre cadenas en el almacén de datos de Google App Engine.GAE Almacenamiento de claves frente a StringID

Por ejemplo:

class Model(ndb.Model): 
    user_key = ndb.KeyProperty() 

VS

class Model(ndb.Model): 
    user_id = ndb.StringProperty() 
  • por qué le gustaría para almacenar una clave en lugar de la stringID? ¿Es solo por conveniencia?
  • ¿Qué utiliza menos espacio de almacenamiento?
  • ¿Cuál es más rápido de consultar?

Respuesta

5

Si está utilizando entity groups (antepasados), KeyProperty lo admitirá. Cuando guarde la identificación, a menos que el modelo cuya identificación esté almacenando sea la raíz del grupo de entidades, necesitará almacenar suficiente información para reconstruir la clave completa.

El KeyProperty ocupará más espacio, ya que está almacenando datos adicionales, pero puede ser más conveniente utilizarlo al recuperar la otra entidad. La velocidad de consulta debe ser comparable.

+0

Buen punto, con grupos de entidades, almacenar la clave tiene más sentido. Con algo simple como User_id, ¿recomendaría almacenar la clave o una cadena/int id? –

+0

Yo personalmente diría que es su preferencia. Me gusta almacenar la clave si hay alguna posibilidad de que * pueda * querer usar grupos de entidades _o_ espacios de nombres. Con algo así como el usuario que es poco probable que alguna vez cambie, el nombre/id de la clave podría ser suficiente. –

+0

Gracias Robert, había olvidado los espacios de nombres. Además, el almacenamiento de claves de appid simplificará las cosas una vez que Google permita el intercambio de datos entre las aplicaciones. –

Cuestiones relacionadas