सभी बड़ी वेबसाइटें डेटाबेस में चित्रों को सहेज न करें वे उन्हें डिस्क में संग्रहित करते हैं। वे एक तालिका में तस्वीर की स्थिति का संदर्भ सहेजते हैं। और फिर वहां से लिंक करें।
क्यों? प्रदर्शन।
डेटाबेस से भारी सामग्री खींचना एक बड़ी प्रदर्शन बाधा है। और डेटाबेस क्षैतिज रूप से स्केल नहीं करते हैं, इसलिए इसका मतलब भी एक बड़ी समस्या होगी। सभी बड़ी साइटें छवियों जैसे स्थिर सामग्री से निपटने के लिए स्थिर सामग्री खेतों का उपयोग करती हैं। वह सर्वर हैं जो आपकी पहचान के बारे में कम परवाह नहीं करेंगे।
वे चित्रों को वास्तव में निजी कैसे रख सकते हैं जो आप पूछ सकते हैं? वे नहीं करते
तस्वीर का लिंक, स्वयं में, पता और पासवर्ड है। चलिए फेसबुक लेते हैं, उदाहरण के लिए। अगर मैं अपने खाते पर एक निजी तस्वीर स्टोर करता हूं तो आपको इसे खोलने में सक्षम नहीं होना चाहिए। लेकिन, जब तक आपके पास सही पता हो, तब तक आप कर सकते हैं।
This picture is private। सूचना फ़ाइल नाम
10400121_87110566301_7482172_n.jpg
(फेसबुक समय-समय पर यूआरएल बदल कर लिंक तोड़ा जा सकता है)
यह गैर अनुक्रमिक है। तस्वीर पाने का एकमात्र तरीका यह पता जानना है।
पिछली उपयोगकर्ता तस्वीर के आधार पर आप अगले अनुमान का अनुमान नहीं लगा सकते हैं।
इसमें एक विशाल एन्ट्रॉपी है, भले ही आप यादृच्छिक जंगली अनुमान लगाना शुरू करें, आपको असफलताओं की एक बड़ी मात्रा होगी और यदि आप एक तस्वीर प्राप्त करते हैं, तो आप वहां से, मालिकों की पहचान का एहसास नहीं कर पाएंगे जो, अपने आप में, गुमनाम में सुरक्षा है।
संपादित करें (तुम क्यों 'यूजरनेम' फ़ोल्डर में छवियों की दुकान नहीं करना चाहिए:।
के बाद अपने संपादित यह स्पष्ट हो गया है कि आप डिस्क पर और डेटाबेस पर नहीं फ़ाइलें डाल करने के इरादे कर यह संपादन नया परिदृश्य को शामिल किया गया ।
भले ही आपका तर्क (प्रति उपयोगकर्ता एक फ़ोल्डर बनाएं) अधिक व्यवस्थित हो जाता है, जब आप कई उपयोगकर्ता और कई चित्रों को शुरू करते हैं तो यह समस्याएं पैदा करता है। कल्पना करें कि आपके सर्वर में 1T डिस्क स्पेस है। और यह भी कल्पना करें कि 1T सर्वर लोड हो सकता है लोड के साथ कम या ज्यादा सटीक है।
अब आपके पास 11 उपयोगकर्ता हैं, मान लें कि वे एक ही समय में अपलोड करना शुरू करते हैं और प्रत्येक 100GB से अधिक फ़ाइलों को अपलोड करेगा। जब वे 91 जीबी तक पहुंचते हैं तो सर्वर पूरा हो जाता है और आपको एक अलग सर्वर पर छवियों को संग्रहित करना प्रारंभ करना होगा। यदि उस उपयोगकर्ता/फ़ोल्डर संरचना का पालन किया जाता है तो आपको उपयोगकर्ताओं में से एक का चयन करना होगा और अपने सभी डेटा को एक अलग सर्वर पर माइग्रेट करना होगा। साथ ही, यह उस उपयोगकर्ता पर हार्ड-सीमा बनाता है जो फ़ाइलों में 1T से अधिक अपलोड नहीं कर सकता है।
क्या मुझे सभी फ़ाइलों को एक ही फ़ोल्डर में स्टोर करना चाहिए?
नहीं, बड़ी साइटें आमतौर पर अनुक्रमिक फ़ोल्डर्स (/ 000001 /,/000002 /, आदि) में फ़ाइलों को संग्रहीत करती हैं जिनमें प्रति फ़ोल्डर फ़ाइलों की एक एक्स परिभाषित संख्या होती है। यह मुख्य रूप से फाइल सिस्टम प्रदर्शन के मुद्दों के लिए है।
how many files in a directory is too many?
@ एड्रियन कॉर्निश क्या आप मुझे बता सकते हैं कि आपने क्या प्रयास किया है? मैं आपको मेरे लिए एक कोड लिखने के लिए नहीं कह रहा हूं, मैं सिर्फ एल्गोरिदम या अधिकांश लोगों को जिस प्रक्रिया का पालन करता हूं, ताकि मैं आगे बढ़ सकूं यदि मुझे पता है कि – niko
फिर से क्या करना है? आप फ़ाइल के लिए पथ संग्रहीत कर सकते हैं, आप डेटाबेस में बाइनरी डेटा स्टोर कर सकते हैं। आपका वास्तविक सवाल क्या है? –
आपका प्रश्न बुरी तरह से phrased है - आप पूछ रहे हैं कि चित्र कैसे अपलोड करें। चित्रों को अपनी साइट पर अपलोड करने के लिए कैसे नहीं।इसके अलावा क्या आप अपलोड दुर्भावनापूर्ण कोड, छिपे हुए पेलोड के साथ छवियों से उपयोगकर्ताओं को बचाने के लिए कर रहा है, लोगों को रोकने के लिए सिर्फ एक index'able यूआरएल –