XML को डेटा संग्रहण के रूप में उपयोग करना [बंद]


12

मैं XML प्रारूप और निम्नलिखित उद्धरण के बारे में सोच रहा था:

“XML एक डेटाबेस नहीं है। यह डेटाबेस होने के लिए कभी नहीं था। यह एक डेटाबेस होने वाला नहीं है। संबंधपरक डेटाबेस कार्यान्वयन अनुभव के 20 से अधिक वर्षों के साथ सिद्ध प्रौद्योगिकी है। वे ठोस, स्थिर, उपयोगी उत्पाद हैं। वे दूर नहीं जा रहे हैं। XML विभिन्न डेटाबेस के बीच या डेटाबेस और अन्य कार्यक्रमों के बीच डेटा ले जाने के लिए एक बहुत ही उपयोगी तकनीक है। हालाँकि, यह स्वयं एक डेटाबेस नहीं है। इसे एक की तरह उपयोग न करें। ”- प्रभावी XML: इलियट्टी जंग खाए हेरोल्ड द्वारा आपके XML को बेहतर बनाने के 50 विशिष्ट तरीके (पृष्ठ 230, भाग 4, आइटम 41, 2 पैरा)

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

व्यक्तिगत रूप से, मैं असहमत हूं और .NET की app.configफ़ाइल जो प्रोग्राम की सेटिंग्स को स्टोर करने के लिए उपयोग की जाती है, एक XML फ़ाइल में डेटा स्टोरेज का एक उदाहरण है। हालाँकि कॉन्फ़िगरेशन के बजाय डेटाबेस आदि के लिए XML का उपयोग नहीं किया जाना चाहिए।

अपनी बात को विकसित करने के लिए, मैं दो उदाहरणों का उपयोग करूँगा:
ए) उन ग्राहकों के बारे में डेटा, जिनके पास एक स्तर पर सभी फ़ील्ड हैं यानी ऐसे सभी फ़ील्ड हैं जिनमें कोई भी ग्राहक नहीं है जिसमें कोई भी बच्चा नहीं है
B) किसी अनुप्रयोग के कॉन्फ़िगरेशन के बारे में डेटा जहां नेस्टेड फ़ील्ड्स हैं और गुण बहुत मायने रखते हैं

तो मेरा प्रश्न यह है कि क्या यह अभी भी एक मान्य कथन है और क्या अब XML का उपयोग करके डेटा स्टोर करना स्वीकार्य है?

संपादित करें: मैंने उस उद्धरण के लेखक को उसका इनपुट / अतिरिक्त संदर्भ पूछने के लिए एक ईमेल भेजा है।


11
एक डेटाबेस डेटा भंडारण के बारे में नहीं है, लेकिन किसी दिए गए मानदंडों पर डेटा प्राप्त करना है। XML केवल स्केल नहीं करता है - आपके द्वारा वर्णित डेटा के साथ 100 GB XML फ़ाइल में हेरफेर करने का प्रयास करें।

1
सवाल अस्पष्ट है। क्या आप DB के बजाय XML फ़ाइल में डेटा संग्रहीत करने या DB के अंदर डेटा संग्रहीत करने के बारे में पूछ रहे हैं, लेकिन XML प्रकार के रूप में। इसके अलावा मैला करना .net config फाइल का उदाहरण है क्योंकि मैं इसे डेटा स्टोरेज के रूप में नहीं देखता हूं।
सॉफ्टविला

किसी ने अभी तक यह उल्लेख नहीं किया है कि कोई भी डेटा संग्रहण प्रारूप अपने आप में एक डेटाबेस नहीं है। एक डेटाबेस में एक भंडारण प्रारूप और एक पुनर्प्राप्ति तंत्र शामिल है। XML एक पुनर्प्राप्ति तंत्र नहीं है, इसलिए यह एक डेटाबेस नहीं हो सकता है। XML शायद 1MB से अधिक डेटा के लिए एक भयानक भंडारण प्रारूप भी होता है।
ग्लेनपेटर्सन

जवाबों:


12

यह उद्धरण XML को सामान्य रूप से भंडारण प्रारूप के रूप में उपयोग करने के बारे में नहीं है (जिसके लिए यह ठीक है, आवश्यकताओं के आधार पर), लेकिन डेटाबेस- टाइप स्टोरेज के लिए।

जब लोग डेटाबेस के बारे में बात करते हैं, तो उनका मतलब आमतौर पर स्टोरेज सिस्टम होता है जो भारी मात्रा में डेटा स्टोर करता है, अक्सर गीगाबाइट या टेराबाइट रेंज में। एक डेटाबेस संभावित रूप से स्टोर करने वाले सर्वर पर उपलब्ध रैम की मात्रा से बहुत बड़ा होता है। चूंकि किसी को कभी भी एक डेटाबेस में सभी डेटा की आवश्यकता नहीं होती है, इसलिए डेटाबेस को अपने डेटा के चयनात्मक सबसेट के तेजी से पुनर्प्राप्ति के लिए अनुकूलित किया जाना चाहिए: यह वह है जो SELECTकथन के लिए है, और रिलेशनल डेटाबेस और साथ ही NoSQL समाधान तेजी से के लिए अपने आंतरिक भंडारण प्रारूप का अनुकूलन करते हैं। इस तरह के सबसेट की पुनर्प्राप्ति।

हालाँकि, XML वास्तव में इन आवश्यकताओं के अनुरूप नहीं है। इसकी नेस्टेड टैग संरचना के कारण, यह निर्धारित करना असंभव है कि फ़ाइल में एक निश्चित मान कहाँ संग्रहीत किया जाता है (एक बाइट के रूप में एक फ़ाइल में ऑफसेट) पूरे दस्तावेज़ के पेड़ पर चलने के बिना, कम से कम मैच तक। एक संबंधपरक डेटाबेस में अनुक्रमित होते हैं, और एक सूचकांक में एक मूल्य को देखते हुए, यहां तक ​​कि एक आदिम द्विआधारी-खोज कार्यान्वयन के साथ, एक ओ (लॉग एन) लुकअप है, और फिर वास्तविक मूल्यों तक पहुंचना फ़ाइल-तलाश के अलावा कुछ नहीं है (जैसे fseek(data_file_handle, row_index * row_size)), जो ओ (1) है। XML फ़ाइल में, आपके दस्तावेज़ पर SAX पार्सर को चलाने का सबसे प्रभावी तरीका है, अपने वास्तविक डेटा पर पहुंचने से पहले एक बहुत कुछ पढ़ना और ढूंढना; जब तक आप अनुक्रमित का उपयोग नहीं करते हैं, तब तक आप इसे ओ (एन) से बेहतर कर सकते हैं, लेकिन फिर, आपको हर प्रविष्टि के लिए पूरे सूचकांक का पुनर्निर्माण करना होगा (नीचे देखें)।

सम्मिलित करना और भी बुरा है। संबंधपरक डेटाबेस पंक्ति क्रम की गारंटी नहीं देते हैं, जिसका अर्थ है कि वे बस नई पंक्तियों को जोड़ सकते हैं, या 'हटाए गए' के ​​रूप में चिह्नित किसी भी पंक्तियों को अधिलेखित कर सकते हैं। यह बहुत तेज़ है: DB बस के आसपास रहने योग्य स्थानों का एक पूल रख सकता है; पूल से एक प्रविष्टि प्राप्त करना O (1) है जब तक कि पूल खाली न हो; सबसे खराब स्थिति, पूल खाली है और एक नया पेज बनाना है, लेकिन यह भी O (1) है। इसके विपरीत, एक्सएमएल-आधारित डेटाबेस को कमरे बनाने के लिए सम्मिलन बिंदु के बाद सब कुछ स्थानांतरित करना होगा; यह O (n) है। जब इंडेक्स खेल में आते हैं, तो चीजें और भी दिलचस्प हो जाती हैं: विशिष्ट रिलेशनल-डेटाबेस इंडेक्स को अपेक्षाकृत कम जटिलता के साथ अपडेट किया जा सकता है, ओ कह सकते हैं (लॉग एन); लेकिन अगर आप अपनी XML फ़ाइलों को अनुक्रमित करना चाहते हैं, तो हर प्रविष्टि दस्तावेज़ में हर मूल्य के ऑन-डिस्क स्थान को संभावित रूप से बदल देती है, इसलिए आपको यह करना होगापूरे सूचकांक का पुनर्निर्माण करें । यह अपडेट के लिए भी जाता है, क्योंकि किसी तत्व की टेक्स्ट सामग्री को अपडेट करना, कहना, इसका आकार बदल सकता है, जिसका अर्थ है कि लगातार XML को शिफ्ट करना है। यदि आप एक गैर-अनुक्रमित कॉलम को अपडेट करते हैं, तो एक रिलेशनल डेटाबेस को इंडेक्स को स्पर्श नहीं करना पड़ता है; एक XML डेटाबेस को अद्यतन किए गए XML नोड के आकार को बदलने वाले प्रत्येक अद्यतन के लिए पूरे सूचकांक का पुनर्निर्माण करना होगा।

वे सबसे महत्वपूर्ण डाउनसाइड हैं, लेकिन और भी हैं। XML बहुत वर्बोज़ है, जो सर्वर-से-सर्वर संचार के लिए अच्छा है, क्योंकि यह सुरक्षा जोड़ता है (प्राप्त करने वाला सर्वर XML पर सभी प्रकार की अखंडता जांच कर सकता है, और यदि स्थानांतरण में कुछ भी गलत हुआ है, तो दस्तावेज़ को सत्यापित करने की संभावना नहीं है )। बड़े पैमाने पर भंडारण के लिए, हालांकि, यह हत्या है: एक्सएमएल डेटा के लिए 100% या अधिक ओवरहेड होना असामान्य नहीं है (यह SOAP संदेशों जैसी चीजों के लिए 1000% रेंज में ओवरहेड अनुपात को देखने के लिए असामान्य नहीं है), जबकि विशिष्ट रिले डीबी भंडारण योजनाओं में केवल तालिका मेटाडेटा के लिए एक निरंतर ओवरहेड है, और प्रति पंक्ति एक छोटा सा; रिलेशनल डेटाबेस में अधिकांश ओवरहेड निश्चित कॉलम चौड़ाई से आता है। यदि आपके पास डेटा का टेराबाइट है, तो कई कारणों से 500% ओवरहेड बस अस्वीकार्य है।


21

XML डेटा स्टोरेज के लिए घटिया है। सबसे पहले, यह बहुत ही क्रिया है। XML फ़ाइल में संग्रहीत डेटा बहुत अधिक डिस्क स्थान लेगा फिर वही डेटा किसी भी उचित डेटाबेस सिस्टम में संग्रहीत किया जाएगा। एक्सएमएल रिकॉर्ड में, डेटा के स्ट्रिंग प्रतिनिधित्व के साथ एक विशेष क्षेत्र का नाम दो बार संग्रहीत किया जाएगा। इसलिए, उदाहरण के लिए, "फोबार" नामक क्षेत्र में एक एकल पूर्णांक को स्टोर करने के लिए, आप इस 19 बाइट स्ट्रिंग के साथ समाप्त होते हैं:

<foobar>42</foobar>

दूसरी ओर, एक वास्तविक डेटाबेस इसे एक एकल पूर्णांक मान के रूप में संग्रहीत करेगा, 4 बाइट्स ले रहा है। यदि आपका डेटाबेस छोटा है, तो इसका मतलब ज्यादा नहीं है, लेकिन अगर आपके पास 10,000 रिकॉर्ड हैं, तो यह एक समस्या है।

दूसरा, किसी XML को हर बार फाइल पढ़ने के बाद टेक्स्ट से पार्स करना पड़ता है। उपरोक्त फ़ील्ड के लिए, एक वास्तविक डेटाबेस केवल बाइनरी डेटा को ऑफ़सेट से मेमोरी में पढ़ता है, यह जानता है कि यह "फ़ॉक्सर" में फ़ील्ड को संग्रहीत करता है। यदि फ़ाइल को एक्सएमएल के रूप में संग्रहीत किया जाता है, तो उसे फ़ील्ड "फ़ॉबर" को पढ़ना होगा, उस टेक्स्ट को पार्स करें। , निर्धारित करें कि यह किस क्षेत्र में है, फिर स्ट्रिंग "42" को पार्स करें और इसे बाइनरी 42 में परिवर्तित करें।

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

एक अपवाद कॉन्फ़िगरेशन फ़ाइलें हैं, जो आम तौर पर छोटी होती हैं, और आम तौर पर मनुष्यों द्वारा संपादन योग्य होने की आवश्यकता होती है।

एक XML डेटाबेस बिल्कुल किसी भी उचित SQL सिस्टम की तुलना में बड़ा और धीमा होगा। जब तक आप मानव पठनीयता या अंतर्संचालनीयता में एक असंतुलित लाभ पा सकते हैं, डेटा भंडारण के लिए इसका उपयोग करने का कोई मतलब नहीं है।


1
यहाँ महत्वपूर्ण बिंदु फ़ाइल का आकार है। के लिए स्थिर डेटा आकार में एक मेग की तुलना में कम, प्रदर्शन एक XML लोड करने की हिट एक बार है कि महान नहीं है। मैंने लगभग 5 साल पहले एक आवेदन पर काम किया था और पाया कि ऐसी फाइल लोड करने की लागत एमएस क्षेत्र के 10 के दशक में थी। मैं कहता हूं कि कंप्यूटर अब थोड़ा तेज हैं।
डेव

@ अवतल: लेकिन जब आप उस आकार के क्षेत्र में हो जाते हैं तो XML प्रारूप "मानव संपादन योग्य" विभाग में महत्वपूर्ण रूप से खो जाता है।
जोआचिम सॉर

समस्या को और अधिक उजागर करने के लिए, एक्सएमएल में 27 बाइट्स होने के बावजूद, "1000000000" मूल्य को वास्तविक डीबी में 4 बाइट करना होगा।
डेनियल बी

8

XML संदर्भ के आधार पर व्यवहार्य है। यदि आपका डेटा बहुत स्थिर है, और बहुत कुछ नहीं बदल रहा है (उदाहरण के लिए नमूना डेटा), तो हाँ एक्सएमएल एक अच्छा उपयोग है।

कॉन्फ़िगरेशन सेटिंग्स, नमूना डेटा (भले ही यह लाखों पंक्तियों का हो, लेकिन शायद ही कभी बदल रहा हो), XML के सभी अच्छे उपयोग हैं।

हार्ड डिस्क पढ़ना / लिखना महंगा है, जिस तरह से Oracle / Sql स्टैक से डेटा एक्सेस करना अधिक है।


7

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

आपका आधार त्रुटिपूर्ण है।

आपके द्वारा उद्धृत पैराग्राफ वास्तव में कह रहा है कि XML डेटाबेस के लिए प्रतिस्थापन नहीं है, न कि यह कि इसका उपयोग डेटा स्टोरेज के लिए नहीं किया जाना चाहिए ।

यह स्पष्ट है कि एक सेटिंग्स फ़ाइल डेटाबेस के रूप में एक ही चीज नहीं है, और इसलिए विभिन्न तकनीकों (और?) का उपयोग किया जा सकता है।

अगर मैं गलत हूं तो मुझे सुधारें, लेकिन आपको डेटाबेस की तुलना में मार्क-अप भाषाओं के साथ अधिक अनुभव है। यदि आपको डेटाबेस के साथ थोड़ा सा अनुभव मिला, तो आपको पता चलेगा कि कौन से डोमेन दो अलग-अलग तकनीक के लिए अनुकूल हैं।


4

यह वास्तव में व्यक्तिपरक है। वह बोली, जैसे, किसी की राय, आदमी।

ईमानदारी से, मुझे लगता है कि XML एक डेटाबेस के लिए एक व्यवहार्य विकल्प है क्योंकि इसमें RDMS पर कई फायदे हैं, जिसमें कम ओवरहेड भी शामिल है, जो सस्ते भंडारण के बराबर है (विशेष रूप से एक होस्टिंग सेवा का उपयोग करते समय जो डेटाबेस के लिए अलग से शुल्क लेता है)।

DasBlog और BlogEngine पर एक नज़र डालें । वे दोनों एप्लिकेशन डिफॉल्ट के रूप में स्टोरेज के लिए xml का उपयोग करते हैं।

ने कहा कि। यह RDMS नहीं है, और यदि आपके डेटा में उच्च अस्थिरता (अपडेट, आवेषण, या हटाए गए) बहुत अधिक हैं या उच्च उपलब्धता की आवश्यकता है, तो डेटाबेस का उपयोग करें। XML छोटी चीजें जैसे कॉन्फ़िगरेशन डेटा और कम अस्थिरता डेटा संग्रहीत करने के लिए ठीक है।


उद्धरण वास्तव में एक किताब से है। मुझे यह जोड़ना चाहिए
कियान

2
"कम उपरि?" मुझे लगता है कि आपका मतलब है "स्थापना की आवश्यकता नहीं है।" एक बड़ी XML फ़ाइल में डेटा एक्सेस करने का एक बहुत बड़ा समय, I / O और प्रोसेसर ओवरहेड होता है। हां, XML छोटी चीजों (<1MB) के लिए अच्छा है, लेकिन नहीं, सामान्य रूप से कम अस्थिरता डेटा के लिए XML अच्छा नहीं है, सामान्य रूप से केवल छोटी चीजें।
GlenPeterson

अच्छा बड़ा Lebowski hommage!
अदृश्यप्राण

1

मेरा प्रश्न यह है कि क्या यह अभी भी एक मान्य कथन है और क्या अब XML का उपयोग करके डेटा स्टोर करना स्वीकार्य है?

मैं आपको .NET कॉन्फ़िगरेशन फ़ाइलों के बारे में उदाहरण में आपकी बात देखता हूं। हालाँकि, किसी अन्य फ़ाइल स्वरूप का उपयोग किया जा सकता था। वास्तव में, पुराने दिनों में, ऐसी सेटिंग्स को नियमित पाठ फ़ाइलों में संग्रहीत किया जाता था, जिन्हें आईएनआई फाइलें कहा जाता था।

मैं देखता हूं कि आपने ग्रे में जो वक्तव्य प्रस्तुत किया है, वह मान्य है और सही है यदि आप किसी डेटाबेस को सॉफ्टवेयर सिस्टम के रूप में परिभाषित करते हैं।

एक्सएमएल-डेफिनिशन में एक्सएमएल की परिभाषा बताती है कि "(एक्सएमएल) एक मार्कअप भाषा है जो एक प्रारूप में दस्तावेजों को एन्कोडिंग के लिए नियमों के एक सेट को परिभाषित करती है जो मानव-पठनीय और मशीन-पठनीय दोनों है।"

यह परिभाषा डेटा को प्रबंधित करने के लिए तंत्र के बजाय पठनीयता और भाषा पर केंद्रित है ।

RDBMS की तुलना में, XML किसी XML फ़ाइल में पंक्तियों को बेतरतीब ढंग से सम्मिलित करने और हटाने के लिए साधन प्रदान नहीं करता है। उदाहरण के लिए, यदि आपके पास 1000000 पंक्तियाँ हैं, और आप एकल उपयोगकर्ता वातावरण में भी यादृच्छिक पर पंक्तियों को हटाना चाहते थे, तो XML आधारित फ़ाइल डेटाबेस के लिए एक अच्छा विकल्प नहीं होगी। इसके अलावा, XML डेटा लॉक करने के लिए कोई मूल तंत्र प्रदान नहीं करता है। वास्तव में, चूंकि XML एक सॉफ्टवेयर नहीं है, सभी ACID (परमाणु, संगति, अलगाव, स्थायित्व) गुण जो गारंटी देते हैं कि डेटाबेस लेनदेन को एक साझा वातावरण में मज़बूती से संसाधित किया जाता है निर्माण करने के लिए डेवलपर को छोड़ दिया जाता है (स्थायित्व के अपवाद के साथ)। XML के पास XML फ़ाइलों में डेटा अखंडता को संभालने के लिए एक मजबूत विनिर्देश नहीं है, अकेले अलग-अलग सर्वर (जैसे ग्राहक xml फ़ाइल और ऑर्डर xml फ़ाइल - अखंडता को लागू करने के लिए कोई FKs) न होने दें।

ऊपर XML की कमी नहीं है, इसके बजाय, यह बयान के त्वरित औचित्य के रूप में सर्वर कर सकता है कि XML एक डेटाबेस सॉफ्टवेयर नहीं है ।


1

XML का मतलब कभी भी डेटाबेस होना या उसे बदलना नहीं था।

XML मुख्य रूप से वेब दस्तावेज़ों के लिए परिभाषित किया गया है allows for the creation of customized tags for individual information fields., हालाँकि, आप इसके साथ संबंधपरक केंद्रीकृत डेटा प्रबंधन कभी प्राप्त नहीं करेंगे।


0

आप वास्तव में पहले स्थान पर डेटा संग्रहीत करने के लिए XML का उपयोग क्यों करना चाहेंगे ? मेरा मतलब है, यह सब के बाद एक भाषा है ...

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


1
प्राकृतिक भाषाओं का इस्तेमाल सदियों से डेटा स्टोर करने के लिए किया जाता रहा है। समझने की क्षमता भी लागू होती है अगर आवेदन जो इसे पढ़ता है वह अनुपयोगी हो जाता है (जैसे कुछ 16-बिट ऐप जो कभी अपग्रेड नहीं हुआ)। मानव-पठनीय प्रारूप में डेटा संग्रहीत करना पोर्ट को आसान बनाता है; खासकर अगर प्रारूप कभी विशेष रूप से प्रलेखित नहीं था या दस्तावेज भी खो गया है।
पॉल बुचर

1
डेटा को संग्रहीत करने के लिए प्राकृतिक भाषा का उपयोग करना स्वयं समस्याग्रस्त नहीं है, लेकिन वास्तव में डेटा को एक ऐसे प्रारूप में संग्रहीत करना है जो स्वयं ही भयानक प्रदान करता है (तुलना में यह क्या हो सकता है) पठनीयता, सूचना दक्षता और जानकारी सामग्री अनुपात के लिए कुछ है जो मैं व्यक्तिगत रूप से बोलूंगा।
zxcdw

0

संक्षिप्त उत्तर: यह निर्भर करता है।

दीर्घ उत्तर: मेरे दृष्टिकोण से यह दृढ़ता से उस डेटा की मात्रा पर निर्भर करता है जिसे आप संग्रहीत करना चाहते हैं। उदाहरण के लिए, यदि आपके पास रनटाइम के दौरान आपके एप्लिकेशन में कुछ ऑब्जेक्ट हैं और आप टूल को चलाने के बाद उन्हें स्टोर करना चाहते हैं तो XML फ़ाइल पूरी तरह से ठीक है। हालाँकि, यदि आपके webshop में 5000 कस्टूमर हैं और इससे भी अधिक ऑर्डर एक डेटाबेस एक अधिक उपयुक्त डेटा स्टोरेज होगा।

इसके अलावा, मुझे लगता है कि डेटाबेस में सेटिंग्स संग्रहीत करना और ऐप की तरह फ़ाइल में नहीं। कॉनफिग ज्यादातर मामलों में बहुत उपयोगी नहीं है, लेकिन मुझे नहीं लगता कि यह उदाहरण उद्धरण को गलत साबित करता है।


0

XML कॉन्फ़िगरेशन सेटिंग्स के लिए एक उत्कृष्ट विकल्प है। न केवल XML फाइलें एक आईडीई में पार्स / हाइलाइट करने के लिए आसान हैं, वे गैर-प्रोग्रामर को संपादित करने के लिए बहुत आसान हैं। मैं उन्हें वेब विकास परिदृश्यों में अविश्वसनीय रूप से उपयोगी पाता हूं जहां डिजाइनर और सामग्री प्रबंधकों द्वारा रखरखाव कार्य किए जा रहे हैं।

XML को आमतौर पर किसी भी गैर-तुच्छ अनुप्रयोगों के लिए प्राथमिक डेटा स्रोत के रूप में उपयोग नहीं किया जाना चाहिए। एक अलग समाधान के लिए अकेले सीरियलाइजेशन / डीरियलाइजेशन ओवरहेड।


0

शब्द डेटाबेस या तो कच्चे डेटा को संदर्भित कर सकता है, या डेटाबेस प्रबंधन प्रणाली को भी। यह परिभाषा पूरे तर्क में बड़ा बदलाव लाती है।

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

उपरोक्त अर्थ में, नहीं, XML एक डेटाबेस नहीं है, और आपको इसे एक के रूप में उपयोग करने का प्रयास नहीं करना चाहिए।

यदि हम "कच्चे डेटा" की परिभाषा का उपयोग करते हैं, तो XML बहुत बेहतर किराया करता है, लेकिन फिर भी यह महान नहीं है। जैसा कि अन्य लोगों ने बताया है कि, यह सामान्य रूप से बेहद सामान्य क्रिया है, जिसमें आमतौर पर बाइनरी एन्कोडिंग की कमी होती है, और डुप्लिकेट टैग आदि होते हैं, ये ट्रेड-ऑफ होते हैं ताकि XML मानव-पठनीय हो सके - मूल रूप से, दक्षता इस आवश्यकता का दुश्मन है । XML उन सरलतम स्थितियों के लिए भी विशेष रूप से अच्छा नहीं है जहाँ आप लगातार रिकॉर्ड डाल रहे हैं। यह मानते हुए कि आप चाहते हैं कि आपकी XML फ़ाइल वैध हो, आपको एक एकल समापन टैग की आवश्यकता है, जिसका अर्थ है कि रिकॉर्ड को जोड़ने का मतलब है कि आपको अंत में टैग को स्थानांतरित करने की आवश्यकता है। यह बहुत महंगा है (हम कैसे जानते हैं कि वह टैग कहां से शुरू होता है? क्या होगा यदि कई "टेबल" हैं, क्या हम पूरी फाइल को स्थानांतरित करते हैं?), और यदि आप इसके चारों ओर काम करना चाहते हैं, तो आप '

ऐसी स्थितियां हैं जहां XML उपयुक्त है - कॉन्फ़िगर फाइलें एक महान उदाहरण हैं, क्योंकि वे आम तौर पर छोटे होते हैं और मानव पठनीयता एक उत्कृष्ट विशेषता है। किसी कॉन्‍फ़‍िगर फ़ाइल के लिए डेटाबेस होने से ओवरकिल हो सकता है।

दूसरी ओर, डेटाबेस तब उत्कृष्ट होते हैं जब आपके पास हजारों (या लाखों / अरबों) रिकॉर्ड होते हैं, और कई उपयोगकर्ता समवर्ती उन्हें अपडेट करते हैं। तो हाँ, XML एक डेटाबेस नहीं है, और आपको इसे एक की तरह उपयोग नहीं करना चाहिए। आपका उदाहरण उन स्थितियों में से एक है जहां आपको पहले स्थान पर एक डीबी की आवश्यकता नहीं थी, और एक्सएमएल बेहतर फिट है।

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


0

मैं मानता हूं कि यह एक संबंधपरक डेटाबेस नहीं है। मुझे लगता है कि लेखक केवल उद्धरण में कह रहा है कि इसे एक के रूप में उपयोग न करें।

कहा कि हालांकि आप एक की आवश्यकता हो सकती है या नहीं। यदि आपको वास्तव में डेटा पर अधिक क्वेरी करने की आवश्यकता नहीं है, और केवल इसे संग्रहीत करने का इरादा रखते हैं और फिर बाद में इसे कुछ सीमित क्वेरी मानदंडों के आधार पर प्राप्त करते हैं, तो आपको XML DOCUMENT संग्रहण और पुनर्प्राप्ति की आवश्यकता है - एक रिलेशनल डेटाबेस नहीं।

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

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

इस अर्थ में आप किसी भी चीज़ की तुलना में सामग्री प्रबंधन को अधिक पसंद कर रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.