これは概念的な問題なので、同じ概念を達成できるスタックのバリエーションは歓迎されます。現在、MySQL を使用しており、いくつかのサービスを MongoDB に拡張しています。
アイデアは、構造を利用するクライアントの数が数千、数万、数百に成長するにつれて、調整、拡張などが過度に面倒にならないように、単一の物理データベース スキーマ/構造を管理できるようにしたいということです。などですが、より厳格な分離を提供するために、単にアプリケーション層ではなくこのレベルでデータを分離したいと考えています。同じ構造を使用して各クライアントの仮想ビンを作成することは可能ですが、それらのデータは構造的に互いに分離されていますか?
通常の方法では、直接または外部関係を介してデータのすべての行にクライアント キーを追加することは明らかですが、「クロス クライアント」データ取得を可能にするシステムへのハッキングがどのように発生するかを 20/20 で予測できないことを考えると、事実上構造レベルで分離を埋め込むためにもう少し進んでください。
ここで別の投稿も読みました: MySQL: how to do row-level security (like Oracle's Virtual Private Database)? メソッドとして「ビュー」を使用しますが、クライアントのリストが大きくなるほど、これはより多くの作業になるようです。
ありがとう!
- - 編集 - -
以下に提案された文献のいくつかに基づいて、ここに私たちの意図に関するもう少しの情報があります:
@Stennie によって提供された MSDN の記事で概説されている 3 つの最も近い状況は、単一のデータベース、複数のスキーマになりますが、違いは、作成後にクライアント スキーマをカスタマイズすることには興味がなく、実際にはロックされたままにすることを好むことです。親/マスタースキーマに。
理想的には、ソリューションでは、親スキーマまたはマスター スキーマへの変更がすべてのクライアント/テナント スキーマにカスケードされることを期待して、単純に複製するのではなく、各スキーマを親テーブル セット構造にリンクしたままにします。
さらに一歩進んで、クラスターでは、マスター スキーマを持つ 1 つのマスターと、そこからレプリケートする各スレーブを持つことができますが、テナントのシャード セットを持ちます。マスターへの変更は、中断することなくクラスターを介してフィルター処理され、すべてのインスタンスで一貫性が維持され、すべての DB が更新されたスキーマと互換性があることがわかっているため、アプリケーション層をより迅速に更新できます。
それが理にかなっているといいのですが、私はこのレベルではまだ少し新鮮です.