سؤال

لم تستخدم ذاكرة التخزين المؤقت مثل هذا من قبل.المشكلة هي أنني أريد تحميل أكثر من 500000 سجل من قاعدة البيانات والقيام ببعض التحديد/التصفية بسرعة.

أفكر في استخدام ذاكرة التخزين المؤقت، ووجدت مبدئيا EHCache و OSCache, ، أي آراء؟

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

المحلول

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

قد ترغب أيضًا في التفكير في إجراء التصفية في استعلام قاعدة البيانات إذا كان ذلك ممكنًا.غالبًا ما يمنحك استخدام استعلام مضبوط يُرجع مجموعة نتائج أصغر أداءً أفضل من تحميل 500000 صف في الذاكرة ثم تصفيتها.

نصائح أخرى

اذا حكمنا من خلالهم صفحة الإصدارات, ، لم تتم صيانة OSCache بشكل نشط منذ عام 2007.هذا ليس شيئا جيدا.من ناحية أخرى، فإن EhCache قيد التطوير المستمر.لهذا السبب وحده، سأختار EhCache.

تحرير نوفمبر 2013:لقد مات OSCache، مثل بقية OpenSymphony.

لقد استخدمت JCS (http://jakarta.Apache.org/jcs/) ويبدو متينًا وسهل الاستخدام برمجيًا.

يعتمد الأمر نوعًا ما على احتياجاتك.إذا كنت تقوم بالعمل في الذاكرة على جهاز واحد، فستعمل ehcache بشكل مثالي، على افتراض أن لديك ذاكرة وصول عشوائي كافية أو قرصًا ثابتًا سريعًا بدرجة كافية بحيث لا يتسبب الفائض في ترحيل/ترحيل القرص.إذا وجدت أنك بحاجة إلى تحقيق قابلية التوسع، حتى على الرغم من حدوث هذه العملية تحديدًا كثيرًا، فمن المحتمل أنك سترغب في إجراء التجميع.يدعم JGroups /TreeCache من JBoss هذا، وكذلك EHcache (على ما أظن)، وأنا أعلم أنه يعمل بالتأكيد إذا كنت تستخدم Ehcache مع الطين، وهو تكامل رائع للغاية.لا تتحدث هذه الإجابة مباشرة عن مزايا EHcache وOSCache، لذا إليك هذه الإجابة:يبدو أن EHcache يتمتع بأكبر قدر من القصور الذاتي (كان يستخدم ليكون التطوير الافتراضي والمعروف والنشط، بما في ذلك خادم ذاكرة التخزين المؤقت الجديد)، ويبدو أن OSCache (في مرحلة ما على الأقل) يحتوي على ميزات أكثر قليلاً، لكنني أعتقد أنه مع الخيارات المذكورة أعلاه هذه المزايا محل نقاش/محل محلها.آه، الشيء الآخر الذي نسيت أن أذكره هو أن معاملات البيانات مهمة، وستعمل متطلباتك على تحسين قائمة الاختيارات الصالحة.

اختر ذاكرة تخزين مؤقت تتوافق مع JSR 107 مما سيجعل مهمتك سهلة عندما تريد الترحيل من تطبيق إلى آخر.لكي تكون محددًا في السؤال، انتقل إلى Ehcache وهو حل التخزين المؤقت الأكثر شيوعًا والأكثر استخدامًا لـ Java.نحن نستخدم Ehcache على نطاق واسع وهو يعمل لصالحنا.

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

وفي كلتا الحالتين، أوصي باستخدامها مع Spring Modules.يمكن أن تكون ذاكرة التخزين المؤقت شفافة للتطبيق، ومن السهل جدًا تبديل تطبيقات ذاكرة التخزين المؤقت.بالإضافة إلى OSCache وEHCache، تدعم Spring Modules أيضًا ذاكرة التخزين المؤقت Gigaspaces وJBoss.

أما بالنسبة للمقارنات....من الأسهل تكوين Oscache على المزيد من خيارات التكوين

كلاهما متين للغاية، وكلاهما يدعم ذاكرة التخزين المؤقت المتطابقة، وكلاهما يعمل مع Terracotta، وكلاهما يدعم التخزين المؤقت في الذاكرة والتخزين المؤقت على القرص.

لقد استخدمت oscache في العديد من مشاريع الربيع مع وحدات الربيع، وذلك باستخدام التكوين القائم على aop.

لقد بحثت مؤخرًا عن استخدام وحدات oscache + Spring في مشروع Spring 3.x، لكنني وجدت أن التخزين المؤقت المستند إلى التعليقات التوضيحية للوحدات الربيعية غير مدعوم (حتى بواسطة الشوكة).

لقد علمت مؤخرًا بهذا المشروع -

http://code.google.com/p/ehcache-spring-annotations/

الذي يدعم Spring 3.x مع التخزين المؤقت القائم على التعليقات التوضيحية باستخدام ehcache.

أستخدم EhCache بشكل أساسي لأنه كان موفر ذاكرة التخزين المؤقت الافتراضي لـ Hibernate.توجد قائمة بحلول التخزين المؤقت جافا Source.net.

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

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

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