ショートバージョン:
いくつかの共有テーブルと、同じデータベース内の他のテナントごとのテーブルを使用しても問題ありませんか?
より長いバージョン:
私たち (私とスタックオーバーフロー以外の何人か) は、いくつかのマルチテナント SAAS を設計しています。
現在、共有データベースと共有スキーマ アーキテクチャを使用しており、各テーブルにはテナントのデータを区別するための tenant_id 列があります。「users」テーブルのような小さなデータ セットの場合 (1000 のテナントがあり、それぞれに 10 人のユーザーがいる場合 = 10,000 行)、これは問題なく機能します。
ただし、非常に大きくなるテーブルがいくつかあります。たとえば、「ファイル」テーブルです。各テナントには、メタデータをデータベースに格納する必要があるファイルが 100 万個ある場合があります。1,000,000 個のファイルを持つ各テナントは、10 億行のテーブルを作成します。私の心配は、これを操作するのが遅くなることです。テナントごとにファイル テーブルを分割したいと考えています。
質問:
いくつかの共有テーブルと他のテナントごとのテーブルを持つことは容認/推奨されますか
files_<tenant_id>
?スケーラビリティ、バックアップ、保守性などに関する批評をお願いします。
- このような大規模なデータを処理するための他のオプションは何ですか。
- これはまだ共有スキーマと見なされますか?