5

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) 

フィールドを追加したらどうなりますか?フィールドを変更したか、フィールドを削除しましたか?

私の仮定は以下の通りです:

フィールド

  • におそらく最も簡単なケースを追加し、モデルの唯一の新しいインスタンスが は、新しいフィールドに対して検証されます。古いインスタンスをロードする場合、 フィールドは空のままです。しかし、フィールドが に設定されているとどうなりますか?すべての古いインスタンスが削除された フィールドの孤立したデータが含まれています。この場合

フィールドを削除する

  • 。しかし彼らはそこにとどまり、今から無視されます

フィールド名

  • 上記二つの組み合わせを変更します。新しい名前は 新しいフィールドとみなされ、古いフィールドは無視されて孤立します。

この仮定は正しいですか?

答えて

5

あなたはドキュメントのご質問に多くの答えを見つけることができます。

Google App Engine - Updating Your Model's Schema

ただし必要に応じてフィールドが設定されている場合はどうなりますか?

プロパティを必要に応じて設定するということは、コンストラクタで直接値を設定する必要があるため、既存のエンティティには影響しません。

関連する問題