إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا الدليل، استخدم الميزة executeBulkOperations في Azure SDK ل JavaScript لتنفيذ عمليات إنشاء وتحديث جماعي في Azure Cosmos DB ل NoSQL. تقوم هذه الميزة بضبط التزامن لكل قسم، وتتعامل تلقائيا مع منطق إعادة المحاولة لكل عملية فردية، وتنفذ كميات كبيرة (100+) من العمليات. تقوم هذه الميزة تلقائيا بضبط التزامن ديناميكيا عن طريق زيادة نجاح المكالمات دون تقليل التقييد والتصغير عند حدوث التقييد (التقييث).
المتطلبات الأساسية
حساب Azure Cosmos DB ل NoSQL موجود
- إذا لم يكن لديك حساب موجود، أنشئ حسابا جديدا.
Node.js 22.x أو أحدث
قم بتهيئة بيئة التطوير الخاصة بك
ابدأ بإنشاء بيئة تطوير مع مشروع أولي وجميع تبعيات المطورين. لهذا المشروع، ستقوم بتثبيت @azure/cosmos ملف تطوير البرمجيات من Azure لجافا سكريبت كنوع من التطوير.
افتح طرفية في مجلد فارغ.
قم بتهيئة مشروع Node.js جديد.
npm initقم بتحديث ملفك الجديد
package.jsonبهذا المحتوى.{ "main": "app.js", "scripts": { "start": "node app.js" } }تثبيت الحزمة
@azure/cosmosمن Node Package Manager (npm).npm install --save @azure/cosmosمهم
ميزة التنفيذ الجماعي متوفرة في الإصدارات 4.3 أو الأحدث من المكتبة
@azure/cosmosفي مجموعة تطوير تطوير الأزرار لجافا سكريبت. إذا كنت تستخدم نسخة أقدم من SDK، يجب عليك الانتقال إلى إصدار أحدث لاستخدام هذه الميزات.
قم بتكوين الاتصال والموارد الخاصة بك
الآن، استخدم الحزمة المثبتة لتكوين اتصالك بحساب Azure Cosmos DB موجود لحساب NoSQL.
استورد النوع
CosmosClientوالأنواعBulkOperationTypeالداعمةPatchOperationType.const { BulkOperationType, PatchOperationType, CosmosClient } = require('@azure/cosmos');أنشئ نسخة جديدة من
CosmosClientالفئة تمرر بيانات الاعتماد المناسبة لحسابك.const client = new CosmosClient({ endpoint: '<azure-cosmos-db-nosql-account-endpoint>', credential });أنشئ ثوابت للمؤشرات إلى قاعدة البيانات وموارد الحاويات الموجودة لديك.
const database = client.database('<database-name>'); const container = database.container('<container-name>');
إنشاء عملية متعددة الترقيات بكميات كبيرة
ابدأ بإجراء عملية بكميات كبيرة تفوق على عنصرين. كلا العنصرين مكونان من مجموعة من OperationInput العناصر.
Upsert ويجب Create أن تشمل العمليات، على الأقل، المعرف الفريد (id) وحقول مفتاح التقسيم .
إشعار
في هذا المثال، مفتاح التقسيم هو الحقل /category .
أنشئ ثابتين ليتم إدخال العناصر إلى الحاوية.
const yambdaSurfboard = { id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', category: 'gear-surf-surfboards', name: 'Yamba Surfboard', quantity: 12, price: 850.0, clearance: false }; const kiamaClassicSurfboard = { id: 'bbbbbbbb-1111-2222-3333-cccccccccccc', category: 'gear-surf-surfboards', name: 'Kiama Classic Surfboard', quantity: 25, price: 790.0, clearance: true };أنشئ مصفوفة من العمليات باستخدام
Upsertالعملية لكلا العنصرين. حددpartitionKeyالخاصية والعنصر نفسه بشكل صريح في الخاصيةresourceBody.const upsertOperations = [ { operationType: BulkOperationType.Upsert, partitionKey: 'gear-surf-surfboards', resourceBody: yambdaSurfboard }, { operationType: BulkOperationType.Upsert, partitionKey: 'gear-surf-surfboards', resourceBody: kiamaClassicSurfboard } ];
تحليل استجابة العمليات الجماعية
شغل ثم راجع الاستجابة من العملية بالجملة. تحتوي الاستجابة على بيانات وصفية عن كل عملية.
قم بتنفيذ العمليات بالجملة باستخدام
executeBulkOperationsطريقةitemsخاصية الحاوية الخاصة بك.const response = await container.items.executeBulkOperations(upsertOperations); console.log(response);تحليل موضوع الرد. تحتوي الاستجابة على رمز حالة وكائن
responseللعمليات الناجحة. العمليات الفاشلة تتضمن كائناerrorبدلا من ذلك.npm run startإشعار
لتقليل حجم حمولة الاستجابة، قم بتعيين
contentResponseOnWriteEnabledعلىfalse. هذا العلم مخصص لميزات الجملة والدفعات في مجموعة تطوير البرمجيات.[ { operationInput: { operationType: 'Upsert', id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', partitionKey: 'gear-surf-surfboards', resourceBody: { ... } }, response: { statusCode: 201, eTag: '...', activityId: '...', requestCharge: 7.23, resourceBody: { ... }, diagnostics: { ... }, headers: { ... } } }, ... ]
قم بالمزيد من العمليات بالجملة
اختياريا، يمكنك تنفيذ عمليات أخرى مثل Read، Delete، و Patch. يجب أن تتضمن جميع العمليات المستخدمة في هذا القسم حقل مفتاح التقسيم.
تلميح
تتطلب عمليات Create و Upsert كلا من حقلي idمفتاح التقسيم و. العمليات المتبقية، Read، Delete، Replace، وتتطلب Patch فقط حقل مفتاح التقسيم . إذا لم يتم تحديد الحقول المطلوبة، تفشل العملية.
const variousOperations = [
{
operationType: BulkOperationType.Read,
id: 'bbbbbbbb-1111-2222-3333-cccccccccccc',
partitionKey: 'gear-surf-surfboards',
},
{
operationType: BulkOperationType.Delete,
id: 'bbbbbbbb-1111-2222-3333-cccccccccccc',
partitionKey: 'gear-surf-surfboards',
},
{
operationType: BulkOperationType.Patch,
id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
partitionKey: 'gear-surf-surfboards',
resourceBody: {
operations: [
{
op: PatchOperationType.add,
path: '/onSale',
value: true
}
],
},
}
]
const response = await container.items.executeBulkOperations(upsertOperations);