2010-08-03 12 views
12

से पूछताछ कर रहा हूं मैं सी # में एक सीएमएस डिजाइन कर रहा हूं और यह तय करने की आवश्यकता है कि साइट के लिए कॉन्फ़िगरेशन सेटिंग्स कहां से सहेजनी है। मेरे बेस एचटीएमएल टेम्पलेट्स को परिभाषित करने और फिर समय से पहले पेज बनाने के लिए उन्हें सर्वर की तरफ संसाधित करने पर विचार करना।कौन सा एक एक्सएमएल फ़ाइल तेज़ी से पढ़ रहा है या डेटाबेस

तो सर्वर के लिए एक एक्सएमएल फाइल पढ़ने या स्थानीय डेटाबेस से वही जानकारी पूछने के लिए आमतौर पर तेज़/कम ओवरहेड क्या होता है?

उत्तर

9

यह मेरे लिए संभावना नहीं लगता है कि यह आपके कोड में अड़चन हो जाएगा। कॉन्फ़िगरेशन सेटिंग्स पढ़ने पर आप कितनी बार योजना बना रहे हैं? कॉन्फ़िगरेशन आमतौर पर काफी छोटा है, और अक्सर पढ़ता है। वहाँ अधिक महत्वपूर्ण बातें कहाँ और कैसे यह स्टोर करने के लिए के बारे में विचार करने के लिए कर रहे हैं:

  • Bootstrapping: आप शायद अपने अनुप्रयोग स्थानीय फाइल सिस्टम के लिए उपयोग होने पर भरोसा कर सकते हैं, और आप कड़ी मेहनत से कोड एक विन्यास फ़ाइल नाम कर सकते हैं .. लेकिन यदि आपकी सभी कॉन्फ़िगरेशन डेटाबेस में है, तो आप किस डेटाबेस से बात करने के लिए कॉन्फ़िगर करते हैं?फेरबदल एवं तैनाती की

  • आसानी: संपादन सर्वर पर एक विन्यास फाइल हाथ द्वारा डेटाबेस में परिवर्तन करने की तुलना में तेजी हो सकता है ... लेकिन अगर आप कई सर्वरों है, आप पर एक फ़ाइल परिवर्तित करना चाहते उनमें से हर एक?

  • कॉन्फ़िगरेशन को पढ़ने/संसाधित करने की कोड की सरलता: आपकी कॉन्फ़िगरेशन कैसी दिखती है? क्या यह स्वाभाविक रूप से पदानुक्रमित है? यदि ऐसा है, तो एक्सएमएल एक अच्छा फिट होने की संभावना है। यदि यह नाम/मूल्य जोड़े के सेट की तरह है, तो एक साधारण तालिका एक अच्छी फिट है। बेशक, आप डेटाबेस के भीतर एक्सएमएल स्टोर कर सकते हैं - भंडारण स्थान और भंडारण प्रारूप प्रारूपों को एक साथ जोड़ने के लिए नहीं है। डेटाबेस पर एक एक्सएमएल दस्तावेज़ संपादित करना या तो एक्सएमएल फाइल को संपादित करने या व्यक्तिगत मूल्यों को बदलने से कहीं अधिक कठिन हो सकता है ... लेकिन आप हमेशा इस तरह की चीज़ों के लिए टूल के साथ जीवन को आसान बना सकते हैं।

+0

धन्यवाद। मैं एक संकर दृष्टिकोण के साथ जाने के लिए स्थानीय फाइलों में डेटा डालने और कुछ डेटाबेस में जाने की योजना बना रहा था। मुझे लगता है कि मैं उत्तर के आधार पर डेटाबेस स्टोरेज के साथ पूरी तरह से जाऊंगा। मेरे द्वारा निर्मित एप्लिकेशन में इसके लिए कोडर इंस्टॉल किया जाएगा जो डेटाबेस सेटअप और प्रारंभिक web.config सेटिंग्स को संभालेगा। – Adrian

0

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

लेकिन, यदि आपका डेटा बहुत "जटिल" है या कई अलग अलग संबंधों और गुण होते हैं, बस सर्वर सेटिंग्स के लिए एक्सएमएल

+3

इंटरनेट पर डेटाबेस का उपयोग करने के बारे में क्या होगा? और एक्सएमएल फाइल सिर्फ 10 लाइन लंबी और स्थानीय है? आप यह नहीं मान सकते कि एक्सएमएल डेटाबेस से धीमा है, समस्या अच्छी तरह से परिभाषित नहीं है –

3

उपयोग करने पर विचार - वास्तव में कोई फर्क नहीं पड़ता। आप केवल एक बार उन्हें पढ़ने जा रहे हैं। यहां तक ​​कि अगर इसमें कुछ सेकंड लगते हैं, तो भी ध्यान नहीं दिया जाएगा।

पहला उपाय, फिर अनुकूलित करें।

2

स्ट्रिंग का एक टुकड़ा कितना समय है? मैं एक डेटाबेस क्वेरी लिख सकता हूं जो एक XML फ़ाइल से एक ही डेटा को पढ़ने से बहुत धीमी है, लेकिन मैं एक XML फ़ाइल भी लिख सकता हूं जो डेटाबेस पढ़ने से क्वेरी के लिए बहुत धीमी है।

मैं कहूंगा कि यदि आप "अधिकतर" स्थिर सामग्री प्रदर्शित कर रहे हैं और आप प्रदर्शन के बारे में चिंतित हैं, तो संभवतः यह संभवतः एक बेहतर विचार है जिसे आप सबसे सरल मानते हैं, फिर कैशिंग तंत्र का उपयोग करें इसे निष्पादित करें - इस तरह, पहली पहुंच "धीमी" हो सकती है लेकिन बाद में पहुंच बहुत तेज होगी।

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

1

यह उस डेटा पर निर्भर करता है जिसे आप डेटा तक पहुंचने के लिए नियोजित करने जा रहे हैं।

यदि आप डेटाबेस मार्ग पर जाते हैं, तो क्या आप अपने परिणामों को कैश करने जा रहे हैं? यदि आप लगातार डीबी से विवरण खींचते हैं तो बहुत सारे नेटवर्क चापलूसी हो सकती हैं।

सादगी के संदर्भ में आप वास्तव में LINQ का उपयोग कर डेटा स्रोत पर नास्तिक हो सकता है ..

तेज़? सामग्री के स्मृति में एक बार कोई फर्क नहीं पड़ता है। कॉन्फ़िगरेशन जानकारी, जैसा कि एक और पोस्टर इंगित करता है आमतौर पर काफी स्थिर है। एक प्रोफाइलर का उपयोग करके कंसोल ऐप क्यों न बनाएं और मतभेदों को मापें।

http://www.red-gate.com/products/ants_performance_profiler/index.htm?utm_source=google&utm_medium=cpc&utm_content=brand_aware&utm_campaign=antsperformanceprofiler&gclid=CLXmzbLXnKMCFQs-lAodSXTGsQ

0

मैं डिफ़ॉल्ट रूप से यहां डेटाबेस का उपयोग करता हूं। यह तेज़ है और कम कोड की आवश्यकता है।

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