PostgreSQL प्रकार bytea
और bit varying
के बीच अंतर समान ध्वनि:PostgreSQL: "bytea" और "सा अलग" प्रकार
bytea
भंडार binary strings।bit varying
स्टोर strings of 1's and 0's।
प्रलेखन में अधिकतम आकार का उल्लेख नहीं है। क्या यह 1GB है character varying
?
मैं दो अलग-अलग उपयोग के मामलों है, दोनों पंक्तियों के लाखों लोगों के साथ एक मेज के ऊपर:
भंडारण MD5 हैश
कि 16 बाइट या एक bit(128)
की लंबाई के साथ एक bytea
होगा। इसका उपयोग इस प्रकार किया जाएगा:
- डीडुप्लिकेशन:
GROUP BY
का भारी उपयोग, मुझे लगता है कि एक सूचकांक के साथ। - सटीक मिलान के लिए
WHERE md5 =
के साथ क्वेरी। - मानव उपयोग के लिए हेक्स स्ट्रिंग के रूप में प्रदर्शित करना।
भंडारण मनमाने ढंग से बाइनरी डेटा लंबाई के लिए 4kB तक अलग से बाइनरी डेटा के
स्ट्रिंग्स:
- बिटवाइस आपरेशन एक निश्चित मुखौटा मिलान तार खोजने के लिए। इस पोस्ट के अंत में उदाहरण।
- कुछ बाइट निकालने, उदाहरण के लिए मेरी स्ट्रिंग में बाइट 14 का पूर्णांक मान प्राप्त करें।
- कुछ deduplication।
bit varying
का उपयोग करके बिटवाई ऑपरेशन के लिए कार्य उदाहरण। मुखौटा X'00FF00 'है और यह केवल पंक्ति X'AAAAAA' देता है। मैंने उदाहरण के लिए तारों को छोटा कर दिया लेकिन यह 4kb तक, उनकी पूर्ण लंबाई से अधिक होगा। क्या bytea
के साथ कुछ ऐसा करना संभव है?
CREATE TABLE test1 (mystring bit varying);
INSERT INTO test1 VALUES (X'AAAAAA'), (X'ABCABC');
SELECT * FROM test1 WHERE mystring & X'00FF00' = X'00AA00';
bytea
और bit varying
में से कौन अधिक उपयुक्त है?
मैंने देखा कि UUID
प्रकार बिल्कुल 16 बाइट्स स्टोर करने के लिए बनाया गया है, क्या एमडी 5 स्टोर करने के लिए यह कोई फायदा होगा?
मैं एक जवाब के रूप में इस नहीं डाल रहा हूं क्योंकि मेरे पास कोई विशेषज्ञ यहाँ हूँ "बिल्डिंग, प्रोग्रामिंग, और Administratoring PostgreSQL डेटाबेस के लिए व्यापक गाइड", लेकिन इस बारे में पढ़ने में , ऐसा प्रतीत होता है कि बाइटा अधिक उचित विकल्प है, विशेष रूप से इसका हेक्स प्रारूप का उपयोग करना। PostgreSQL के अपने शब्दों में "हेक्स प्रारूप बाहरी अनुप्रयोगों और प्रोटोकॉल की एक विस्तृत श्रृंखला के साथ संगत है, और यह बचने के प्रारूप की तुलना में रूपांतरित करने के लिए तेज़ हो जाता है, इसलिए इसका उपयोग प्राथमिकता प्राप्त है। Http://www.postgresql.org/docs /9.1/static/datatype-binary.html (विशेष रूप से अनुभाग 8.4.1) और यहां एक सूअर का जवाब: http://stackoverflow.com/questions/15982737/postgresql-data-type-for-md5-message-digest – JNevill
I 'हेक्स' और' एस्केप 'को समझ लिया गया है [इनपुट और आउटपुट के लिए बाहरी प्रारूप] (http://www.postgresql.org/docs/9.3/static/datatype-binary.html#DATATYPE-BINARY-TABLE) केवल। आंतरिक मूल्य द्विआधारी हैं, इसलिए यह मेरे मामले में कुछ भी नहीं बदलेगा जब तक कि मैं बड़ी मात्रा में द्विआधारी मूल्यों का आयात या निर्यात नहीं कर रहा हूं। – Victor
खैर .. आंतरिक रूप से यह सभी बाइनरी है। ऐसा लगता है कि यह आपके आरडीबीएमएस में समर्थन के लिए नीचे आता है और जो भी टूल्स आप इसके साथ बातचीत करने के लिए उपयोग करते हैं, जो मुझे 'बाइटा' पर धक्का देता है। सैद्धांतिक रूप से एक चर (16) और बिट (128) टा स्टोर करने के लिए बाइट्स की एक ही संख्या है, इसलिए यह आंतरिक परिप्रेक्ष्य से धोने की तरह है (अनदेखा कर रहे हैं कि CHAR() स्टोर नहीं कर सकते हैं। मैं आश्चर्यचकित हूं कि stackoverflow.com सुपर प्रतिभाओं ने अभी तक इसका उत्तर नहीं दिया है। यह एक अच्छा सवाल है। – JNevill