التخزين المؤقت لقاعدة البيانات
التخزين المؤقت لقواعد البيانات هو عملية مضمنة في تصميم تطبيقات الكمبيوتر التي تقوم بإنشاء صفحات الويب عند الطلب (ديناميكيًا) عن طريق الوصول إلى قواعد البيانات الخلفية.
عند نشر هذه التطبيقات على بيئات متعددة الطبقات تشمل عملاء قائمين على المتصفح، وخوادم تطبيقات الويب، وقواعد بيانات خلفية، [ 1 ] [ 2 ] يتم استخدام التخزين المؤقت لقاعدة البيانات في الطبقة الوسطى لتحقيق قابلية توسع وأداء عاليين. [ 2 ]
في بنية ثلاثية الطبقات ، يمكن أن تكون طبقة برمجيات التطبيق وطبقة تخزين البيانات على مضيفين مختلفين. قد يحدّ معدل نقل البيانات في التطبيق من سرعة الشبكة . ويمكن تقليل هذا القيد بوضع قاعدة البيانات في طبقة التطبيق. ولأن برامج قواعد البيانات التجارية تستهلك موارد النظام بكثافة، فليس من العملي دائمًا وضع التطبيق وقاعدة البيانات على نفس المضيف. في هذه الحالة، يمكن استخدام تطبيق قاعدة بيانات أخف وزنًا لتخزين البيانات مؤقتًا من نظام إدارة قواعد البيانات التجاري .
فوائد
يُحسّن التخزين المؤقت لقواعد البيانات قابلية التوسع من خلال توزيع عبء الاستعلامات من الخادم الخلفي إلى أنظمة واجهة أمامية متعددة ومنخفضة التكلفة. كما يُتيح مرونة في معالجة البيانات؛ فعلى سبيل المثال، يُمكن تخزين بيانات عملاء الفئة البلاتينية مؤقتًا بينما لا تُخزن بيانات العملاء العاديين. ويُمكن للتخزين المؤقت تحسين توافر البيانات، من خلال توفير خدمة مستمرة للتطبيقات التي تعتمد فقط على الجداول المخزنة مؤقتًا حتى في حال تعطل الخادم الخلفي. ومن الفوائد الأخرى تحسين سرعات الوصول إلى البيانات بفضل توطين البيانات وتخفيف ذروة الأحمال عن طريق تجنب عمليات النقل ذهابًا وإيابًا بين الطبقة الوسطى وطبقة البيانات. [ 3 ]
عناصر التصميم المحتملة
- جداول ذاكرة التخزين المؤقت القابلة للتحديث: العديد من أنظمة ذاكرة التخزين المؤقت هي للقراءة فقط مما يحد من استخدامها لجزء صغير من التطبيقات، وهي التطبيقات غير المتعلقة بالوقت الحقيقي.
- التحديثات ثنائية الاتجاه: بالنسبة لذاكرة التخزين المؤقت القابلة للتحديث، يجب نشر التحديثات التي تحدث في ذاكرة التخزين المؤقت إلى قاعدة البيانات المستهدفة، ويجب أن تصل أي تحديثات تحدث مباشرة على قاعدة البيانات المستهدفة إلى ذاكرة التخزين المؤقت تلقائيًا.
- نشر التحديثات المتزامنة وغير المتزامنة: تُنشر التحديثات على جدول التخزين المؤقت إلى قاعدة البيانات المستهدفة بطريقتين. تضمن الطريقة المتزامنة تطبيق التحديثات على قاعدة البيانات المستهدفة فور اكتمال عملية قاعدة البيانات. أما في الطريقة غير المتزامنة، فتتأخر التحديثات إلى قاعدة البيانات المستهدفة. توفر الطريقة المتزامنة اتساقًا عاليًا للتخزين المؤقت، وهي مناسبة للتطبيقات التي تعمل في الوقت الفعلي. بينما توفر الطريقة غير المتزامنة إنتاجية عالية، وهي مناسبة للتطبيقات التي تعمل في الوقت الفعلي تقريبًا.
- مستويات تخزين مؤقت متعددة - على مستوى قاعدة البيانات، ومستوى الجدول، ومستوى مجموعة النتائج: تُعدّ معظم قواعد بيانات الشركات بيانات تاريخية ونادرًا ما يتم الوصول إليها. ولكن، هناك بعض المعلومات التي يجب أن تكون متاحة على الفور، مثل بيانات العملاء المميزين، وما إلى ذلك.
- استعادة الجداول المخزنة مؤقتًا: في حالة حدوث عطل في النظام أو انقطاع التيار الكهربائي، يجب استعادة جميع المعاملات الملتزمة على الجداول المخزنة مؤقتًا أثناء إعادة تشغيل منصة التخزين المؤقت.
- أدوات التحقق من اتساق ذاكرة التخزين المؤقت: في حالة استخدام نمط التحديث غير المتزامن، قد تختلف ذاكرة التخزين المؤقت في عُقد التخزين المؤقت المختلفة عن قاعدة البيانات المستهدفة. يجب حل هذه المشكلة يدويًا، مع تحديد حالات عدم التطابق واتخاذ الإجراءات التصحيحية اللازمة.
- قابلية التوسع الأفقي: قد تزيد الحوسبة العنقودية من التوافر وتحقق توازن الأحمال. يمتد التخزين المؤقت في بيئة عنقودية عبر عدة عقد، مما يحافظ على اتساق البيانات المخزنة مؤقتًا عبر العقد.
- الوصول الشفاف إلى الجداول غير المخزنة مؤقتًا موجود في قاعدة البيانات المستهدفة: يجب أن تحتفظ ذاكرة التخزين المؤقت لقاعدة البيانات بسجل للاستعلامات ويجب أن تكون قادرة على التوجيه بذكاء إلى ذاكرة التخزين المؤقت لقاعدة البيانات أو إلى قاعدة البيانات الأصلية بناءً على موقع البيانات دون أي تعديل على كود التطبيق .
- تجاوز الأعطال بشفافية: يجب ألا تحدث أي انقطاعات في الخدمة في حالة تعطل منصة التخزين المؤقت. يجب توجيه اتصالات العملاء إلى قاعدة البيانات المستهدفة.
- لا يتطلب التطبيق أي تغييرات تُذكر: يدعم التطبيق واجهات قياسية مثل JDBC وODBC وغيرها، مما يضمن تشغيله بسلاسة دون الحاجة إلى أي تعديلات على كود التطبيق. كما يُوجّه جميع استدعاءات الإجراءات المخزنة إلى قاعدة البيانات المستهدفة، فلا حاجة إلى نقلها.
- تطبيق ذاكرة تخزين مؤقت داخلية متخصصة: تتجاوز قواعد البيانات الموجهة نحو الأداء مثل ScyllaDB ذاكرة التخزين المؤقت لنظام Linux تمامًا أثناء عمليات القراءة، وتستخدم بدلاً من ذلك ذاكرة تخزين مؤقت داخلية متكاملة قائمة على الصفوف. [ 4 ]
مآزق في عمليات التنفيذ
- عمليات الحذف أو الإبطال في ذاكرة التخزين المؤقت: غالبًا ما تؤدي تصميمات ذاكرة التخزين المؤقت التي تستخدم محركات تخزين مؤقت خارجية مثل Redis أو Hazelcast إلى إبطال البيانات عن طريق حذف الكائنات التي تم إبطالها. قد ينتج عن ذلك عملية كتابة واحدة تؤدي إلى آلاف عمليات الحذف، مما يؤثر سلبًا على الأداء.
- عدم تتبع المفاتيح: عند استخدام محرك تخزين مؤقت خارجي، غالبًا ما يؤدي أي طلب إلى البحث عن المفتاح في طبقة التخزين المؤقت. في حال عدم العثور عليه، قد يؤدي ذلك إلى زيادة زمن الاستجابة (RTT)، مما يزيد من زمن الاستجابة الإجمالي للطلبات. مع ذلك، توفر محركات مثل Redis و Hazelcast دعمًا لإشعارات تغيير المفاتيح، مما يسمح بتحديث طبقات التخزين المؤقت المحلية عند تغيير المفاتيح في طبقة تخزين مؤقت بعيدة. من خلال تتبع هذه المفاتيح محليًا، يمكن تجنب عمليات البحث البعيدة عند عدم العثور على المفتاح في التخزين المؤقت، وبالتالي تجنب زيادة زمن الاستجابة.
- إبطال البيانات كحدث فوري، وليس ضمن نطاق زمني: عند تغيير جدول كجزء من معاملة، يؤثر وضع SQL على ما إذا كان الاستعلام على اتصال آخر سيشهد التغييرات أم لا. لذا، حتى قبل إتمام المعاملة أو التراجع عنها، فإن أي تغيير يطرأ على جدول أثناء المعاملة يُفترض أن يجعله متقلبًا حتى اكتمالها. غالبًا ما تُبطل محركات التخزين المؤقت النتائج قبل تنفيذ الاستعلام أو بعده فقط.
- التخزين المؤقت الموزع مع انعدام الاتصال: إذا كان تصميم التخزين المؤقت يعتمد على طبقة تخزين أساسية، فعند استخدامه كتخزين مؤقت موزع، تتم عمليات الإبطال محليًا بناءً على الجداول التي تُكتب إليها في وقت محدد. لسوء الحظ، قد تكون هناك عُقد أخرى قد كتبت كائنات تخزين مؤقت لنفس الجدول، ولن يتم إبطال هذه الكائنات. قد يكون هذا مقبولًا عند استخدامه لبيانات الجلسة المحلية مع استمرارية العميل في المصدر، ولكن بالنسبة للبيانات المشتركة التي تحتاج إلى الحفاظ على اتساقها عبر الجلسات، فقد يتسبب ذلك في مشاكل في اتساق البيانات.
مراجع
- ↑ لارسون، بير-أكي؛ غولدشتاين، جوناثان (2004). "MTCache: التخزين المؤقت الشفاف لقاعدة البيانات في الطبقة الوسطى". CiteSeerX 10.1.1.95.875 .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - 1 2 ألتينيل، محمد؛ لو، كيونغ؛ كريشنامورثي، سايلش؛ موهان، سي.؛ بيراهيش، حامد؛ ليندسي، بروس جي.؛ وو، هونغوك؛ براون، لاري (2002). "DBCache: التخزين المؤقت لقواعد البيانات لخوادم تطبيقات الويب" (ملف PDF) . CiteSeerX 10.1.1.104.8991 .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ "التخزين المؤقت لقاعدة البيانات في الطبقة الوسطى للأعمال الإلكترونية". CiteSeerX 10.1.1.140.8455 .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ "لماذا يجب على قواعد البيانات تجاوز ذاكرة التخزين المؤقت للصفحات في لينكس" . 13 مارس 2024. تم الاطلاع عليه في 2 أبريل 2024 .
روابط خارجية
- التخزين المؤقت لقاعدة البيانات
