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

数据库

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

什么是数据库

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

创建数据库

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

from pymilvus import MilvusClient

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

client.create_database(
db_name="my_database_1"
)

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

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

查看数据库

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

# 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.replica.number

|

整数

|

指定数据库的副本数量。

| |

database.resource_groups

|

字符串

|

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

| |

database.diskQuota.mb

|

整数

|

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

| |

database.max.collections

|

整数

|

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

| |

database.force.deny.writing

|

布尔

|

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

| |

database.force.deny.reading

|

布尔

|

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

|

更改数据库属性

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

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

删除数据库属性

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

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

使用数据库

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

说明

RESTful API 不支持此操作符。

client.use_database(
db_name="my_database_2"
)

删除数据库

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

  • 不能丢弃默认数据库。

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

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

client.drop_database(
db_name="my_database_2"
)