2010-02-23 19 views
15

जहां मैं काम करता हूं हम पोस्टग्रेज़ डेटाबेस का उपयोग करते हैं (8.3 जल्द ही 8.4 पर माइग्रेट करने के लिए)। वर्तमान में डेटाबेस में enums के उपयोग पर एक छोटी बहस है। व्यक्तिगत रूप से मुझे डीबी एनम प्रकार पसंद नहीं है। अन्य चीजों के अलावा यह डेटाबेस में अनुप्रयोग तर्क डालता है और कोड और डेटा के बीच मेल के लिए एक सकारात्मकता बनाता है।Postgresql enum फायदे और नुकसान क्या हैं?

मैं सोच रहा था कि पोस्टग्रेस एनम्स (रीडब्बिलिटी के अलावा) के फायदे क्या हैं और क्या नुकसान हैं?

उत्तर

22

enums के लाभ हैं:

  • प्रदर्शन बेहतर है। आप एक अलग लुकअप टेबल के बजाय कोर तालिका से बाहर निकलने के बजाय केवल उस तालिका को प्रदर्शित कर सकते हैं जो किसी कोड को किसी मान में अनुवाद करता है या ऐप तर्क होता है जो किसी कोड को किसी मान में अनुवाद करता है। यह डाटावायरहाउस अनुप्रयोगों में विशेष रूप से उपयोगी हो सकता है।

    • अपने डेटाबेस DDL में एन्कोडिंग प्रदर्शन मूल्यों बुरा रूप है:
    • तदर्थ एसक्यूएल कमियां भी हैं

    लिखने के लिए आसान है। यदि आप एनम वैल्यू को अपने ऐप कोड में एक अलग डिस्प्ले वैल्यू में अनुवाद करते हैं, तो आप enums का उपयोग करने के कई फायदे खो देते हैं।

  • मान दर्ज करके DDL बदलता है
  • बनाता भाषा स्थानीयकरण मुश्किल
  • डाटाबेस पोर्टेबिलिटी
+3

यदि आप मूल्यों को परिभाषित कर रहे हैं जो नियंत्रण आपके आवेदन के व्यवहार को संशोधित करेगा, तो निश्चित रूप से "मूल्यों को जोड़ने के लिए डीडीएल परिवर्तन की आवश्यकता है" एक लाभ है? अन्यथा आप अपने आवेदन को तोड़ने वाले स्पष्ट रूप से निर्दोष डेटाबेस संचालन का जोखिम बढ़ा रहे हैं। – thsutton

2

एंट्स तारों के फायदे के साथ इनट्स के फायदे को जोड़ते हैं: वे छोटे और तेज हैं जैसे तारों की तरह पठनीय, और सुरक्षित होने का अतिरिक्त लाभ है (आप एक enum गलत वर्तनी नहीं कर सकते हैं)।

हालांकि, अगर आपको पठनीयता की परवाह नहीं है, तो एक इंट एक enum के रूप में अच्छा है।

0

कमी आई है लाभ आप भी डीबी जाँच की है, कि कुछ भी नहीं और कुछ enum मान कॉलम में दर्ज नहीं किया जा सकता है की आवश्यकता है। मेरे लिए बड़ा नुकसान यह था कि एनम को केवल अंत में मूल्य जोड़कर संशोधित किया जा सकता है, लेकिन पोस्टग्रेस 9.1 के बाद से यह अतीत में है: https://stackoverflow.com/a/7834949/548473

-1

प्वाइंट है, यदि अनुप्रयोगों को डीडीएल करने की अनुमति है, तो वे अधिक संभावना रखते हैं अवरोध या संघर्ष का कारण बनता है। एकल-उपयोगकर्ता मोड में डीडीएल ऑफ़लाइन किया जाता है यानी।

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