2008-08-03 13 views
29

चला सकता है मैं एक .net (C#) अनुप्रयोग में उपयोग किए जाने वाले एम्बेडेड डेटाबेस की तलाश में था (और अभी भी हूं)। चेतावनी: एप्लिकेशन (या कम से कम डेटाबेस) को नेटवर्क ड्राइव पर संग्रहीत किया जाता है, लेकिन एक समय में केवल 1 उपयोगकर्ता द्वारा उपयोग किया जाता है।.net के लिए एम्बेडेड डाटाबेस जो

अब, मेरा पहला विचार SQL Server Compact edition था। यह वास्तव में अच्छी तरह से अभिन्न है, लेकिन यह नेटवर्क को नहीं चला सकता है।

Firebird एक ही समस्या है, लेकिन .NET एकीकरण वास्तव में प्रथम श्रेणी नहीं है और यह काफी हद तक अनियंत्रित है।

Blackfish SQL दिलचस्प लग रहा है, लेकिन .NET संस्करण का कोई परीक्षण नहीं है। मूल्य निर्धारण भी ठीक है।

किसी भी अन्य सुझाव जो कि अच्छी तरह से काम करता है .net और वास्तव में सर्वर सॉफ़्टवेयर स्थापित करने की आवश्यकता के बिना नेटवर्क से चलाता है?

+0

दिलचस्प है कि इस पोस्ट "राय आधारित" मेरी पोस्ट के विपरीत होने के लिए विचार नहीं किया है http://stackoverflow.com/questions/20229964/multi-user-application-without -need करने वाली स्थापित-कुछ भी एम्बेडेड-डेटाबेस-कि। वैसे भी - मुझे लगता है कि सभी प्रस्तावित एम्बेडेड डेटाबेस सर्वर पर एक उपयोगकर्ता (एसक्यूएल सीई सहित) के लिए काम करते हैं, उनमें से कुछ समवर्ती पठन (जैसे SQLite) की अनुमति देते हैं, लेकिन केवल एक (कम से कम केवल एक ही मैंने पाया है और परीक्षण किया है कि यह काम करता है !) जो समवर्ती लिखने की अनुमति देता है VistaDB – Prokurors

उत्तर

21

SQLite अपने प्रश्न को पढ़ने के दौरान मेरे मन में आया, और मैं काफी यकीन है कि यह एक नेटवर्क ड्राइव से उस तक पहुंच यदि आप एक समय में उपयोगकर्ता 1 की कमी करने के लिए अपने आप को रखने के संभव है हूँ।

SQLite on .NET - Get up and running in 3 minutes

+0

मैंने पिछले हफ्तों के दौरान इसका परीक्षण किया है, और SQLite वास्तव में एक अच्छा उत्पाद है। यह निश्चित रूप से आरडीबीएमएस का एक पूर्ण स्वाद नहीं है, लेकिन इसमें नौकरी पाने के लिए आवश्यक सभी सुविधाएं हैं। –

+0

@Sven: SQLite वास्तव में बल्कि व्यापक फ़ाइल लॉकिंग है, और एक SQLite डेटाबेस को निश्चित रूप से एक ही समय में एकाधिक उपयोगकर्ताओं द्वारा एक्सेस किया जा सकता है। फाइल सिस्टम पर इसका समर्थन करने पर, SQLite एक ही डेटाबेस के एकाधिक एक साथ उपयोग के प्रदर्शन को बेहतर बनाने के लिए पूरे-फ़ाइल लॉकिंग के बजाय बाइट-रेंज का उपयोग करेगा। यह एक्सेस नहीं है; यह बहुत मजबूत है। –

+0

@ChrisHanson यह एक ही समय में कई उपयोगकर्ताओं के लिए केवल पढ़ने की अनुमति देता है – Prokurors

6

बाहर चेक VistaDB। उनके पास बहुत अच्छा उत्पाद है, सर्वर संस्करण (3.4) बीटा में है और रिलीज के बहुत करीब है।

4

SQL Server 2005 Express edition का उपयोग क्यों नहीं करें?

यह वास्तव में "एम्बेडेड" से आपका क्या मतलब है इस पर निर्भर करता है - लेकिन आप अपने अनुप्रयोगों के साथ SQLServer2005E को फिर से वितरित कर सकते हैं और उपयोगकर्ता को यह कभी नहीं पता होना चाहिए।

Embedding SQL Server Express in Applications

Embedding SQL Server Express into Custom Applications

+0

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

8

ऐसा लगता है कि एडीओ/पहुँच अपनी आवश्यकताओं के लिए एकदम सही है। यह एमएस स्टैक, अच्छी तरह से अनुभवी, और बहु ​​उपयोगकर्ता में बेक्ड है।

आप प्रोग्राम के इतने की तरह एक डीबी बना सकते हैं:

Dim catalog as New ADOX.Catalog 
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb") 

फिर आप डेटाबेस के साथ बातचीत करने के लिए मानक ADO.NET तरीकों का उपयोग कर सकते हैं।

8

आप एम्बेडेड फायरबर्ड का उपयोग कर सकते हैं, यह सिर्फ एक डीएल है जिसे आपको अपने ऐप के साथ शिप करने की आवश्यकता होगी।

चीजों के बारे में अनियंत्रित होने के बारे में, यह वास्तव में सच नहीं है, फ़ायरबर्ड .NET ड्राइवर एडीओ इंटरफेस लागू करता है, इसलिए यदि आप एडीओ जानते हैं तो आप फायरबर्ड के साथ काम कर सकते हैं, मूल रूप से SQLConnection के बजाय आप एफबीसी कनेक्शन का उपयोग करेंगे और इसी तरह मेरी सलाह एक डेटा का उपयोग परत लिखना है और का उपयोग सिर्फ अपने कोड पर कुछ इस तरह इंटरफेस,:

using FirebirdSql.Data.FirebirdClient; 

public static IDbConnection MyConnection() 
{ 
    FbConnection cn = new FbConnection("..."); 
    return cn; 
} 

इस उदाहरण बहुत सरल है, लेकिन आप उस से भी अधिक की जरूरत नहीं होगी।

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

2

Valentina भी है।जब मैं कुछ रियल बेसिक प्रोजेक्ट पर काम कर रहा था तो मैं इस उत्पाद में कैम लगाता हूं। आरबी संस्करण बहुत अच्छा है।

10

मैं एडवांटेज डेटाबेस सर्वर (www.advantagedatabase.com) की अनुशंसा करता हूं। यह एक परिपक्व एम्बेडेड डीबी है जो महान समर्थन और .NET के अलावा कई विकास भाषाओं से सुलभ है। "स्थानीय" संस्करण मुफ़्त है, आपके आवेदन के भीतर एक डीएलएल के रूप में चलता है, सर्वर/नेटवर्क शेयर पर कोई इंस्टॉलेशन की आवश्यकता नहीं होती है, और सभी प्रमुख डीबी सुविधाओं का समर्थन करता है। आप नेटवर्क पर डीबी और/या एप्लिकेशन फ़ाइलों को स्टोर कर सकते हैं; यह परवाह नहीं करता कि डेटा कहां है।

अस्वीकरण: मैं एडीएस आर & डी समूह में एक इंजीनियर हूं। मैं वादा करता हूं, यह चट्टानों :)

7

यहां पोस्ट के लिए थोड़ा देर हो चुकी है .. और VistaDB पहले से ही उल्लेख किया गया है, लेकिन मैं यह इंगित करना चाहता था कि VistaDB 100% प्रबंधित है (क्योंकि आपकी पोस्ट टैग की गई थी .net)। यह एक साझा नेटवर्क ड्राइव से चलाया जा सकता है, और 1 एमबी xcopy तैनात है।

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

+0

Vista (दूसरों की तुलना में) के बारे में एक और अच्छी बात यह है कि यह नेटवर्क फ़ाइल पर स्थित डेटाबेस फ़ाइल के लिए समवर्ती लिखने का समर्थन करता है - मेरे लिए यह निर्णय लेने की सुविधा थी – Prokurors

4

मुझे परेशान है।

आप एक एम्बेडेड डेटाबेस के लिए पूछ रहे हैं - जहां डेटाबेस स्वयं डेटाबेस पर संग्रहीत है। जो नेटवर्क शेयर पर डेटा फ़ाइल को संग्रहीत करने के लिए अनुवाद करता है। तो आप कहते हैं कि एसक्यूएल कॉम्पैक्ट संस्करण काम नहीं करेगा ... सिवाय इसके कि एक इस दस्तावेज़ पर नज़र डालती है:

वर्ड दस्तावेज़:
Choosing Between SQL Server 2005 Compact Edition and SQL Server 2005 Express Edition

पेज 8 पर आप के लिए एक अच्छा बड़ा हरे रंग की टिक अगले है " नेटवर्क शेयर पर डेटा फाइल स्टोरेज "।

तो ऐसा लगता है कि आपका पहला विचार सही था।

+0

यह मजाकिया है, क्योंकि SQL सर्वर विशेष रूप से मुझे बताता है यह नहीं होगा: http://img512.imageshack.us/img512/6082/sqlceerror.jpg - शायद यह एक गलतफहमी है, क्योंकि निर्माण संभव नहीं है, जबकि पहुंच काम कर सकती है। हालांकि, मेरे उद्देश्यों के लिए, एप्लिकेशन लॉन्च पर डेटाबेस बनाना महत्वपूर्ण था। –

+0

रियलिटी लगभग हर मामले में दस्तावेज़ों को ट्रम्प करता है - प्रश्न तब उठता है कि दस्तावेज़ "गलत" चीज़ क्यों कहते हैं (या कम से कम विसंगति कैसे उत्पन्न होती है)। [एफएक्स: ब्राउज़ करें, ब्राउज़ करें] एमएसडीएन – Murph

+0

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

2

क्या आपने ओओडीबी माना है? विभिन्न खुले स्रोत विकल्पों से मैं db4o (स्वयं पदोन्नति के लिए खेद है :)) की सिफारिश करता हूं जो या तो एम्बेडेड या क्लाइंट/सर्वर मोड में चला सकता है।

बेस्ट

एड्रियानो

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