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

パーティションの管理

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

概要

コレクションを作成すると、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>"
# }

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

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

特定のパーティションに対して、挿入(insert)、アップサート(upsert)、および削除(delete)の各操作を実行できます。詳細については、以下を参照してください。

検索とクエリ

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

パーティションの削除

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

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"]