アプリケーションのデプロイ後にデータが変更された場合、データベースを最新の状態に保つにはどうすればよいでしょうか?
つまり、テーブルを追加または削除できます。これは簡単な作業です。既存のテーブルを変更することも簡単です。しかし、構造を頻繁に変更する場合、それをどのように管理しますか?
以前は、データベースに現在のデータベース バージョンのテーブルを保持していました。その後、すべてのアップグレードは、新しいテーブルの作成、列の追加、またはデータの移動など、その作業を行う SQL ファイルでした。ファイルの名前はこれらのバージョンにちなんで付けられているため、アップグレード スクリプトがデータベース バージョン 10 を取得した場合、11.sql から N.sql までのすべてのファイルを取得し、それらのそれぞれにデータベース バージョン番号を同時にインクリメントして適用しました。
これは問題なく機能しているように見えますが、疑問に思っているのは、そのようなタスクに対するあなたの戦略は何ですか?
また、このシステムは、1 つの「パッチ」でテーブルを正規化し、その後何らかの理由で再度非正規化すると、完璧には見えません。その後、2回行われます。
しかし、何かを変更するたびに完全なアップグレード スクリプトを作成するのは面倒で、エラーが発生しやすいようです。少なくとも、そのような原子的な変化よりも。
また、さまざまな顧客がさまざまなデータベース バージョンをいつでも実行していると予想できるため、どの時点からでもアップグレードする方法が必要です。