2010-02-18 12 views
5

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

अब मैं लगभग 30 000 टेक्स्ट फ़ाइलों की मात्रा को मार रहा हूं। यह अविश्वसनीय रूप से कर लग रहा है, और समय पर आवेदन पीसने के लिए आता है।

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

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

अद्यतन

मैं निरंतर कनेक्शन की एक महान सौदा की उम्मीद नहीं कर रहा हूँ, जब मैं लेनदेन का कहना है, मैं अनिवार्य रूप से 1 या 2 ग्राहकों जिनसे कॉल किया और क्रम में डेटाबेस के खिलाफ अमल मतलब है। कभी-कभी बाहरी ग्राहकों को डीबी को त्वरित कॉल करने की संभावना हो सकती है। लेकिन डीबी कनेक्शन का बड़ा हिस्सा मेरी डब्ल्यूसीएफ सेवा द्वारा किया जाएगा, जो एक बैक एंड शेड्यूल किया गया कार्य है, जो किसी संगठन में 100 लोगों की सेवा नहीं करता है।

एक और अच्छा मुद्दा यह है कि मुझे केवल 90 दिनों के लिए डेटा बनाए रखने की आवश्यकता है, इसलिए डीबी को बहुत बड़ा नहीं होना चाहिए।

मेरा मुख्य चिंताएं हैं:

SQLLite कैसे विश्वसनीय है? क्या होगा यदि डीबी फ़ाइल दूषित हो जाए, तो क्या मैं सभी प्रोसेसिंग डेटा खो दूंगा। डीबी का बैक अप लेना कितना आसान है? क्या यह मेरे वॉल्यूम को संभालेगा? और आखिरकार .net प्रदाता कैसे काम करता है (यहां स्थित है: http://sourceforge.net/projects/sqlite-dotnet2/)।

यदि आपके पास SQLLite के साथ कोई अनुभव है, तो कृपया अपने अनुभव पोस्ट करें ताकि मैं स्विच करने के लिए एएन को सूचित निर्णय ले सकूं या नहीं।

अग्रिम धन्यवाद ...

उत्तर

1

अपने लेन-देन की मात्रा मैं तथ्य यह है कि डीबी अपने आप में एक समस्या हो सकती है उपलब्ध ताला लगा केवल फाइल सिस्टम के साथ एक अखंड फ़ाइल है कहेंगे को देखते हुए।

जहां तक ​​मुझे पता है वहां कोई पंक्ति आधारित लॉकिंग नहीं है।

+0

मुझे अपना प्रश्न दोबारा दोहराएं। –

+0

दाएं, स्क्लाइट कई उपयोगकर्ताओं को एक साथ एक्सेस करने का प्रयास नहीं कर रहा है, लेकिन जब तक यह एक समय में एक एप्लिकेशन द्वारा उपयोग की जाने वाली एक मोनोलिथिक डेटा स्टोर है, तो यह बहुत अच्छा काम करता है। – Karl

+0

@ करल, यह विभिन्न प्रणालियों से भी विभिन्न प्रक्रियाओं के साथ-साथ पहुंच को संभालता है, और यह लेनदेन का समर्थन करता है, जो लॉकिंग का प्रबंधन करने का सबसे अच्छा तरीका है। यह एसीआईडी ​​अनुपालन है। हालांकि, चूंकि संपूर्ण डेटाबेस एक फ़ाइल में निहित है और यह फ़ाइल स्तर पर ताले लगाता है, पाठक लंबित लिखने पर ब्लॉक करते हैं और पढ़ते समय तक ब्लॉक लिखते हैं। –

3

आप माइक्रोसॉफ्ट के एसक्यूएल कॉम्पैक्ट संस्करण पर विचार कर सकते हैं।
यह एक फ़ाइल एम्बेडेड डेटाबेस होने के मामले में एसक्लाइट की तरह है, लेकिन नेट फ्रेमवर्क के साथ बेहतर एकीकरण है :)
SQLite विश्वसनीय लगता है, और यहां तक ​​कि माइक्रोसॉफ्ट के साथ भी, इस मामले में ज्यादा समर्थन प्राप्त करने की उम्मीद नहीं है एक दूषित डेटाबेस।

+0

स्क्लाइट बहुत अच्छा काम करता है, लेकिन मुझे दृश्य स्टूडियो सक्रिय डेटा ऑब्जेक्ट इंटरफ़ेस के साथ अच्छा खेलने में परेशानी हो रही है, इसलिए जब तक आप विंडोज़ भूमि में हों, तो शायद एमएस एसक्यूएल कॉम्पैक्ट बेहतर विकल्प है। – Karl

5

SQLite आपके ओएस और हार्डवेयर के रूप में विश्वसनीय है।

इसकी लेनदेन दर SQL सर्वर के समान है, और अक्सर तेज़ी से क्योंकि यह प्रक्रिया में है।

.NET ADO प्रदाता महान काम करता है।

डीबी का बैक अप लेने के लिए, सेवा को रोकें और फ़ाइल कॉपी करें। अगर जर्नल फ़ाइल मौजूद है तो भी इसे कॉपी करें।

संपादित करें: एसक्यूएलएइट डिफ़ॉल्ट रूप से यूटीएफ -8 का उपयोग करता है ताकि एडीओ-नेट प्रदाता के साथ आपको उच्चारण खोने से बचने में सक्षम होना चाहिए (बस जब तक आप स्ट्रिंग नियमों में सामान्य एक्सएमएल का पालन करते हैं)।

+0

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

1

मैंने एक चिंता के अलावा एक मोनोसर वातावरण में समस्याओं के बिना .NET प्रदाता के साथ SQLite का उपयोग किया: उच्चारण, जो कि संक्षेप में नहीं दिखाया गया है। बैकअप काफी सरल है: SQLite डेटाबेस एक सादा पाठ फ़ाइल है। बस इसे कॉपी करें।

+0

उच्चारण क्या हैं? उनके बारे में कभी नहीं सुना। –

+0

स्पैनिश में "एंटेंटोस", मुझे लगता है: इस तरह की कुछ – Apocatastasis

+0

ठीक है, तो मुझे एक समस्या होगी क्योंकि मैं जिस समाधान का उपयोग कर रहा हूं वह चेक क्लाइंट्स के लिए है जो अंग्रेजी वर्ण सेट का उपयोग नहीं करते हैं। –

1

मैं XML कॉन्फ़िगरेशन डेटा संग्रहीत करने के लिए स्क्लाइट का उपयोग करता हूं और इसमें कोई समस्या नहीं है। मैं System.Data.Sqlite प्रदाता का उपयोग करता हूं: http://sqlite.phxsoftware.com/। यह ठोस है और इसका एक अच्छा समर्थन मंच है। इसमें एक LINQ प्रदाता भी शामिल है। यह वीएस 2008 के साथ भी एकीकृत करता है ताकि आप टेबल एक्सप्लोरर के लिए सर्वर एक्सप्लोरर का उपयोग कर सकें। उदाहरण और दस्तावेज़ीकरण भी दिखाता है कि बढ़ते प्रदर्शन के लिए पैरामीटरयुक्त आदेशों और लेनदेन का उपयोग कैसे करें।

लिंककैड के लिए रिलीज उम्मीदवार अब स्क्लाइट का समर्थन करता है: http://www.linqpad.net/Beta.aspx

स्क्लाइट एक ही फाइल में सबकुछ स्टोर करता है, जिसे किसी अन्य बाइनरी फ़ाइल की तरह बैक अप किया जा सकता है।

स्क्लाइट केवल फ़ाइल-स्तरीय लॉकिंग का समर्थन करता है, लेकिन एक प्रदर्शन समस्या प्रस्तुत नहीं करनी चाहिए क्योंकि ऐसा लगता है कि आपके पास एक साथ बड़ी संख्या में लेन-देन होंगे।

यूनिकोड कोई समस्या नहीं होनी चाहिए। फ़ोरम में यह लिंक उस क्षेत्र को संबोधित करता है जहां कोई असंगत उपयोगिता http://sqlite.phxsoftware.com/forums/t/954.aspx के साथ यूनिकोड वर्ण पढ़ने की कोशिश कर रहा था।

यह साइट दिखाती है कि सिस्टम कैटलॉग का उपयोग कर केस-प्रेरक यूटीएफ 8 तुलना कैसे करें, कस्टम कैलकुलेटर के माध्यम से, रूसी वर्णों के साथ उदाहरण के रूप में: http://www.codeproject.com/KB/database/SQLiteUTF8CIComparison.aspx

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