Azure Cosmos DB: NoSQL عالمي
استكشف بنية Cosmos DB متعددة النماذج والمناطق، وتعرّف على مفاتيح التقسيم، واختر مستوى الاتساق المناسب لاحتياجات تطبيقك.
Azure Cosmos DB: NoSQL عالمي درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ما هي Azure Cosmos DB؟
Azure Cosmos DB هي خدمة قواعد بيانات NoSQL متعددة النماذج وموزعة عالميًا من Microsoft. صُممت لتوفير زمن استجابة للقراءة والكتابة يبلغ أرقامًا أحادية الخانة بالمللي ثانية على أي نطاق وفي أي مكان في العالم. وبخلاف قواعد البيانات التقليدية المقيدة بمنطقة واحدة، يمكن لـ Cosmos DB نسخ البيانات بشفافية إلى عشرات مناطق Azure في الوقت نفسه.
دعم واجهات برمجة التطبيقات متعددة النماذج
تدعم Cosmos DB عدة واجهات برمجة لقواعد البيانات من خلال خدمة واحدة. يمكنكم استخدام NoSQL API الأصلية (مستندات JSON)، أو MongoDB API للتطبيقات المبنية باستخدام برامج تشغيل MongoDB، أو Apache Cassandra API لأحمال العمل ذات الأعمدة العريضة، أو Gremlin API لبيانات الرسوم البيانية، أو Table API لبيانات المفتاح والقيمة. وتعرض كل واجهة برمجة محرك Cosmos DB الأساسي من خلال واجهة مألوفة.
الحسابات وقواعد البيانات والحاويات
يتكون التسلسل الهرمي لموارد Cosmos DB من ثلاثة مستويات. الحساب هو المورد الأعلى مستوى، ويحدد قائمة مناطق النسخ المتماثل ومستوى الاتساق. وداخل الحساب، تنشئون قواعد بيانات باعتبارها مساحات أسماء منطقية. وداخل كل قاعدة بيانات، تنشئون حاويات — وهي الوحدة التي تحتوي على العناصر (المستندات)، والتي يتم فيها توفير معدل النقل.
# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
--name mycosmosaccount \
--resource-group myRG \
--kind GlobalDocumentDB \
--locations regionName=eastus failoverPriority=0 isZoneRedundant=true
# Create a database
az cosmosdb sql database create \
--account-name mycosmosaccount \
--resource-group myRG \
--name myDatabaseمفاتيح التقسيم: أساس التوسع
مفتاح التقسيم هو خاصية موجودة في كل عنصر، وتستخدمها Cosmos DB لتوزيع البيانات عبر الأقسام الفعلية. ويُعد اختيار مفتاح التقسيم المناسب أمرًا بالغ الأهمية؛ إذ ينبغي أن يتمتع بتعدد كبير للقيم (أي قيم مميزة كثيرة)، وأن يوزع حركة الكتابة بالتساوي، وأن يظهر في معظم استعلاماتكم. تؤدي اختيارات مفاتيح التقسيم السيئة إلى أقسام ساخنة تحد من معدل النقل وتقلل الأداء.
// Example container with /userId as partition key
// Items in the container:
{
'id': 'order-001',
'userId': 'user-42',
'product': 'Widget',
'total': 29.99
}
// userId distributes orders across partitionsمعدل النقل: نموذج RU/s
تفرض Cosmos DB رسومًا على معدل النقل بوحدة وحدات الطلب في الثانية (RU/s). وتعادل وحدة RU تقريبًا تكلفة قراءة مستند بحجم 1 كيلوبايت باستخدام معرّفه. وتكلف عمليات الكتابة والاستعلام والحذف عددًا أكبر من وحدات RU، حسب حجم العنصر وتعقيد الفهرس. يمكنكم توفير RU/s على مستوى الحاوية، أو مشاركة مجموعة عبر جميع الحاويات في قاعدة بيانات، كما يمكنكم التبديل إلى وضع التوسع التلقائي للسماح لـ Cosmos DB بتوسيع معدل النقل تلقائيًا.
# Create a container with 400 RU/s
az cosmosdb sql container create \
--account-name mycosmosaccount \
--resource-group myRG \
--database-name myDatabase \
--name orders \
--partition-key-path '/userId' \
--throughput 400التوزيع العالمي
أقوى ميزات Cosmos DB هي قدرتها على نسخ البيانات متماثلًا عالميًا ببضع نقرات. تضيفون المناطق إلى حسابكم، وتزامن Cosmos DB جميع عمليات الكتابة عبر كل منطقة تلقائيًا. ويمكن لكل منطقة تقديم عمليات القراءة والكتابة في الوقت نفسه ضمن تكوين متعدد الكتابات (متعدد وحدات التحكم الرئيسية)، مما يقلل زمن الاستجابة للمستخدمين الموزعين جغرافيًا.
# Add a second region to the Cosmos DB account
az cosmosdb update \
--name mycosmosaccount \
--resource-group myRG \
--locations regionName=eastus failoverPriority=0 \
regionName=westeurope failoverPriority=1مستويات الاتساق الخمسة
توفر Cosmos DB خمسة مستويات قابلة للضبط للاتساق ضمن نطاق يمتد من الأقوى إلى الأضعف: Strong (قراءات قابلة للتسلسل، مع أعلى زمن استجابة)، وBounded Staleness (تتأخر القراءات عن عمليات الكتابة ضمن فترة محددة)، وSession (الافتراضي — قراءات متسقة لعمليات الكتابة الخاصة بكم ضمن جلسة)، وConsistent Prefix (لا ترى القراءات عمليات كتابة بترتيب غير صحيح)، وEventual (أسرع القراءات وأضعف الضمانات). اختاروا المستوى بناءً على مدى تحمل تطبيقكم للبيانات القديمة.
الفهرسة التلقائية
تفهرس Cosmos DB افتراضيًا كل خاصية تلقائيًا في كل عنصر تُدخلونه، من دون الحاجة إلى تعريف مخطط مسبقًا. يتيح ذلك إجراء استعلامات مرنة ومخصصة دون صيانة الفهارس. ويمكنكم تخصيص سياسة الفهرسة لاستبعاد المسارات التي لا يُستعلم عنها مطلقًا (لتقليل تكلفة التخزين)، أو إضافة فهارس مركبة لاستعلامات ORDER BY عبر خصائص متعددة.
// Custom indexing policy example
{
'indexingMode': 'consistent',
'includedPaths': [{ 'path': '/*' }],
'excludedPaths': [
{ 'path': '/largeTextBlob/?' },
{ 'path': '/_etag/?' }
]
}موجز التغييرات للتطبيقات المدفوعة بالأحداث
موجز التغييرات هو سجل مرتب لجميع عمليات الإنشاء والتحديث على حاوية Cosmos DB. تشترك التطبيقات في موجز التغييرات لتشغيل المعالجة اللاحقة — مثل تحديث فهرس بحث، أو إرسال إشعارات، أو الكتابة إلى عرض مادي. ويُعد موجز التغييرات أساس أنماط التطبيقات المدفوعة بالأحداث وCQRS في بنى Cosmos DB.
Time-to-Live (TTL) للبيانات منتهية الصلاحية
تدعم Cosmos DB ميزة Time-to-Live (TTL)، وهي خاصية تضبطونها على حاوية أو عناصر فردية لحذفها تلقائيًا بعد عدد محدد من الثواني. وتناسب هذه الميزة بيانات الجلسات، وإدخالات ذاكرة التخزين المؤقت، وسجلات التدقيق ذات فترات الاحتفاظ التنظيمية، أو أي بيانات لها تاريخ انتهاء معروف. تُنفذ عمليات الحذف بواسطة TTL كمهام في الخلفية، ولا تستهلك RU/s المتوفرة.
// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
--account-name mycosmosaccount \
--resource-group myRG \
--database-name myDatabase \
--name sessions \
--ttl 3600التسعير والمستوى عديم الخوادم
توفر Cosmos DB نمطي فوترة. تُحاسبكم إنتاجية النقل المتوفرة لكل ساعة من RU/s بغض النظر عن الاستخدام الفعلي، وهي مناسبة لأحمال العمل المستقرة والمتوقعة. أما وضع عديم الخوادم فيحاسبكم حسب وحدات RU المستهلكة وحجم البيانات المخزنة بالجيجابايت، دون تكلفة دنيا، مما يجعله فعالًا من حيث التكلفة للتطوير وإنشاء النماذج الأولية وارتفاعات حركة المرور. يقتصر Cosmos DB عديم الخوادم حاليًا على منطقة واحدة.
اختبار سريع
اختبر مدى فهمكم لمفاهيم Microsoft Azure Fundamentals (AZ-900) الواردة في هذا الدرس.
مراجعة الدرس
تعلّمتم في هذا الدرس أن: Cosmos DB هي خدمة NoSQL موزّعة عالميًا ومتعددة النماذج، وأن مفاتيح التقسيم تحدد كيفية تقسيم البيانات، ولذلك يجب اختيارها بعناية، وأن مستويات الاتساق الخمسة تتيح لكم تحقيق التوازن بين زمن الاستجابة وحداثة البيانات. بعد ذلك، سنستكشف خدمات Azure المُدارة لمحركات قواعد البيانات مفتوحة المصدر.
الأسئلة الشائعة
هل درس «Azure Cosmos DB: NoSQL عالمي» مجاني؟
نعم — نص درس «Azure Cosmos DB: NoSQL عالمي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ماذا ستتعلم في «Azure Cosmos DB: NoSQL عالمي»؟
استكشف بنية Cosmos DB متعددة النماذج والمناطق، وتعرّف على مفاتيح التقسيم، واختر مستوى الاتساق المناسب لاحتياجات تطبيقك. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟
لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «Azure Cosmos DB: NoSQL عالمي»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟
نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Azure SQL Database
- Azure Cosmos DB: NoSQL عالمي
- قواعد بيانات Azure لمحركات المصادر المفتوحة
- ترحيل قواعد البيانات إلى Azure