تدفقات DynamoDB والجداول العامة
عالجوا تغييرات العناصر في الوقت الفعلي باستخدام Streams، وكرّروا البيانات عبر المناطق باستخدام الجداول العامة لتوفير قراءات منخفضة زمن الاستجابة في جميع أنحاء العالم.
تدفقات DynamoDB والجداول العامة درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
DynamoDB Streams: التقاط تغييرات البيانات
تلتقط DynamoDB Streams تسلسلًا مرتبًا زمنيًا للتعديلات على مستوى العناصر في جدول DynamoDB. ففي كل مرة يُنشأ فيها عنصر أو يُحدَّث أو يُحذف، يكتب DynamoDB سجلًا في الدفق يصف التغيير. وتظل سجلات الدفق متاحة لمدة 24 ساعة بعد كتابتها.
تُعد Streams أساس البنى المعمارية المعتمدة على الأحداث مع DynamoDB. ومن الاستخدامات الشائعة تشغيل وظائف Lambda للمعالجة في الوقت الفعلي، والاحتفاظ بسجل تدقيق، ونسخ البيانات إلى مخزن آخر، أو إبطال ذاكرة التخزين المؤقت عند تغير البيانات.
# Enable a DynamoDB Stream on an existing table
aws dynamodb update-table \
--table-name Orders \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGESأنواع عرض الدفق
عند تمكين دفق، تختار StreamViewType الذي يحدد البيانات التي يحتوي عليها كل سجل دفق:
- KEYS_ONLY: سمات المفتاح الأساسي للعنصر المعدّل فقط
- NEW_IMAGE: العنصر بالكامل كما يظهر بعد التغيير
- OLD_IMAGE: العنصر بالكامل كما كان يظهر قبل التغيير
- NEW_AND_OLD_IMAGES: حالتا العنصر قبل التغيير وبعده
اختر NEW_AND_OLD_IMAGES لأغراض التدقيق (لمعرفة ما تغير)، وNEW_IMAGE للنسخ المتماثل أو تحديثات ذاكرة التخزين المؤقت، وKEYS_ONLY عندما تحتاج فقط إلى معرفة العنصر الذي تغير وستجلب حالته الحالية بشكل منفصل.
معالجة Streams باستخدام Lambda
الطريقة الأكثر شيوعًا لاستهلاك DynamoDB Stream هي استخدام AWS Lambda. تستطلع Lambda الدفق وتستدعي وظيفتك مع دفعة من سجلات الدفق. وتتولى Lambda تلقائيًا الاستطلاع وتحديد نقاط التحقق وإعادة المحاولة.
معلمات الإعداد الرئيسية: حجم الدفعة (عدد السجلات في كل استدعاء، بحد أقصى 10,000)، والتقسيم عند حدوث خطأ (تقسيم الدفعة الفاشلة لعزل السجل المسبب للمشكلة)، والوجهة عند الفشل (SQS أو SNS للسجلات التي يتعذر معالجتها). تقرأ Lambda من كل shard بالتوازي، ولذلك يساوي التوازي عدد shards في الدفق.
# Add Lambda as a stream trigger via CLI
aws lambda create-event-source-mapping \
--function-name process-orders-stream \
--event-source-arn arn:aws:dynamodb:us-east-1:123456789:table/Orders/stream/2026-06-20T00:00:00.000 \
--starting-position LATEST \
--batch-size 100 \
--bisect-batch-on-function-errorحالات استخدام Streams
حالات الاستخدام العملية لـ DynamoDB Streams في اختبار SAA-C03:
- النسخ المتماثل عبر المناطق: تقرأ Lambda الدفق وتكتب التغييرات إلى جدول في Region أخرى (وقبل وجود Global Tables، كان هذا هو النمط القياسي)
- إبطال ElastiCache: عند تغير عنصر في DynamoDB، تُبطل Lambda مفتاح ذاكرة التخزين المؤقت المطابق أو تحدّثه
- مزامنة فهرس البحث: دفع تغييرات العناصر إلى OpenSearch Service لتمكين البحث بالنص الكامل في بيانات DynamoDB
- تسجيل التدقيق: كتابة كل تغيير إلى S3 أو مخزن مخصص للامتثال لأغراض تنظيمية
- الخدمات المصغرة المعتمدة على الأحداث: تشغيل الخدمات اللاحقة عند تغير عناصر محددة
Global Tables في DynamoDB: ما هي ولماذا تُستخدم
توفر DynamoDB Global Tables نسخًا متماثلًا مُدارًا بالكامل، متعدد المناطق ونشطًا في عدة مناطق. وتحصل كل Region على نسخة كاملة من الجدول، وتكون جميع النسخ قابلة للكتابة في الوقت نفسه. وتُنسخ عمليات الكتابة في أي Region بشكل غير متزامن إلى جميع المناطق الأخرى خلال ثانية واحدة تقريبًا.
تتيح Global Tables سيناريوهين مهمين: قراءات وكتابات منخفضة زمن الاستجابة للمستخدمين الموزعين عالميًا (حيث يكتب كل مستخدم البيانات ويقرأها من أقرب Region)، والتعافي من الكوارث النشط-النشط متعدد المناطق (حيث يستمر التطبيق في العمل في أي Region ناجية دون فقدان البيانات التي تمت كتابتها بعد آخر عملية نسخ متماثل).
إنشاء Global Tables
لإنشاء Global Table، تنشئ أولًا جدولًا مع تمكين DynamoDB Streams (تتطلب Global Tables داخليًا NEW_AND_OLD_IMAGES). ثم تضيف Regions النسخ المتماثلة. تنشئ AWS جدولًا متماثلًا في كل Region مضافة، وتبدأ بمزامنة البيانات في الاتجاهين.
تُعد Global Tables (Version 2019.11.21) المعيار الحالي، وتدعم السعة عند الطلب أو السعة المخصّصة مع Auto Scaling. ويجب أن يكون لنسخة الجدول في كل Region اسم الجدول نفسه. ويمكنك إضافة Regions إلى Global Table أو إزالتها في أي وقت.
# Create a global table replica in eu-west-1
aws dynamodb create-global-table \
--global-table-name GlobalOrders \
--replication-group RegionName=us-east-1 RegionName=eu-west-1حل التعارضات في Global Tables
نظرًا لأن Global Tables تسمح بالكتابة في عدة Regions في الوقت نفسه، فقد تحدث تعارضات في الكتابة إذا حدّثت منطقتان العنصر نفسه في وقت متقارب جدًا. يحل DynamoDB التعارضات باستخدام نهج الفائز هو آخر كاتب استنادًا إلى الطوابع الزمنية المخزنة في سجلات الدفق.
عمليًا، يعني ذلك أن تحديثين متعارضين ومتزامنين تقريبًا سينتج عنهما اعتماد أحدهما واستبدال الآخر. ينبغي تصميم التطبيقات لتجنب عمليات الكتابة المتزامنة على العنصر نفسه من Regions مختلفة. وإذا كانت التعارضات شائعة في حالة الاستخدام، ففكّر في توجيه جميع عمليات الكتابة الخاصة بمستخدم أو كيان محدد إلى Region أساسية واحدة.
Global Tables واعتبارات السعة
مع Global Tables، تُنسخ عمليات الكتابة في إحدى Regions تلقائيًا إلى جميع Regions الأخرى. وتستهلك كل عملية كتابة منسوخة WCUs في Regions الوجهة—فإذا كان لديك 3 Regions، فستكلف عملية كتابة واحدة نحو 3× من WCUs عبر جميع Regions. خطط للسعة وفقًا لذلك.
تستهلك القراءات في كل Region وحدات RCUs من النسخة المحلية. وتستخدم القراءات المتسقة بشكل نهائي (وهي الإعداد الافتراضي) البيانات المحلية، بينما لا تُدعم القراءات المتسقة بشكل قوي عبر Regions. وبالنسبة إلى معظم التطبيقات العالمية، يكون الاتساق النهائي خلال نحو ثانية واحدة بين Regions مقبولًا.
Global Tables مقابل النسخ المتماثلة للقراءة عبر المناطق (RDS)
تمييز مهم في اختبار SAA-C03: إن DynamoDB Global Tables نشطة في عدة مناطق (تقبل جميع Regions القراءات والكتابات)، بينما تكون النسخ المتماثلة للقراءة عبر المناطق في RDS للقراءة فقط (ولا يمكنك جعل النسخة قابلة للكتابة إلا بترقيتها، مما يوقف النسخ المتماثل).
استخدم DynamoDB Global Tables عندما تحتاج إلى: كتابات نشطة-نشطة متعددة المناطق، أو وصول عالمي بزمن استجابة أقل من 100 مللي ثانية، أو تعافٍ من الكوارث متعدد المناطق مع RPO صفري لبيانات NoSQL. واستخدم النسخ المتماثلة عبر المناطق في RDS عندما تحتاج إلى: قابلية توسع عالمية للقراءة لقاعدة بيانات علائقية، أو نسخة احتياطية جاهزة يمكنك ترقيتها عند تجاوز الفشل.
أنماط بنية Streams وLambda
أنماط البنية الشائعة التي تجمع بين Streams وLambda:
- التوزيع المتشعب: تقرأ Lambda الدفق وتنشره إلى SNS، الذي يوزعه على عدة قوائم انتظار SQS للمستهلكين المستقلين
- التجميع: تجمع Lambda التغييرات وتحدّث الإجماليات المجمعة في جدول DynamoDB منفصل (مثل العدد اليومي للطلبات)
- ذاكرة التخزين المؤقت بالكتابة اللاحقة: عند كل حدث في الدفق، تحدّث Lambda ElastiCache حتى يمكن تقديم القراءات من ذاكرة التخزين المؤقت
- الإشعارات: يشغّل الدفق Lambda، التي ترسل رسالة بريد إلكتروني عبر SES أو إشعار دفع عبر SNS عند تغير شرط محدد
تكامل DynamoDB Kinesis Data Streams
كبديل عن DynamoDB Streams، يمكنكم توجيه التغييرات على مستوى العناصر إلى Amazon Kinesis Data Stream. ويفيد ذلك عندما تحتاجون إلى فترة احتفاظ أطول (تصل إلى سنة واحدة، مقارنةً بـ24 ساعة في DynamoDB Streams الأصلي)، أو إلى عدد أكبر من المستهلكين، أو إلى التكامل مع الخدمات التي تقرأ من Kinesis.
يُفعَّل تكامل Kinesis Data Streams لكل جدول على حدة، ولا يحل محل DynamoDB Streams؛ إذ يمكن تفعيل الخدمتين معًا في الوقت نفسه. وهذه ميزة أحدث (منذ عام 2021) توسّع مسار أحداث التغييرات في DynamoDB من دون الحاجة إلى منطق مخصّص للنسخ المتماثل.
# Enable Kinesis Data Streams for a DynamoDB table
aws dynamodb enable-kinesis-streaming-destination \
--table-name Orders \
--stream-arn arn:aws:kinesis:us-east-1:123456789:stream/ddb-changesتحقّق سريع
اختبروا فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلّمتم في هذا الدرس أن DynamoDB Streams تلتقط التغييرات على مستوى العناصر لمدة 24 ساعة وتتكامل مع Lambda لمعالجة الأحداث، وأن Global Tables توفّر نسخًا متماثلًا متعدد النشاط عبر مناطق متعددة مع حلّ التعارض وفق قاعدة الفائز بآخر كتابة، وأن تكامل Kinesis Data Streams يمدّد فترة الاحتفاظ إلى ما بعد نافذة البث البالغة 24 ساعة. بعد ذلك، سنستكشف مناطق الاستضافة في Route 53 وأنواع سجلات DNS.
الأسئلة الشائعة
هل درس «تدفقات DynamoDB والجداول العامة» مجاني؟
نعم — نص درس «تدفقات DynamoDB والجداول العامة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ماذا ستتعلم في «تدفقات DynamoDB والجداول العامة»؟
عالجوا تغييرات العناصر في الوقت الفعلي باستخدام Streams، وكرّروا البيانات عبر المناطق باستخدام الجداول العامة لتوفير قراءات منخفضة زمن الاستجابة في جميع أنحاء العالم. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟
لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تدفقات DynamoDB والجداول العامة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟
نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الجداول والعناصر والمفاتيح الأساسية
- السعة المُوفّرة مقابل عند الطلب
- الفهارس الثانوية العامة والفهارس الثانوية المحلية
- تدفقات DynamoDB والجداول العامة