Управление базами данных

Подобно традиционным базовым системам данных, в Milvus можно создавать базы данных и предоставлять определенным пользователям разрешения на их управление. Затем эти пользователи получат полномочия на управление коллекциями внутри баз данных. Кластер Milvus поддерживает до 64 баз данных.

Создание базы данных

Для создания базы данных сначала необходимо подключиться к кластеру Milvus и подготовить имя:

from pymilvus import connections, db

conn = connections.connect(host="127.0.0.1", port=19530)

database = db.create_database("book")

Использование базы данных

В кластере Milvus есть база данных по умолчанию с именем "default". Если не указано иное, коллекции будут создаваться в базе данных по умолчанию.

Чтобы изменить базу данных по умолчанию, выполните следующие шаги:

db.using_database("book")

Также можно установить базу данных для использования при подключении к кластеру Milvus, как показано ниже:

conn = connections.connect(
    host="127.0.0.1",
    port="19530",
    db_name="default"
)

Список баз данных

Для получения списка всех существующих баз данных в кластере Milvus выполните следующие шаги:

db.list_database()

['default', 'book']

Удаление базы данных

Для удаления базы данных необходимо сначала удалить все ее коллекции. Иначе удаление завершится неудачно.

db.drop_database("book")

db.list_database()

['default']

Использование RBAC в базе данных

RBAC также охватывает операции с базами данных и гарантирует обратную совместимость. В API разрешений (Grant / Revoke / List Grant) термин база данных имеет следующие значения:

  • Если как подключение Milvus, так и вызов API разрешений не указывают db_name, база данных будет соответствовать базе данных по умолчанию.
  • Если подключение Milvus указывает db_name, но последующие вызовы API разрешений этого не делают, база данных будет соответствовать имени базы данных, указанной в подключении Milvus.
  • Если вызов API разрешений производится на подключении Milvus, независимо от того, указан ли db_name, база данных будет соответствовать имени базы данных, указанной в вызове API разрешений.

Фрагмент кода ниже используется в блоках далее.

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"Подключение к Milvus\n")
    connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)

  • Если как подключение Milvus, так и вызов API разрешений не указывают db_name, база данных будет соответствовать базе данных по умолчанию.
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)

  • Если подключение Milvus указывает db_name, но последующие вызовы API разрешений этого не делают, база данных будет соответствовать имени базы данных, указанной в подключении 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)

  • Если вызов API разрешений производится на подключении Milvus, независимо от того, указан ли db_name, база данных будет соответствовать имени базы данных, указанной в вызове API разрешений.
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)