跳到主要内容
版本:v2.6.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

|

布尔

|

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

| |

timezone

|

字符串

|

指定应用于数据库内时间敏感操作的默认时区,尤其是TIMESTAMPTZ 字段。除非设置了 Collection 级时区,否则 Collection 将继承数据库时区。查询级时区参数可暂时覆盖数据库和 Collection 的默认时区。该值必须是有效的IANA 时区标识符(例如,亚洲/上海美国/芝加哥UTC)。有关如何使用TIMESTAMPTZ 字段的详细信息,请参阅TIMESTAMPTZ 字段

|

更改数据库属性

您可以按以下方式更改现有数据库的属性。下面的示例限制了您可以在数据库中创建的 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"
)

常见问题

如何管理数据库的权限?

Milvus 使用基于角色的访问控制(RBAC)来管理权限。您可以创建具有特定权限的角色,并将其分配给用户,从而控制他们对不同数据库的访问。有关详细信息,请参阅RBAC 文档

数据库有配额限制吗?

是的,Milvus 允许您为数据库设置配额限制,如 Collection 的最大数量。有关限制的全面列表,请参阅Milvus 限制文档