السعة المُوفّرة مقابل عند الطلب
اختاروا بين معدل النقل المُوفّر مع التوسّع التلقائي ووضع عند الطلب، استنادًا إلى مدى قابلية توقّع حركة المرور والتكلفة.
السعة المُوفّرة مقابل عند الطلب درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
شرح وحدات سعة DynamoDB
تقيس DynamoDB معدل النقل باستخدام وحدات سعة القراءة (RCUs) ووحدات سعة الكتابة (WCUs). تتيح وحدة RCU واحدة قراءة متسقة بقوة واحدة في الثانية (أو قراءتين متسقتين نهائيًا) للعناصر التي يصل حجمها إلى 4 كيلوبايت. وتتيح وحدة WCU واحدة عملية كتابة واحدة في الثانية للعناصر التي يصل حجمها إلى 1 كيلوبايت.
بالنسبة إلى العناصر الأكبر، تتوسع التكلفة تناسبيًا: تكلّف عملية كتابة عنصر حجمه 10 كيلوبايت 10 وحدات WCU؛ وتكلّف قراءة متسقة بقوة لعنصر حجمه 10 كيلوبايت 3 وحدات RCU (ceil(10/4) = 3). يُعد فهم وحدات السعة ضروريًا لتقدير التكلفة وتشخيص أخطاء الاختناق ProvisionedThroughputExceededException.
نمط السعة الموفّرة
في نمط السعة الموفّرة، تحددون العدد الدقيق من وحدات RCU وWCU التي ينبغي أن يدعمها جدولكم. تحجز DynamoDB معدل النقل هذا، وتفرض رسومًا عليه سواء استخدمتموه أم لا. إذا تجاوز تطبيقكم السعة الموفّرة، فسيتم اختناق الطلبات، وستُرجع ProvisionedThroughputExceededException.
يُعد النمط الموفّر مثاليًا لأحمال العمل ذات حركة المرور المتوقعة والمستقرة. وتكون تكلفة الوحدة أقل من نمط On-Demand، ويمكنكم خفض التكلفة أكثر بشراء DynamoDB Reserved Capacity (التزامات لمدة سنة أو ثلاث سنوات بخصم يصل إلى 76%).
# Create a table with provisioned capacity
aws dynamodb create-table \
--table-name Products \
--attribute-definitions AttributeName=ProductId,AttributeType=S \
--key-schema AttributeName=ProductId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=50نمط السعة عند الطلب
في نمط On-Demand، تتوسع DynamoDB تلقائيًا لاستيعاب أي مستوى من حركة المرور دون الحاجة إلى تخطيط السعة. تدفعون لكل طلب: مقابل كل وحدة طلب قراءة (RRU) وكل وحدة طلب كتابة (WRU) مستهلكة فعليًا. لا توجد سعة موفّرة لإدارتها، ولا يحدث اختناق بسبب حدود السعة الموفّرة.
يُعد نمط On-Demand مثاليًا لـأحمال العمل غير المتوقعة أو المتقطعة، والجداول الجديدة التي لا يُعرف معدل حركة المرور فيها، وبيئات التطوير/الاختبار ذات الوصول غير المتكرر. وتكون تكلفة الطلب الواحد أعلى من النمط الموفّر، لذا يكون النمط الموفّر أكثر اقتصادية لأحمال العمل المستقرة ذات معدل النقل العالي.
# Create a table in on-demand mode
aws dynamodb create-table \
--table-name Events \
--attribute-definitions AttributeName=EventId,AttributeType=S \
--key-schema AttributeName=EventId,KeyType=HASH \
--billing-mode PAY_PER_REQUESTالتبديل بين أنماط السعة
يمكنكم تبديل الجدول بين نمطي Provisioned وOn-Demand في أي وقت باستخدام وحدة التحكم أو CLI. لكن لا يمكنكم تبديل الأنماط إلا مرة واحدة كل 24 ساعة. بعد التبديل إلى On-Demand، يحتفظ الجدول بأعلى سعة موفّرة سابقة بوصفها مستوى معدل النقل الأولي، مما يحمي من الاختناق الفوري إذا كانت حركة المرور مرتفعة بالفعل.
تتمثل إحدى الاستراتيجيات الشائعة في استخدام On-Demand أثناء الإطلاق الأولي عندما تكون أنماط حركة المرور غير معروفة، ثم التبديل إلى Provisioned مع Auto Scaling بعد أن تصبح حركة المرور متوقعة، مما يقلل التكلفة.
# Switch a table to on-demand billing mode
aws dynamodb update-table \
--table-name Products \
--billing-mode PAY_PER_REQUESTالتحجيم التلقائي في DynamoDB للنمط الموفّر
يضبط Auto Scaling في DynamoDB وحدات RCU وWCU الموفّرة تلقائيًا استجابةً لحركة المرور الفعلية. تحددون نسبة استخدام مستهدفة (مثل 70%) ونطاقًا أدنى/أقصى للسعة. وتراقب سياسة Application Auto Scaling السعة المستهلكة للجدول، ثم تضبط السعة الموفّرة للحفاظ على الاستخدام المستهدف.
يستجيب Auto Scaling للتغيرات المستمرة في حركة المرور، وقد يستغرق رفع السعة بضع دقائق. ولا يتعامل جيدًا مع الارتفاعات المفاجئة في حركة المرور؛ لذلك عليكم في هذه الحالات إما تهيئة السعة مسبقًا يدويًا أو استخدام نمط On-Demand بدلًا منه.
# Register table as an auto scaling target
aws application-autoscaling register-scalable-target \
--service-namespace dynamodb \
--resource-id 'table/Products' \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--min-capacity 10 \
--max-capacity 1000السعة الاندفاعية
تحتفظ DynamoDB بما يصل إلى 5 دقائق من السعة الموفّرة غير المستخدمة بوصفها سعة اندفاعية. عندما تتجاوز حركة المرور في جدولكم المستوى الموفّر لفترة وجيزة، تسحب DynamoDB من مخزون الاندفاع لخدمة الطلبات الإضافية دون اختناق. وبعد استنفاد مخزون الاندفاع، تتعرض الطلبات الزائدة اللاحقة للاختناق.
السعة الاندفاعية مخزن مؤقت قصير الأجل، وليست بديلًا عن التخطيط الصحيح للسعة. راقبوا مقاييس CloudWatch ConsumedReadCapacityUnits وConsumedWriteCapacityUnits لاكتشاف الحالات التي يستهلك فيها حمل العمل سعة اندفاعية باستمرار، ثم اضبطوا معدل النقل الموفّر وفقًا لذلك.
الاختناق ومعالجة الأخطاء
عند تجاوز السعة الموفّرة (واستنفاد السعة الاندفاعية)، تُرجع DynamoDB الخطأ ProvisionedThroughputExceededException. تتضمن AWS SDKs منطقًا مدمجًا لإعادة المحاولة باستخدام التراجع الأسي والعشوائية، يعيد تلقائيًا محاولة الطلبات التي تعرضت للاختناق.
لتشخيص الاختناق، تحققوا من مقاييس CloudWatch SystemErrors وThrottledRequests. إذا كانت مفاتيح أقسام محددة تتعرض للاختناق بينما يظل استخدام الجدول الإجمالي منخفضًا، فهذه مشكلة قسم ساخن—أعيدوا تصميم مفتاح القسم، أو أضيفوا مفتاح فرز، أو استخدموا تقسيم الكتابة.
تقدير متطلبات السعة
لتقدير السعة في النمط الموفّر:
- احسبوا عدد عمليات الكتابة القصوى في الثانية × متوسط حجم العنصر / 1 كيلوبايت (مع التقريب إلى الأعلى) = وحدات WCU المطلوبة
- احسبوا عدد عمليات القراءة القصوى في الثانية × متوسط حجم العنصر / 4 كيلوبايت (مع التقريب إلى الأعلى) = وحدات RCU المطلوبة (للقراءة المتسقة بقوة)؛ واقسموا الناتج على اثنين للقراءة المتسقة نهائيًا
- أضيفوا هامشًا بنسبة 20–30% فوق الذروة لاستيعاب الارتفاعات قبل استهلاك السعة الاندفاعية
مثال: 1,000 عملية كتابة في الثانية لعناصر حجمها 2 كيلوبايت = 2,000 وحدة WCU. و5,000 عملية قراءة في الثانية لعناصر حجمها 8 كيلوبايت (قراءة متسقة نهائيًا) = ceil(8/4) × 5,000 / 2 = 5,000 وحدة RCU.
السعة المحجوزة لخفض التكلفة
تتيح لكم DynamoDB Reserved Capacity شراء عدد ثابت من وحدات RCU وWCU لمدة سنة أو ثلاث سنوات، مع الدفع مقدمًا للحصول على خصم كبير (يصل إلى 76%) مقارنةً بتسعير On-Demand. تنطبق السعة المحجوزة على جميع الجداول الموفّرة في المنطقة، وتُطبَّق تلقائيًا على الرسوم بالساعة.
تنطبق السعة المحجوزة على النمط Provisioned فقط، ولا يمكنكم استخدامها مع نمط On-Demand. وهي أفضل خيار لتوفير التكلفة في أحمال العمل المستقرة والمتوقعة التي يمكنكم تقديرها بثقة لمدة تتراوح بين سنة وثلاث سنوات.
مقارنة الأنماط: دليل اتخاذ القرار في الاختبار
استخدموا دليل اتخاذ القرار هذا في أسئلة نمط السعة ضمن SAA-C03:
- On-Demand: حركة مرور غير متوقعة، أو تطبيق جديد، أو وصول غير متكرر، أو حمل عمل متقطع، أو عندما تريدون عدم إدارة السعة على الإطلاق
- Provisioned: حركة مرور ثابتة ومتوقعة، أو حساسية تجاه التكلفة، أو الاستعداد لإدارة السعة، أو الأهلية للحصول على خصومات السعة المحجوزة
- Provisioned + Auto Scaling: خط أساس متوقع مع بعض التباين، مع الرغبة في الضبط التلقائي دون تغييرات يدوية
في الاختبار، تشير كلمات مثل 'spiky' أو 'unpredictable' أو 'minimal operational overhead' إلى On-Demand؛ بينما تشير 'steady traffic' أو 'cost optimisation' إلى Provisioned.
السعة التكيفية
تعيد السعة التكيفية في DynamoDB توزيع معدل النقل تلقائيًا من الأقسام الباردة إلى الأقسام الساخنة في الوقت الفعلي. إذا كان أحد مفاتيح الأقسام يتلقى حركة مرور أكبر من حصته المخصصة، تستعير السعة التكيفية معدل النقل من الأقسام الأقل استخدامًا لاستيعاب القسم الساخن، ما دام إجمالي سعة الجدول لم يُتجاوز.
تكون السعة التكيفية مفعّلة دائمًا ولا تتطلب أي إعداد. وهي تقلل اختناق الأقسام الساخنة في أنماط الوصول غير المتوازنة بدرجة متوسطة. أما في أحمال العمل شديدة الانحراف (مثل تلقي أحد مفاتيح الأقسام 90% من حركة المرور)، فلا تكون السعة التكيفية كافية؛ إذ يجب عليكم إعادة تصميم مفتاح القسم أو استخدام تقسيم الكتابة.
تحقق سريع
اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) التي تناولها هذا الدرس.
مراجعة الدرس
تعلّمتم في هذا الدرس أن النمط Provisioned يحدد وحدات RCU/WCU ثابتة لأحمال العمل المتوقعة بتكلفة أقل، وأن النمط On-Demand يتوسع تلقائيًا لحركة المرور غير المتوقعة بسعر أعلى لكل طلب، وأن Auto Scaling يضبط السعة الموفّرة استنادًا إلى نسب الاستخدام المستهدفة. بعد ذلك سنستكشف الفهارس الثانوية العامة والفهارس الثانوية المحلية لأنماط الاستعلام البديلة.
الأسئلة الشائعة
هل درس «السعة المُوفّرة مقابل عند الطلب» مجاني؟
نعم — نص درس «السعة المُوفّرة مقابل عند الطلب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ماذا ستتعلم في «السعة المُوفّرة مقابل عند الطلب»؟
اختاروا بين معدل النقل المُوفّر مع التوسّع التلقائي ووضع عند الطلب، استنادًا إلى مدى قابلية توقّع حركة المرور والتكلفة. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟
لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «السعة المُوفّرة مقابل عند الطلب»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟
نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الجداول والعناصر والمفاتيح الأساسية
- السعة المُوفّرة مقابل عند الطلب
- الفهارس الثانوية العامة والفهارس الثانوية المحلية
- تدفقات DynamoDB والجداول العامة