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)