5

SQL Alchemy o Django sono per impostazione predefinita basati su un database relazionale. Quindi qualsiasi modifica al modello richiede uno strumento di migrazione come sqlalchemy-migrate o South.Conseguenze per la modifica di un modello sul motore di app Google

Ora passando al motore di Google App e utilizzando il ndb, cosa succede se ho cambiato un modello? In teoria, un database NoSQL come Big-Table non dovrebbe preoccuparsi dell'evoluzione dello schema e quindi non dovrebbe essere richiesta alcuna migrazione.

Tuttavia, la definizione di un modello come questo indica chiaramente uno schema con cui convalidare.

class ExampleModel(ndb.Model): 
    example_name = ndb.StringProperty(required=True) 
    example_description = ndb.TextProperty(required=True) 
    added_by = ndb.UserProperty() 
    timestamp = ndb.DateTimeProperty(auto_now_add=True) 

Quindi cosa succede se ho aggiunto un campo? Modificato un campo o addirittura rimosso un campo?

La mia ipotesi è la seguente:

Aggiunta di un campo

  • Forse il caso più semplice, solo nuove istanze del modello saranno convalidati in base al nuovo campo. Quando carichi qualsiasi istanza precedente, il campo rimane vuoto. Tuttavia cosa succede se il campo è impostato su come richiesto?

Eliminazione di un campo

  • In questo caso tutte le istanze più anziani conterranno orfani di dati per il campo cancellato. Ma rimangono lì e saranno ignorati da ora su.

Modifica di un nome di campo

  • Una combinazione dei due di cui sopra; Il nuovo nome sarà considerato come un nuovo campo e il vecchio campo verrà ignorato e reso orfano.

Questa supposizione è corretta?

risposta

5

Si possono trovare molte risposte alle tue domande nella documentazione:

Google App Engine - Updating Your Model's Schema

Tuttavia ciò che succede se il campo è impostato come richiesto?

L'impostazione di una proprietà come richiesto indica solo che è necessario impostare il valore direttamente nel costruttore, quindi le entità esistenti non sono interessate.

Problemi correlati