2009-03-31 19 views
5

क्या जावा के लिए कोई मेमोरी/कैशिंग समाधान है जो कैश में ऑब्जेक्ट्स के विशिष्ट विशेषताओं के लिए पूछताछ के रूप में अनुमति देता है?कैशिंग समाधान और क्वेरीिंग

मुझे एहसास है कि यह ऐसा कुछ है जो एक पूर्ण उड़ा डेटाबेस का उपयोग किया जाएगा, लेकिन मैं डेटाबेस की क्वेरीिंग क्षमता के साथ कैश की गति/प्रदर्शन करने में सक्षम होना चाहता हूं।

+0

आप जो भी पूछ रहे हैं वह एक साधारण मानचित्र से अलग कैसे है? आप मानचित्र पर प्राथमिक प्रश्न कर सकते हैं, एक कुंजी को वापस करने वाली एक कुंजी तक सीमित है। –

+0

पॉल के प्रश्न का विस्तार करने के लिए, क्या आपके प्रश्न सरल 'फ़ील्ड = वैल्यू' प्रश्न हैं, या आपको 'फ़ील्ड> वैल्यू' या 'फील्ड 1 = वैल्यू 1 और फील्ड 2 = वैल्यू 2' जैसी अधिक तर्क की आवश्यकता है? – joev

+0

अधिक तर्क अधिक बेहतर है। (फ़ील्ड> एक्स, वाई <फ़ील्ड systemoutprintln

उत्तर

3

आजकल उत्तर को जेबॉस कैश के उत्तराधिकारी Infinispan पर अपडेट किया जाना चाहिए और खोज तकनीक में काफी सुधार हुआ है।

+0

हां, इन्फिनिसन कैश ऑब्जेक्ट्स में खोज के लिए अपाचे ल्यूसीन और हाइबरनेट खोज का उपयोग करता है। –

2

पहले, HSQLDB दिमाग में आया, लेकिन यह किसी ऑब्जेक्ट डेटाबेस की बजाय इन-मेमोरी रिलेशनल डेटाबेस है। शायद this list पर देखना चाहते हैं। वहां कुछ ऑब्जेक्ट डेटाबेस हैं, जिनमें से एक आपकी आवश्यकताओं को पूरा कर सकता है।

1

लाइटवेट जावा ऑब्जेक्ट डेटाबेस पर db4o पर देखें। तुम भी नियमित रूप से जावा कोड का उपयोग कर डेटा को क्वेरी कर सकते हैं:

List students = database.query(new Predicate(){ 
     public boolean match(Student student){ 
     return student.getAge() < 20 
      && student.getGrade().equals(gradeA);}}) 

(this article से)।

4

जेबॉस कैश में खोज कार्यक्षमता है। इसे JBossCacheSearchable कहा जाता है। साइट से:

इस एकीकरण पैकेज JBoss कैश और हाइबरनेट खोजें बीच है।

लक्ष्य JBoss कैश में खोज क्षमताओं जोड़ने का लक्ष्य है। हम इसे द्वारा Hibernate खोज का उपयोग करते हुए उपयोगकर्ता ऑब्जेक्ट्स को कैश में संशोधित करते हैं और संशोधित करते हैं। कैश को द्वारा सत्यापित किया गया है जो वैध अपाचे ल्यूसीन क्वेरी में गुज़र रहा है जिसका उपयोग इंडेक्स के माध्यम से खोजने के लिए किया जाता है और कैश से ऑब्जेक्ट्स को पुनर्प्राप्त करने के लिए उपयोग किया जाता है।

मुख्य JBoss कैश पेज: http://www.jboss.org/jbosscache/

JBossCacheSearch: http://www.jboss.org/community/docs/DOC-10286

0

एक और विचार Lucene और सूचकांक क्या आप अपने कैश में लाना निर्देशिका के RAMDirectory कार्यान्वयन उपयोग करने के लिए है। इस तरह, आप ल्यूसीन द्वारा प्रदान की जाने वाली सभी खोज इंजन क्वेरी सुविधाओं का उपयोग करके क्वेरी कर सकते हैं।

अपने मामले में, आप शायद अपनी ऑब्जेक्ट्स के प्रासंगिक गुणों को इंडेक्स (विश्लेषक का उपयोग किए बिना) और एक बूलियन समानता ऑपरेटर का उपयोग करके क्वेरी करेंगे।

लुसीन बहुत हल्का, प्रदर्शन करने वाला, धागा-सुरक्षित और स्मृति खपत कम है।

3

Terracotta या GBeans या POJOCache

+1

ठीक है, अजीब। किसी ने मुझे ईमेल किया और मुझे यह लिंक pojocache के लिए प्रदान करने के लिए कहा: http://www.samaxes.com/2009/03/17/jboss-pojocache-configuration/? मैं नहीं देखता कि वे खुद को यहां क्यों टिप्पणी नहीं करेंगे। –

0

आप इस लाइब्रेरी देखना चाहते हो सकता है:

http://casperdatasets.googlecode.com

इस एक डाटासेट तकनीक है। यह टैब्यूलर डेटा (या तो डेटाबेस से या कोड में निर्मित) का समर्थन करता है, और फिर आप सभी इन-मेमोरी डेटासेट (और सॉर्ट) के विरुद्ध क्वेरी और फ़िल्टर बना सकते हैं। इसका तेज़ और उपयोग में आसान। सबसे महत्वपूर्ण बात यह है कि आप किसी भी कॉलम या डेटासेट पर विशेषता के खिलाफ प्रश्न कर सकते हैं।

संबंधित मुद्दे