• نبذة عن ميلفوس
  • ابدأ الآن
  • المفاهيم
  • دليل المستخدم
    • المجموعات
    • المخطط وحقول البيانات
    • إدراج وحذف
    • الفهارس
    • بحث
    • التضمين وإعادة التصنيف
    • تحسين التخزين
  • استيراد البيانات
  • أدوات الذكاء الاصطناعي
  • دليل الإدارة
  • الأدوات
  • عمليات الدمج
  • البرامج التعليمية
  • الأسئلة الشائعة
  • API Reference

قاعدة البيانات

يقدم Milvus طبقة قاعدة بيانات فوق المجموعات، مما يوفر طريقة أكثر فعالية لإدارة بياناتك وتنظيمها مع دعم تعدد الإيجار.

ما هي قاعدة البيانات

تعمل قاعدة البيانات في ملفوس كوحدة منطقية لتنظيم البيانات وإدارتها. لتعزيز أمان البيانات وتحقيق الإيجار المتعدد، يمكنك إنشاء قواعد بيانات متعددة لعزل البيانات منطقياً لتطبيقات أو مستأجرين مختلفين. على سبيل المثال، يمكنك إنشاء قاعدة بيانات لتخزين بيانات المستخدم "أ" وقاعدة بيانات أخرى للمستخدم "ب".

إنشاء قاعدة بيانات

يمكنك استخدام واجهة برمجة تطبيقات Milvus RESTful API أو حزم SDK لإنشاء البيانات برمجيًا.

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

client.create_database(
    db_name="my_database_1"
)
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.service.database.request.*;

ConnectConfig config = ConnectConfig.builder()
        .uri("http://localhost:19530")
        .token("root:Milvus")
        .build();
MilvusClientV2 client = new MilvusClientV2(config);

CreateDatabaseReq createDatabaseReq = CreateDatabaseReq.builder()
        .databaseName("my_database_1")
        .build();
client.createDatabase(createDatabaseReq);
import {MilvusClient} from '@zilliz/milvus2-sdk-node';
const client = new MilvusClient({ 
    address: "http://localhost:19530",
    token: 'root:Milvus' 
});

await client.createDatabase({
    db_name: "my_database_1"
 });
cli, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
    Address: "localhost:19530",
    Username: "Milvus",
    Password: "root",
})
if err != nil {
    // handle err
}

err = cli.CreateDatabase(ctx, milvusclient.NewCreateDatabaseOption("my_database_1"))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "dbName": "my_database_1"
}'

يمكنك أيضًا تعيين خصائص لقاعدة البيانات عند إنشائها. يقوم المثال التالي بتعيين عدد النسخ المتماثلة لقاعدة البيانات.

client.create_database(
    db_name="my_database_2",
    properties={
        "database.replica.number": 3
    }
)
Map<String, String> properties = new HashMap<>();
properties.put("database.replica.number", "3");
CreateDatabaseReq createDatabaseReq = CreateDatabaseReq.builder()
        .databaseName("my_database_2")
        .properties(properties)
        .build();
client.createDatabase(createDatabaseReq);
await client.createDatabase({
    db_name: "my_database_2",
    properties: {
        "database.replica.number": 3
    }
});
err := cli.CreateDatabase(ctx, milvusclient.NewCreateDatabaseOption("my_database_2").WithProperty("database.replica.number", 3))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "dbName": "my_database_2",
    "properties": {
        "database.replica.number": 3
    }
}'

عرض قواعد البيانات

يمكنك استخدام واجهة برمجة تطبيقات Milvus RESTful API أو SDKs لسرد جميع قواعد البيانات الموجودة وعرض تفاصيلها.

# List all existing databases
client.list_databases()

# Output
# ['default', 'my_database_1', 'my_database_2']

# Check database details
client.describe_database(
    db_name="default"
)

# Output
# {"name": "default"}
import io.milvus.v2.service.database.response.*;

ListDatabasesResp listDatabasesResp = client.listDatabases();

DescribeDatabaseResp descDBResp = client.describeDatabase(DescribeDatabaseReq.builder()
        .databaseName("default")
        .build());
await client.describeDatabase({ 
    db_name: 'default'
});
// List all existing databases
databases, err := cli.ListDatabase(ctx, milvusclient.NewListDatabaseOption())
if err != nil {
    // handle err
}
log.Println(databases)

db, err := cli.DescribeDatabase(ctx, milvusclient.NewDescribeDatabaseOption("default"))
if err != nil {
    // handle err
}
log.Println(db)
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "dbName": "default"
}'

إدارة خصائص قاعدة البيانات

كل قاعدة بيانات لها خصائصها الخاصة، يمكنك تعيين خصائص قاعدة البيانات عند إنشاء قاعدة البيانات كما هو موضح في إنشاء قاعدة بيانات أو يمكنك تغيير وإسقاط خصائص أي قاعدة بيانات موجودة.

يسرد الجدول التالي خصائص قاعدة البيانات المحتملة.

اسم الخاصية

نوع الخاصية

وصف الخاصية

database.replica.number

عدد صحيح

عدد النسخ المتماثلة لقاعدة البيانات المحددة.

database.resource_groups

سلسلة

أسماء مجموعات الموارد المرتبطة بقاعدة البيانات المحددة في قائمة مفصولة بفاصلة.

database.diskQuota.mb

عدد صحيح

الحد الأقصى لحجم مساحة القرص لقاعدة البيانات المحددة، بالميغابايت (ميغابايت).

database.max.collections

عدد صحيح

الحد الأقصى لعدد المجموعات المسموح بها في قاعدة البيانات المحددة.

database.force.deny.writing

منطقية

ما إذا كان سيتم إجبار قاعدة البيانات المحددة على رفض عمليات الكتابة.

database.force.deny.reading

منطقية

ما إذا كان سيتم إجبار قاعدة البيانات المحددة على رفض عمليات القراءة.

timezone

سلسلة

تحديد المنطقة الزمنية الافتراضية المطبقة على العمليات الحساسة للوقت داخل قاعدة البيانات، خاصةً للحقول TIMESTAMPTZ. ترث المجموعات المنطقة الزمنية لقاعدة البيانات ما لم يتم تعيين منطقة زمنية على مستوى المجموعة. يمكن أن تتجاوز معلمة المنطقة الزمنية على مستوى الاستعلام مؤقتًا كلاً من المنطقة الزمنية الافتراضية لقاعدة البيانات والمجموعات. يجب أن تكون القيمة معرّف منطقة زمنية صالحة ل IANA (على سبيل المثال، آسيا/شنغهاي، أمريكا/شيكاغو، أو UTC). للحصول على تفاصيل حول كيفية استخدام حقل TIMESTAMPTZ ، راجع حقل TIMESTAMPTZ.

تغيير خصائص قاعدة البيانات

يمكنك تغيير خصائص قاعدة بيانات موجودة على النحو التالي. يحد المثال التالي من عدد المجموعات التي يمكنك إنشاؤها في قاعدة البيانات.

client.alter_database_properties(
    db_name="my_database_1",
    properties={
        "database.max.collections": 10
    }
)
client.alterDatabaseProperties(AlterDatabasePropertiesReq.builder()
        .databaseName("my_database_1")
        .property("database.max.collections", "10")
        .build());
await milvusClient.alterDatabaseProperties({
  db_name: "my_database_1",
  properties: {"database.max.collections", "10" },
})
err := cli.AlterDatabaseProperties(ctx, milvusclient.NewAlterDatabasePropertiesOption("my_database_1").
    WithProperty("database.max.collections", 1))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/alter" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "dbName": "my_database",
    "properties": {
        "database.max.collections": 10
    }
}'

إسقاط خصائص قاعدة البيانات

يمكنك أيضًا إعادة تعيين خاصية قاعدة بيانات عن طريق إسقاطها كما يلي. يزيل المثال التالي الحد من عدد المجموعات التي يمكنك إنشاؤها في قاعدة البيانات.

client.drop_database_properties(
    db_name="my_database_1",
    property_keys=[
        "database.max.collections"
    ]
)
client.dropDatabaseProperties(DropDatabasePropertiesReq.builder()
        .databaseName("my_database_1")
        .propertyKeys(Collections.singletonList("database.max.collections"))
        .build());
await milvusClient.dropDatabaseProperties({
  db_name: my_database_1,
  properties: ["database.max.collections"],
});
err := cli.DropDatabaseProperties(ctx, milvusclient.NewDropDatabasePropertiesOption("my_database_1", "database.max.collections"))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/alter" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "dbName": "my_database",
    "propertyKeys": [
        "database.max.collections"
    ]
}'

استخدام قاعدة البيانات

يمكنك التبديل من قاعدة بيانات إلى أخرى دون قطع الاتصال بـ Milvus.

واجهة برمجة تطبيقات RESTful لا تدعم هذه العملية.

client.use_database(
    db_name="my_database_2"
)
client.useDatabase("my_database_2");
await milvusClient.useDatabase({
  db_name: "my_database_2",
});
err = cli.UseDatabase(ctx, milvusclient.NewUseDatabaseOption("my_database_2"))
if err != nil {
    // handle err
}
# This operation is unsupported because RESTful does not provide a persistent connection.
# As a workaround, initiate the required request again with the target database.

إسقاط قاعدة البيانات

بمجرد انتفاء الحاجة إلى قاعدة البيانات، يمكنك إسقاط قاعدة البيانات. لاحظ أن:

  • لا يمكن إسقاط قواعد البيانات الافتراضية.

  • قبل إسقاط قاعدة البيانات، تحتاج إلى إسقاط جميع المجموعات في قاعدة البيانات أولاً.

يمكنك استخدام واجهة برمجة تطبيقات Milvus RESTful API أو SDKs لإنشاء البيانات برمجيًا.

client.drop_database(
    db_name="my_database_2"
)
client.dropDatabase(DropDatabaseReq.builder()
        .databaseName("my_database_2")
        .build());
await milvusClient.dropDatabase({
  db_name: "my_database_2",
});
err = cli.DropDatabase(ctx, milvusclient.NewDropDatabaseOption("my_database_2"))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/drop" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
    "dbName": "my_database"
}'

الأسئلة الشائعة

كيف يمكنني إدارة الأذونات لقاعدة البيانات؟

يستخدم Milvus التحكم في الوصول المستند إلى الدور (RBAC) لإدارة الأذونات. يمكنك إنشاء أدوار بامتيازات محددة وتعيينها للمستخدمين، وبالتالي التحكم في وصولهم إلى قواعد البيانات المختلفة. لمزيد من التفاصيل، راجع وثائق RBAC.

هل هناك أي قيود على الحصص لقاعدة البيانات؟

نعم، يسمح لك Milvus بتعيين قيود الحصص لقاعدة البيانات، مثل الحد الأقصى لعدد المجموعات. للحصول على قائمة شاملة بالقيود، يرجى الرجوع إلى وثائق حدود ميلفوس.