Serving クラスターのデータベース
この機能は、Enterprise プラン以上でのみ利用できます。
Serving クラスターのデータベースは、Dedicated Serving クラスターでホストされるコレクションの論理コンテナです。このページでは、Serving クラスターのエンドポイントを通じて、データベースの作成、表示、設定、使用、削除を行います。
このページは、Serving クラスターのデータベースを対象としています。オンデマンドコンピューティングでクエリされるプロジェクトレベルのデータベースについては、オンデマンド検索用のデータベース を参照してください。データベースモデルの比較については、データベースの解説 を参照してください。
事前準備
以下を満たしていることを確認してください。
-
Dedicated Serving クラスターを作成済みであること。
-
Serving クラスターのエンドポイント(例:
https://{cluster-id}.{region}.vectordb.zillizcloud.com:19530)があること。 -
認証トークンがあること。これは、ターゲットクラスターへのアクセス権を持つ API キー、または
username:password形式のクラスター認証情報です。 -
データベースを管理するための Organization Owner または Project Admin アクセス権があること。
Dedicated クラスターが作成されると、デフォルトのデータベースが自動的に作成されます。Dedicated クラスター内には最大 1,024 個のデータベースを作成できます。
データベースを作成する
データベースは、Zilliz Cloud コンソールから、またはプログラムで作成できます。
- Python
- Java
- Go
- Rust
- C++
- NodeJS
- CSharp
- 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);
import (
"context"
"github.com/milvus-io/milvus/client/v3/milvusclient"
)
ctx := context.Background()
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
}
use milvus::v2::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
let client = ClientV2::new(
&ConnectConfig::new()
.uri("YOUR_CLUSTER_ENDPOINT")
.token("YOUR_CLUSTER_TOKEN"),
)
.await?;
client
.create_database(
CreateDatabaseRequest::builder()
.database_name("my_database_1")
.build()?,
)
.await?;
Ok(())
}
#include "milvus/MilvusClientV2.h"
#include <iostream>
auto client = milvus::MilvusClientV2::Create();
auto status = client->Connect(milvus::ConnectParam("YOUR_CLUSTER_ENDPOINT", "YOUR_CLUSTER_TOKEN"));
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
auto request = milvus::CreateDatabaseRequest().WithDatabaseName("my_database_1");
status = client->CreateDatabase(request);
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
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",
});
using Milvus.Client.V2;
using Milvus.Client.V2.Requests.Database;
using Milvus.Client.V2.Types;
MilvusClientV2 client = new(new ConnectConfig
{
Uri = "YOUR_CLUSTER_ENDPOINT",
ApiKey = "YOUR_CLUSTER_TOKEN"
});
await client.CreateDatabaseAsync(new CreateDatabaseReq
{
DatabaseName = "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
- Rust
- C++
- NodeJS
- CSharp
- cURL
client.create_database(
db_name="my_database_2",
properties={
"database.replica.number": 3,
},
)
import io.milvus.v2.service.database.request.CreateDatabaseReq;
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);
import "github.com/milvus-io/milvus/client/v3/milvusclient"
err = client.CreateDatabase(
ctx,
milvusclient.NewCreateDatabaseOption("my_database_2").
WithProperty("database.replica.number", 3),
)
if err != nil {
// handle error
}
use milvus::v2::prelude::*;
use std::collections::HashMap;
client
.create_database(
CreateDatabaseRequest::builder()
.database_name("my_database_2")
.properties(HashMap::from([
("database.replica.number".into(), "3".into()),
]))
.build()?,
)
.await?;
auto request = milvus::CreateDatabaseRequest()
.WithDatabaseName("my_database_2")
.AddProperty("database.replica.number", "3");
status = client->CreateDatabase(request);
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
await client.createDatabase({
db_name: "my_database_2",
properties: {
"database.replica.number": 3,
},
});
using Milvus.Client.V2.Requests.Database;
await client.CreateDatabaseAsync(new CreateDatabaseReq
{
DatabaseName = "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
- Rust
- C++
- NodeJS
- CSharp
- 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()
);
import (
"log"
"github.com/milvus-io/milvus/client/v3/milvusclient"
)
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)
use milvus::v2::prelude::*;
let databases = client
.list_databases(ListDatabasesRequest::builder().build()?)
.await?;
println!("{:?}", databases);
let database = client
.describe_database(
DescribeDatabaseRequest::builder()
.database_name("default")
.build()?,
)
.await?;
println!("{:?}", database);
milvus::ListDatabasesResponse listResponse;
status = client->ListDatabases(milvus::ListDatabasesRequest(), listResponse);
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
milvus::DescribeDatabaseResponse describeResponse;
status = client->DescribeDatabase(
milvus::DescribeDatabaseRequest().WithDatabaseName("default"),
describeResponse);
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
const databases = await client.listDatabases();
console.log(databases);
const database = await client.describeDatabase({
db_name: "default",
});
console.log(database);
using Milvus.Client.V2.Requests.Database;
using Milvus.Client.V2.Responses.Database;
ListDatabasesResp databases = await client.ListDatabasesAsync(new ListDatabasesReq());
Console.WriteLine(string.Join(",", databases.DatabaseNames));
DescribeDatabaseResp database = await client.DescribeDatabaseAsync(new DescribeDatabaseReq
{
DatabaseName = "default"
});
Console.WriteLine(database.DatabaseName);
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"
}'
データベースプロパティを管理する
Serving クラスターのデータベースでは、以下のデータベースプロパティを設定できます。
| プロパティ | 説明 |
|---|---|
database.replica.number | データベースのレプリカ数です。 |
database.max.collections | データベースで許可されるコレクションの最大数です。 |
database.force.deny.writing | データベースの書き込み操作を拒否するかどうかです。 |
database.force.deny.reading | データベースの読み取り操作を拒否するかどうかです。 |
データベースプロパティを変更する
次の例では、データベース内に作成できるコレクション数を制限します。
- Python
- Java
- Go
- Rust
- C++
- NodeJS
- CSharp
- 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()
);
import "github.com/milvus-io/milvus/client/v3/milvusclient"
err = client.AlterDatabaseProperties(
ctx,
milvusclient.NewAlterDatabasePropertiesOption("my_database_1").
WithProperty("database.max.collections", 10),
)
if err != nil {
// handle error
}
use milvus::v2::prelude::*;
client
.alter_database_properties(
AlterDatabasePropertiesRequest::builder()
.database_name("my_database_1")
.property("database.max.collections", "10")
.build()?,
)
.await?;
auto request = milvus::AlterDatabasePropertiesRequest()
.WithDatabaseName("my_database_1")
.AddProperty("database.max.collections", "10");
status = client->AlterDatabaseProperties(request);
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
await client.alterDatabaseProperties({
db_name: "my_database_1",
properties: {
"database.max.collections": 10,
},
});
using Milvus.Client.V2.Requests.Database;
await client.AlterDatabasePropertiesAsync(new AlterDatabasePropertiesReq
{
DatabaseName = "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
- Rust
- C++
- NodeJS
- CSharp
- 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()
);
import "github.com/milvus-io/milvus/client/v3/milvusclient"
err = client.DropDatabaseProperties(
ctx,
milvusclient.NewDropDatabasePropertiesOption("my_database_1", "database.max.collections"),
)
if err != nil {
// handle error
}
use milvus::v2::prelude::*;
client
.drop_database_properties(
DropDatabasePropertiesRequest::builder()
.database_name("my_database_1")
.property_keys(["database.max.collections"])
.build()?,
)
.await?;
auto request = milvus::DropDatabasePropertiesRequest()
.WithDatabaseName("my_database_1")
.AddPropertyKey("database.max.collections");
status = client->DropDatabaseProperties(request);
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
await client.dropDatabaseProperties({
db_name: "my_database_1",
property_keys: ["database.max.collections"],
});
using Milvus.Client.V2.Requests.Database;
await client.DropDatabasePropertiesAsync(new DropDatabasePropertiesReq
{
DatabaseName = "my_database_1",
DeleteKeys = ["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
- Rust
- C++
- NodeJS
- CSharp
- cURL
client.use_database(
db_name="my_database_2",
)
client.useDatabase("my_database_2");
import "github.com/milvus-io/milvus/client/v3/milvusclient"
err = client.UseDatabase(ctx, milvusclient.NewUseDatabaseOption("my_database_2"))
if err != nil {
// handle error
}
client.use_database("my_database_2").await?;
status = client->UseDatabase("my_database_2");
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
await client.useDatabase({
db_name: "my_database_2",
});
using Milvus.Client.V2.Requests.Utility;
await client.UseDatabaseAsync(new UseDatabaseReq
{
DatabaseName = "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
- Rust
- C++
- NodeJS
- CSharp
- 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()
);
import "github.com/milvus-io/milvus/client/v3/milvusclient"
err = client.DropDatabase(ctx, milvusclient.NewDropDatabaseOption("my_database_2"))
if err != nil {
// handle error
}
use milvus::v2::prelude::*;
client
.drop_database(
DropDatabaseRequest::builder()
.database_name("my_database_2")
.build()?,
)
.await?;
auto request = milvus::DropDatabaseRequest().WithDatabaseName("my_database_2");
status = client->DropDatabase(request);
if (!status.IsOk()) {
std::cerr << status.Message() << std::endl;
}
await client.dropDatabase({
db_name: "my_database_2",
});
using Milvus.Client.V2.Requests.Database;
await client.DropDatabaseAsync(new DropDatabaseReq
{
DatabaseName = "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"
}'