Gestione dei database
Similmente ai motori di database tradizionali, è possibile creare database in Milvus e assegnare autorizzazioni a utenti specifici per gestirli. Questi utenti avranno quindi l'autorità per gestire le collezioni all'interno dei database. Il cluster Milvus supporta fino a 64 database.
Creazione di un database
Per creare un database, è necessario connettersi prima al cluster Milvus e preparare un nome:
from pymilvus import connections, db
conn = connections.connect(host="127.0.0.1", port=19530)
database = db.create_database("book")
Utilizzo di un database
Il cluster Milvus dispone di un database predefinito chiamato "default". A meno che non venga specificato diversamente, le collezioni verranno create nel database predefinito.
Per cambiare il database predefinito, seguire questi passaggi:
db.using_database("book")
È inoltre possibile impostare il database da utilizzare durante la connessione al cluster Milvus, come mostrato di seguito:
conn = connections.connect(
host="127.0.0.1",
port="19530",
db_name="default"
)
Elencazione dei database
Per recuperare tutti i database esistenti nel cluster Milvus, seguire questi passaggi:
db.list_database()
['default', 'book']
Eliminazione di un database
Per eliminare un database, è necessario prima eliminare tutte le sue collezioni. Altrimenti, l'eliminazione fallirà.
db.drop_database("book")
db.list_database()
['default']
Utilizzo di RBAC nel database
RBAC copre anche le operazioni sui database e garantisce la compatibilità futura. Nell'API di autorizzazione (Concede / Revoca / Elenca Concessione), il termine database ha i seguenti significati:
- Se sia la connessione Milvus che la chiamata API di autorizzazione non specificano
db_name
, database si riferisce al database predefinito. - Se la connessione Milvus specifica
db_name
, ma le successive chiamate API di autorizzazione no, database si riferisce al nome del database specificato nella connessione Milvus. - Se viene effettuata una chiamata API di autorizzazione sulla connessione Milvus, indipendentemente dal fatto che sia specificato
db_name
, database si riferisce al nome del database specificato nella chiamata API di autorizzazione.
Il seguente snippet di codice è condiviso tra i blocchi seguenti.
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"Connessione a Milvus\n")
connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)
- Se sia la connessione Milvus che la chiamata API di autorizzazione non specificano
db_name
, database si riferisce al database predefinito.
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)
- Se la connessione Milvus specifica
db_name
, ma le successive chiamate API di autorizzazione no, database si riferisce al nome del database specificato nella connessione 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)
- Se viene effettuata una chiamata API di autorizzazione sulla connessione Milvus, indipendentemente dal fatto che sia specificato
db_name
, database si riferisce al nome del database specificato nella chiamata API di autorizzazione.
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)