• نبذة عن ميلفوس
  • ابدأ الآن
  • المفاهيم
  • دليل المستخدم
    • المجموعات
    • المخطط وحقول البيانات
    • إدراج وحذف
    • الفهارس
    • البحث وإعادة التصنيف
  • النماذج
  • استيراد البيانات
  • دليل الإدارة
  • الأدوات
  • عمليات الدمج
  • البرامج التعليمية
  • الأسئلة الشائعة
  • 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: "root",
    Password: "Milvus",
})
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" \
-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" \
-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" \
-d '{
    "dbName": "default"
}'

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

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

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

اسم الخاصية

نوع الخاصية

وصف الخاصية

database.replica.number

عدد صحيح

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

database.resource_groups

سلسلة

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

database.diskQuota.mb

عدد صحيح

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

database.max.collections

عدد صحيح

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

database.force.deny.writing

منطقية

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

database.force.deny.reading

منطقية

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

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

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

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" \
-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" \
-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" \
-d '{
    "dbName": "my_database"
}'