हम एक लिनक्स फाइल सिस्टम में लाखों पाठ फ़ाइलों को संग्रहीत करना चाहते हैं, जिसका उद्देश्य सेवा के रूप में मनमाना संग्रह करना और सेवा देना है। हमने कुंजी / मूल्य डेटाबेस की तरह अन्य समाधानों की कोशिश की है, लेकिन समवर्ती और समानता के लिए हमारी आवश्यकताएं मूल फाइल सिस्टम का सबसे अच्छा विकल्प का उपयोग करती हैं।
सबसे सरल तरीका एक फ़ोल्डर में सभी फ़ाइलों को संग्रहीत करना है:
$ ls text_files/
1.txt
2.txt
3.txt
जो एक EXT4 फ़ाइल सिस्टम पर संभव होना चाहिए , जिसमें किसी फ़ोल्डर में फ़ाइलों की संख्या की कोई सीमा नहीं है।
दो FS प्रक्रियाएं होंगी:
- वेब स्क्रैप से पाठ फ़ाइल लिखें (फ़ोल्डर में फ़ाइलों की संख्या से प्रभावित नहीं होना चाहिए)।
- जिपं चयनित फाइल, फाइलनाम की सूची द्वारा दी गई।
मेरा सवाल यह है कि क्या एक फोल्डर में दस मिलियन तक फाइलें जमा हो जाएंगी, ऊपर के ऑपरेशनों या सामान्य सिस्टम के प्रदर्शन को प्रभावित करती हैं, किसी भी फाइल में रहने के लिए सबफ़ोल्डर्स का पेड़ बनाने से अलग?
ls -l
या कुछ और जो stat
निर्देशिका में हर इनोड में है (जैसे bash
ग्लोबिंग / टैब पूरा करना) कृत्रिम रूप से तेज़ होगा। कुछ पहनने और आंसू के बाद (कुछ फ़ाइलों को हटा दें, कुछ नए लिखें)। ext4 XFS की तुलना में बेहतर कर सकता है, क्योंकि XFS डायनामिक रूप से इनोड्स बनाम डेटा के लिए स्थान आवंटित करता है, इसलिए आप इनोड्स को अधिक बिखरे हुए के साथ समाप्त कर सकते हैं, मुझे लगता है। (लेकिन यह बहुत कम विस्तृत ज्ञान के आधार पर एक शुद्ध अनुमान है; मैंने मुश्किल से ext4 का उपयोग किया है)। abc/def/
मातहतों के साथ जाओ ।
ZipOutputStream
ही किसी भी मुफ्त लिनक्स देशी फाइल सिस्टम को हरा देंगे - मुझे संदेह है कि आप आईबीएम के GPFS के लिए भुगतान करना चाहते हैं। JDBC परिणाम सेट करने और उस ज़िप स्ट्रीम को बनाने के लिए लूप शायद जावा कोड की 6-8 पंक्तियाँ हैं।
dir_index
, जो अक्सर डिफ़ॉल्ट रूप से सक्षम होता है, लुकअप को गति देगा लेकिन प्रति निर्देशिका फ़ाइलों की संख्या को सीमित कर सकता है।