2011-01-27 11 views
13

मैं java.util.Map के ऑन-डिस्क कार्यान्वयन की तलाश में हूं। कुछ भी फैंसी नहीं, बस कुछ ऐसा जो मैं किसी निर्देशिका या फ़ाइल पर इंगित कर सकता हूं और इसे अपनी सामग्री को वहां स्टोर कर सकता हूं, किसी भी तरह से यह चुनता है। क्या किसी को ऐसी चीज पता है?क्या वे जावा के मानचित्र के किसी भी सभ्य ऑन-डिस्क कार्यान्वयन हैं?

उत्तर

10

आप Disk-Backed-map प्रोजेक्ट पर एक नज़र डाल सकते हैं।

एक पुस्तकालय है कि जावा

एक छोटा सा पुस्तकालय है कि कुंजी मान युग्म की बड़ी संख्या के भंडारण के लिए एक डिस्क का समर्थन किया मानचित्र कार्यान्वयन प्रदान में एक डिस्क का समर्थन किया मानचित्र लागू करता है। नक्शा कार्यान्वयन (हैश मैप, हैशटेबल) बहुत सरल कुंजी/मूल्य जोड़े के लिए लगभग 3-4 मिलियन कुंजी/जीबी मेमोरी अधिकतम है और ज्यादातर मामलों में सीमा बहुत कम है। दूसरे हाथ पर डिस्कबैक नक्शा कुंजी/मूल्य जोड़े के आकार के बावजूद, 20 मिलियन (32 बिट जेवीएम) कुंजी/जीबी तक सख्त 16 मिलियन (64 बिट जेवीएम) स्टोर कर सकता है।

+0

यह उनकी वेबसाइट से सटीक उद्धरण है, लेकिन यह गलत होना चाहिए। 32-बिट जेवीएम की तुलना में 64-बिट जेवीएम के छोटे संग्रह होने के लिए इसका कोई मतलब नहीं है। –

1

आप एक साधारण ईएचसीएच कार्यान्वयन का उपयोग कर सकते हैं? EHCache के बारे में अच्छी बात यह है कि लागू करने के लिए बहुत आसान हो सकता है :-)

मुझे लगता है कि आपने वास्तविक मानचित्र उदाहरण को क्रमबद्ध/deserialising से इंकार कर दिया है?

+0

हां, मैंने इसे अस्वीकार कर दिया है। मैं कभी भी स्मृति में पूरी चीज नहीं लेना चाहता हूं। – jjujuma

+0

ईएच कैश का भुगतान नहीं किया गया है? क्या कोई मुफ्त संस्करण –

+0

यह ओपन सोर्स है, इसलिए कोई लाइसेंस लागत – Brian

6

यदि आप डेटा को जारी रखने के लिए key-object आधारित संरचनाओं की तलाश में हैं तो NoSQL डेटाबेस बहुत अच्छी पसंद हैं। आप पाएंगे कि उनमें से कुछ ऐसे MongoDB या Redis स्केल और बड़े डेटासेट के लिए प्रदर्शन करते हैं और हैश आधारित लुकअप के अलावा वे दिलचस्प क्वेरी और लेनदेन संबंधी सुविधाएं प्रदान करते हैं।

संक्षेप में इस प्रकार के सिस्टम मानचित्र कार्यान्वयन हैं। और यह आपके स्वयं के एडाप्टर को लागू करने के लिए बहुत जटिल नहीं होना चाहिए जो उन्हें पुल करने के लिए java.util.Map लागू करता है।

0

इस समस्या के लिए एक अपेक्षाकृत नया खुला स्रोत समाधान की तरह लगता है, मैं इसे का उपयोग किया है, और यह की तरह अब तक

https://github.com/jankotek/JDBM4

5

MapDB (mapdb.org) वास्तव में क्या आप देख रहे हैं है। डिस्क समर्थित ट्रीमैप और हैश मैप के अलावा यह आपको अन्य संग्रह प्रकार देता है।

यह मानचित्र भी थ्रेड-सुरक्षित हैं और वास्तव में अच्छा प्रदर्शन है।

देखें Features

+0

यह कागज पर अच्छा लग रहा है, लेकिन मेरे अनुभव में यह दुखद रूप से धीमा है और बिल्कुल भी क्रैश नहीं है (यहां तक ​​कि 'लेनदेन सक्षम' के साथ भी)। – dagnelies

0

Chronicle Map इस समस्या का एक आधुनिक और the fastest समाधान है। यह ConcurrentMap इंटरफ़ेस लागू करता है और डेटा को डिस्क पर रखता है (हुड के नीचे, यह क्रॉनिकल मैप की मेमोरी को फ़ाइल में मैप करके किया जाता है)।

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