सबसे पहले, hstore एक योगदान मॉड्यूल है, जो आपको केवल कुंजी => मान जोड़े को संग्रहीत करने की अनुमति देता है, जहां कुंजी और मान केवल text हो सकते हैं s (हालांकि मान sql हो सकते हैं NULL एस भी)।
दोनों json &jsonb आपको एक मान्य JSON मान स्टोर करने की अनुमति देता है (इसकी कल्पना में परिभाषित)।
एफ.ई.एक्स. ये मान्य JSON प्रतिनिधित्व हैं:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore JSON जो सक्षम है उसकी तुलना में बस एक छोटा सा सबसेट है (लेकिन अगर आपको केवल इस सबसेट की आवश्यकता है, तो यह ठीक है)।
json . के बीच एकमात्र अंतर &jsonb उनका भंडारण है:
jsonअपने सादे पाठ प्रारूप में संग्रहीत किया जाता है, जबकिjsonbकुछ बाइनरी प्रतिनिधित्व में संग्रहीत है
इसके 3 प्रमुख परिणाम हैं:
jsonbआमतौर परjson. की तुलना में स्टोर करने के लिए अधिक डिस्क स्थान लेता है (कभी-कभी नहीं)jsonbjson. की तुलना में इसके इनपुट प्रतिनिधित्व से निर्माण में अधिक समय लगता हैjsonसंचालन काफी लेता हैjsonb. से अधिक समय (और हर बार जब आपjson. पर कुछ ऑपरेशन करते हैं तो पार्सिंग भी की जानी चाहिए टाइप किया गया मान)
जब jsonb एक स्थिर रिलीज के साथ उपलब्ध होगा, दो प्रमुख उपयोग के मामले होंगे, जब आप आसानी से उनके बीच चयन कर सकते हैं:
- यदि आप अपने एप्लिकेशन में केवल JSON प्रतिनिधित्व के साथ काम करते हैं, तो PostgreSQL का उपयोग केवल इस प्रतिनिधित्व को संग्रहीत और पुनर्प्राप्त करने के लिए किया जाता है, आपको
jsonका उपयोग करना चाहिए । - यदि आप PostgreSQL में JSON मान पर बहुत अधिक संचालन करते हैं, या कुछ JSON फ़ील्ड पर अनुक्रमण का उपयोग करते हैं, तो आपको
jsonbका उपयोग करना चाहिए ।