سؤال

كيف أقرر أي CacheConcurrencyStrategy ليستخدم؟

  • NonstrictReadWriteCache,
  • ReadOnlyCache,
  • ReadWriteCache,
  • TransactionalCache.

انا افرا https://www.hopernate.org/hib_docs/v3/api/org/hibernate/cache/cacheconcurrencysgy.html., لكن لا يفسر بالتفصيل بما فيه الكفاية.

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

المحلول

ال وثائق السبات هل وظيفة جيدة جدا في تحديدها:

19.2.2. الاستراتيجية: اقرأ فقط

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

19.2.3. الاستراتيجية: قراءة / اكتب

إذا كان التطبيق يحتاج إلى تحديث البيانات، فقد يكون ذاكرة التخزين المؤقت للقراءة مناسبة. لا ينبغي استخدام استراتيجية ذاكرة التخزين المؤقت هذه إذا كان مستوى عزل المعاملات المتسلسل مطلوبا. إذا تم استخدام ذاكرة التخزين المؤقت في بيئة JTA، فيجب عليك تحديد العقار hibernate.transaction.manager_lookup_classوتسمية استراتيجية للحصول على JTA TransactionManager. وبعد في بيئات أخرى، يجب عليك التأكد من اكتمال المعاملة عند Session.close() أو Session.disconnect() يسمى. إذا كنت ترغب في استخدام هذه الاستراتيجية في كتلة، يجب عليك التأكد من أن تنفيذ ذاكرة التخزين المؤقت الأساسي يدعم القفل. لا يدعم موفري مخبأ مدمجون القفل.

19.2.4. الإستراتيجية: Nonstrict قراءة / اكتب

إذا احتاج التطبيق فقط في بعض الأحيان إلى تحديث البيانات (أي إذا كان من غير المرجح للغاية أن تحاول معاملتان تحديث نفس العنصر في وقت واحد)، فإن عزل المعاملات الصارمة غير مطلوب، قد يكون ذاكرة التخزين المؤقت للقراءة الناقصة مناسبة. إذا تم استخدام ذاكرة التخزين المؤقت في بيئة JTA، يجب عليك تحديد ذلك hibernate.transaction.manager_lookup_classوبعد في بيئات أخرى، يجب عليك التأكد من اكتمال المعاملة عند Session.close() أو Session.disconnect() يسمى.

19.2.5. الاستراتيجية: المعاملات

توفر استراتيجية ذاكرة التخزين المؤقت للمعاملات الدعم لموفري ذاكرة التخزين المؤقت المعاملات بالكامل مثل JBOSS Treecache. لا يمكن استخدام مثل هذا التخزين المؤقت إلا في بيئة JTA ويجب أن تحدد hibernate.transaction.manager_lookup_class.

بعبارات أخرى:

  • يقرأ فقط: مفيدة للبيانات التي هي قراءة في كثير من الأحيان ولكن لم يتم تحديثها (مثل البيانات المرجانية مثل البلدان). انها بسيطة. لديها أفضل العروض للجميع (من الواضح).

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

  • Nonstrict قراءة / اكتب: بدلا من ذلك، إذا كان من غير المرجح أن يقوم مؤشراتان منفصلان معاملة بتحديث نفس الكائن، فقد تستخدم استراتيجية Nonstrict-Read-Write. لديها نقاط نفقات أقل من القراءة. هذا واحد مفيد للبيانات التي هي نادرا ما تم تحديثه.

  • المعاملات: إذا كنت بحاجة إلى معاملات كاملة مخبأ. مناسبة فقط في بيئة JTA.

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

نصائح أخرى

يقرأ فقط: يستخدم فقط للكيانات التي لا تتغير أبدا (يتم إلقاء الاستثناء إذا تم إجراء محاولة لتحديث مثل هذا الكيان). انها بسيطة جدا والأداء. مناسبة جدا لبعض البيانات المرجعية الثابتة التي لا تتغير.

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

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

المعاملات: يتم إجراء تغييرات ذاكرة التخزين المؤقت في معاملات XA الموزعة. يتم التزام أي تغيير في كيان مخزنا بالخزنة أو التراجع في كلا من قاعدة البيانات وذاكرة التخزين المؤقت في نفس معاملة XA.

قراءة مستندات API أمر جيد، ولكن يجب عليك أيضا قراءة الوثائق (رهيبة) أيضا، ذاكرة التخزين المؤقت المستوى الثاني - الاستراتيجيات.

  1. المعاملات - استخدم هذه الاستراتيجية للبيانات للقراءة في معظمها حيث من الضروري منع البيانات التي لا معنى لها في المعاملات المتزامنة، في حالة نادرة للتحديث.

  2. قراءة - الكتابة - استخدم مرة أخرى هذه الاستراتيجية للبيانات في الغالب حيث من الأهمية بمكان منع البيانات التي لا معنى لها في المعاملات المتزامنة، في حالة نادرة للتحديث.

  3. nonstrict - قراءة الكتابة - لا تضمن هذه الاستراتيجية ضمانا بالاتساق بين ذاكرة التخزين المؤقت وقاعدة البيانات. استخدم هذه الاستراتيجية إذا كانت البيانات بالكاد تتغير من أي وقت مضى وأحتمال صغير للبيانات التي لا معنى لها ليست مصدر قلق بالغ.

  4. للقراءة فقط - استراتيجية التزامن مناسبة للبيانات، والتي لا تتغير أبدا. استخدمه للبيانات المرجعية فقط.

آمل أن يكون هذا يميل شكك!

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