メインコンテンツまでスキップ
バージョン: User Guides (Cloud)

パーティションの管理

パーティションはコレクションの部分集合です。各パーティションは親コレクションと同じデータ構造を共有しますが、コレクション内のデータの一部のみを含みます。このページでは、パーティションの管理方法について説明します。

📘Notes

この機能はマネージドコレクションにのみ適用されます。

概要

コレクションを作成すると、Zilliz Cloud はそのコレクション内に _default という名前のパーティションも作成します。他のパーティションを追加しない場合、コレクションに挿入されたすべてのエンティティはデフォルトパーティションに格納され、すべての検索およびクエリもデフォルトパーティション内で実行されます。

特定の基準に基づいて追加のパーティションを作成し、そこにエンティティを挿入することができます。その後、特定のパーティション内でのみ検索やクエリを実行するように制限することで、検索パフォーマンスを向上させることができます。

1 つのコレクションが持てるパーティションの最大数は 1,024 です。

📘Notes

パーティションキー 機能は、パーティションに基づく検索最適化であり、Zilliz Cloud が特定のスカラフィールドの値に基づいてエンティティを異なるパーティションに分散できるようにします。この機能は、パーティション指向のマルチテナンシーの実装を支援し、検索パフォーマンスを向上させます。

この機能についてはこのページで解説しません。詳細については、Use パーティションキー を参照してください。

パーティションの一覧表示

コレクションを作成すると、Zilliz Cloud はそのコレクション内に _default という名前のパーティションも作成します。コレクション内のパーティションを一覧表示するには、次のようにします。

from pymilvus import MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# Output
#
# ["_default"]

Create Partition

コレクションにさらにパーティションを追加し、特定の条件に基づいてエンティティをこれらのパーティションに挿入できます。

client.create_partition(
collection_name="my_collection",
partition_name="partitionA"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# Output
#
# ["_default", "partitionA"]

特定のパーティションの確認

以下のコードスニペットは、特定のコレクション内にパーティションが存在するかどうかを確認する方法を示しています。

res = client.has_partition(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)

# Output
#
# True

パーティションのロードとリリース

1つまたは特定のパーティションを個別にロードまたはリリースできます。

パーティションのロード

コレクション内の特定のパーティションを個別にロードできます。コレクション内にロードされていないパーティションが1つでも存在する場合、そのコレクション全体のロード状態は「アンロード済み」となることに注意してください。

client.load_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

res = client.get_load_state(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)
# Output
#
# {
# "state": "<LoadState: Loaded>"
# }

Release パーティション

特定のパーティションをリリースすることもできます。

client.release_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

res = client.get_load_state(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)

# Output
#
# {
# "state": "<LoadState: NotLoaded>"
# }

パーティション内のデータ運用

エンティティの挿入と削除

特定のパーティションで挿入、アップサート、削除の各運用を実行できます。詳細については、以下を参照してください。

検索とクエリ

特定のパーティション内で検索とクエリを実行できます。詳細については、以下を参照してください。

パーティションの削除

不要になったパーティションを削除できます。パーティションを削除する前に、パーティションがリリースされていることを確認してください。

client.release_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

client.drop_partition(
collection_name="my_collection",
partition_name="partitionA"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# ["_default"]