Sto provando Google App Engine Java, tuttavia l'assenza di un vincolo univoco sta rendendo le cose difficili. Sono stato through this post e this blog suggerisce un metodo per implementare qualcosa di simile. Il mio background è in MySQL. Il passaggio al datastore senza un vincolo univoco mi rende nervoso perché non ho mai dovuto preoccuparmi dei valori duplicati prima e controllare ogni valore prima di inserire un nuovo valore ha ancora spazio per errori.Enforcing Unique Constraint in GAE
"No, non è ancora possibile specificare univoco durante la creazione dello schema."
-David Underhill parla GAE e il vincolo univoco (post link)
cosa state usando per implementare qualcosa di simile a una chiave univoca o primaria?
Ho sentito parlare di uno strato datastore astratta creata utilizzando l'API di basso livello che ha lavorato come un normale RDB, che però non era gratuito (ma non mi ricordo il nome del software)
vista schematica di il mio problema
sNo = biggest serial_number in the db
sNo++
Insert new entry with sNo as serial_number value //checkpoint
User adds data pertaining to current serial_number
Update entry with data where serial_number is sNo
Tuttavia alla linea numero 3 (punto di controllo), mi sento due utenti potrebbero aggiungere lo stesso SNO. E questo è ciò che mi impedisce di lavorare con Appengine.
Una transazione su un'entità Singleton non richiederebbe che Singleton e tutte le entità correlate si trovino nello stesso gruppo di entità? –
@ Jason, penso che Singleton possa essere isolato nel proprio gruppo. Le entità che ricevono i numeri seriali non sono correlate ad essa. L'unica cosa che deve accadere nell'isolamento di una transazione è l'incremento del numero di serie. Sarei felice di creare un esempio, ma programma AppEngine con Python. Non ho toccato Java dal 1999. –
@Jason Hall @ Adam Crossland Devo dirti che gran parte di quello che hai detto è andato 'woosh' sopra la mia testa. Non ho esperienza di 'transazioni', sono nuovo di JAVA, ma capisco un po 'di pseudo codice, che è simile a quello che faccio attualmente. Funzionerà in uno scenario a basso traffico, ma voglio essere relativamente sicuro anche in scenari negativi. Grazie per l'eccellente recensione! – abel