milvus-logo
LFAI
フロントページへ
  • コンセプト

マルチテナント戦略

ChatGPTの普及に伴い、CVP(ChatGPT, Vector Database, Prompt)スタックを利用して独自のSaaSサービスを作る開発者が増えています。本ガイドでは、このトレンドに対応するため、世界で最も広く利用されているベクターデータベースの一つであるMilvusでマルチテナントを実現する方法を解説します。

マルチテナントとは、1つのMilvusインスタンスが複数のテナントにサービスを提供するアーキテクチャです。テナントを区別する最も簡単な方法は、テナントのデータとリソースを他のテナントから分離することです。各テナントは、データベース、コレクション、パーティションなどのMilvusオブジェクトを管理するために、それぞれ専用のリソースを持つか、他のテナントとリソースを共有します。これらのオブジェクトに基づいて、Milvusマルチテナントを実現するための対応する方法があります。

データベース指向マルチテナンシー

Milvusバージョン2.2.9からオブジェクトデータベースが利用できるようになりました。一つのMilvusクラスタに複数のデータベースを作成することができます。この新機能により、各テナントにデータベースを割り当てることで、データベース指向のマルチテナントを実現し、各テナントが独自のコレクションやパーティションを作成してデータを最大限に活用できるようになります。ただし、この戦略ではテナントのデータ分離と検索パフォーマンスは確保されるが、アイドル状態のテナントではリソースが無駄になる可能性がある。

コレクション指向のマルチテナント

コレクション指向のマルチテナントを実現するには、2つの方法が考えられます。

すべてのテナントに1つのコレクション

テナントを区別するためにテナントフィールドを追加することによって、1つのコレクションを使用してマルチテナントを実装することは簡単なオプションです。特定のテナントに対してANN検索を行う場合、フィルタ式を追加して、他のテナントに属するすべてのエンティティをフィルタリングします。これは、マルチテナントを実現する最も簡単な方法です。ただし、フィルタのパフォーマンスがANN検索のボトルネックになる可能性があることに注意してください。

テナントごとに1つのコレクション

もう1つの方法は、すべてのテナントのデータを1つのコレクションに格納するのではなく、テナントごとに独自のデータを格納するコレクションを作成することです。これにより、データの分離とクエリのパフォーマンスが向上します。ただし、このアプローチではリソースのスケジューリング、運用能力、コストへの投資が必要となり、テナントの数が1つのMilvusクラスタがサポートする最大コレクション数を超える場合には適用できない可能性があることに留意してください。

パーティション指向マルチテナント

パーティション指向のマルチテナンシーを実現するには、2つの方法が考えられます:

テナントごとに1つのパーティション

1つのコレクションを管理することは、複数のコレクションを管理するよりもはるかに簡単です。複数のコレクションを作成する代わりに、テナントごとにパーティションを割り当てて、柔軟なデータ分離とメモリ管理を実現することを検討してください。パーティション指向のマルチテナントの検索パフォーマンスは、コレクション指向のマルチテナントよりもはるかに優れています。ただし、コレクションのテナントの数は、コレクションが保持できるパーティションの最大数を超えてはならないことに注意してください。

パーティションキーベースのマルチテナンシー

Milvus 2.2.9では、パーティションキーという新機能が導入されました。コレクションの作成時に、テナントフィールドを指定し、それをパーティションキーフィールドにします。Milvusはパーティションキーフィールドの値に従って、エンティティをパーティションに格納します。ANN検索を行う際、Milvusは指定されたパーティション・キーに基づくパーティションに変更し、パーティション・キーに従ってエンティティをフィルタリングし、フィルタリングされたエンティティ間で検索を行う。

この戦略により、Milvusコレクションがサポートできる最大テナント数の制限が解除され、Milvusが自動的にパーティションを管理するため、リソース管理が大幅に簡素化されます。

要約すると、上記のマルチテナント戦略のいずれかまたはいくつかを使用して、独自のソリューションを形成することができます。以下の表は、データ分離、検索パフォーマンス、最大テナント数の観点からこれらの戦略を比較したものです。

データ分離検索パフォーマンス最大テナント数推奨シナリオ
データベース指向強い強い64プロジェクトによって異なるコレクションが必要な場合、特に組織内の部署間でデータを分離するのに適しています。
すべてのコレクションに1つのコレクション弱い該当なしリソースが限られており、データの分離に無頓着な場合。
テナントごとに1つのコレクション強い強い10,000未満クラスタあたりのテナント数が10,000未満の場合。
テナントごとに1パーティション強い4,096コレクションあたりのテナント数が4,096未満の場合。
パーティションキーベース強い10,000,000+数百万テナントの急激な増加が予測される場合。

次の課題

データベース・スキーマの管理

翻訳DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?