さまざまな組織の顧客 (ユーザー) がいるプラットフォームを作成しています。そのため、所属する組織ごとにデータを完全に分離したいと考えています。そのようなデータをmongo dbに保存するにはどうすればよいですか? どのレベルで?
2 に答える
セキュリティ上の理由 (コンプライアンスや規制など) のため、または単に管理/使いやすさのためにデータを分離していますか?
前者の場合、個別の MongoDB インスタンスではないにしても、少なくとも個別のデータベースを使用します。iptables
個別のインスタンスを使用すると、さまざまなインスタンスをさまざまな IP 範囲に結び付けて、データにアクセスすると想定されるさまざまな組織を表すことができるように、IP レベルで分離を実行できます。
後者の場合、データベース レベルで異なるユーザーを持つことができるため、別のデータベースを使用します。バージョン 2.2から、同時実行はデータベース レベルになります(したがって、書き込みロックの共有はありません。たとえば、コレクション レベルで分割した場合)。
参考までに、MongoDB のスキーマ設計に関する追加情報を次に示します。
組織ごとにドキュメントを作成し、ユーザーの詳細をルートドキュメント内のサブドキュメントに入れることができます。
全体的なユーザーのプロファイルが非常に大きく、MongoDBドキュメントサイズ(16 mg)に収まらない場合は、ユーザーごとにドキュメントを作成し、組織を参照するフィールドを追加することで、さまざまなアプローチを使用できます。