メインコンテンツまでスキップ

Partitions の管理

partition は collection のサブセットです。各 partition は親 collection と同じデータ構造を共有しますが、collection 内のデータの一部のみを含みます。このページでは、partition の管理方法について説明します。

📘Notes

この機能は managed collections にのみ適用されます。

概要

collection を作成すると、Zilliz Cloud はその collection 内に _default という名前の partition も作成します。他の partition を追加しない場合、collection に挿入されたすべてのエンティティは default partition に入り、すべての検索とクエリも default partition 内で実行されます。

さらに partition を追加し、特定の条件に基づいてエンティティをそれらに挿入できます。その後、検索とクエリを特定の partition 内に制限することで、検索パフォーマンスを向上させることができます。

1 つの collection には最大 1,024 個の partition を作成できます。

📘Notes

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

この機能については、このページでは説明しません。詳細については、Partition Key を使用するを参照してください。

Partitions の一覧表示

collection を作成すると、Zilliz Cloud はその collection 内に _default という名前の partition も作成します。collection 内の partition は次のように一覧表示できます。

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

Partition の作成

collection にさらに partition を追加し、特定の条件に基づいてこれらの partition にエンティティを挿入できます。

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

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

print(res)

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

特定の Partition の確認

次のコードスニペットは、特定の collection に partition が存在するかどうかを確認する方法を示しています。

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

print(res)

# Output
#
# True

Partitions の読み込みと解放

1 つまたは特定の partition を個別に読み込んだり解放したりできます。

Partitions の読み込み

collection 内の特定の partition を個別に読み込むことができます。collection 内に読み込まれていない partition がある場合、collection の読み込み状態は unloaded のままになる点に注意してください。

python
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>"
# }

Partitions の解放

特定の partition を解放することもできます。

python
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>"
# }

Partitions 内のデータ操作

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

特定の partition で insert、upsert、delete 操作を実行できます。詳細については、以下を参照してください。

検索とクエリ

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

Partition の削除

不要になった partition を削除できます。partition を削除する前に、partition が解放されていることを確認してください。

python
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"]
Ctrl I