لا يتم تخزين ذاكرة التخزين المؤقت للمستوى الثاني في حالة السبات مؤقتًا للكيانات الملتزمة

StackOverflow https://stackoverflow.com/questions/1401535

سؤال

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

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

تكوين وضع قفل EHCache في وضع السبات

هل كانت مفيدة؟

المحلول

يتحدث كتاب POJO's in Action المتطور عن ذلك

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

و...

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

واختر إحدى الاستراتيجيات التالية وفقًا لكتاب JPA with Hibernate

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

تمت الإضافة إلى الرد الأصلي:لا يضمن السبات الاتساق بين ذاكرة التخزين المؤقت وقاعدة البيانات سواء كنت تستخدم @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE).إذا كنت ترغب في استخدامه، فيجب عليك تكوين مهلة انتهاء صلاحية قصيرة بما فيه الكفاية والتي يمكن أن تؤثر على الأداء.

يعتبر،

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top