การจัดการฐานข้อมูล

เหมือนกับเครื่องมือฐานข้อมูล传统 คุณสามารถสร้างฐานข้อมูลใน Milvus และกำหนดสิทธิ์ให้ผู้ใช้เฉพาะเพื่อจัดการเค้าโครงข้อมูล เหล่านี้จะได้รับอำนาจในการจัดการคอลเลกชันภายในฐานข้อมูล คลัสเตอร์ Milvus รองรับฐานข้อมูลได้สูงสุด 64 ฐานข้อมูล

การสร้างฐานข้อมูล

เพื่อสร้างฐานข้อมูล คุณต้องเชื่อมต่อกับคลัสเตอร์ Milvus และเตรียมชื่อก่อน:

from pymilvus import connections, db

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

database = db.create_database("book")

การใช้งานฐานข้อมูล

คลัสเตอร์ Milvus มาพร้อมกับฐานข้อมูลเริ่มต้นที่มีชื่อ "default" หากไม่ระบุเป็นอย่างอื่น คอลเลกชันจะถูกสร้างในฐานข้อมูลเริ่มต้น

เพื่อเปลี่ยนฐานข้อมูลเริ่มต้น ทำตามขั้นตอนนี้:

db.using_database("book")

คุณยังสามารถตั้งค่าฐานข้อมูลที่จะใช้เมื่อเชื่อมต่อกับคลัสเตอร์ Milvus ดังตัวอย่างนี้:

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

รายการฐานข้อมูล

เพื่อเรียกดูฐานข้อมูลทั้งหมดที่มีในคลัสเตอร์ Milvus ทำตามขั้นตอนนี้:

db.list_database()

['default', 'book']

การลบฐานข้อมูล

เพื่อลบฐานข้อมูล คุณจำเป็นต้องลบคอลเลกชันทั้งหมดของฐานข้อมูลก่อน ไม่งั้นการลบจะล้มเหลว

db.drop_database("book")

db.list_database()

['default']

การใช้ RBAC ในฐานข้อมูล

RBAC ยังครอบคลุมการดำเนินการฐานข้อมูลและให้ความเข้ากันได้กับเวอร์ชันล่วงหน้า ใน API สิทธิ์ (Grant / Revoke / List Grant) ที่ระบุให้ คำว่า ฐานข้อมูล มีความหมายต่อไปนี้:

  • หากทั้งการเชื่อมต่อ Milvus และการเรียกใช้ API สิทธิ์ไม่ระบุ db_name ฐานข้อมูล จะหมายถึง ฐานข้อมูลเริ่มต้น
  • หากการเชื่อมต่อ Milvus ระบุ db_name แต่การเรียกใช้งาน API สิทธิ์ไม่ระบุ ฐานข้อมูล จะหมายถึงชื่อฐานข้อมูลที่ระบุในการเชื่อมต่อ Milvus
  • หากมีการเรียกใช้งาน API สิทธิ์บนการเชื่อมต่อ Milvus ไม่ว่าจะระบุ db_name หรือไม่ ฐานข้อมูล จะหมายถึงชื่อฐานข้อมูลที่ระบุในการเรียกใช้งาน API สิทธิ์

โค้ดตัวอย่างด้านล่างนี้ถูกแชร์ระหว่างบล็อคด้านล่างนี้.

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"เชื่อมต่อกับ Milvus\n")
    connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)

  • หากทั้งการเชื่อมต่อ Milvus และการเรียกใช้ API สิทธิ์ไม่ระบุ db_name ฐานข้อมูล จะหมายถึง ฐานข้อมูลเริ่มต้น.
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)

  • หากการเชื่อมต่อ Milvus ระบุ db_name แต่การเรียกใช้งาน API สิทธิ์ไม่ระบุ ฐานข้อมูล จะหมายถึงชื่อฐานข้อมูลที่ระบุในการเชื่อมต่อ 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)

  • หากมีการเรียกใช้งาน API สิทธิ์บนการเชื่อมต่อ Milvus ไม่ว่าจะระบุ db_name หรือไม่ ฐานข้อมูล จะหมายถึงชื่อฐานข้อมูลที่ระบุในการเรียกใช้งาน API สิทธิ์.
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)