Gestión de bases de datos
Al igual que los motores de base de datos tradicionales, puedes crear bases de datos en Milvus y asignar permisos a usuarios específicos para gestionarlas. Estos usuarios tendrán la autoridad para gestionar colecciones dentro de las bases de datos. El clúster de Milvus admite hasta 64 bases de datos.
Creación de una base de datos
Para crear una base de datos, primero debes conectarte al clúster de Milvus y preparar un nombre:
from pymilvus import connections, db
conn = connections.connect(host="127.0.0.1", port=19530)
database = db.create_database("libro")
Uso de una base de datos
El clúster de Milvus viene con una base de datos predeterminada llamada "default". A menos que se especifique lo contrario, las colecciones se crearán en la base de datos predeterminada.
Para cambiar la base de datos predeterminada, sigue estos pasos:
db.using_database("libro")
También puedes establecer la base de datos a utilizar al conectarte al clúster de Milvus, como se muestra a continuación:
conn = connections.connect(
host="127.0.0.1",
port="19530",
db_name="default"
)
Listado de bases de datos
Para recuperar todas las bases de datos existentes en el clúster de Milvus, sigue estos pasos:
db.list_database()
['default', 'libro']
Eliminación de una base de datos
Para eliminar una base de datos, primero debes eliminar todas sus colecciones. De lo contrario, la eliminación fallará.
db.drop_database("libro")
db.list_database()
['default']
Uso de RBAC en la base de datos
RBAC también abarca las operaciones de base de datos y garantiza la compatibilidad futura. En la API de Permisos (Conceder / Revocar / Listar Concesión), el término base de datos tiene los siguientes significados:
- Si tanto la conexión de Milvus como la llamada a la API de Permisos no especifican
db_name
, base de datos se refiere a la base de datos predeterminada. - Si la conexión de Milvus especifica
db_name
, pero las llamadas subsecuentes a la API de Permisos no lo hacen, base de datos se refiere al nombre de la base de datos especificado en la conexión de Milvus. - Si se realiza una llamada a la API de Permisos en la conexión de Milvus, independientemente de si se especifica
db_name
, base de datos se refiere al nombre de la base de datos especificado en la llamada a la API de Permisos.
El siguiente fragmento de código se comparte entre los bloques a continuación.
from pymilvus import connections, Role
_HOST = '127.0.0.1'
_PORT = '19530'
_ROOT = "root"
_ROOT_PASSWORD = "Milvus"
_ROLE_NAME = "rol_prueba"
_PRIVILEGE_INSERT = "insert"
def connect_to_milvus(db_name="default"):
print(f"Conectando a Milvus\n")
connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)
- Si tanto la conexión de Milvus como la llamada a la API de Permisos no especifican
db_name
, base de datos se refiere a la base de datos predeterminada.
connect_to_milvus()
role = Role(_ROLE_NAME)
role.create()
connect_to_milvus()
role.grant("Colección", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Colección", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- Si la conexión de Milvus especifica
db_name
, pero las llamadas subsecuentes a la API de Permisos no lo hacen, base de datos se refiere al nombre de la base de datos especificado en la conexión de Milvus.
connect_to_milvus(db_name="foo")
role.grant("Colección", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Colección", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- Si se realiza una llamada a la API de Permisos en la conexión de Milvus, independientemente de si se especifica
db_name
, base de datos se refiere al nombre de la base de datos especificado en la llamada a la API de Permisos.
db_name = "foo"
connect_to_milvus()
role.grant("Colección", "*", _PRIVILEGE_INSERT, db_name=db_name)
print(role.list_grants(db_name=db_name))
print(role.list_grant("Colección", "*", db_name=db_name))
role.revoke("Global", "*", _PRIVILEGE_INSERT, db_name=db_name)