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

Partitions の管理

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

Notes

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

概要​

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

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

1 つのコレクションには最大 1,024 個のパーティションを作成できます。

Notes

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

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

Partitions の一覧表示​

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

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 の作成​

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

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 の確認​

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

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

print(res)

# Output
#
# True

Partitions の読み込みと解放​

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

Partitions の読み込み​

コレクション内の特定のパーティションを個別に読み込むことができます。コレクション内に読み込まれていないパーティションがある場合、コレクションの読み込み状態は未ロードのままになる点に注意してください。

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