(PostgreSql 9.4に裏打ちされた)大規模なSAASアプリケーションの場合、300,000を超えるアカウントがあり(成長中)、アカウントごとにスキーマを使用してデータをパーティション分割することと、すべてのデータを1つのスキーマに入れ、外部キーを使用することのメリットとデメリットは何ですか。クエリで分割しますか?
以前、多くのスキーマを操作するときにpg_dumpが非常に遅くなっていましたが、それが今日のケースであるかどうかはわかりません。また、データベース構造の変更はすべてのスキーマで行う必要があることも認識しています。そしてプラス面では、スキーマをある物理サーバーから別の物理サーバーに移動するのは簡単です。また、スキーマをバックアップから復元することは言うまでもありません。データをそのようにパーティション分割することは理にかなっています。
それで、私が見逃している長所と短所は何ですか?
明らかに、各ユーザースキーマの同じテーブルを扱っています。これについて inheritance を検討しましたか?これは、いくつかのユースケースで両方の長所を提供します。 制限 もいくつかあります。ユーザーごとに個別のスキーマを使用して、すべてのユーザーテーブルを一度に非常に便利に検索できます。
関連:
それ以外は、少なくとも権限の付与/取り消しについて言及する必要があります。これは、個別のスキーマを使用する方がはるかに簡単です。