2010-02-21 17 views
7

मैं लिनक्स प्लेटफ़ॉर्म पर कुछ PHP प्रोजेक्ट विकसित करता हूं। क्या एक निर्देशिका में कई हजार छवियों (फाइलें) डालने का कोई नुकसान है? यह बंद सेट है जो नहीं बढ़ेगा। वैकल्पिक रूप से कुछ आईडी के आधार पर निर्देशिका संरचना का उपयोग करके इन फ़ाइलों को अलग करना होगा (इस तरह से एक निर्देशिका में केवल 100 कहें)।एक निर्देशिका में कई फाइलें?

मैं इस सवाल से पूछता हूं, क्योंकि जब मैं विभिन्न साइटों पर छवियों को देखता हूं तो अक्सर मैं इस तरह के अलगाव को देखता हूं। आप देख सकते हैं कि निर्देशिका अलगाव इस तरह से किया जाता है, कि एक और निर्देशिका में कई सैकड़ों छवियां नहीं हैं।

एक निर्देशिका में कई हजार फाइलें (सेट नहीं बढ़ने) को डालने से मुझे क्या फायदा होगा, लेकिन उन्हें समूह के समूहों में अलग करना 100? क्या यह जटिल चीजों के लायक है?

अद्यतन:

  • एक निर्देशिका
  • मैं उस छवि सेट जोर देना चाहते (एक छवि यह फ़ाइल नाम है द्वारा करने के लिए सिर्फ एक सीधी पहुँच) में फ़ाइलों पर कोई कार्यक्रम संबंधी यात्रा वहाँ नहीं होगा बंद हो गया है। यह 5000 छवियों से कम है, और यही वह है। , डेबियन/लिनक्स 2.6.26-2-686 फ़ाइल:
  • इस छवियों
  • मानव पहुँच/ब्राउज़ की आवश्यकता नहीं है
  • छवियाँ अद्वितीय फ़ाइल नाम
  • ओएस है कोई तार्किक वर्गीकरण नहीं है ext3

जवाबों से बहुमूल्य जानकारी:

क्यों अलग निर्देशिका के लिए अलग कई फाइलों:

  • "निर्देशिका प्रति 32k फ़ाइलों सीमा जब NFS से अधिक ext3 का उपयोग कर"
  • प्रदर्शन कारण (पहुँच गति) [लेकिन कई हजार फ़ाइलों के लिए यह अगर यह लायक है, को मापने के बिना कहना मुश्किल है]

उत्तर

2

आमतौर पर इस तरह के विभाजन के कारण फ़ाइल सिस्टम प्रदर्शन है। 5000 फाइलों के बंद सेट के लिए मुझे यकीन नहीं है कि यह परेशानी के लायक है। मेरा सुझाव है कि आप सभी फ़ाइलों को एक निर्देशिका चीज़ में डालने का सरल दृष्टिकोण आज़माएं, लेकिन फ़ाइलों तक पहुंचने के लिए वास्तविक समय पर नजर रखें।

यदि आप देखते हैं कि यह आपकी आवश्यकताओं के लिए पर्याप्त तेज़ नहीं है, तो आप इसे सुझाए गए अनुसार विभाजित कर सकते हैं।

मुझे प्रदर्शन कारणों से स्वयं फ़ाइलों को विभाजित करना पड़ा। इसके अलावा मैं ext3 पर ext3 का उपयोग करते समय प्रति निर्देशिका 32k फ़ाइलों की सीमा में घुस गया (सुनिश्चित नहीं है कि यह nfs या ext3 की सीमा है)। तो यह एकाधिक निर्देशिकाओं में विभाजित करने का एक और कारण है। किसी भी मामले में, एक एकल डीआईआर के साथ प्रयास करें और केवल तभी विभाजित करें यदि आप देखते हैं कि यह पर्याप्त तेज़ नहीं है।

+1

'(सुनिश्चित नहीं है कि यह nfs या ext3 की सीमा है) 'यह एक ext3 सीमा है। – thomasrutter

0

एकमात्र कारण यह है कि मैं कल्पना कर सकता हूं कि निर्देशिका में पुनरावृत्ति होने पर यह हानिकारक होगा। अधिक फाइलें, अधिक पुनरावृत्तियों का मतलब है। लेकिन मूल रूप से मैं प्रोग्रामिंग परिप्रेक्ष्य से सोच सकता हूं।

1

मुझे लगता है कि इस सवाल का दो पहलू है:

  1. Linux फ़ाइल सिस्टम है कि आप कुशलतापूर्वक उपयोग कर रहे हैं फ़ाइलों के हजारों के साथ निर्देशिकाओं का समर्थन करता है। मैं एक विशेषज्ञ नहीं हूं, लेकिन मुझे लगता है कि नए फाइल सिस्टम में कोई समस्या नहीं होगी।

  2. क्या विशिष्ट PHP फ़ंक्शंस के साथ प्रदर्शन समस्याएं हैं? मुझे लगता है कि फ़ाइलों तक सीधी पहुंच ठीक होनी चाहिए, लेकिन यदि आप निर्देशिका सूची कर रहे हैं तो आप अंततः समय या स्मृति समस्याओं में भाग ले सकते हैं।

7

निदेशिकाओं में छवियों को अलग करके तेजी से फ़ाइल का उपयोग करने के लिए इसके अलावा, आप भी नाटकीय रूप से आप फाइल सिस्टम की प्राकृतिक सीमा से टकराने से पहले ट्रैक कर सकते हैं फ़ाइलों की संख्या का विस्तार।

एक साधारण दृष्टिकोण, फ़ाइल नाम md5() है तो निर्देशिका नाम के रूप में पहले n वर्णों का उपयोग (जैसे, substr(md5($filename), 2))। यह एक उचित वितरण भी सुनिश्चित करता है (सीधे एन सीधे फ़ाइल नाम के पात्रों को बना रहा है)।

+0

उपनिर्देशिका के आगे के स्तरों में एक से अधिक स्तर उपयोगी होंगे। उदाहरण के लिए: ./12/34/56/78/1234567890abc.jpg। –

+0

ठीक है, इसलिए एमडी 5 एक सामान्य दृष्टिकोण होगा। मेरे मामले में मेरे पास पहले से ही अद्वितीय आईडी है, क्योंकि प्रत्येक छवि बिल्कुल एक डेटाबेस पंक्ति से जुड़ी है (जिसमें यह निश्चित रूप से प्राथमिक पंक्ति है)। मुझे लगता है कि यह एक ठेठ परिदृश्य है। – JohnM2

+1

यह मानना ​​उचित है कि इन नंबरों को समान रूप से वितरित नहीं किया जा सकता है क्योंकि एमडी 5 हैश होगा। –

0

कई हजार छवियां अभी भी ठीक हैं। जब आप किसी निर्देशिका तक पहुंचते हैं, तो ऑपरेटिंग सिस्टम 4K के ब्लॉक द्वारा अपनी फ़ाइलों की सूची पढ़ता है। यदि आपके पास सादा निर्देशिका संरचना है, तो इसमें फ़ाइल फ़ाइल को पढ़ने में समय लग सकता है यदि इसमें कई (ई। जी। सौ हजार) फ़ाइलें हैं।

1

यदि आप किसी भी फ़ाइल नाम विवाद की अपेक्षा नहीं करेंगे और यदि आपको किसी भी समय उन छवियों पर पुन: प्रयास करने की आवश्यकता नहीं है, तो उन फ़ाइलों को एकाधिक निर्देशिकाओं में विभाजित करने का कोई कारण नहीं है।

लेकिन फिर भी, यदि आप एक सूचक वर्गीकरण के बारे में सोच सकते हैं, तो छवियों को थोड़ा सा सॉर्ट करना एक बुरा विचार नहीं है, भले ही यह केवल रखरखाव के कारणों के लिए है।

0

यदि फाइल सिस्टम को बदलना एक विकल्प है, तो मैं जहां भी आप सभी छवियों को एक ReiserFS फाइल सिस्टम में संग्रहीत करता हूं, वहां जाने की अनुशंसा करता हूं। यह बहुत सारी छोटी फ़ाइलों के तेज़ भंडारण/पहुंच में उत्कृष्ट है।

यदि नहीं, तो फ़ोल्डरों में उन्हें तोड़ने की ताकतवर की प्रतिक्रिया सबसे तार्किक है और काफी अंतर से पहुंच के समय में वृद्धि होगी।

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