SQL AlchemyまたはDjangoは、デフォルトでリレーショナルデータベースに基づいています。したがって、モデルを変更するには、sqlalchemy-migrateやSouthなどの移行ツールが必要です。Googleのアプリケーションエンジンでモデルを変更する場合の結果
Google App Engineに切り替えてndbを利用すると、モデルを変更するとどうなりますか?理論的には、Big-TableのようなNoSQLデータベースは進化するスキーマに気を付けるべきではないため、移行は必要ありません。
ただし、このようなモデルを定義すると、検証するスキーマが明確に示されます。
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)
フィールドを追加したらどうなりますか?フィールドを変更したか、フィールドを削除しましたか?
私の仮定は以下の通りです:
フィールド
- におそらく最も簡単なケースを追加し、モデルの唯一の新しいインスタンスが は、新しいフィールドに対して検証されます。古いインスタンスをロードする場合、 フィールドは空のままです。しかし、フィールドが に設定されているとどうなりますか?すべての古いインスタンスが削除された フィールドの孤立したデータが含まれています。この場合
フィールドを削除する
- 。しかし彼らはそこにとどまり、今から無視されます
フィールド名
- 上記二つの組み合わせを変更します。新しい名前は 新しいフィールドとみなされ、古いフィールドは無視されて孤立します。
この仮定は正しいですか?