大規模な Postgres データベース (150 を超えるテーブル、200 を超えるカスタム型、ほぼ 1000 の関数、トリガーなど) を含むプロジェクトを継承しました。残念ながら、すべてが 1 つのスキーマにダンプされます ( public
)。アプリケーションの観点からは問題なく動作しますが、維持するのは大きな悪夢です。
明らかなことは、これらのオブジェクトを機能ごとに別々のスキーマに分割することです (たとえば、すべてのサプライヤ関連のものはsupplier
スキーマに入れ、すべての管理関連のものはadmin
スキーマに入れます)。もちろん、これが完了すると、新しいスキーマを参照するために、コードにいくつかの変更 (多くの変更) が必要になります。Web アプリケーションに約 2000 個の php ファイルが含まれていることを考えると、かなりの作業になる可能性があります。繰り返しますが、システム内のすべての php は既に で始まっているのでrequire_once('controller/config.php');
、すべての新しいスキーマを含めるように検索パスを設定するための呼び出しをそこに追加できSET search_path = 'public, supplier, admin, ...'
ます。
問題に対処する他の方法はありますか?データベースの再編成に必要以上の労力を費やしたくありません。また、メイン Web サイトは世界中 (オーストラリア、ヨーロッパ、北米) のクライアントが使用しているため、ダウンタイムはほとんど発生しません。
私は何をすることをお勧めしますか?