2010-08-09 24 views
15

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

ऊपर दिए गए सर्वोत्तम विकल्प क्या डेटाबेस हैं?

उत्तर

19

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

+0

बेंचमार्क लगातार डेटा स्टोर के लिए हैं, इन-मेमोरी परिणाम शायद अलग हैं क्योंकि अधिकांश ओवरहेड डेटाबेस में डिस्क/कैश नीतियों के कारण हैं। एच 2 और एचएसक्यूएलडीबी के बीच का अंतर काफी महत्वपूर्ण है लेकिन महत्वपूर्ण नहीं है। मैं अभी भी उपयोग की आसानी, न्यूनतम विन्यास, सुविधाओं के आधार पर चुनना चाहता हूं। और संगतता मोड सुविधा वास्तव में बहुत आकर्षक लगती है। धन्यवाद! – topchef

+0

@grigory: हाँ, आप सही हैं। लेकिन एक सतत मोड का उपयोग करते समय भी, H2 और HSQLDB वास्तव में डिफ़ॉल्ट रूप से स्मृति में चलाते हैं और डिस्क पर लिखने को रोकते हैं (स्थायित्व की कीमत पर)। तो डेटा अभी भी दिलचस्प है। –

4

मैं जावा में एकीकरण परीक्षण जेपीए/हाइबरनेट दृढ़ता के लिए HSQLDBin-memory का उपयोग कर रहा हूं। बहुत जल्दी शुरू होता है, किसी भी विशेष सेटअप की आवश्यकता नहीं है।

हाइबरनेट के साथ एचएसक्यूएलडीबी का उपयोग करने के साथ अब तक देखा गया एकमात्र मुद्दा बैच आकार के साथ 0 पर सेट करने की आवश्यकता है, लेकिन यह शायद पुराने संस्करण से संबंधित हो सकता है। मेरे पास एक खुदाई होगी और देखें कि क्या मुझे उस समस्या का विवरण मिल सकता है।

Derby supports an in-memory mode इन दिनों, यह अब प्रयोगात्मक चिह्नित नहीं है।

+0

इन-मेमोरी-डेटाबेस के लिए समान समर्थन दिया गया है, मैं सबसे सरल और कम से कम आक्रामक (उम्मीदवार शून्य अनुकूलन (persistence.xml को छोड़कर) समाधान करना चाहता हूं)। धन्यवाद! – topchef

+0

एचएसक्यूएलडीबी के लिए एक और वोट, विशेष रूप से वी 2, वी 1.एक्स की रिलीज के बाद, जेडीबीसी द्वारा समर्थित कुछ मौजूदा संरचनाओं का समर्थन नहीं करेगा, जैसे स्वत: जेनरेट किए गए प्रमुख मानों को वापस करना, लेकिन v2 करता है। – mezmo

2

मैं डर्बी का उपयोग करता हूं। एक बात के लिए यह प्रति इकाई परीक्षण कोड की लगभग 3 कम लाइनें है क्योंकि परीक्षण के बाद शट डाउन की आवश्यकता नहीं है। हालांकि, आपको एक जेपीए कार्यान्वयन का उपयोग करने की आवश्यकता है जो EclipseLink जैसे टेबल को छोड़ और बना सकता है।

डर्बी फ़ाइल से एक नया इन-मेमोरी डेटाबेस भी शुरू कर सकता है ताकि आपके पास संदर्भ डेटाबेस हो और किसी भी समय इसे वापस कर सकें।

यूनिट परीक्षण के लिए, हालांकि, मैं अपने ऑब्जेक्ट टेस्ट के लिए अपनी ऑब्जेक्ट्स बनाना चाहता हूं @ तर्क से पहले मुझे यह विशेष रूप से जेपीए के साथ आसान लगता है क्योंकि यह मुझे रिफैक्टरिंग करने में लचीलापन देता है और अंतर्निहित डेटाबेस संरचना के बारे में चिंता करने की ज़रूरत नहीं है, अन्य डीबुनिट जैसे उपकरण व्यावहारिक रूप से एक स्थिर संरचना पर भरोसा करते हैं और रिफैक्टरिंग का अर्थ है ग्रहण की रीफैक्टरिंग क्षमताओं पर निर्भर होने के बजाय मैन्युअल रूप से डीब्यूनिट एक्सएमएल को बदलना।