Ho un progetto GAE scritto in Java e ho alcune considerazioni sull'HRD e un problema che non sono sicuro di come risolvere.Query HRD di Google App Engine senza antenato
Fondamentalmente ho utenti nel mio sistema. Un utente è composto da un ID utente, un nome utente, un'e-mail e una password. Ogni volta che creo un nuovo utente, voglio verificare che non ci sia già un utente con lo stesso ID utente (non dovrebbe mai accadere), nome utente o e-mail.
L'ID utente è la chiave, quindi penso che ottenere un risultato sarà coerente. Tuttavia, quando faccio una query (e uso un filtro) per trovare possibili utenti con lo stesso nome utente o e-mail, non posso essere sicuro che i risultati siano coerenti. Quindi, se qualcuno ha creato un utente con lo stesso nome utente o e-mail un paio di secondi fa, potrei non trovarlo con la mia query. Capisco che gli antenati sono abituati a risolvere questo problema, ma cosa succede se non ho un antenato da utilizzare per la query? L'utente non ha un genitore.
Sarei felice di sentire i vostri pensieri su questo e su ciò che è considerato la migliore pratica in situazioni come queste. Sto usando Objectify per GAE se questo cambia qualcosa.
Ho fatto una domanda che potresti trovare molto utile. (http://stackoverflow.com/questions/6584435/how-can-i-create-two-unique-queriable-fields-for-a-ga-datastore-data-model) Anch'io ho bisogno di memorizzare informazioni uniche per i miei utenti. Nel mio caso, ho dovuto memorizzare sia un'e-mail univoca che un ID utente univoco per utente. Questo è un po 'difficile con l'HRD, ma ho trovato una soluzione affidabile. ... cont ... – RLH
L'unico problema con la mia situazione è che l'implementazione della creazione del mio account (vedi la mia risposta) non si adatta bene. Questo è stato OK in queste circostanze perché la mia app GAE è molto piccola e ha un lento flusso di nuovi utenti (1 o 2 al mese). Inoltre, questa informazione è in Python, ma il codice è semplice: dovresti essere in grado di -legalo a Java con relativa facilità. – RLH
@RLH Grazie per il vostro contributo, sempre interessante vedere soluzioni diverse, ma non penso che la vostra soluzione funzionerebbe bene nel mio caso. – Joel