من فضلك تسجيل الدخول أو تسجيل لتفعل ذلك.

في عالم تطوير الويب الحديث، غالبًا ما تعتمد التطبيقات الكبيرة على نسخ متماثلة لقواعد البيانات (read replicas) لزيادة الأداء وتوزيع الحمل. فبينما يتم توجيه عمليات الكتابة إلى خادم قاعدة بيانات رئيسي واحد، يتم توجيه عمليات القراءة إلى نسخ متعددة. هذه الاستراتيجية فعالة، لكنها تحمل في طياتها تحديًا شائعًا: تأخر النسخ.

عندما تتأخر النسخة المتماثلة عن الخادم الرئيسي، قد يقوم المستخدم بتعديل معلومة معينة ثم يعيد تحميل الصفحة مباشرةً، ليُفاجأ برؤية البيانات القديمة غير المحدثة. هذا يُعرف بـ «القراءات القديمة» (stale reads)، وهو يؤثر سلبًا على تجربة المستخدم. لحسن الحظ، أتى Laravel 13.38 بحلين عمليين لهذه المشكلة.

حلول Laravel 13.38 للمشكلة

يضيف Laravel 13.38 طبقة middleware جديدة باسم PreventStaleDatabaseReads، مهمتها توجيه قراءات المستخدم إلى خادم الكتابة (الرئيسي) لفترة وجيزة بعد قيامه بعملية كتابة. هذا يضمن أن يرى المستخدم دائمًا أحدث البيانات بعد إجراء تغيير. على عكس الخيار `sticky` الموجود في إعدادات الاتصال بقاعدة البيانات، والذي لا يغطي سوى بقية الطلب الحالي، فإن هذا الـ middleware يعالج سيناريوهات إعادة التوجيه (redirects) التي تتضمن طلبين منفصلين (مثل PUT ثم GET).

يمكن تفعيل هذا الـ middleware بسهولة عبر إضافته إلى مجموعة الـ `web` middleware في ملف `bootstrap/app.php`، أو بتخصيصه لمسارات معينة. مدة نافذة التوجيه إلى خادم الكتابة هي ثانيتان افتراضيًا، ولكن يمكن تعديلها لتناسب وقت التأخر الأقصى في نسخ قاعدة بياناتك. على سبيل المثال، إذا كانت لديك وظيفة خلفية (job) تحتاج بيانات حديثة فورًا بعد تحديث عبر webhook، يوفر Laravel الآن الدالة `usingWritePdo()`.

تسمح هذه الدالة بتنفيذ كتلة من التعليمات البرمجية، مع ضمان أن جميع عمليات القراءة داخلها ستستخدم خادم الكتابة، بغض النظر عن جلسة المستخدم. هذا يتفوق على `onWriteConnection()` التي كانت تطبق فقط على الاستعلام الذي تبدأه، مما يجعلها مثالية للحالات التي تتطلب قراءة علاقات البيانات بشكل متسق بعد الكتابة. يُذكر أن الاستعلامات داخل المعاملات (transactions) في Laravel تستخدم خادم الكتابة تلقائيًا، لذا لا تحتاج إلى `usingWritePdo()` في تلك الحالات.

ماذا يعني هذا للمطورين؟

برأينا، هذه الميزات الجديدة في Laravel 13.38 هي إضافة قوية تُسهّل على المطورين إدارة تعقيدات اتساق البيانات في بيئات قواعد البيانات الموزعة. سيتمكن المطورون الآن من توفير تجربة مستخدم أكثر سلاسة وثقة، حيث يرى المستخدمون دائمًا أحدث المعلومات مباشرةً بعد تفاعلاتهم. كما أنها تبسط التعامل مع حالات استخدام شائعة تتطلب بيانات حديثة فورية، مما يوفر الوقت ويقلل من الأخطاء المحتملة.

المصدر: laravel-news.com

بيل غيتس: عقدان من اضطرابات AI تتطلب رقابة حكومية
«التصميم الذري»: إعادة تعريف دور القوالب في تصميم المنتجات

Reactions

0
0
0
0
0
0
بالفعل كان رد فعل لهذا المنصب.

ردود الفعل