Gerenciando Bancos de Dados

Assim como os motores de banco de dados tradicionais, é possível criar bancos de dados no Milvus e atribuir permissões a usuários específicos para gerenciá-los. Esses usuários terão a autoridade para gerenciar coleções dentro dos bancos de dados. O cluster do Milvus suporta até 64 bancos de dados.

Criando um Banco de Dados

Para criar um banco de dados, primeiro é necessário conectar-se ao cluster do Milvus e preparar um nome:

from pymilvus import connections, db

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

database = db.create_database("livro")

Usando um Banco de Dados

O cluster do Milvus vem com um banco de dados padrão chamado "default". A menos que seja especificado de outra forma, as coleções serão criadas no banco de dados padrão.

Para alterar o banco de dados padrão, siga estas etapas:

db.using_database("livro")

Também é possível definir o banco de dados a ser usado ao se conectar ao cluster do Milvus, como mostrado abaixo:

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

Listando Bancos de Dados

Para recuperar todos os bancos de dados existentes no cluster do Milvus, siga estas etapas:

db.list_database()

['default', 'livro']

Excluindo um Banco de Dados

Para excluir um banco de dados, é necessário primeiro excluir todas as suas coleções. Caso contrário, a exclusão falhará.

db.drop_database("livro")

db.list_database()

['default']

Usando RBAC no Banco de Dados

O RBAC também abrange operações de banco de dados e garante a compatibilidade futura. Na API de Permissão (Conceder / Revogar / Listar Concessão), o termo banco de dados tem os seguintes significados:

  • Se tanto a conexão do Milvus quanto a chamada da API de Permissão não especificarem db_name, banco de dados se refere ao banco de dados padrão.
  • Se a conexão do Milvus especificar db_name, mas as chamadas subsequentes da API de Permissão não, banco de dados se refere ao nome do banco de dados especificado na conexão do Milvus.
  • Se uma chamada da API de Permissão for feita na conexão do Milvus, independentemente de db_name ser especificado, banco de dados se refere ao nome do banco de dados especificado na chamada da API de Permissão.

O trecho de código a seguir é compartilhado entre os blocos abaixo.

from pymilvus import connections, Role

_HOST = '127.0.0.1'
_PORT = '19530'
_ROOT = "root"
_ROOT_PASSWORD = "Milvus"
_ROLE_NAME = "papel_teste"
_PRIVILEGE_INSERT = "inserir"


def conectar_ao_milvus(db_name="default"):
    print(f"Conectando ao Milvus\n")
    connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)

  • Se tanto a conexão do Milvus quanto a chamada da API de Permissão não especificarem db_name, banco de dados se refere ao banco de dados padrão.
conectar_ao_milvus()
role = Role(_ROLE_NAME)
role.create()

conectar_ao_milvus()
role.grant("Coleção", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Coleção", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)

  • Se a conexão do Milvus especificar db_name, mas as chamadas subsequentes da API de Permissão não, banco de dados se refere ao nome do banco de dados especificado na conexão do Milvus.
conectar_ao_milvus(db_name="foo")
role.grant("Coleção", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Coleção", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)

  • Se uma chamada da API de Permissão for feita na conexão do Milvus, independentemente de db_name ser especificado, banco de dados se refere ao nome do banco de dados especificado na chamada da API de Permissão.
db_name = "foo"
conectar_ao_milvus()
role.grant("Coleção", "*", _PRIVILEGE_INSERT, db_name=db_name)
print(role.list_grants(db_name=db_name))
print(role.list_grant("Coleção", "*", db_name=db_name))
role.revoke("Global", "*", _PRIVILEGE_INSERT, db_name=db_name)