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)