跳到主要内容
版本:v2.5.x

Database

Milvus 在 Collection 之上引入了 数据库 层,为管理和组织数据提供了更有效的方式,同时支持多租户。

什么是 Database

在 Milvus 中,数据库是组织和管理数据的逻辑单元。为了提高数据安全性并实现多租户,你可以创建多个数据库,为不同的应用程序或租户从逻辑上隔离数据。例如,创建一个数据库用于存储用户 A 的数据,另一个数据库用于存储用户 B 的数据。

创建 Database

您可以使用 Milvus RESTful API 或 SDK 以编程方式创建数据库。

Python
from pymilvus import MilvusClient

client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)

client.create_database(
db_name="my_database_1"
)

您还可以在创建数据库时为其设置属性。下面的示例设置了数据库的副本数量。

Python
client.create_database(
db_name="my_database_2",
properties={
"database.replica.number": 3
}
)

查看 Database

您可以使用 Milvus RESTful API 或 SDK 列出所有现有数据库并查看其详细信息。

Python
# List all existing databases
client.list_databases()

# Output
# ['default', 'my_database_1', 'my_database_2']

# Check database details
client.describe_database(
db_name="default"
)

# Output
# {"name": "default"}

管理 Database 属性

每个数据库都有自己的属性,您可以在 创建数据库 时设置数据库属性(如 创建数据库 中所述),也可以更改和删除任何现有数据库的属性。

下表列出了可能的数据库属性。

属性名称

类型

属性描述

database.replica.number

integer

指定数据库的副本数量。

database.resource_groups

string

与指定数据库相关的资源组名称,以通用分隔列表形式显示。

database.diskQuota.mb

integer

指定数据库的最大磁盘空间大小(MB)。

database.max.collections

integer

指定数据库中允许的最大 Collection 数量。

database.force.deny.writing

boolean

是否强制指定的数据库拒绝写操作。

database.force.deny.reading

boolean

是否强制指定的数据库拒绝读取操作。

更改 Database 属性

您可以通过以下方式更改现有数据库的属性。下面的示例限制了可以在数据库中创建的 Collection 数量。

Python
client.alter_database_properties(
db_name="my_database_1",
properties={
"database.max.collections": 10
}
)

删除 Database 属性

您还可以通过如下方式删除数据库属性来重置该属性。下面的示例删除了可以在数据库中创建的 Collection 数量限制。

Python
client.drop_database_properties(
db_name="my_database_1",
property_keys=[
"database.max.collections"
]
)

使用 Database

你可以在不断开与 Milvus 连接的情况下从一个数据库切换到另一个数据库。

说明

RESTful API 不支持此操作。

Python
client.use_database(
db_name="my_database_2"
)

删除 Database

一旦不再需要数据库,就可以删除数据库。请注意

  • 不能丢弃默认数据库。

  • 在删除数据库之前,需要先删除数据库中的所有 Collection。

你可以使用 Milvus RESTful API 或 SDK 以编程方式删除数据库。

Python
client.drop_database(
db_name="my_database_2"
)