2014-09-07 10 views
5

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

नहीं कर सकते में बराबर हैं मैं बस मूल्य युक्त फ़ाइलों को बनाने और चाबी के रूप में अभिनय वहाँ का नाम दें।

इसे KeyValue स्टोर का उपयोग LevelDB या RocksDB के रूप में तेज़ी से न करें।

क्या कोई मुझे समझने में मदद कर सकता है।

उत्तर

15

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

  • एक फाइल सिस्टम तय आकार ब्लॉक में डेटा विभाजन:

    यहाँ बहुत ज्यादा विवरण में जाने के बिना, वहाँ कुछ चीजें बहुत अलग होने की संभावना है। दो फाइलें आम तौर पर एक ही ब्लॉक के हिस्सों पर कब्जा नहीं कर सकती हैं। आम ब्लॉक आकार 4-16 कीबी हैं; आप गणना कर सकते हैं कि आपके 10 कीबी उदाहरण के कारण कितना ओवरहेड होगा। कुंजी/मूल्य भंडार डेटा के छोटे आकार के टुकड़ों के लिए खाते हैं।

  • फाइल सिस्टम में निर्देशिका अनुक्रमणिका अक्सर सॉर्ट ऑर्डर में फ़ाइल नाम/कुंजी पर कुशलतापूर्वक पुन: सक्रिय करने में सक्षम नहीं होती हैं। आप कुशलतापूर्वक एक विशिष्ट कुंजी देख सकते हैं, लेकिन आप सभी निर्देशिका प्रविष्टियों को पढ़ने के बिना श्रेणियों को पुनर्प्राप्त नहीं कर सकते हैं। लेवलडीबी समेत कुछ प्रमुख/मूल्य स्टोर, कुशल आदेशित पुनरावृत्ति का समर्थन करते हैं।
  • लेवलडीबी समेत कुछ प्रमुख/मूल्य स्टोर लेनदेनशील हैं। इसका मतलब है कि आप एक साथ कई अपडेट बंडल कर सकते हैं, और लेवलडीबी यह सुनिश्चित करेगा कि इनमें से सभी अपडेट इसे से बनाते हैं, या उनमें से कोई भी नहीं करता है। आपके डेटा को असंगत होने से रोकने के लिए यह बहुत महत्वपूर्ण है। फाइल सिस्टम इसे लागू करने के लिए बहुत कठिन बनाते हैं, खासकर जब कई फाइलें शामिल होती हैं।
  • कुंजी/मूल्य स्टोर आमतौर पर डिस्क पर डेटा को संगत रखने की कोशिश करते हैं (इसलिए डेटा कम मांग के साथ पुनर्प्राप्त किया जा सकता है), जबकि आधुनिक फाइल सिस्टम जानबूझकर फाइलों में ऐसा नहीं करते हैं। कई रिकॉर्ड पढ़ने पर यह प्रदर्शन को गंभीर रूप से प्रभावित कर सकता है। हालांकि, यह ठोस-राज्य डिस्क पर कोई मुद्दा नहीं है।
  • जबकि कुछ फाइल सिस्टम संपीड़न सुविधाओं की पेशकश करते हैं, वे आमतौर पर प्रति फ़ाइल या प्रति-ब्लॉक होते हैं। जहां तक ​​मैं देख सकता हूं, लेवलडीबी रिकॉर्ड्स के पूरे हिस्सों को संपीड़ित करता है, संभावित रूप से बेहतर संपीड़न उत्पन्न करता है (हालांकि वे संपीड़न दक्षता पर प्रदर्शन की दिशा में अपनी संपीड़न रणनीति को पक्षपात करते हैं)।
+0

+1 इस उत्तर के लिए। के/वी डेटाबेस डेटा को अधिक कॉम्पैक्ट स्टोर करते हैं और अतिरिक्त कैशिंग परत रखते हैं। इसलिए आप बहुत तेजी से प्रदर्शन की उम्मीद कर सकते हैं (और अतिरिक्त कार्यक्षमता जो आपके आवेदन के लिए उपयोगी हो सकती है)। साथ ही, यदि आप कई फाइलें बनाते हैं तो कुछ फाइल सिस्टम अच्छी तरह से स्केल नहीं करते हैं। – cruppstahl

+1

पूर्णता के लिए, किसी भी सेन ऑपरेटिंग सिस्टम पर, फाइल सिस्टम डेटा भी कैश किया जाता है। –

+1

तो क्या आप सुझाव दे सकते हैं, यदि मूल्य का आकार बड़ा है (5 एमबी कहें), और पैटर्न दिखता है, अद्यतन करता है, स्टोर करता है; एक केवी स्टोर का उपयोग कर समझ में आता है। यह भी कहना है कि 500 ​​के फाइलों का निर्माण फाइल सिस्टम पर खराब प्रभाव डालेगा –

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