फ्लैट फ़ाइल डेटाबेस में उनकी जगह है और सही डोमेन के लिए काफी काम करने योग्य हैं।
अतीत के मेल सर्वर और एनएनटीपी सर्वर वास्तव में इस बात को सीमित करते हैं कि आप वास्तव में इन चीजों को कितनी दूर ले सकते हैं (जो वास्तव में काफी दूर है - फाइल सिस्टम में लाखों फाइलें और निर्देशिकाएं हो सकती हैं)।
फ्लैट फ़ाइल डीबी दो सबसे बड़ी कमजोरियां इंडेक्सिंग और परमाणु अद्यतन हैं, लेकिन यदि डोमेन उपयुक्त है तो ये कोई समस्या नहीं हो सकती है।
लेकिन उदाहरण के लिए, उचित लॉकिंग के साथ, आप कम से कम यूनिक्स पर मूल फ़ाइल सिस्टम कमांड का उपयोग करके "परमाणु" इंडेक्स अपडेट कर सकते हैं।
एक साधारण मामले में डेटा के माध्यम से एक अस्थायी नाम के तहत नई अनुक्रमणिका फ़ाइल बनाने के लिए अनुक्रमण प्रक्रिया चल रही है। फिर, जब आप पूरा कर लेंगे, तो आप बस नाम बदलें (या तो सिस्टम कॉल नाम बदलें (2) या खोल एमवी कमांड) पुरानी फाइल नई फाइल पर। यूनिक्स सिस्टम पर नाम बदलें और एमवी परमाणु संचालन हैं (यानी यह या तो काम करता है या यह राज्य के बीच में कभी भी गायब नहीं होता है ")।
नई प्रविष्टियां बनाने के साथ ही।मूल रूप से फ़ाइल को एक temp फ़ाइल में पूरी तरह से लिखें, फिर उसका नाम बदलें या इसे अंतिम स्थान पर एमवी करें। तब आपके पास "डीबी" में "इंटरमीडिएट" फ़ाइल नहीं है। अन्यथा, आपके पास दौड़ की स्थिति हो सकती है (जैसे कि एक फ़ाइल को पढ़ने की प्रक्रिया जो अभी भी लिखी जा रही है, और लिखने की प्रक्रिया पूरी होने से पहले अंत तक हो सकती है - बदसूरत दौड़ की स्थिति)।
यदि आपकी प्राथमिक अनुक्रमणिका निर्देशिका नामों के साथ अच्छी तरह से काम करती है, तो यह ठीक काम करता है। आप एक हैशिंग योजना का उपयोग कर सकते हैं, उदाहरण के लिए, नई फ़ाइलों का पता लगाने के लिए निर्देशिकाएं और उपनिर्देशिकाएं बनाने के लिए।
फ़ाइल नाम और निर्देशिका संरचना का उपयोग कर फ़ाइल ढूंढना बहुत तेज है क्योंकि अधिकांश फाइल सिस्टम आज अपनी निर्देशिकाओं को सूचीबद्ध करते हैं।
यदि आप किसी निर्देशिका में दस लाख फाइलें डाल रहे हैं, तो आप उन मुद्दों को ट्यूनिंग कर सकते हैं जिन्हें आप देखना चाहते हैं, लेकिन उस बॉक्स से अधिकांश 10 हजार आसानी से संभाल लेंगे। बस याद रखें कि यदि आपको निर्देशिका स्कैन करने की आवश्यकता है, तो स्कैन करने के लिए बहुत सी फाइलें होने जा रही हैं। निर्देशिकाओं के माध्यम से विभाजन इसे रोकने में मदद करता है।
लेकिन यह सब आपके अनुक्रमण और खोज तकनीकों पर निर्भर करता है।
प्रभावी रूप से, स्थैतिक सामग्री की सेवा करने वाले शेल्फ वेब सर्वर से एक स्टॉक एक बड़ा, फ्लैट फ़ाइल डेटाबेस है, और मॉडल बहुत अच्छा काम करता है।
आखिरकार, आपके पास नि: शुल्क यूनिक्स फ़ाइल सिस्टम स्तर के उपकरण हैं जो आपके निपटान में हैं, लेकिन उन सभी के पास फाइलों के साथ समस्याएं हैं (फ़ाइल में कुछ खोजने के लिए grep 1000000 बार फोर्किंग प्रदर्शन ट्रेडऑफ होगा - ओवरहेड बस जोड़ता है)।
यदि आपकी सभी फ़ाइलें एक ही फाइल सिस्टम पर हैं, तो हार्ड लिंक आपको अलग-अलग स्थानों (मूल रूप से अनुक्रमण के लिए) में रखने के संदर्भ में विकल्प भी प्रदान करते हैं (क्योंकि वे भी परमाणु हैं)।
उदाहरण के लिए, आपके पास "आज" निर्देशिका, एक "कल" निर्देशिका, एक "जावा" निर्देशिका, और वास्तविक संदेश निर्देशिका हो सकती है।
तो, "आज" निर्देशिका, "जावा" निर्देशिका में एक पोस्ट जोड़ा जा सकता है (क्योंकि पोस्ट को "जावा" के साथ टैग किया गया है), और इसके अंतिम स्थान पर (कहें/लेख/2008/12 /01/my_java_post.txt)। फिर, मध्यरात्रि में, आप दो प्रक्रियाओं को चलाते हैं। सबसे पहले "आज" निर्देशिका में सभी फाइलें लेती हैं, यह सुनिश्चित करने के लिए उनकी निर्माण तिथि जांचती है कि वे "आज" नहीं हैं (क्योंकि प्रक्रिया में कई सेकंड लग सकते हैं और एक नई फ़ाइल छीन सकती है), और उन फ़ाइलों को " बिता कल"। इसके बाद, आप "कल" निर्देशिका के लिए एक ही काम करते हैं, केवल तभी जब आप पुराने हैं तो आप उन्हें हटा दें।
इस बीच, फ़ाइल अभी भी "जावा" और ".../12/01" निर्देशिका में है। चूंकि आप यूनिक्स फ़ाइल सिस्टम और हार्ड लिंक का उपयोग कर रहे हैं, इसलिए "फ़ाइल" केवल एक बार मौजूद है, ये सभी फाइल के पॉइंटर्स हैं। उनमें से कोई भी "फाइल" नहीं है, वे सब एक जैसे हैं।
आप देख सकते हैं कि प्रत्येक व्यक्तिगत फ़ाइल चाल परमाणु है, थोक नहीं है। उदाहरण के लिए, "आज" स्क्रिप्ट चल रही है, जबकि "कल" निर्देशिका में "कल" और "दिन पहले" दोनों से फ़ाइलें हो सकती हैं क्योंकि "कल" स्क्रिप्ट अभी तक नहीं चल पाई थी।
एक लेनदेन डीबी में, आप सब एक ही समय में ऐसा करेंगे।
लेकिन, बस, यह एक कोशिश की और सही विधि है। यूनिक्स, विशेष रूप से, उस मुहावरे के साथ बहुत अच्छी तरह से काम करता है, और आधुनिक फ़ाइल सिस्टम भी इसका समर्थन कर सकते हैं।
कृपया "फ्लैट फ़ाइल" और "फाइल सिस्टम-आधारित" डेटाबेस के बीच के अंतर की अपनी समझ को स्पष्ट करें। अन्यथा, प्रश्न का उत्तर नहीं दिया जा सकता है। –
उत्कृष्ट बिंदु, इस प्रश्न के मामले में मुझे "फ्लैट फ़ाइल == फ़ाइल सिस्टम-आधारित" दिखाई देगा उदाहरण के लिए प्रत्येक ब्लॉग प्रविष्टि और इसके साथ मेटाडेटा एक फ़ाइल में होगी। फ़ाइल फ़ोल्डरों की तारीख संरचना द्वारा व्यवस्थित कई फ़ाइलों के लिए बनाना (ब्लॉग \ testblog2 \ 2008 \ 12 \ 01) == 12/01/2008 –