データベース スキーマを変更する方法について、DBA と話し合いました。彼の意見は、すべての変化は可逆的でなければならないというものです。例えば:
- 古くなったテーブル/列は、冗長になったらすぐに削除しないでください。代わりに、少なくともいくつかのリリースのために保持する必要があります。
- テーブル/列の名前を変更する代わりに、新しいテーブル/列を作成し、内容を古いものから新しいものにコピーします
- 「foo」という名前のストアド プロシージャ/トリガーを変更する必要がある場合は、元のストアド プロシージャ/トリガーをそのままにして、「foo2」という名前の新しいストアド プロシージャ/トリガーを作成します。もちろん、これはストアド プロシージャ/トリガーへのすべての参照を更新して、新しい名前を参照する必要があることを意味します。
このアプローチの利点は、(たとえば) リリースに失敗し、アプリケーションの以前のバージョンに戻す必要がある場合に、データベースを以前のバージョンに切り替えることができることです。テーブルと列が単純に削除された場合、これは不可能です。
私はこのアプローチの賢明さについて私自身の意見を持っていますが、回答に偏りが生じることを恐れて、当面は自分の意見にとどめておきます. 違いがある場合、環境はソーシャル ネットワーク アプリを開発するスタートアップです。