ابحث عن رسوم وحدة الطلب للعمليات في Azure Cosmos DB ل NoSQL
ينطبق على: NoSQL
يدعم Azure Cosmos DB العديد من واجهات برمجة التطبيقات، مثل SQL وMongoDB وCassandra وGremlin وTable. كل واجهة من واجهات برمجة التطبيقات لديها مجموعة خاصة بها من عمليات قاعدة البيانات. تتراوح هذه العمليات من القراءة والكتابة النقطية البسيطة إلى الاستعلامات المعقدة. تستهلك كل عملية قاعدة بيانات موارد النظام استناداً إلى تعقيد العملية.
تتم تسوية تكلفة جميع عمليات قاعدة البيانات بواسطة Azure Cosmos DB ويتم التعبير عنها بواسطة request units (RU). Request charge هي وحدات الطلب التي تستهلكها جميع عمليات قاعدة البيانات. يمكنك التفكير في وحدات الطلب على أنها عملة أداء تستخلص موارد النظام مثل CPU وIOPS والذاكرة المطلوبة لتنفيذ عمليات قاعدة البيانات التي يدعمها Azure Cosmos DB. بغض النظر عن واجهة برمجة التطبيقات التي تستخدمها للتفاعل مع الحاوية الخاصة بك، يتم دائماً قياس التكاليف بوحدات RU. سواء أكانت عملية قاعدة البيانات كتابة أم قراءة نقطة أم استعلامًا، يتم قياس التكاليف دائماً في وحدات الطلب. لمعرفة المزيد، راجع طلب الوحدات في Azure Cosmos DB.
تعرض هذه المقالة الطرق المختلفة التي يمكنك من خلالها العثور على استهلاك وحدة الطلب لأي عملية يتم تشغيلها على حاوية في Azure Cosmos DB ل NoSQL. إذا كنت تستخدم واجهة برمجة تطبيقات مختلفة، فشاهد واجهة برمجة التطبيقات ل MongoDB وواجهة برمجة التطبيقات ل Cassandra وواجهة برمجة التطبيقات ل Gremlin وواجهة برمجة التطبيقات للجدول.
حالياً، يمكنك قياس الاستهلاك فقط باستخدام مدخل Microsoft Azure أو بفحص الاستجابة المرسلة من Azure Cosmos DB عبر إحدى حزم SDK. إذا كنت تستخدم واجهة برمجة التطبيقات ل NoSQL، فلديك خيارات متعددة للعثور على رسوم الطلب لعملية ما.
استخدام مدخل Microsoft Azure
قم بتسجيل الدخول إلى بوابة Azure.
إنشاء حساب Azure Cosmos DB جديد وإطعامه بالبيانات، أو تحديد حساب Azure Cosmos DB موجود يحتوي بالفعل على بيانات.
افتح جزء مستكشف البيانات وحدد الحاوية التي تريد العمل عليها.
حدد New SQL Query.
أدخل استعلاماً صالحاً، ثم حدد Execute Query.
حدد Query Stats لعرض رسوم الطلب الفعلية للطلب الذي نفذته.
استخدم .NET عدة تطوير البرامج
تعرض الكائنات التي تم إرجاعها من .NET SDK v2 خاصية RequestCharge
:
ResourceResponse<Document> fetchDocumentResponse = await client.ReadDocumentAsync(
UriFactory.CreateDocumentUri("database", "container", "itemId"),
new RequestOptions
{
PartitionKey = new PartitionKey("partitionKey")
});
var requestCharge = fetchDocumentResponse.RequestCharge;
StoredProcedureResponse<string> storedProcedureCallResponse = await client.ExecuteStoredProcedureAsync<string>(
UriFactory.CreateStoredProcedureUri("database", "container", "storedProcedureId"),
new RequestOptions
{
PartitionKey = new PartitionKey("partitionKey")
});
requestCharge = storedProcedureCallResponse.RequestCharge;
IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
UriFactory.CreateDocumentCollectionUri("database", "container"),
"SELECT * FROM c",
new FeedOptions
{
PartitionKey = new PartitionKey("partitionKey")
}).AsDocumentQuery();
while (query.HasMoreResults)
{
FeedResponse<dynamic> queryResponse = await query.ExecuteNextAsync<dynamic>();
requestCharge = queryResponse.RequestCharge;
}
استخدم Java SDK
تعرض الكائنات التي تم إرجاعها من Java SDK طريقة getRequestCharge()
:
RequestOptions requestOptions = new RequestOptions();
requestOptions.setPartitionKey(new PartitionKey("partitionKey"));
Observable<ResourceResponse<Document>> readDocumentResponse = client.readDocument(String.format("/dbs/%s/colls/%s/docs/%s", "database", "container", "itemId"), requestOptions);
readDocumentResponse.subscribe(result -> {
double requestCharge = result.getRequestCharge();
});
Observable<StoredProcedureResponse> storedProcedureResponse = client.executeStoredProcedure(String.format("/dbs/%s/colls/%s/sprocs/%s", "database", "container", "storedProcedureId"), requestOptions, null);
storedProcedureResponse.subscribe(result -> {
double requestCharge = result.getRequestCharge();
});
FeedOptions feedOptions = new FeedOptions();
feedOptions.setPartitionKey(new PartitionKey("partitionKey"));
Observable<FeedResponse<Document>> feedResponse = client
.queryDocuments(String.format("/dbs/%s/colls/%s", "database", "container"), "SELECT * FROM c", feedOptions);
feedResponse.forEach(result -> {
double requestCharge = result.getRequestCharge();
});
لمزيد من المعلومات، راجع التشغيل السريع: إنشاء تطبيق Java باستخدام حساب Azure Cosmos DB ل NoSQL.
استخدام عقدة.js عدة تطوير البرامج
تعرض الكائنات التي تم إرجاعها من Node.js SDK كائناً فرعياً headers
يقوم بتعيين جميع الرؤوس التي تم إرجاعها بواسطة واجهة برمجة تطبيقات HTTP الأساسية. رسوم الطلب متاحة تحت المفتاح x-ms-request-charge
:
const item = await client
.database('database')
.container('container')
.item('itemId', 'partitionKey')
.read();
var requestCharge = item.headers['x-ms-request-charge'];
const storedProcedureResult = await client
.database('database')
.container('container')
.storedProcedure('storedProcedureId')
.execute({
partitionKey: 'partitionKey'
});
requestCharge = storedProcedureResult.headers['x-ms-request-charge'];
const query = client.database('database')
.container('container')
.items
.query('SELECT * FROM c', {
partitionKey: 'partitionKey'
});
while (query.hasMoreResults()) {
var result = await query.executeNext();
requestCharge = result.headers['x-ms-request-charge'];
}
لمزيد من المعلومات، راجع التشغيل السريع: إنشاء تطبيق Node.js باستخدام حساب Azure Cosmos DB ل NoSQL.
استخدام Python عدة تطوير البرامج
يكشف الكائن Container
من Python SDK عن قاموس last_response_headers
يعيّن جميع الرؤوس التي تم إرجاعها بواسطة واجهة برمجة تطبيقات HTTP الأساسية لآخر عملية تم تنفيذها. رسوم الطلب متاحة تحت المفتاح x-ms-request-charge
:
new_item = {
"id": "70b63682-b93a-4c77-aad2-65501347265f",
"partition_key": "61dba35b-4f02-45c5-b648-c6badc0cbd79",
"name": "Yamba Surfboard"
}
container.create_item(new_item)
request_charge = container.client_connection.last_response_headers["x-ms-request-charge"]
existing_item = container.read_item(
item="70b63682-b93a-4c77-aad2-65501347265f"
partition_key="61dba35b-4f02-45c5-b648-c6badc0cbd79"
)
request_charge = container.client_connection.last_response_headers["x-ms-request-charge"]
لمزيد من المعلومات، راجع التشغيل السريع: إنشاء تطبيق Python باستخدام حساب Azure Cosmos DB ل NoSQL.
الخطوات التالية
لمعرفة المزيد حول تحسين استهلاك وحدة الطلب، راجع هذه المقالات:
- وحدات الطلب في Azure Cosmos DB
- تحسين تكلفة معدل النقل المتوفر في قاعدة بيانات Azure Cosmos
- تحسين تكلفة الاستعلام في Azure Cosmos DB
- إنتاجية يتم توفيرها على نطاق عالمي
- مقدمة إلى معدل النقل الذي تم تكوين إعدادات تشغيل الخدمة له في Azure Cosmos DB
- إنتاجية التوفير للحاوية
- المراقبة والتصحيح باستخدام نتائج التحليلات في Azure Cosmos DB