Serving Clusters の Database
この機能は Enterprise プラン以上でのみ利用できます。
serving cluster の database は、Dedicated serving cluster でホストされる collection の論理コンテナです。このページでは、serving cluster エンドポイントを通じて database を作成、表示、設定、使用、削除する方法を説明します。
このページは serving clusters の database を対象としています。オンデマンドコンピュートでクエリされる project レベルの database については、Database for On-Demand Search を参照してください。database モデルの比較については、Database Explained を参照してください。
始める前に
以下を確認してください。
-
Dedicated serving cluster を作成済みであること。
-
serving cluster エンドポイントを取得していること。例:
https://{cluster-id}.{region}.vectordb.zillizcloud.com:19530。 -
認証トークンを取得していること。これは、対象 cluster にアクセスできる API key、または
username:password形式の cluster 認証情報です。 -
database を管理するための Organization Owner または Project Admin 権限を持っていること。
Dedicated cluster が作成されると、デフォルトの database が自動的に作成されます。Dedicated cluster には最大 1,024 個の database を作成できます。
Database を作成する
Zilliz Cloud コンソールから、またはプログラムで database を作成できます。
- Python
- Java
- Go
- NodeJS
- cURL
from pymilvus import MilvusClient
client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN",
)
client.create_database(
db_name="my_database_1",
)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.database.request.CreateDatabaseReq;
ConnectConfig config = ConnectConfig.builder()
.uri("YOUR_CLUSTER_ENDPOINT")
.token("YOUR_CLUSTER_TOKEN")
.build();
MilvusClientV2 client = new MilvusClientV2(config);
CreateDatabaseReq request = CreateDatabaseReq.builder()
.databaseName("my_database_1")
.build();
client.createDatabase(request);
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: "YOUR_CLUSTER_ENDPOINT",
APIKey: "YOUR_CLUSTER_TOKEN",
})
if err != nil {
// handle error
}
err = client.CreateDatabase(ctx, milvusclient.NewCreateDatabaseOption("my_database_1"))
if err != nil {
// handle error
}
import { MilvusClient } from "@zilliz/milvus2-sdk-node";
const client = new MilvusClient({
address: "YOUR_CLUSTER_ENDPOINT",
token: "YOUR_CLUSTER_TOKEN",
});
await client.createDatabase({
db_name: "my_database_1",
});
curl --request POST \
--url "YOUR_CLUSTER_ENDPOINT/v2/vectordb/databases/create" \
--header "Authorization: Bearer YOUR_CLUSTER_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"dbName": "my_database_1"
}'
database の作成時にプロパティを設定することもできます。次の例では、レプリカ数を設定しています。
- Python
- Java
- Go
- NodeJS
- cURL
client.create_database(
db_name="my_database_2",
properties={
"database.replica.number": 3,
},
)
import java.util.HashMap;
import java.util.Map;
Map<String, String> properties = new HashMap<>();
properties.put("database.replica.number", "3");
CreateDatabaseReq request = CreateDatabaseReq.builder()
.databaseName("my_database_2")
.properties(properties)
.build();
client.createDatabase(request);
err = client.CreateDatabase(
ctx,
milvusclient.NewCreateDatabaseOption("my_database_2").
WithProperty("database.replica.number", 3),
)
if err != nil {
// handle error
}
await client.createDatabase({
db_name: "my_database_2",
properties: {
"database.replica.number": 3,
},
});
curl --request POST \
--url "YOUR_CLUSTER_ENDPOINT/v2/vectordb/databases/create" \
--header "Authorization: Bearer YOUR_CLUSTER_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"dbName": "my_database_2",
"properties": {
"database.replica.number": 3
}
}'
Database を表示する
database の一覧表示、または特定の database の詳細表示を行います。
- Python
- Java
- Go
- NodeJS
- cURL
databases = client.list_databases()
print(databases)
database = client.describe_database(
db_name="default",
)
print(database)
import io.milvus.v2.service.database.request.DescribeDatabaseReq;
import io.milvus.v2.service.database.response.DescribeDatabaseResp;
import io.milvus.v2.service.database.response.ListDatabasesResp;
ListDatabasesResp databases = client.listDatabases();
DescribeDatabaseResp database = client.describeDatabase(
DescribeDatabaseReq.builder()
.databaseName("default")
.build()
);
databases, err := client.ListDatabase(ctx, milvusclient.NewListDatabaseOption())
if err != nil {
// handle error
}
log.Println(databases)
database, err := client.DescribeDatabase(ctx, milvusclient.NewDescribeDatabaseOption("default"))
if err != nil {
// handle error
}
log.Println(database)
const databases = await client.listDatabases();
console.log(databases);
const database = await client.describeDatabase({
db_name: "default",
});
console.log(database);
curl --request POST \
--url "YOUR_CLUSTER_ENDPOINT/v2/vectordb/databases/describe" \
--header "Authorization: Bearer YOUR_CLUSTER_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"dbName": "default"
}'
Database プロパティを管理する
以下の database プロパティは、serving clusters の database に対して設定できます。
| Property | Description |
|---|---|
database.replica.number | database のレプリカ数。 |
database.max.collections | database で許可される collection の最大数。 |
database.force.deny.writing | database に対する書き込み操作を拒否するかどうか。 |
database.force.deny.reading | database に対する読み取り操作を拒否するかどうか。 |
Database プロパティを変更する
次の例では、database に作成できる collection 数を制限します。
- Python
- Java
- Go
- NodeJS
- cURL
client.alter_database_properties(
db_name="my_database_1",
properties={
"database.max.collections": 10,
},
)
import io.milvus.v2.service.database.request.AlterDatabasePropertiesReq;
client.alterDatabaseProperties(
AlterDatabasePropertiesReq.builder()
.databaseName("my_database_1")
.property("database.max.collections", "10")
.build()
);
err = client.AlterDatabaseProperties(
ctx,
milvusclient.NewAlterDatabasePropertiesOption("my_database_1").
WithProperty("database.max.collections", 10),
)
if err != nil {
// handle error
}
await client.alterDatabaseProperties({
db_name: "my_database_1",
properties: {
"database.max.collections": 10,
},
});
curl --request POST \
--url "YOUR_CLUSTER_ENDPOINT/v2/vectordb/databases/alter" \
--header "Authorization: Bearer YOUR_CLUSTER_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"dbName": "my_database_1",
"properties": {
"database.max.collections": 10
}
}'
Database プロパティを削除する
次の例では、database から collection の制限を削除します。
- Python
- Java
- Go
- NodeJS
- cURL
client.drop_database_properties(
db_name="my_database_1",
property_keys=[
"database.max.collections",
],
)
import io.milvus.v2.service.database.request.DropDatabasePropertiesReq;
import java.util.Collections;
client.dropDatabaseProperties(
DropDatabasePropertiesReq.builder()
.databaseName("my_database_1")
.propertyKeys(Collections.singletonList("database.max.collections"))
.build()
);
err = client.DropDatabaseProperties(
ctx,
milvusclient.NewDropDatabasePropertiesOption("my_database_1", "database.max.collections"),
)
if err != nil {
// handle error
}
await client.dropDatabaseProperties({
db_name: "my_database_1",
property_keys: ["database.max.collections"],
});
curl --request POST \
--url "YOUR_CLUSTER_ENDPOINT/v2/vectordb/databases/alter" \
--header "Authorization: Bearer YOUR_CLUSTER_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"dbName": "my_database_1",
"propertyKeys": [
"database.max.collections"
]
}'
Database を使用する
SDK を使用している場合は、再接続せずに 1 つの database から別の database に切り替えることができます。
RESTful API は、永続接続上での database 切り替えをサポートしていません。RESTful API リクエストでは、操作が dbName をサポートしている場合、各リクエストボディで対象 database を指定してください。
- Python
- Java
- Go
- NodeJS
- cURL
client.use_database(
db_name="my_database_2",
)
client.useDatabase("my_database_2");
err = client.UseDatabase(ctx, milvusclient.NewUseDatabaseOption("my_database_2"))
if err != nil {
// handle error
}
await client.useDatabase({
db_name: "my_database_2",
});
# RESTful API does not provide a persistent connection to switch.
# Specify "dbName" in the request body of each operation when supported.
Database を削除する
デフォルトの database は削除できません。database を削除する前に、まずその database 内のすべての collection を削除してください。
- Python
- Java
- Go
- NodeJS
- cURL
client.drop_database(
db_name="my_database_2",
)
import io.milvus.v2.service.database.request.DropDatabaseReq;
client.dropDatabase(
DropDatabaseReq.builder()
.databaseName("my_database_2")
.build()
);
err = client.DropDatabase(ctx, milvusclient.NewDropDatabaseOption("my_database_2"))
if err != nil {
// handle error
}
await client.dropDatabase({
db_name: "my_database_2",
});
curl --request POST \
--url "YOUR_CLUSTER_ENDPOINT/v2/vectordb/databases/drop" \
--header "Authorization: Bearer YOUR_CLUSTER_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"dbName": "my_database_2"
}'