2010-12-29 11 views
6

कई बार मैं एक डेटा संरचना चाहता था जो SQL तालिका के समान है जहां आप विभिन्न फ़ील्ड और एकाधिक फ़ील्ड पर चयन कर सकते हैं। एक स्मृति एसक्यूएल कार्यान्वयन के समान, सिवाय इसके कि मैं डेटा संरचना में कई वस्तुओं को स्टोर नहीं करना चाहता हूं।स्मृति में जावा एसक्यूएल टेबल डेटा संरचना

मुझे ऑब्जेक्ट को मानक जावा माध्यमों के माध्यम से क्रमबद्ध करने की भी आवश्यकता है।

मैंने इसे कई हैश टेबल या कस्टम हैश कुंजी के साथ पहले किया है लेकिन यह बहुत सारे कोड होने और समस्या को बहुत विशिष्ट बना देता है।

मैंने ग्रोवी का उपयोग बंद करने की क्षमता और जीपीएथ के साथ भी किया है, लेकिन मेरे पास हमेशा उपलब्ध नहीं है (विभिन्न परियोजनाएं)।

संपादित करें: मुझे लगता है मेरी समस्या एक वस्तु ट्रेवर्सल/चयन समस्या अधिक है यहाँ कुछ दिलचस्प परियोजनाओं हैं:

हालांकि इन परियोजनाओं के सबसे करने के लिए नकारात्मक पक्ष यह है कि वे वस्तुओं सीधे एक सूचकांक (हैश) से (गैर प्रतिबिंब गेटर/सेटर) और निश्चित रूप से धीमी तक पहुँचने तुलना में बहुत धीमी हो रहा है।

+0

क्या आप डेटा के कुछ स्टैंडअलोन स्नैपशॉट पूछने जा रहे हैं? मल्टीथ्रेडिंग, लॉकिंग, लेनदेन, आवेषण/अपडेट के बारे में क्या? यदि ऊपर से कोई भी संभव है - मैं @Alex के साथ 100% सहमत हूं। – Osw

+0

@Osw यह सुविधा के लिए पूरी तरह से नहीं है। मुझे आरडीबीएमएस की एसीआईडी ​​प्रकृति की आवश्यकता नहीं है। मुझे क्वेरी की क्षमता चाहिए। –

+0

लगता है कि ये लिंक सहायक हो सकते हैं: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html और http://almaer.com/blog/hibernate-3-testing- इन-इन-मेमोरी-प्लग करने योग्य-दृढ़ता – Osw

उत्तर

3

JavaDB और HSQLDB, दूसरों के बीच, पूरी तरह से स्मृति डेटाबेस हैं।

+0

उन लोगों के साथ समस्या यह है कि मुझे डेटा संरचनाएं न दें जिन्हें मैं मार्शल/क्रमबद्ध कर सकता हूं। मैं कुछ ऐसा ढूंढ रहा हूं जिसे मैं एक्सस्ट्रीम कर सकता हूं। –

+0

हालांकि मुझे लगता है कि मैं किसी तालिका का प्रतिनिधित्व करने के लिए किसी प्रकार का जेनेरिक डेटा ऑब्जेक्ट बना सकता हूं और अनमशल पर इन-मेमोरी सिंगलटन rdbms पर लोड हो जाता है लेकिन अगर थ्रेड सुरक्षित नहीं है और थ्रेड अवरुद्ध होने पर बहुत सारे थ्रेड सुरक्षा में समस्याएं हैं। –

+0

मुझे संदेह है कि आपको कुछ ऐसी चीजें मिलेंगी जो दोनों आवश्यकताओं को पूरा करती हैं। मेरा सुझाव: इन-मेमोरी डीबी में टेबल का स्नैपशॉट लेने के लिए एक क्रमिक पीओजेओ का उपयोग करें, और उसके बाद उसे क्रमबद्ध करें। दूसरी तरफ जाने के साथ-साथ तुच्छ भी होगा, एक्सस्ट्रीम को पीओजेओ में अनमशेल करें और फिर डेटा को इन-मेमोरी डीबी में लोड करें। – RobertB

2

इन उद्देश्यों के लिए इन-मेमोरी एसक्यूएल स्टोरेज का उपयोग करने के बारे में आप क्या चिंतित हैं? आप विकास के समय का एक टन बचा लेंगे; प्रदर्शन ओवरहेड वास्तव में महत्वहीन है। इसे स्वयं लागू करने की कोशिश करके आप बहुत अधिक जोखिम लेते हैं।

+2

ऐसा लगता है (वैसे भी मेरे लिए) वह खुद को बनाने के लिए एक विकल्प की तलाश में था। साथ ही, यह वास्तव में एक उत्तर नहीं है और मूल प्रश्न पर एक टिप्पणी के रूप में बेहतर हो सकता है। – RobertB

+0

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

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