2013-08-07 13 views
5

मुझे आश्चर्य है कि पोस्टग्रेस 9.3 में JSON समर्थन के बारे में इतना झगड़ा क्यों है। उपयोगकर्ता परिभाषित प्रकारों (यूडीटी) पर JSON के फायदे क्या हैं? यूडीटी का उपयोग करने में क्या नुकसान है? यूडीटी अक्षम के साथ तालिकाओं तक पहुंच है? क्या अतिरिक्त प्रकार की विशेषता धीमी है? Postgres द्वारा शारीरिक रूप से संग्रहीत यूडीटी कैसे हैं?पोस्टग्रेस में जेएसओएन और उपयोगकर्ता परिभाषित प्रकारों की तुलना 9.3

कृपया, अतिरिक्त जानकारी के लिंक दें और बताएं।

उत्तर

1

कम गंभीरता से यह एक विपणन थोड़ा सा है :)। अधिक गंभीरता से - आंतरिक JSON समर्थन इस विषय पर कुछ वर्षों के काम का अंतिम चरण है। आंतरिक प्रकार और यूडीटी के बीच कोई बड़ा अंतर नहीं है और आंतरिक प्रकार (और कार्यक्षमता) के बहुत सारे यूडीटी या यूडीएफ के रूप में शुरू होते हैं। अपस्ट्रीम के लिए एक कदम सापेक्ष हार्ड प्रक्रिया और अवधारणा (और एपीआई) का शायद ही परीक्षण और चर्चा की जाती है। इसलिए आंतरिक कार्यान्वयन काफी उच्च गुणवत्ता और उच्च स्थिरता (कम त्रुटियों, अधिक स्थिर एपीआई) और समर्थन की गारंटी देता है। एक समुदाय कहता है - "यह हमारे लिए दिलचस्प विशेषता है, और हम बढ़ाना और समर्थन करना चाहते हैं"। कोई अन्य मतभेद नहीं हैं - (प्रदर्शन या भंडारण प्रारूप में)।

2
  • मुझे लगता है कि JSON उपयोगकर्ता द्वारा परिभाषित प्रकारों की तुलना में अधिक लचीला है, आप जो भी वैकल्पिक विशेषताओं को जोड़ सकते हैं, उन्हें जोड़ सकते हैं, आप उन्हें घोंसला कर सकते हैं, आप उन्हें सूचियों में डाल सकते हैं;
  • JSON बहुत पठनीय प्रारूप है;
  • JSON कई भाषाओं (जावास्क्रिप्ट, पायथन) में मानक ऑब्जेक्ट नोटेशन है ताकि आप तालिका से डेटा पढ़ सकें और इसका उपयोग कर सकें;
  • जब आप डेटा को संसाधित करना चाहते हैं तो आपको किसी भी समय नया प्रकार बनाने की ज़रूरत नहीं है, आप JSON बना सकते हैं, इसे संसाधित कर सकते हैं, फिर बस इसके बारे में भूल जाएं;
4

रूप रोमन Pekar पिछले जवाब में से एक में उल्लेख किया है, JSON समर्थन और अधिक लचीलापन प्रदान करते हैं और यह संभावना थोड़े एक संबंधपरक एक पर एक NoSQL व्यवहार की नकल करने के लिए प्रदान करता है।

इसके अलावा, क्लाइंट-सर्वर अनुप्रयोगों में सीधे क्लाइंट से भेजे गए JSON मानों को संग्रहीत करने के लिए यह क्लाइंट-सर्वर अनुप्रयोगों में आसान बनाता है।

कोई एप्लिकेशन के क्लाइंट के लिए 30% फ़ील्ड का उपयोग कर सकता है, दूसरे के लिए 30%, और इसी तरह, कॉलम के बड़े सेट के साथ कई टेबल या टेबल को परिभाषित नहीं करना है। इस प्रकार, कोई एक स्थान पर विषम जानकारी के बड़े हिस्से को स्टोर कर सकता है।

अंतिम लेकिन कम से कम नहीं, JSON एक मानक है और यह कई बड़ी प्रोग्रामिंग भाषाओं द्वारा समर्थित है।

(वर्तमान में हम हमारे परियोजना में सुविधा का उपयोग कर रहे हैं (और बीटा में के बाद से) इसे का उपयोग किया गया है, इसके अलावा, यह मुख्य कारण है कि हम चुना है Postgres हमारे आवेदन के लिए था, जैसा कि हम एक बड़ा DB के साथ मुख्य रूप से decoupled की जरूरत सूचना। हमने नोएसक्यूएल डेटाबेस का उपयोग करने की कोशिश की लेकिन हमें जानकारी को स्टोर करने के लिए बहुत सी टेबल की आवश्यकता थी, और यह "जुड़ने" पर महंगा था। दूसरी ओर, केवल एक संबंध डीबी के साथ सामना करना मुश्किल होगा, इसलिए जाने की बजाय आधा रिलेशनल आधा nonrelational, हम Postgres के JSON समर्थन चुना है)

+0

"जेएसओएन एक मानक है और यह कई बड़ी प्रोग्रामिंग भाषाओं द्वारा समर्थित है": यूडीटी संरचनाओं द्वारा प्रस्तुत किया जा सकता है जो "बड़ी प्रोग्रामिंग भाषाओं" द्वारा समर्थित हैं। – rlib

+0

"इस प्रकार, एक विषम जानकारी के बड़े हिस्से को एक ही स्थान पर स्टोर कर सकता है।" - यूडीटी वही करते हैं। – rlib

+0

"कॉलम के बड़े समूह के साथ कई तालिकाओं या तालिकाओं को परिभाषित नहीं करना है" - यदि परिवर्तन की आवश्यकता है तो यूडीटी पर ALTER कमांड। – rlib

0

उपयोगकर्ता परिभाषित प्रकार के बारे में कुछ बातें:।

  1. वे निश्चित प्रारूप हैं (JSON schemaless है)
  2. आप उनके बारे में धारणाएं बना सकते हैं।
  3. आपके पास अनुक्रमण संबंधी चिंताओं को संबोधित करने में अधिक लचीलापन है।
  4. एक समग्र प्रकार (यूडीटी का एक रूप) में JSON विशेषता हो सकती है।

उपयोगकर्ता परिभाषित प्रकार आपको जेएसओएन की तुलना में इन प्रकारों के आसपास एसक्यूएल को थोड़ा और अधिक विश्वसनीय रूप से विस्तारित करने की अनुमति देता है, लेकिन JSON आपको बहुत अधिक लचीलापन देता है। इसके अलावा, नेस्टेड प्रकार लॉट 9.3 में जेएसओएन ऑब्जेक्ट्स की तुलना में समग्र प्रकार के रूप में किए जाने वाले समर्थन के मामले में अधिक लचीला होते हैं (हालांकि यह किसी बिंदु पर बदल सकता है)। यदि आप JSON ऑब्जेक्ट को घोंसला देते हैं तो आप 9.3 में, एक जेएसओएन ऑब्जेक्ट को समग्र प्रकार में परिवर्तित नहीं कर सकते हैं।

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