2009-12-19 8 views
8

क्या जावा के लिए कोई डीबी है जिसे किसी एम्बेडेड मोड में चलाया जा सकता है जिसमें डिस्क से दूसरों को लोड करते समय स्मृति में संग्रहीत किया जा रहा है? एच 2 और जावाडीबी जावा डीबी के लिए दो नेता हैं और मुझे पता है कि दोनों में इन-मेमोरी मोड है, लेकिन क्या वे आपको पूरे डीबी को स्मृति में लोड करते हैं या आप तालिका-दर-टेबल आधार पर निर्णय ले सकते हैं?इन-मेमोरी जावा डीबी

उत्तर

6

यह कैश की गई तालिका है पूछे जाने वाले प्रश्न HSQL वेबसाइट में उल्लेख किया है।

स्मृति में • करता HSQLDB दुकान सभी डेटा। नहीं स्मृति एक परिणाम के रूप रन आउट करता है?

• यह स्मृति में सभी डेटा संग्रहीत करता है केवल यदि आप करना चाहते हैं। तक डिफ़ॉल्ट, तालिका परिणाम बनाएँ मेमोरी टेबल में, क्योंकि यह छोटी टेबल के लिए सबसे अच्छा प्रकार है। बड़ी तालिकाओं के लिए, कैच टेबल बनाएं और अपनी मेमोरी उपयोग आवश्यकताओं को सूट करने के लिए कैश आकार समायोजित करें (8 एमबी या उससे कम के रूप में)। गाइड के सिस्टम प्रबंधन और परिनियोजन मुद्दे अध्याय देखें। एचएसक्यूएलडीबी के हिस्से पर कोई साधारण नियम नहीं है और कोई लगाव नहीं है क्योंकि केवल कुछ सेटिंग्स का उपयोग करके अधिकतम लचीलापन की अनुमति है। एचएसक्यूएलडीबी का एक लोकप्रिय उपयोग ओलाप, ईटीएल, और डेटा खनन अनुप्रयोगों के लिए है जहां विशाल जावा मेमोरी आवंटन का उपयोग स्मृति में डेटा की लाखों पंक्तियों को रखने के लिए किया जाता है।

मुझे लगता है कि कैश की गई तालिका आपकी आवश्यकता को पूरा करने के लिए पहले से ही शक्तिशाली है। कैश तालिका और स्मृति तालिका

स्मृति टेबल और कैश की गई तालिकाओं के बीच

http://hsqldb.org/web/hsqlFAQ.html से

comparation आम तौर पर डेटा भंडारण के लिए इस्तेमाल कर रहे हैं।

सभी स्मृति तालिकाओं के लिए डेटा * .script फ़ाइल से पढ़ा जाता है जब डेटाबेस शुरू कर दिया और स्मृति में संग्रहीत किया जाता है: दोनों के बीच अंतर इस प्रकार है। इसके विपरीत कैश किए गए तालिकाओं के डेटा को तालिका तक पहुंचने तक स्मृति में नहीं पढ़ा जाता है। इसके अलावा, प्रत्येक कैशेड तालिका के लिए डेटा का केवल एक हिस्सा स्मृति में आयोजित किया जाता है, जिससे स्मृति में रखे जाने वाले डेटा से अधिक डेटा वाले टेबल की अनुमति मिलती है।

जब डेटाबेस सामान्य तरीके से बंद हो जाता है, तो स्मृति तालिका के लिए सभी डेटा डिस्क पर लिखा जाता है। तुलनात्मक रूप से, कैच किए गए कैच किए गए तालिकाओं में डेटा ऑपरेशन के दौरान और शट डाउन पर लिखा जाता है।

सभी कैच किए गए तालिकाओं के लिए डेटा कैश का आकार और क्षमता कॉन्फ़िगर करने योग्य है। यह कैश किए गए तालिकाओं में सभी डेटा को स्मृति में कैश करने की अनुमति देता है। इस मामले में, पहुंच की गति अच्छी है, लेकिन स्मृति टेबल की तुलना में थोड़ा धीमी है।

सामान्य अनुप्रयोगों के लिए यह अनुशंसित है कि स्मृति टेबल डेटा की थोड़ी मात्रा के लिए उपयोग किया जाता है, बड़े डेटा सेट के लिए कैश की गई तालिकाओं छोड़कर। विशेष अनुप्रयोगों के लिए जिसमें गति सर्वोपरि है और बड़ी मात्रा में मुफ्त मेमोरी उपलब्ध है, मेमरी टेबल का उपयोग बड़े टेबल के लिए भी किया जा सकता है।

ऐसा लगता है कि यह सुविधा अभी तक H2 और Derby (JavaDB) द्वारा समर्थित नहीं है। अगर यह तथ्य नहीं है तो मुझे सही करें।

1

अधिकांश में स्मृति डेटाबेस (जैसे HSQLDB डिस्क के लिए कुछ (या सभी) डाटा को कैश करने की क्षमता है। आमतौर पर यह कम पर्याप्त स्तर तो यह प्रोग्रामर के लिए पारदर्शी है लेकिन निश्चित रूप से विन्यास योग्य है

+0

क्या कोई दस्तावेज़ हैं जो आप मुझे इंगित कर सकते हैं? एच 2 साइट पर मैंने जो देखा उससे, इन-मेमोरी केवल तभी काम करती है जब डीबी लगातार नहीं है। –

+0

आप टेराकोटा http://www.terracotta.org/ – Bostone

+0

@DroidIn पर देखना चाह सकते हैं।नेट टेराकोटा वाणिज्यिक है? और यह एक प्रकार का कैश है जो डीबी नहीं है, है ना? –