セキュリティと分離のためのマルチテナント MySQL データベースの設計
マルチテナント データベースは、複数のデータをホストするコスト効率の高い方法を提供します。セキュリティやパフォーマンスを損なうことなくテナント (企業) に提供します。 MySQL を使用してこの設計にアプローチする方法は次のとおりです。
マルチテナント データベースのアプローチ
マルチテナントには 3 つの主なアプローチがあります。
-
テナントごとに 1 つのデータベース: 各テナントには独自の分離データベースがあり、完全なデータ分離が実現します。ただし、これは多数のテナントの場合、リソースを大量に消費する可能性があります。
-
共有データベース、テナントごとに 1 つのスキーマ: すべてのテナントは同じデータベースを共有しますが、各テナントには独自のスキーマ (設定テーブルと構造体の)。これにより、リソースのオーバーヘッドを削減しながら、ある程度の分離が実現します。
-
共有データベース、テナント識別子付きの共有スキーマ: すべてのテナントが同じデータベースとスキーマを共有します。データの各行はテナント識別子に関連付けられ、行レベルでのデータのフィルタリングと分離が可能になります。
長所と短所
[MSDN](https ://web.archive.org/web/20160406174154/https://msdn.microsoft.com/en-us/library/ff839894.aspx) では、次のような各アプローチの長所と短所の詳細な分析が提供されます。
- 分離: シングルテナント データベースは最高レベルの分離を提供しますが、テナント識別子を持つ共有データベースは行レベルの分離を提供します。
- パフォーマンス: 共有データベースはシングルテナントよりも効率的である可能性があります。
- 管理性: シングルテナント データベースは管理が簡単ですが、共有データベースには追加のテナント管理メカニズムが必要です。
適切な選択アプローチ
マルチテナント MySQL データベースに最適なアプローチは、次のようなアプリケーションの特定の要件によって異なります。
-
データ分離レベル: 完全な分離が必要ですか、それとも行レベルの分離を許容できますか?
-
テナントの数: テナントの数が多いほど、リソース使用率を最適化するために共有データベースが優先される場合があります。
- パフォーマンス: 共有データベースに対するテナントの競合の潜在的な影響を考慮します。
-
管理性: 共有データベース環境でのテナントの管理に必要な複雑さと労力を評価します。
これらの要素を慎重に評価すると、マルチテナント MySQL データベースに最適なアーキテクチャを選択し、セキュリティとパフォーマンスの両方を確保できます。
以上が安全で隔離されたマルチテナント MySQL データベースを設計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。