Mengelola Basis Data

Sama seperti mesin basis data tradisional, Anda dapat membuat basis data di Milvus dan memberikan izin kepada pengguna tertentu untuk mengelolanya. Pengguna ini akan memiliki otoritas untuk mengelola kumpulan data dalam basis data. Klaster Milvus mendukung hingga 64 basis data.

Membuat Basis Data

Untuk membuat basis data, Anda perlu terlebih dahulu terhubung ke klaster Milvus dan menyiapkan sebuah nama:

from pymilvus import connections, db

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

database = db.create_database("book")

Menggunakan Basis Data

Klaster Milvus dilengkapi dengan basis data default bernama "default". Kecuali ditentukan sebaliknya, kumpulan data akan dibuat dalam basis data default.

Untuk mengubah basis data default, ikuti langkah berikut:

db.using_database("book")

Anda juga dapat mengatur basis data yang akan digunakan saat terhubung ke klaster Milvus, seperti yang ditunjukkan di bawah ini:

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

Menampilkan Basis Data

Untuk menampilkan semua basis data yang ada dalam klaster Milvus, ikuti langkah berikut:

db.list_database()

['default', 'book']

Menghapus Basis Data

Untuk menghapus basis data, Anda harus terlebih dahulu menghapus semua kumpulan datanya. Jika tidak, penghapusan akan gagal.

db.drop_database("book")

db.list_database()

['default']

Menggunakan RBAC dalam Basis Data

RBAC juga mencakup operasi basis data dan memastikan kompatibilitas ke depan. Pada API Izin (Berikan / Cabut / Daftar Berikan), istilah basis data memiliki makna berikut:

  • Jika baik koneksi Milvus maupun panggilan API Izin tidak menentukan db_name, basis data merujuk pada basis data default.
  • Jika koneksi Milvus menentukan db_name, tetapi panggilan API Izin selanjutnya tidak, basis data merujuk pada nama basis data yang ditentukan dalam koneksi Milvus.
  • Jika panggilan API Izin dilakukan pada koneksi Milvus, tanpa memperhatikan apakah db_name ditentukan, basis data merujuk pada nama basis data yang ditentukan dalam panggilan API Izin.

Potongan kode berikut dibagikan di antara blok-blok di bawah ini.

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"Terhubung ke Milvus\n")
    connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)

  • Jika baik koneksi Milvus maupun panggilan API Izin tidak menentukan db_name, basis data merujuk pada basis data default.
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)

  • Jika koneksi Milvus menentukan db_name, tetapi panggilan API Izin selanjutnya tidak, basis data merujuk pada nama basis data yang ditentukan dalam koneksi 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)

  • Jika panggilan API Izin dilakukan pada koneksi Milvus, tanpa memperhatikan apakah db_name ditentukan, basis data merujuk pada nama basis data yang ditentukan dalam panggilan API Izin.
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)