マルチテナントデータベースです:
- 顧客/テナントごとに異なる(同一の)データベース/スキーマを持つDBサーバー。または
- 顧客/テナントが同じテーブル内でレコードを共有するデータベース/スキーマを持つDBサーバー?
たとえば、上記のオプション#1では、たとえばにMySQLサーバーmydb01.example.com
があり、customer1
その中にデータベースがあります。このcustomer1
データベースには、たとえば、特定の顧客(顧客#1)のアプリケーションを駆動する10個のテーブルがあります。またcustomer2
、まったく同じ10個のテーブルを持つデータベースがありますが、顧客#2のデータのみが含まれている場合があります。customer3
データベース、データベースなどがある場合がありますcustomer4
。
上記のオプション#2では、たとえば、myapp_db
10個のテーブル(上記と同じもの)を持つ単一のデータベース/スキーマのみが存在します。しかし、ここでは、すべての顧客のデータがこれらの10個のテーブル内に存在するため、顧客はテーブルを「共有」します。また、アプリケーション層では、ロジックとセキュリティにより、どの顧客がこれらの10個のテーブルのどのレコードにアクセスできるかを制御し、顧客#1がアプリにログインして顧客#3のデータなどを表示しないように細心の注意を払っています。
これらのパラダイムのうち、従来の「マルチテナント」DBを構成するものはどれですか?どちらでもない場合、マルチテナントDBとは何かの例を(上記のシナリオを使用して)提供してくれますか?