2012-01-19 11 views
9

मुझे उपयोगकर्ता अपलोड की गई फ़ाइलों को डेटाबेस में संग्रहीत करने की आवश्यकता है (फाइल सिस्टम एक विकल्प नहीं है)।ब्लॉब और संग्रहण आवश्यकता

अपलोड की गई फ़ाइलें विभिन्न प्रकार हैं (उदा। पीडीएफ, एक्सेल, आदि)।

मुझे यह तय करने में कोई समस्या है कि इन फ़ाइलों को बाइनरी डेटा के रूप में स्टोर करने के लिए 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 केबी हैं) संग्रहीत करके मैं बहुत सारी डिस्क मेमोरी बर्बाद कर दूंगा।

उत्तर

2

MySQL आपको SHOW TABLE STATUS का उपयोग करके प्रत्येक तालिका का आकार देगा। इसलिए यदि आप कुछ परीक्षण फाइलें अपलोड करते हैं तो आप डेटाबेस में जो वास्तविक आकार ले लेंगे उसका आकलन करने में सक्षम होना चाहिए। प्रत्येक तालिका में कुछ ओवरहेड होता है इसलिए मैं परीक्षण के लिए उचित रूप से कई फ़ाइलों का उपयोग करता हूं।

+0

मैंने उस आदेश के साथ कुछ परीक्षण किया और ऐसा लगता है कि मेरी धारणा सही है। धन्यवाद। – jombie

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