مدیریت پایگاه‌داده‌ها

مانند موتورهای پایگاه‌داده سنتی، می‌توانید در 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 مجوزها (اعطا / لغو / لیست اعطا)، واژه پایگاه‌داده به معانی زیر استفاده می‌شود:

  • اگر هر دو اتصال 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)