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)