サービングクラスター内のデータベース
この機能は Enterprise プラン以上でのみ利用できます。
サービングクラスター内のデータベースは、Dedicated サービングクラスターでホストされるコレクションの論理コンテナです。このページでは、サービングクラスターのエンドポイント経由でデータベースの作成、参照、設定、使用、削除を行う方法について説明します。
このページでは、サービングクラスター内のデータベースについて説明します。オンデマンドコンピュートでクエリするプロジェクトレベルのデータベースについては、オンデマンド検索用データベース を参照してください。データベースモデルの比較については、データベースの概要 を参照してください。
事前準備
以下の条件を満たしていることを確認してください。
-
Dedicated サービングクラスターを作成済みであること。
-
サービングクラスターのエンドポイントを取得していること(例:
https://{cluster-id}.{region}.vectordb.zillizcloud.com:19530)。 -
認証トークンを取得していること。これは、対象クラスターへのアクセス権を持つ API キー、または
username:password形式のクラスター認証情報です。 -
データベースを管理するための Organization Owner または Project Admin 権限を持っていること。
Dedicated クラスターを作成すると、デフォルトのデータベースが自動的に作成されます。Dedicated クラスターには最大 1,024 個のデータベースを作成できます。
データベースの作成
Zilliz Cloud コンソールから、またはプログラムからデータベースを作成できます。
- 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"
}'
データベースの作成時にプロパティを設定することもできます。次の例では、レプリカ数を設定します。
- 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
}
}'
データベースの参照
データベースを一覧表示するか、特定のデータベースの詳細を取得します。
- 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.replica.number | データベースのレプリカ数。 |
database.max.collections | データベース内で許可されるコレクションの最大数。 |
database.force.deny.writing | データベースの書き込み操作を拒否するかどうか。 |
database.force.deny.reading | データベースの読み取り操作を拒否するかどうか。 |
データベースプロパティの変更
次の例では、データベース内に作成できるコレクション数を制限します。
- 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
}
}'
データベースプロパティの削除
次の例では、データベースからコレクション数の上限を削除します。
- 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"
]
}'
データベースの使用
SDK を使用する場合は、再接続することなく、あるデータベースから別のデータベースに切り替えることができます。
RESTful API では、持続接続上でのデータベースの切り替えはサポートされていません。RESTful API リクエストでは、操作が dbName をサポートしている場合、各リクエストボディで対象のデータベースを指定してください。
- 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.
データベースの削除
デフォルトのデータベースは削除できません。データベースを削除する前に、まずそのデータベース内のすべてのコレクションを削除してください。
- 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"
}'