5

Ci sono vantaggi per la memorizzazione di chiavi su stringa nell'archivio dati di Google App Engine.GAE Storing Key vs StringID

Ad esempio:

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

VS

class Model(ndb.Model): 
    user_id = ndb.StringProperty() 
  • perché si vuole memorizzare una chiave al posto del stringID? È solo per comodità?
  • Quale utilizza meno spazio di archiviazione?
  • Qual è la query più veloce?

risposta

5

Se si utilizza entity groups (antenati), KeyProperty lo supporterà. Quando si memorizza l'id, a meno che il modello di identificazione che si sta memorizzando sia la radice del gruppo di entità, sarà necessario memorizzare abbastanza informazioni per ricostruire la chiave completa.

KeyProperty richiederà più spazio, poiché memorizza dati aggiuntivi, ma potrebbe essere più comodo da utilizzare quando si recupera l'altra entità. La velocità della query dovrebbe essere comparabile.

+0

Un buon punto, con i gruppi di entità, la memorizzazione della chiave ha più senso. Con qualcosa di semplice come User_id consiglieresti di memorizzare la chiave o una stringa/int id? –

+0

Personalmente direi che è una tua preferenza. Mi piace memorizzare la chiave se esiste la possibilità che * si * voglia utilizzare i gruppi di entità _or_ namespace. Con qualcosa come utente che è improbabile che cambi mai, il nome/id della chiave potrebbe essere sufficiente. –

+0

Grazie Robert, mi ero dimenticato degli spazi dei nomi. Anche l'archiviazione delle chiavi di appid renderà le cose più semplici una volta che Google consentirà la condivisione dei dati tra le applicazioni. –