Verwalten von Datenbanken
Ähnlich wie bei herkömmlichen Datenbank-Engines können Sie in Milvus Datenbanken erstellen und bestimmten Benutzern Berechtigungen zur Verwaltung zuweisen. Diese Benutzer haben dann die Autorität, Kollektionen innerhalb der Datenbanken zu verwalten. Der Milvus-Cluster unterstützt bis zu 64 Datenbanken.
Erstellen einer Datenbank
Um eine Datenbank zu erstellen, müssen Sie zunächst eine Verbindung zum Milvus-Cluster herstellen und einen Namen vorbereiten:
from pymilvus import connections, db
conn = connections.connect(host="127.0.0.1", port=19530)
database = db.create_database("Buch")
Verwenden einer Datenbank
Der Milvus-Cluster wird standardmäßig mit einer Datenbank namens "default" geliefert. Sofern nicht anders angegeben, werden Kollektionen in der Standarddatenbank erstellt.
Um die Standarddatenbank zu ändern, befolgen Sie diese Schritte:
db.using_database("Buch")
Sie können auch die zu verwendende Datenbank beim Verbinden mit dem Milvus-Cluster festlegen, wie unten gezeigt:
conn = connections.connect(
host="127.0.0.1",
port="19530",
db_name="default"
)
Auflisten von Datenbanken
Um alle vorhandenen Datenbanken im Milvus-Cluster abzurufen, befolgen Sie diese Schritte:
db.list_database()
['default', 'Buch']
Löschen einer Datenbank
Um eine Datenbank zu löschen, müssen Sie zuerst alle zugehörigen Kollektionen löschen. Andernfalls schlägt das Löschen fehl.
db.drop_database("Buch")
db.list_database()
['default']
Verwendung von RBAC in der Datenbank
RBAC umfasst auch Datenbankoperationen und gewährleistet die Vorwärtskompatibilität. In der Berechtigungs-API (Grant / Revoke / List Grant) hat der Begriff Datenbank folgende Bedeutungen:
- Wenn sowohl die Milvus-Verbindung als auch der Berechtigungs-API-Aufruf
db_name
nicht spezifizieren, bezieht sich Datenbank auf die Standarddatenbank. - Wenn die Milvus-Verbindung
db_name
spezifiziert, aber nachfolgende Berechtigungs-API-Aufrufe dies nicht tun, bezieht sich Datenbank auf den in der Milvus-Verbindung angegebenen Datenbanknamen. - Wenn ein Berechtigungs-API-Aufruf auf der Milvus-Verbindung erfolgt, unabhängig davon, ob
db_name
spezifiziert ist, bezieht sich Datenbank auf den im Berechtigungs-API-Aufruf angegebenen Datenbanknamen.
Der folgende Code-Schnipsel wird zwischen den unten stehenden Blöcken geteilt.
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"Verbindung zu Milvus herstellen\n")
connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)
- Wenn sowohl die Milvus-Verbindung als auch der Berechtigungs-API-Aufruf
db_name
nicht spezifizieren, bezieht sich Datenbank auf die Standarddatenbank.
connect_to_milvus()
role = Role(_ROLE_NAME)
role.create()
connect_to_milvus()
role.grant("Kollektion", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Kollektion", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- Wenn die Milvus-Verbindung
db_name
spezifiziert, aber nachfolgende Berechtigungs-API-Aufrufe dies nicht tun, bezieht sich Datenbank auf den in der Milvus-Verbindung angegebenen Datenbanknamen.
connect_to_milvus(db_name="foo")
role.grant("Kollektion", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Kollektion", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- Wenn ein Berechtigungs-API-Aufruf auf der Milvus-Verbindung erfolgt, unabhängig davon, ob
db_name
spezifiziert ist, bezieht sich Datenbank auf den im Berechtigungs-API-Aufruf angegebenen Datenbanknamen.
db_name = "foo"
connect_to_milvus()
role.grant("Kollektion", "*", _PRIVILEGE_INSERT, db_name=db_name)
print(role.list_grants(db_name=db_name))
print(role.list_grant("Kollektion", "*", db_name=db_name))
role.revoke("Global", "*", _PRIVILEGE_INSERT, db_name=db_name)