私はテナントが同じデータベース内の異なるスキーマに設定されているマルチテナントアプリケーションを持っています。その理由は、スキーマの1つで使用する共有データがいくつかあるからです。複数のスキーマに対するPostgresの実行文
これまでは、新しいスキーマが追加されるたびに更新する必要のあるスキーマのリストを持つbashスクリプトを使用していましたが、アカウント全体でスキーマの変更を行う必要があります。たとえば、テーブルに新しい列を追加する。
はPostgresの、psqlでの方法は、例えばbashのように別のスクリプトで文字列置換を行うことなく、インスタンス
ALTER TABLE some_table ADD COLUMN some_column TEXT NOT NULL DEFAULT '';
のために実行する...など、あります。
つまり、スキーマを取得するには簡単な方法があります。psqlにforループを書くと、スキーマを繰り返し処理し、それぞれの場合にsearch_pathを設定して文を実行します。
デベロッパーではない管理者がテナント数を増やし、新しいテナントを追加できる理由は、常にシェルスクリプトを更新しているからです。これは指数関数的にしか成長しません。この種の問題を処理する標準的な方法はありますか?
はい、メインのスキーマ(posgres)のプロシージャを作成してすべての方式をフェッチするINFORMATION_SCHEMAスキーマと同様に、コマンドを実行して変更を加えてください –