Zarządzanie bazami danych
Podobnie jak tradycyjne silniki baz danych, w Milvus możesz tworzyć bazy danych i przydzielać uprawnienia do ich zarządzania konkretnym użytkownikom. Ci użytkownicy będą mieć wówczas uprawnienia do zarządzania kolekcjami w ramach tych baz danych. Klaster Milvus obsługuje do 64 bazy danych.
Tworzenie bazy danych
Aby stworzyć bazę danych, najpierw musisz połączyć się z klastrem Milvus i przygotować nazwę:
from pymilvus import connections, db
conn = connections.connect(host="127.0.0.1", port=19530)
database = db.create_database("book")
Korzystanie z bazy danych
Klaster Milvus jest dostarczany z domyślną bazą danych o nazwie "default". Jeśli nie zostało to inaczej określone, kolekcje będą tworzone w domyślnej bazie danych.
Aby zmienić domyślną bazę danych, postępuj zgodnie z poniższymi krokami:
db.using_database("book")
Możesz również ustawić bazę danych do użycia podczas łączenia się z klastrem Milvus, jak pokazano poniżej:
conn = connections.connect(
host="127.0.0.1",
port="19530",
db_name="default"
)
Wyświetlanie baz danych
Aby wyświetlić wszystkie istniejące bazy danych w klastrze Milvus, postępuj zgodnie z poniższymi krokami:
db.list_database()
['default', 'book']
Usuwanie bazy danych
Aby usunąć bazę danych, najpierw musisz usunąć wszystkie jej kolekcje. W przeciwnym razie operacja usunięcia zakończy się niepowodzeniem.
db.drop_database("book")
db.list_database()
['default']
Korzystanie z RBAC w bazie danych
RBAC obejmuje również operacje na bazie danych i zapewnia zgodność wsteczną. W interfejsie API uprawnień (przyznawanie / cofanie / wyświetlanie przyznanych uprawnień), pojęcie bazy danych ma następujące znaczenia:
- Jeśli zarówno połączenie Milvus, jak i wywołanie API uprawnień nie określają
db_name
, baza danych odnosi się do domyślnej bazy danych. - Jeśli połączenie Milvus określa
db_name
, ale kolejne wywołania API uprawnień nie, baza danych odnosi się do nazwy bazy danych określonej w połączeniu Milvus. - Jeśli wywołane jest wywołanie API uprawnień na połączeniu Milvus, niezależnie od określenia
db_name
, baza danych odnosi się do nazwy bazy danych określonej w wywołaniu API uprawnień.
Poniższy fragment kodu jest współdzielony między blokami poniżej.
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"Łączenie z Milvus\n")
connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)
- Jeśli zarówno połączenie Milvus, jak i wywołanie API uprawnień nie określają
db_name
, baza danych odnosi się do domyślnej bazy danych.
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)
- Jeśli połączenie Milvus określa
db_name
, ale kolejne wywołania API uprawnień nie, baza danych odnosi się do nazwy bazy danych określonej w połączeniu 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)
- Jeśli wywołane jest wywołanie API uprawnień na połączeniu Milvus, niezależnie od określenia
db_name
, baza danych odnosi się do nazwy bazy danych określonej w wywołaniu API uprawnień.
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)