كل ما تريد معرفته عن التخزين المؤقت



يوم جيد.

أقدم لكم ترجمة المقال "كل ما تحتاج لمعرفته حول التخزين المؤقت - تصميم النظام" من إعداد Animesh Gaitonde.

المقدمة


هل لاحظت أنه عند تصفح صفحة ويب ذات اتصال إنترنت ضعيف ، يتم تحميل النص أمام صور عالية الجودة؟ ومع ذلك ، عند زيارة نفس الصفحة مرة أخرى ، يتم تحميلها بشكل أسرع. عندما تزور موقعًا جديدًا ، يستغرق تنزيله وقتًا أطول بكثير من تنزيل المواقع التي يتم زيارتها بشكل متكرر مثل Facebook أو Amazon. هل تعرف لماذا يحدث هذا؟ كل شيء عن التخزين المؤقت.



هذا ما تبدو عليه صفحتي في Instagram مع اتصال بطيء. كما ترى ، يتم عرض النص بينما لم يتم تحميل الصور بعد.

من المهم جدًا تقديم أفضل تجربة باستخدام التطبيق للاحتفاظ بالمستخدمين وإشراكهم. في عالم حديث حيث تسود روح المنافسة ، يعاني العمل بشكل كبير بسبب تجربة المستخدم السيئة. تخيل أنك تشاهد المسلسل المفضل لديك أو دفق الفيديو على موقع ويب ، ولكن يتم إيقاف تشغيل الفيديو باستمرار لمزيد من التحميل (التخزين المؤقت). إلى متى سوف تتحمل مثل هذا "الموقف" وهل ستعود إلى هذا الموقع؟

يعمل التخزين المؤقت على مبدأ "توطين الروابط". ذاكرة التخزين المؤقت هي مستودع بيانات محلي لتسريع استرجاع المعلومات واستعادة البيانات. الغرض الرئيسي من ذاكرة التخزين المؤقت هو تقليل التأخير في قراءة البيانات وزيادة إنتاجية التطبيق. دعونا نلقي نظرة على بعض الأمثلة الواقعية.

استخدام ذاكرة التخزين المؤقت


افترض أنك تطبخ العشاء كل يوم. للطبخ ، تحتاج إلى مكونات مختلفة ، خضار ، توابل ، إلخ. ومع ذلك ، هل تذهب إلى المتجر كل يوم لهذا الغرض؟ يمكن أن يكون هذا مرهقًا للغاية ويستغرق وقتًا طويلاً. بالطبع ، أول شيء تنظر إليه في الخزانة في المطبخ أو الثلاجة. هذا يساعد على تجنب رحلة غير ضرورية إلى السوبر ماركت.



ثلاجتك هي نوع من ذاكرة التخزين المؤقت للخضروات. الميزة الواضحة في ذاكرة التخزين المؤقت هذه هي توفير كبير في وقت إعداد العشاء.

كيف تعمل ذاكرة التخزين المؤقت؟


تقوم تطبيقات الخادم عادةً بتخزين البيانات في قاعدة بيانات. عندما يطلب العميل بيانات ، يرسل التطبيق طلبًا إلى قاعدة البيانات ، ويستقبل البيانات من هناك ويرسلها إلى العميل. خادم قاعدة البيانات غير متصل ويمكن وضعه على جهاز كمبيوتر مختلف عن الكمبيوتر الذي يوجد عليه خادم التطبيق.



قراءة البيانات من قاعدة البيانات عملية بطيئة للغاية ، لأنك تحتاج إلى إرسال طلب وإجراء إدخال / إخراج للحصول على البيانات من نظام الملفات. إذا تم تخزين البيانات في ذاكرة التخزين المؤقت ، فستكون عملية القراءة سريعة جدًا. عندما يطلب العميل البيانات نفسها بشكل متكرر ، فمن المنطقي إعادة البيانات من ذاكرة التخزين المؤقت بدلاً من قاعدة البيانات.

على سبيل المثال: إذا كانت تغريدة فيروسية ، فسيطلب جميع العملاء بيانات للتغريدة نفسها. نظرًا لأن Twitter لديه الملايين من المستخدمين ، فإن استخدام ذاكرة التخزين المؤقت يتجنب الملايين من استعلامات قاعدة البيانات.

وبالتالي ، تقلل ذاكرة التخزين المؤقت الحمل على قاعدة البيانات. إذا كانت البيانات المطلوبة في ذاكرة التخزين المؤقت ، فسيتم إعادة توجيه طلب قاعدة البيانات (يتم اعتراضها). يمكنك رسم بعض القياس باستخدام جدول التجزئة الذي يخزن أزواج القيمة الرئيسية.

يوضح الرسم البياني التالي عملية قراءة البيانات من ذاكرة التخزين المؤقت:



مفاهيم التخزين المؤقت الرئيسية


مدة البقاء (TTL)


هذه هي قيود على كمية البيانات التي يمكن تخزينها في ذاكرة التخزين المؤقت. يجب حذف الإدخالات في ذاكرة التخزين المؤقت التي لم يعد يحتاجها خادم التطبيق.

في حالة Netflix ، سيقوم الخادم بتخزين البرامج الأكثر مشاهدة أو شعبية في ذاكرة التخزين المؤقت. ليست هناك حاجة إلى التخزين المؤقت يظهر أن لا أحد يراقب.

على سبيل المثال: يعد التخزين المؤقت لسلسلة Paper House أكثر عقلانية من فيلم Indiana Jones.

حذف السياسة


في مرحلة ما ، ذاكرة التخزين المؤقت ممتلئة. ومن هنا تنشأ الحاجة إلى حذف البيانات القديمة (غير ذات الصلة) واستبدالها بمعلومات جديدة (ذات صلة).

هناك العديد من السياسات لمسح ذاكرة التخزين المؤقت ، مثل "القديم (الأقل استخدامًا مؤخرًا)" (الأقل استخدامًا مؤخرًا ، LRU) ، "نادرًا ما يُطلب (الأقل استخدامًا)" (الأقل استخدامًا بشكل متكرر ، LFU) ، "الأخير (الأكثر استخدامًا مؤخرًا)" ( الأكثر استخدامًا ، MRU). تحذف هذه السياسات البيانات من ذاكرة التخزين المؤقت وفقًا لمبدأ محدد.

قديم


يتم حذف البيانات التي لم يتم طلبها لفترة طويلة من ذاكرة التخزين المؤقت. بمجرد امتلاء ذاكرة التخزين المؤقت ، يتم حذف البيانات القديمة ، تتم إضافة البيانات الجديدة.

افترض أن فيس بوك تخبئ صور المشاهير. يشير تحليل طلبات المشتركين إلى أهمية الصور الجديدة. عند امتلاء ذاكرة التخزين المؤقت ، سيتم حذف أقدم صورة منها.

نادرا ما يطلب


يتعقب LFU التردد أو عدد طلبات البيانات. عندما يقترب حجم ذاكرة التخزين المؤقت من قيمة العتبة ، سيتم حذف البيانات الأكثر طلبًا.

عند إدخال النص ، يبدأ الهاتف في تقديم خيارات متنوعة لإنهاء الكلمة ، يمكن تحديد أحدها بدلاً من المجموعة الكاملة (الإكمال التلقائي). يقوم برنامج الهاتف الذكي بتخزين الكلمات المكتوبة بشكل متكرر.



نادرًا ما يتم حذف الكلمات المكتوبة من ذاكرة التخزين المؤقت هذه. في المثال أعلاه ، إذا كنت تستخدم الكلمات "feature" ، و "features" ، و "feather" ، وما إلى ذلك ، فبعد مرور بعض الوقت سيتوقف الهاتف عن تقديم "feat" ، حيث ستتم إزالته من ذاكرة التخزين المؤقت.

الاخير


في هذه السياسة ، تخضع أحدث البيانات للحذف ، ويتم إعطاء الأفضلية للبيانات القديمة المخزنة في ذاكرة التخزين المؤقت. يتم استخدام هذه الإستراتيجية إذا كان قالب الحصول على البيانات بحيث يكون المستخدم أقل اهتمامًا باسترداد أحدث البيانات. تأمل في مثال.



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

في هذه الحالة ، هناك حاجة لحذف أحدث البيانات. يجب على التطبيق حذف ملفات التعريف التي تم عرضها من ذاكرة التخزين المؤقت.

أنواع التخزين المؤقت


تسجيل ذاكرة التخزين المؤقت


كما يوحي الاسم ، تتم كتابة البيانات أولاً إلى ذاكرة التخزين المؤقت ، ثم إلى قاعدة البيانات. هذا يضمن تناسق البيانات في ذاكرة التخزين المؤقت وقاعدة البيانات. تتوافق كل قراءة للبيانات من ذاكرة التخزين المؤقت مع أحدث سجل.



عيب هذا النهج هو زيادة وقت التسجيل. وهي غير مناسبة للأنظمة المحملة بشكل كبير مع عمليات كتابة البيانات المتكررة. ومع ذلك ، يعد ذلك رائعًا للتطبيقات التي غالبًا ما تعيد قراءة البيانات المخزنة في قاعدة البيانات. يتم تعويض الكتابة البطيئة من خلال القراءة السريعة والاتساق.

إدخال ذاكرة التخزين المؤقت


بديل عن النهج الأول هو كتابة البيانات إلى ذاكرة التخزين المؤقت وإضافة ملاحظة حول تغييرات البيانات لتحديثها اللاحق لقاعدة البيانات.



باستخدام العمليات غير المتزامنة الدورية ، يمكنك قراءة البيانات المحدثة في ذاكرة التخزين المؤقت وإجراء تغييرات على البيانات المقابلة في قاعدة البيانات. هذا الأسلوب لا يزيد من عمليات القراءة / الكتابة. العيب الوحيد هنا هو التأخير في المزامنة بين ذاكرة التخزين المؤقت وقاعدة البيانات. يمكن أن يؤدي ذلك إلى حقيقة أن التطبيقات التي تعتمد على قاعدة البيانات كمصدر للحقيقة ستقرأ البيانات القديمة.

على سبيل المثال ، يستخدم Youtube هذا الأسلوب لتخزين معلومات حول عدد مرات مشاهدة مقطع فيديو معين. سيكون تحديث قاعدة البيانات لكل عرض للفيديو الفيروسي مكلفًا للغاية. الحل الأفضل هو كتابة البيانات إلى ذاكرة التخزين المؤقت ثم المزامنة مع قاعدة البيانات.

سجل تجاوز ذاكرة التخزين المؤقت


لا تقوم العديد من تطبيقات الخادم بإعادة قراءة أحدث البيانات. في هذه الحالة ، يتم استخدام إدخال تجاوز ذاكرة التخزين المؤقت.



في هذا الأسلوب ، يتم تحديث قاعدة البيانات بدون ذاكرة تخزين مؤقت. هذا يتجنب تحميل البيانات التي لم تتم المطالبة بها في ذاكرة التخزين المؤقت. ومع ذلك ، إذا كان التطبيق لا يزال يطلب أحدث البيانات غير الموجودة في ذاكرة التخزين المؤقت ، سيؤدي ذلك إلى تحميل هذه البيانات من قاعدة البيانات مع جميع العواقب المترتبة عليها.

أمثلة على استخدام ذاكرة التخزين المؤقت الموزعة


قائمة مشاريع التخزين المؤقت المفتوحة:

  • ريديس
  • Memcached
  • Voltdb
  • dbs Aerospike
  • أباتشي يشعل

شكرآ لك على أهتمامك.

All Articles