2009-08-25 15 views
5

संभव डुप्लिकेट:
Why would I ever choose to store and manipulate XML in a relational database?आप एक रिलेशनल डेटाबेस में एक्सएमएल स्टोर करने का विकल्प चुनते हैं?

हालांकि सतह पर इस सवाल का क्या पहले से ही पहले से कहा गया है की एक मिलावत प्रतीत होता है, मैं सामने राज्य होगा कि ऐसा नहीं है। मेरा सवाल यह नहीं है कि एक रिलेशनल डेटाबेस से एक्सएमएल को कैसे स्टोर या पुनर्प्राप्त किया जाए। हाथ में सवाल उस से अधिक मौलिक है:

आप आमतौर पर अपने डेटाबेस में XML प्रारूप में किस प्रकार का डेटा संग्रहीत करते हैं? ऐसा करने के लिए आपके डिजाइन निर्णय क्या हैं? क्या आप अपने मॉडल के कुछ हिस्सों को एक्सएमएल ब्लर्ब में डालकर अपने डेटाबेस के 'रिलेशनल' पहलू को छोड़ने को तैयार हैं? वरीयताओं या कॉन्फ़िगरेशन फ़ाइलों जैसी चीजें एक्सएमएल के रूप में एक रिलेशनल डेटाबेस में संग्रहीत की जा सकती हैं, लेकिन क्या आपको यह करना चाहिए?

+4

http://stackoverflow.com/questions/184727/why-would-i-ever-choose-to-store-and-manipulate-xml-in-a-relational-डेटाबेस के बीच अन्य –

उत्तर

2

एक रिलेशनल डेटाबेस में एक्सएमएल स्टोर करने के साथ मेरा अनुभव आमतौर पर ऐतिहासिक प्रयोजनों के लिए क्रमबद्ध वस्तुओं को संग्रहीत करता है या दृढ़ता रणनीति के हिस्से के रूप में धारणा है कि मैं बाद में इस एक्सएमएल को पुनः प्राप्त कर दूंगा और इसे किसी ऑब्जेक्ट में पुनः बहाल कर दूंगा।

0

मैं एक्सएमएल ब्लर्ब्स (या अन्य अपारदर्शी डेटा जैसे कि जेसन सीरियलाइज्ड) को स्टोर करता हूं, जब डेटा को रिश्तों की आवश्यकता नहीं होती है।

2

एकमात्र कारण, आईएमएचओ, डेटाबेस में एक्सएमएल डालने के लिए है यदि आपको अपनी परियोजना के साथ डेटा को बातचीत, संपादित या बदलने की आवश्यकता है। यदि आप बस XML डेटा को पढ़ रहे हैं और उपयोग कर रहे हैं, तो बस इसे एक फ़ाइल में फेंक दें। लेकिन यदि उस डेटा को संशोधित किया जा रहा है या एप्लिकेशन के साथ जोड़ा जा रहा है, तो इसके लिए डीबी का उपयोग करना बेहतर होगा और आपको वास्तव में एक्सएमएल की जरूरत नहीं है, क्योंकि तालिका डेटा की संरचना का वर्णन करेगी।

0

मैं डेटाबेस में XML डेटा संग्रहीत करने के लिए इन शर्तों का उपयोग करता हूं।

  1. मैं समय संबंधपरक टेबल को विकसित करने की जरूरत नहीं है (वास्तव में, मैं कभी कभी बंद इस तरह से बस एक प्रोटोटाइप बनाने और चलाने के लिए शुरू)।

  2. डेटा काफी प्रयास

सामान्य तौर पर मैं अपने डेटाबेस में संबंधपरक डेटा संग्रहीत करना चाहते बिना तालिकाओं में तोड़, लेकिन कल्पना मैं एक वस्तु है कि सभी का प्रतिनिधित्व करता है करने के लिए बड़े और संरचना में जटिल लिए बहुत कुछ है एक वेब पेज प्रस्तुत करने के लिए आवश्यक डेटा (मेरा मतलब है सब कुछ, फोंट, छवियां बहुत कुछ), यह अविश्वसनीय रूप से जटिल होने जा रहा है, इसे एक टेबल संरचना में संग्रहीत करने से वास्तव में केवल मुझे बनाए रखने के मुद्दों का सामना करना पड़ेगा - संरचना द्रव है। यह मुझे प्रश्नों के मुद्दों का भी कारण बनता है - कल्पना करें कि संख्या में शामिल होने की मुझे आवश्यकता होगी, और यह कितना समय लगेगा।

1

आपका कोड निम्न तरीकों से एक्सएमएल डेटा की प्रक्रिया कर सकते हैं:

  1. केवल डेटाबेस में यह जारी रहती है, व्यापार परत में सभी प्रसंस्करण करते हैं, जैसे कि एक वेब सेवा से/एसओएपी संदेशों की एक कतार या लेखा परीक्षा निशान। इसके लिए मैं एक साधारण पाठ कॉलम का उपयोग करूंगा।
  2. डेटाबेस में इसे जारी रखें और डेटाबेस परत में कभी-कभी क्वेरी चलाएं, उदा। एक एक्सएचटीएमएल दस्तावेज़ जो उपयोगकर्ता खोज सकते हैं। इसके लिए मैं xml डेटा प्रकार SQL सर्वर 2005 या ऊपर, या अन्य डीबीएमएस में समकक्ष का उपयोग करूंगा।
  3. डेटाबेस परत में पूर्ण-पैमाने जटिल जटिल प्रश्न, उदा। संबंधपरक डेटा का एक ब्लॉब जो केवल एक्सएमएल को क्रमबद्ध किया गया था और अब इसे अपने उचित रूप में संग्रहीत किया जाना चाहिए।यह स्पष्ट रूप से टेबल के सेट में संग्रहीत किया जाएगा जो deserialised डेटा संरचना से मेल खाता है।
3

कभी नहीं।

डेटा को संग्रहीत करना जिसमें एक्सएमएल के रूप में कुछ प्रकार की पहचान योग्य संरचना है, संबंधपरक डेटा के बजाय, उस डेटा पर काम करने के लिए संबंधपरक बीजगणित की शक्ति को त्यागना है।

यदि यह आपका बहुत इरादा है, ठीक है, लेकिन फिर इसके बारे में सादा ईमानदार रहें और बस एक रिलेशनल डीबीएमएस का उपयोग करने के लिए परेशान न हों, बस अपने एक्सएमएल को कुछ स्थानीय/छद्मोलोकल फ़ाइल में डंप करें।

(देखें कि किसी भी फाइल सिस्टम में संग्रहीत कुछ भी डेटाबेस का गठन करता है, इसलिए ऐसा नहीं है कि समाधान का मतलब है कि आप "डेटाबेस का उपयोग नहीं कर रहे हैं"। आप केवल एक का उपयोग नहीं कर रहे हैं जो प्रासंगिक रूप से प्रबंधित है, जो आपका था बूट करने का इरादा।)

+0

हालांकि मैं ज्यादातर मामलों में आपसे सहमत हूं, हालाँकि ऐसी स्थिति होती है जब आप SQL डेटाबेस में एक्सएमएल स्टोर कर सकते हैं, जब रिलेशनल पावर की आवश्यकता नहीं होती है, जैसा कि इस प्रश्न का उत्तर देने वाले अन्य लोगों ने इंगित किया है। इस पोस्ट में अधिक जानकारी है: http://nativexmldatabase.com/2010/09/28/5-reasons-for-storing-xml-in-a-database/ – Fabio

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