2009-04-25 17 views
32

क्या किसी के पास एक लैन (विंडोज या लिनक्स) पर एक एसएमबी शेयर पर एक स्क्लाइट डेटाबेस चलाने के वास्तविक दुनिया का अनुभव है?नेटवर्क शेयर पर स्क्लाइट

documentation से यह स्पष्ट है कि यह वास्तव में एक स्क्लाइट डेटाबेस साझा करने का सबसे तेज़ तरीका नहीं है।

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

मेरे आवेदन के लिए मैं जिस डेटा को साझा करना चाहता हूं वह काफी छोटा है और लिखना बहुत अधिक नहीं होता है (कुछ हर कुछ सेकंड में कुछ लिखते हैं)।

मुझे क्या देखना चाहिए? क्या यह काम कर सकता है?

मुझे पता है कि एसक्लाइट के लिए यह डिज़ाइन नहीं किया गया था, मुझे पोस्टग्रेस/माईएसक्ल/एसक्यूएल सर्वर आधारित समाधान में कम दिलचस्पी नहीं है क्योंकि मैं कम से कम निर्भरता के साथ अपने ऐप को जितना संभव हो उतना प्रकाश रखने की कोशिश कर रहा हूं।

संबंधित लिंक्स:

sqlite mailing list से

, इसलिए मुझे लगता है कि एक बड़ा सवाल यह है कि कैसे अविश्वसनीय FileLock API हैं एसएमबी (विंडोज या लिनक्स)

+1

फ़ाइल आधारित डेटाबेस के किसी भी प्रकार के लिए लागू होता है से linux साम्बा oplocks हो सकता है की तरह लग रहा है अपने कॉन्फ़िगरेशन के आधार पर सक्षम। और मैं इस समस्या को देखने के इस समाधान का उपयोग करके कम आरामदायक, यह आसानी से एक समर्थन दुःस्वप्न बन सकता है –

उत्तर

23

फ़ाइल आधारित डेटाबेस के मेरा अनुभव है (यानी एक डाटाबेस सर्वर प्रक्रिया के बिना उन) है, जो वापस बीस साल हो जाता है, कि आप उन्हें साझा करने का प्रयास करें, वे अनिवार्य रूप से अंत में भ्रष्ट हो जाएगी है। मैं दृढ़ता से सुझाव देता हूं कि आप फिर से MySQL देखें।

और कृपया ध्यान दें, मैं SQLite पर नहीं चुन रहा हूं - मैं इसे स्वयं साझा करता हूं, सिर्फ साझा डेटाबेस के रूप में नहीं।

+0

हाँ मैं इस जानकारी को पीयर नेटवर्क के साथ सहकर्मियों के साथ साझा करने के विचार से टकरा रहा हूं। ऐसी कई चीजें हैं जो नेटवर्क शेयर पर एम्बेडेड डीबी के साथ गलत हो सकती हैं । –

8

खैर मैं महान SQLite विशेषज्ञ नहीं हूँ, लेकिन मेरा मानना ​​है कि अधिक रिकॉर्ड/तालिकाओं को लॉक करना सही ढंग से काम नहीं कर सकता है और डेटाबेस दूषित कर सकता है। चूंकि कोई भी सर्वर नहीं है जो केंद्रीय लॉकिंग को बनाए रखता है, नेटवर्क पर एक ही फाइल साझा करने वाली विभिन्न मशीनों पर दो स्क्लाइट डीएल उदाहरण सही ढंग से काम नहीं कर सकते हैं। यदि एक ही मशीन पर डेटाबेस खोला जाता है, तो एसक्लाइट अखंडता बनाए रखने के लिए ओएस द्वारा पेश की गई फ़ाइल स्तर लॉकिंग का उपयोग कर सकता है लेकिन मुझे संदेह है कि यह नेटवर्क शेयर पर सही तरीके से काम करता है या नहीं।

6

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

https://www.sqlite.org/whentouse.html

कि भी तरह Microsoft Access

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