Quản lý Cơ sở dữ liệu
Tương tự như các hệ thống cơ sở dữ liệu truyền thống, bạn có thể tạo cơ sở dữ liệu trong Milvus và gán quyền cho người dùng cụ thể để quản lý chúng. Những người dùng này sau đó sẽ có quyền quản lý bộ sưu tập trong các cơ sở dữ liệu. Cụm Milvus hỗ trợ tối đa 64 cơ sở dữ liệu.
Tạo Cơ sở dữ liệu
Để tạo cơ sở dữ liệu, bạn cần kết nối đến cụm Milvus và chuẩn bị một tên:
from pymilvus import connections, db
conn = connections.connect(host="127.0.0.1", port=19530)
database = db.create_database("book")
Sử dụng Cơ sở dữ liệu
Cụm Milvus đi kèm với một cơ sở dữ liệu mặc định có tên là "default". Trừ khi có chỉ định khác, các bộ sưu tập sẽ được tạo trong cơ sở dữ liệu mặc định.
Để thay đổi cơ sở dữ liệu mặc định, làm theo các bước sau:
db.using_database("book")
Bạn cũng có thể thiết lập cơ sở dữ liệu để sử dụng khi kết nối đến cụm Milvus, như sau:
conn = connections.connect(
host="127.0.0.1",
port="19530",
db_name="default"
)
Liệt kê Cơ sở dữ liệu
Để lấy tất cả cơ sở dữ liệu hiện có trong cụm Milvus, làm theo các bước sau:
db.list_database()
['default', 'book']
Xóa Cơ sở dữ liệu
Để xóa cơ sở dữ liệu, bạn phải trước tiên xóa tất cả các bộ sưu tập của nó. Nếu không, quá trình xóa sẽ thất bại.
db.drop_database("book")
db.list_database()
['default']
Sử dụng RBAC trong Cơ sở dữ liệu
RBAC cũng bao gồm các thao tác cơ sở dữ liệu và đảm bảo tính tương thích tiến lên. Trong API Quyền (Cấp / Thu hồi / Liệt kê Cấp), thuật ngữ cơ sở dữ liệu có các ý nghĩa sau:
- Nếu cả kết nối Milvus và cuộc gọi API Quyền không chỉ định
db_name
, cơ sở dữ liệu sẽ đề cập đến cơ sở dữ liệu mặc định. - Nếu kết nối Milvus chỉ định
db_name
, nhưng cuộc gọi API Quyền tiếp theo không, cơ sở dữ liệu sẽ đề cập đến tên cơ sở dữ liệu được chỉ định trong kết nối Milvus. - Nếu có cuộc gọi API Quyền trên kết nối Milvus, bất kể
db_name
có được chỉ định hay không, cơ sở dữ liệu sẽ đề cập đến tên cơ sở dữ liệu được chỉ định trong cuộc gọi API Quyền.
Đoạn mã dưới đây được chia sẻ giữa các khối dưới đây.
from pymilvus import connections, Role
_HOST = '127.0.0.1'
_PORT = '19530'
_ROOT = "root"
_ROOT_PASSWORD = "Milvus"
_ROLE_NAME = "test_role"
_PRIVILEGE_INSERT = "insert"
def connect_to_milvus(db_name="default"):
print(f"Kết nối đến Milvus\n")
connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)
- Nếu cả kết nối Milvus và cuộc gọi API Quyền không chỉ định
db_name
, cơ sở dữ liệu sẽ đề cập đến cơ sở dữ liệu mặc định.
connect_to_milvus()
role = Role(_ROLE_NAME)
role.create()
connect_to_milvus()
role.grant("Collection", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Collection", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- Nếu kết nối Milvus chỉ định
db_name
, nhưng cuộc gọi API Quyền tiếp theo không, cơ sở dữ liệu sẽ đề cập đến tên cơ sở dữ liệu được chỉ định trong kết nối Milvus.
connect_to_milvus(db_name="foo")
role.grant("Collection", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Collection", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- Nếu có cuộc gọi API Quyền trên kết nối Milvus, bất kể
db_name
có được chỉ định hay không, cơ sở dữ liệu sẽ đề cập đến tên cơ sở dữ liệu được chỉ định trong cuộc gọi API Quyền.
db_name = "foo"
connect_to_milvus()
role.grant("Collection", "*", _PRIVILEGE_INSERT, db_name=db_name)
print(role.list_grants(db_name=db_name))
print(role.list_grant("Collection", "*", db_name=db_name))
role.revoke("Global", "*", _PRIVILEGE_INSERT, db_name=db_name)