मैं ऐसी वेबसाइट पर काम कर रहा हूं जो उपयोगकर्ताओं को फ़ाइलों (चित्रों और अन्यथा) अपलोड करने की अनुमति देता है। मेरे पास इस क्षेत्र में कोई पूर्व अनुभव नहीं है और इन फ़ाइलों को स्टोर और अनुक्रमित करने के सही तरीके से कुछ इनपुट प्राप्त करने की उम्मीद कर रहा था।किसी वेबसर्वर पर उपयोगकर्ता द्वारा अपलोड की गई फ़ाइलों को संग्रहीत करना
जबकि मैं एक आर्किटेक्चर करना चाहता हूं जो उच्च मात्रा डेटा के लिए अच्छी तरह से स्केल करता है, मैं वर्तमान में अत्यधिक उच्च (फेसबुक-, Google-पैमाने) वॉल्यूम्स के बारे में चिंता नहीं कर रहा हूं।
मैं
/files/{username}/
पर फाइल सिस्टम पर फ़ाइलों को संग्रहीत करने के बारे में सोच रहा था और फिर एक डाटाबेस uploads
जिसमें प्रत्येक उपयोगकर्ता फ़ाइल नाम (और इस प्रकार यूआरएल) प्रत्येक फ़ाइल की वह अपलोड की गई है के साथ अपने ही टेबल है होने (और कोई अन्य अतिरिक्त जानकारी जिसे मैं स्टोर करना चाहता हूं)। इसका डेटाबेस अंत (प्रत्येक उपयोगकर्ता को अपनी तालिका दे रहा है) मेरे लिए बहुत अक्षम है, फिर भी एक तालिका में सभी फ़ाइलों के रिकॉर्ड बनाए रखना सही नहीं लगता है और साथ ही साथ प्रत्येक फ़ाइल को एक ही फ़ाइल में खोजना होगा पहुंचा जा सकता है
प्रत्येक उपयोगकर्ता को अपनी तालिका देने पर विचार करने के पीछे मेरा तर्क यह था कि यह टेबल पर डेटा को दाढ़ी देने और उपयोगकर्ता को दी गई फ़ाइल की तलाश करते समय खोज समय को कम करने का एक साफ और अलग तरीका है।
इससे मदद मिलती है। हालांकि, कुछ मुद्दे हैं। वर्तमान में, हम एक साझा वेबसर्वर का उपयोग कर रहे हैं जो हमें 1 जीबी प्रति डाटाबेस पर सीमित करता है, इस प्रकार डेटाबेस में ब्लॉब के रूप में चित्र/फाइलों को संग्रहीत करना संभव नहीं होगा। साथ ही, एक टेबल में सभी चित्रों को किसी विशेष तस्वीर के लिए खोज के समय में वृद्धि नहीं होगी? प्रति उपयोगकर्ता एक टेबल के पीछे मेरा तर्क यह था कि, उपयोगकर्ता को जानना, मुझे पता चलेगा कि कौन सी तालिका खोजनी है और इस प्रकार कम रिकॉर्ड के माध्यम से खोजना है (इसे उपयोगकर्ता आईडी के आधार पर शेडिंग के रूप में सोचें)। क्या यह समझ में नहीं आता? क्या मुझे कुछ याद आ रही है? – xbonez
एक सूचकांक का आकार SQL निष्पादन को प्रभावित करता है, लेकिन अनगिनत ब्लॉब्स का एक बड़ा सेट ध्यान देने योग्य नहीं होगा। लेकिन अगर आपके पास जगह नहीं है तो यह एक महत्वपूर्ण मुद्दा है। उस स्थिति में, आपको उन्हें फाइल सिस्टम में स्टोर करने की आवश्यकता होगी। एक उपयोगकर्ता आईडी/फोटो फ़ोल्डर संरचना ठीक है यदि आपके पास उनमें से बहुत कम होगा, क्योंकि एक फ़ोल्डर में एक बड़ी फ़ाइल गणना से बचने के लिए एक अच्छा अभ्यास है। मैं प्रत्यक्ष पहुंच से बचने के लिए एक .htaccess रखूंगा (माना जाता है कि आपको उन्हें एक्सेस करने के लिए लेख की आवश्यकता है), और एक फोटो का उपयोग करें? Id = जो भी हेडर को छवि/जेपीईजी या जो कुछ भी बदलता है, और रीडफाइल की छवि को गूंजता है। –