モデルのデータをバージョニングする普遍的な方法を作成しようとしています。新しい種類のBackupSomeModel
のクラスSomeModel(db.Model)
の新しいバックアップを動的に作成したいと思います。既存のモデルクラスと同じプロパティを持つ新しい種類を動的に作成します
Pythonでこれを行う方法についてのヒントはありますか?あるいは、GAEのデータをバージョンアップする方法に関する一般的な考え方はありますか?
PS:私は解決策から離れることを試みていますin here。
モデルのデータをバージョニングする普遍的な方法を作成しようとしています。新しい種類のBackupSomeModel
のクラスSomeModel(db.Model)
の新しいバックアップを動的に作成したいと思います。既存のモデルクラスと同じプロパティを持つ新しい種類を動的に作成します
Pythonでこれを行う方法についてのヒントはありますか?あるいは、GAEのデータをバージョンアップする方法に関する一般的な考え方はありますか?
PS:私は解決策から離れることを試みていますin here。
それを行うための最も簡単な方法は、このようなものです:あなたは、監査ログを維持している場合
class BackupSomeModel(SomeModel): pass
、しかし、別の種類のシリアル化されたプロトコルバッファを保存することは、おそらくより良い方法です。私は、「AuditLog」という種類のエンティティを提案します。エンティティは、監査するレコードの子エンティティであり、各変更後のデータのシリアライズされたPBが含まれています。
PBベースのソリューションは面白いです、私はそれを試してみましょう。以前のバージョンを表示する必要がある場合でも、その場でそれらを逆シリアル化することはできますが、コストはデータストアから引き出すこととほぼ同じでしょうか? –
@WooYek正しい。それは少し上回っていますが、私はそれが毎日のクリティカルなパス操作ではないと推測しています。 –
なぜモデル定義を複製する必要がありますか?あなたは正確に何を達成しようとしていますか?おそらくもっと良い解決策があります。 –
ユーザーデータの90%の変更ログが必要です。それはポリシーに準拠しているため、読書にはあまり使われません。私はそれをオリジナルのものとは別に保管したいと考えています。 –
これまでのところ私はすべてのデータをコピーするExpandoモデルクラスを持っていました(たとえば、データと時間をdatetimeとして保存する必要があるなどのデータクレンジングが必要です)。すべての私のデータのバックアップの種類は1つだけです。 –