Big Binary Files Upload (PostgreSQL)
PostgreSQL Large Objects
PostgreSQL एक संरचना प्रदान करता है जिसे large objects कहा जाता है, जो pg_largeobject
तालिका के माध्यम से सुलभ है, जो बड़े डेटा प्रकारों, जैसे कि छवियों या PDF दस्तावेजों को संग्रहीत करने के लिए डिज़ाइन की गई है। यह दृष्टिकोण COPY TO
फ़ंक्शन की तुलना में फायदेमंद है क्योंकि यह डेटा को फ़ाइल सिस्टम में वापस निर्यात करने की अनुमति देता है, यह सुनिश्चित करते हुए कि मूल फ़ाइल की एक सटीक प्रति बनाए रखी जाती है।
इस तालिका में एक पूर्ण फ़ाइल संग्रहीत करने के लिए, pg_largeobject
तालिका में एक ऑब्जेक्ट बनाया जाना चाहिए (जिसे LOID द्वारा पहचाना जाता है), इसके बाद डेटा के टुकड़ों को इस ऑब्जेक्ट में डाला जाना चाहिए, प्रत्येक 2KB आकार का। यह महत्वपूर्ण है कि ये टुकड़े ठीक 2KB आकार के हों (अंतिम टुकड़े के संभावित अपवाद के साथ) ताकि निर्यात फ़ंक्शन सही ढंग से काम करे।
अपने बाइनरी डेटा को 2KB टुकड़ों में विभाजित करने के लिए, निम्नलिखित कमांड निष्पादित किए जा सकते हैं:
फाइल को Base64 या Hex में एन्कोड करने के लिए, नीचे दिए गए कमांड का उपयोग किया जा सकता है:
महत्वपूर्ण: इस प्रक्रिया को स्वचालित करते समय, सुनिश्चित करें कि 2KB के स्पष्ट-टेक्स्ट बाइट्स के टुकड़े भेजें। हेक्स एन्कोडेड फ़ाइलों के लिए आकार में दोगुना होने के कारण प्रति टुकड़ा 4KB डेटा की आवश्यकता होगी, जबकि बेस64 एन्कोडेड फ़ाइलें सूत्र ceil(n / 3) * 4
का पालन करती हैं।
बड़े ऑब्जेक्ट्स की सामग्री को डिबगिंग उद्देश्यों के लिए देखा जा सकता है:
Using lo_creat
& Base64
बाइनरी डेटा को स्टोर करने के लिए, सबसे पहले एक LOID बनाया जाता है:
सटीक नियंत्रण की आवश्यकता वाले स्थितियों में, जैसे कि एक ब्लाइंड SQL इंजेक्शन का लाभ उठाने के लिए, lo_create
एक निश्चित LOID निर्दिष्ट करने के लिए पसंद किया जाता है।
डेटा के टुकड़े फिर इस प्रकार डाले जा सकते हैं:
बड़े ऑब्जेक्ट को उपयोग के बाद निर्यात करने और संभावित रूप से हटाने के लिए:
Using lo_import
& Hex
lo_import
फ़ंक्शन का उपयोग बड़े ऑब्जेक्ट के लिए LOID बनाने और निर्दिष्ट करने के लिए किया जा सकता है:
निष्पादन वस्तु निर्माण के बाद, प्रति पृष्ठ डेटा डाला जाता है, यह सुनिश्चित करते हुए कि प्रत्येक टुकड़ा 2KB से अधिक न हो:
डेटा को निर्यात किया जाता है और बड़े ऑब्जेक्ट को हटा दिया जाता है:
Limitations
यह नोट किया गया है कि बड़े ऑब्जेक्ट्स में ACLs (एक्सेस कंट्रोल लिस्ट) हो सकते हैं, जो आपके उपयोगकर्ता द्वारा बनाए गए ऑब्जेक्ट्स तक पहुंच को संभावित रूप से प्रतिबंधित कर सकते हैं। हालाँकि, पुराने ऑब्जेक्ट्स जिनमें उदार ACLs हैं, अभी भी सामग्री निकासी के लिए सुलभ हो सकते हैं।
Last updated