मुझे उपयोगकर्ता अपलोड की गई फ़ाइलों को डेटाबेस में संग्रहीत करने की आवश्यकता है (फाइल सिस्टम एक विकल्प नहीं है)।ब्लॉब और संग्रहण आवश्यकता
अपलोड की गई फ़ाइलें विभिन्न प्रकार हैं (उदा। पीडीएफ, एक्सेल, आदि)।
मुझे यह तय करने में कोई समस्या है कि इन फ़ाइलों को बाइनरी डेटा के रूप में स्टोर करने के लिए MEDIUMBLOB
का उपयोग करना है या नहीं।
और इस तथ्य के कारण भ्रम उत्पन्न होता है कि इन फ़ाइलों का आकार बहुत अंतर के साथ भिन्न होता है। कुछ फाइलों की तरह कुछ सौ किलोबाइट्स (जैसे 114 केबी) हैं, लेकिन कुछ अन्य 1.5 मेगाबाइट तक हैं।
इसलिए मुझे वास्तव में कॉलम प्रकार के रूप में MEDIUMBLOB
का उपयोग करने की आवश्यकता है। लेकिन मुझे थोड़ा उलझन है क्योंकि वास्तव में मेमोरी ली गई अपलोड की गई फ़ाइल के आकार पर निर्भर करता है या फ़ाइल का आकार स्वयं अनदेखा किया जाता है और मेमोरी केवल डेटा प्रकार के आधार पर आवंटित की जाती है। यह वास्तव में महत्वपूर्ण है क्योंकि अधिकांश फाइलें जो प्रतिदिन अपलोड की जाएंगी (उनमें से बहुत कुछ) डिस्क में उपलब्ध आकार और मेमोरी (स्पेस) में वास्तव में बहुत कम होगी।
10.5. Data Type Storage Requirements
एल एक दिया स्ट्रिंग मान के बाइट्स में वास्तविक लंबाई का प्रतिनिधित्व करता है:
जैसा कि मैंने MySql डॉक का निम्न अनुभाग पढ़ें।
Data type Storage Required
========================================================
TINYBLOB, TINYTEXT L + 1 bytes, where L < 2^8
BLOB, TEXT L + 2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32
मुझे लगता है कि इस्तेमाल किया याद है कि अपलोड किए जाने वाले वास्तविक फ़ाइल के आकार पर निर्भर करता है। यानी यदि मेरे पास कॉलम प्रकार MEDIUMBLOB
है और यदि मैं एक फ़ाइल अपलोड करता हूं जो 114 KB आकार में है तो डिस्क मेमोरी का केवल 114 KBytes + 3 Bytes
उपयोग किया जाएगा और (2^24) Bytes + 3 Bytes
नहीं होगा।
क्या मैं सही सोच रहा हूं? या MEDIUMBLOB
फ़ील्ड में बहुत सारी फाइलें (जो आकार में 100 से 300 केबी हैं) संग्रहीत करके मैं बहुत सारी डिस्क मेमोरी बर्बाद कर दूंगा।
मैंने उस आदेश के साथ कुछ परीक्षण किया और ऐसा लगता है कि मेरी धारणा सही है। धन्यवाद। – jombie