قاعدة البيانات
يقدم 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"
}'
إدارة خصائص قاعدة البيانات
كل قاعدة بيانات لها خصائصها الخاصة، يمكنك تعيين خصائص قاعدة البيانات عند إنشاء قاعدة البيانات كما هو موضح في إنشاء قاعدة بيانات أو يمكنك تغيير وإسقاط خصائص أي قاعدة بيانات موجودة.
يسرد الجدول التالي خصائص قاعدة البيانات المحتملة.
اسم الخاصية |
نوع الخاصية |
وصف الخاصية |
|---|---|---|
|
عدد صحيح |
عدد النسخ المتماثلة لقاعدة البيانات المحددة. |
|
سلسلة |
أسماء مجموعات الموارد المرتبطة بقاعدة البيانات المحددة في قائمة مفصولة بفاصلة. |
|
عدد صحيح |
الحد الأقصى لحجم مساحة القرص لقاعدة البيانات المحددة، بالميغابايت (ميغابايت). |
|
عدد صحيح |
الحد الأقصى لعدد المجموعات المسموح بها في قاعدة البيانات المحددة. |
|
منطقية |
ما إذا كان سيتم إجبار قاعدة البيانات المحددة على رفض عمليات الكتابة. |
|
منطقية |
ما إذا كان سيتم إجبار قاعدة البيانات المحددة على رفض عمليات القراءة. |
|
سلسلة |
تحديد المنطقة الزمنية الافتراضية المطبقة على العمليات الحساسة للوقت داخل قاعدة البيانات، خاصةً للحقول |
تغيير خصائص قاعدة البيانات
يمكنك تغيير خصائص قاعدة بيانات موجودة على النحو التالي. يحد المثال التالي من عدد المجموعات التي يمكنك إنشاؤها في قاعدة البيانات.
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 بتعيين قيود الحصص لقاعدة البيانات، مثل الحد الأقصى لعدد المجموعات. للحصول على قائمة شاملة بالقيود، يرجى الرجوع إلى وثائق حدود ميلفوس.