2009-10-16 13 views
9

मैं यह छोटा उपयोगिता प्रोग्राम (विंडोज फॉर्म) बना रहा हूं और इसे डिस्क पर थोड़ा सा डेटा सहेजने की आवश्यकता होगी। डीबी शर्तों में यह लगभग एक टेबल होगी, लगभग दो हजार पंक्तियों से अधिक नहीं, प्रत्येक पंक्ति आकार में 1KB कम होगी।.NET में त्वरित एम्बेडेड डीबी के लिए क्या विकल्प हैं?

आप क्या उपयोग करेंगे?

जोड़ा गया: कहना भूल गया - अगर यह प्रोग्राम केवल एक ही होगा .EXE फ़ाइल (साथ ही डेटा फ़ाइल, निश्चित रूप से)। इस प्रकार मैं कुछ ऐसा पसंद करूंगा जो .NET में बनाया गया हो।

उत्तर

23

SQLite यह छोटा है और नेट के लिए है।

+0

+1। मुझे .NET के लिए रैपर के बारे में पता नहीं था। बहुत ही शांत। –

+1

और .NET पोर्ट http://code.google.com/p/csharp-sqlite/ – mcintyre321

+0

SQLite wrapper के लिए एक अतिरिक्त चेतावनी के रूप में, यह LINQ का समर्थन करता है। –

8

आप SQL सर्वर कॉम्पैक्ट संस्करण (विजुअल स्टूडियो के साथ प्रदान किया गया), या SQLite का उपयोग कर सकते हैं।

कई अन्य हैं, लेकिन ये सबसे आम हैं।

मैं SQLite का एक बड़ा प्रशंसक हूं, क्योंकि यह छोटा, सरल और तेज़ है। इसके लिए एक शानदार ADO.NET provider है, जो इकाई फ्रेमवर्क का समर्थन करता है।

3

पर एम्बेड कर सकते हैं यदि आप एक एम्बेडेड डीबी का उपयोग करने पर सेट हैं, तो SQL सर्वर कॉम्पैक्ट संस्करण शायद आपकी सबसे अच्छी शर्त है जो SQLite के करीब दूसरे के रूप में है।

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

11

या एरेस, विंडोज़ की प्रत्येक प्रति में मौजूद डेटाबेस में बनाया गया है। इसके बारे में यहां पढ़ें: http://ayende.com/Blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx

यदि आप बहादुर महसूस कर रहे हैं, तो मैंने एक साधारण दस्तावेज़ डीबी PieDb (जैसे 'आसान' में) रखा है।

2

मैं SQLite के लिए दूसरा वोट देता हूं। किसी भी एम्बेडेड प्रयोजनों के लिए SQL सर्वर सीई बहुत भारी है जब तक कि आपको केंद्रीय डेटाबेस के साथ आसान सिंक्रनाइज़ेशन की आवश्यकता न हो - तो यह शानदार है।

4

यदि आप एक ही टेबल की बात कर रहे हैं, तो मैं नहीं देख सकता कि आपको लगता है कि आपको अपने लक्ष्यों को प्राप्त करने के लिए एक रिलेशनल डेटाबेस का उपयोग क्यों करना है। एक फाइल के बारे में क्या?

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

एक संबंधपरक डेटाबेस डेटा संग्रहित करने के लिए defacto मानक नहीं होना चाहिए। आरडीबीएमएस चुनने से पहले आपको कई सारे विकल्पों पर विचार करना चाहिए।

उदाहरण के लिए mcintyre321 की पोस्ट देखें।

+0

मजेदार कैसे लोग "डीबी" शब्द देखते हैं और तुरंत वे डीबीएमएस की सोच में बंद हो जाते हैं। क्या मैंने कहीं भी कहा था कि मैं एक पूर्ण डीबीएमएस चाहता था? वास्तव में, मैं फ्लैट-फ़ाइल समाधान, एक्सएमएल क्रमबद्धता और इसी तरह के बारे में और सोच रहा था। मैंने सोचा कि अन्य लोग क्या करेंगे और क्यों वे कुछ समाधान चुनते हैं या नहीं। +1 –

+0

मुझे यह जानकर उत्सुकता होगी कि यह पूछने के लिए सबसे तेज़ फ्लैट फ़ाइल प्रारूप और लाइब्रेरी क्या होगी। सबसे आम समस्या यह है कि इंडेक्स जेनरेट करने के लिए दृश्यों के पीछे किसी प्रकार के इंजन को फ्लैट फाइलों की खोज करते समय आपके पास इंडेक्स का लाभ नहीं होता है। –

+0

यह डीबीएमएस होने और एम्बेडेड होने पर सीमा होगी। फ्लैट फाइलें फ्लैट हैं क्योंकि उनके पास इंडेक्स नहीं हैं। IMHO। –

1

कुछ छोटे और सरल के लिए मैं शायद एक्सएमएल के साथ जाऊंगा और डेटाबेस का उपयोग नहीं करूंगा। यदि आप सीआरयूडी कोड को सारणी देते हैं तो आप कोड के डेटा स्तर भाग को बाद में संशोधित कर सकते हैं ताकि जब डेटा आकार और जटिलता में बढ़ता है तो यह डेटाबेस का उपयोग करता है।

0

यदि यह SQL- संगत डेटाबेस होना आवश्यक नहीं है, तो मैं डीबी 4o को भी देखूंगा। डीबी 4o जावा और .NET के लिए एक ऑब्जेक्ट डेटाबेस है। .NET संस्करण पूरी तरह से सी # में लिखा गया है।

3

आप अपनी कक्षा का एक सरणी बना सकते हैं, इसे चिह्नित कर सकते हैं [Serializable] और दृढ़ता के लिए अंतर्निहित धारावाहिक/deserialize विधियों का उपयोग करें।

1

एक बार मैंने एक ही समस्या की जांच की। सभी संभावित उम्मीदवारों से दो अच्छे लग रहे थे। ये SQLite और Firebird (firebirdsql.org) हैं। लेकिन फायरबर्ड में SQLite की तुलना में कुछ और विशेषताएं थीं।

युपीडी: यहाँ Firebird + डॉटनैट http://www.firebirdsql.org/dotnetfirebird/embedded/index.html

+0

+1 – tobsen

0

मैं दूसरे एसक्यूएल लाइट या DEFLATE लेखक आकार को कम करने के साथ एक सरल एक्सएमएल फ़ाइल के बारे में एक दिलचस्प जानकारी। जल्दी और कोई गंदे नहीं।

1

Berkeley DB एम्बेडेड डेटाबेस के लिए भी एक अच्छा विकल्प है। और library है जो इसके लिए .NET 2.0 इंटरफ़ेस प्रदान करता है।

0

इसे आजमाएं: https://github.com/mdsoftware/mData। कोई तीसरा पक्ष नहीं, सभी स्रोतों में शामिल हैं, लिस्प जैसी डेटा प्रोसेसिंग और एक्सप्रेशन कंपाइलर जैसी कुछ अच्छी चीजें भी शामिल हैं। मैंने कुछ वास्तव में सरल लेकिन कार्यात्मक बनाने की कोशिश की है।

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