マルチテナントの実装
Milvusにおけるマルチテナントとは、複数の顧客またはチーム(テナントと呼ばれる)が、分離されたデータ環境を維持しながら同じクラスタを共有することを意味します。
Milvusは4つのマルチテナント戦略をサポートしており、それぞれスケーラビリティ、データ分離、柔軟性のトレードオフが異なります。このガイドでは、各オプションについて説明し、ユースケースに最適な戦略を選択できるようにします。
マルチテナント戦略
Milvusは4つのレベルでマルチテナンシーをサポートしています:データベース、コレクション、パーティション、パーティションキーです。
データベースレベルのマルチテナンシー
データベースレベルのマルチテナンシーでは、各テナントは1つまたは複数のコレクションを含む対応するデータベースを受け取ります。
データベースレベルのマルチテナンシー
スケーラビリティ:データベースレベルのマルチテナント戦略は、デフォルトで最大64テナントをサポートします。
データの分離:各データベースのデータは完全に分離されており、規制環境や厳格なコンプライアンスを必要とするお客様に理想的なエンタープライズグレードのデータ分離を提供します。
柔軟性:各データベースは異なるスキーマのコレクションを持つことができるため、柔軟性の高いデータ編成が可能で、各テナントは独自のデータスキーマを持つことができます。
その他このストラテジーはRBACにも対応しており、テナントごとのユーザーアクセスをきめ細かく制御できます。さらに、特定のテナントのデータを柔軟にロードまたはリリースして、ホットデータとコールドデータを効率的に管理できます。
コレクションレベルのマルチテナント
コレクションレベルのマルチテナントでは、各テナントにコレクションが割り当てられるため、データを強力に分離できます。
コレクションレベルのマルチテナント
スケーラビリティ:クラスタはデフォルトで最大65,536のコレクションを保持できるため、この戦略ではクラスタ内で同じ数のテナントを収容できます。
データの分離:コレクションは互いに物理的に分離されています。このストラテジーは強力なデータ分離を提供します。
柔軟性:この戦略では、各コレクションが独自のスキーマを持つことができ、異なるデータスキーマを持つテナントに対応できます。
その他このストラテジーはRBACにも対応しており、テナントに対するきめ細かなアクセス制御が可能です。さらに、ホットデータとコールドデータを効果的に管理するために、特定のテナントに対して柔軟にデータをロードまたはリリースできます。
パーティションレベルのマルチテナント
パーティションレベルのマルチテナントでは、各テナントは共有コレクション内で手動で作成したパーティションに割り当てられます。
パーティションレベルのマルチテナント
スケーラビリティ:コレクションごとに最大1,024のパーティションを保持でき、同じ数のテナントをコレクション内に配置できます。
データの分離:各テナントのデータはパーティションによって物理的に分離されます。
柔軟性:この戦略では、すべてのテナントが同じデータスキーマを共有する必要があります。また、パーティションは手動で作成する必要がある。
その他パーティションレベルでのRBACはサポートされていない。テナントは個別に、または複数のパーティションにまたがってクエリを実行できるため、テナント・セグメントにまたがる集計クエリや分析を含むシナリオに適しています。さらに、特定のテナントのデータを柔軟にロードまたはリリースして、ホットデータとコールドデータを効率的に管理できます。
パーティションキーレベルのマルチテナント
この戦略では、すべてのテナントが単一のコレクションとスキーマを共有しますが、各テナントのデータはパーティション・キーの値に基づいて、物理的に分離された16のパーティションに自動的にルーティングされます。各物理パーティションには複数のテナントを含めることができますが、異なるテナントのデータは論理的に分離されたままです。
パーティション・キー・レベルのマルチ・テナント
スケーラビリティ:パーティション・キー・レベルの戦略は、数百万テナントをサポートする最もスケーラブルなアプローチです。
データの分離:複数のテナントが物理パーティションを共有できるため、データの分離は比較的弱い。
柔軟性:すべてのテナントが同じデータスキーマを共有する必要があるため、この戦略ではデータの柔軟性が制限されます。
その他パーティション・キー・レベルでのRBACはサポートされていません。テナントは個別または複数のパーティションにまたがってクエリを実行できるため、テナント・セグメントにまたがる集計クエリや分析を含むシナリオに適しています。
適切なマルチテナント戦略の選択
以下の表は、4つのレベルのマルチテナント戦略を包括的に比較したものです。
データベースレベル |
コレクションレベル |
パーティション・レベル |
パーティション・キー・レベル |
|
|---|---|---|---|---|
データ分離 |
物理的 |
物理的 |
物理的 |
物理+論理 |
最大テナント数 |
デフォルトでは64。Milvus.yaml設定ファイルの |
デフォルトでは65,536。Milvus.yaml設定ファイルの |
コレクションあたり最大1,024。 |
数百万 |
データスキーマの柔軟性 |
高 |
中 |
低い |
低い |
RBACサポート |
対応 |
あり |
なし |
いいえ |
検索パフォーマンス |
強い |
強い |
中 |
中 |
クロステナント検索サポート |
なし |
なし |
あり |
あり |
ホットデータとコールドデータの効果的な処理のサポート |
はい |
はい |
はい |
現在、パーティション・キー・レベル戦略はサポートされていない。 |
Milvusのマルチテナント戦略を選択する際に考慮すべきいくつかの要素があります。
スケーラビリティ:パーティション・キー > パーティション > コレクション > データベース
非常に多くのテナント(数百万以上)をサポートすることが予想される場合は、パーティション・キー・レベルの戦略を使用してください。
強力なデータ分離要件:データベース = コレクション > パーティション > パーティション・キー
物理的なデータ分離要件が厳しい場合は、データベース、コレクション、またはパーティション・レベルのストラテジーを選択してください。
各テナントのデータに対する柔軟なデータ・スキーマ:データベース > コレクション > パーティション = パーティション・キー
データベース・レベルとコレクション・レベルのストラテジーでは、データ・スキーマを完全に柔軟に変更できます。テナントのデータ構造が異なる場合は、データベースレベルまたはコレクションレベルのマルチテナントを選択してください。
その他
パフォーマンス:検索パフォーマンスは、インデックス、検索パラメータ、マシン構成など様々な要因によって決定されます。Milvusはパフォーマンスチューニングもサポートしています。マルチテナント戦略を選択する前に、実際のパフォーマンスをテストすることをお勧めします。
ホットデータとコールドデータの効果的な処理現在、データベースレベル、コレクションレベル、パーティションレベルのストラテジーはすべてホットデータとコールドデータの取り扱いをサポートしています。
クロステナント検索:パーティション・レベルとパーティション・キー・レベルのストラテジーのみが、クロステナント検索をサポートしています。