2010-03-26 12 views
6

मैं एक ऑनलाइन फ़ाइल प्रबंधन परियोजना पर काम कर रहा हूं। हम डेटाबेस (एसक्यूएल सर्वर) पर संदर्भ संग्रहीत कर रहे हैं और फाइल सिस्टम पर फाइल डेटा।फ़ाइल सिस्टम और डेटाबेस के बीच समन्वय कैसे लाया जाए?

हम फ़ाइल अपलोड करने और फ़ाइल को हटाने के मामले में फ़ाइल सिस्टम और डेटाबेस के बीच समन्वय की समस्या का सामना कर रहे हैं। सबसे पहले हम फाइल सिस्टम पर डेटाबेस या स्टोर फाइलों में एक संदर्भ बनाते हैं।

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

कृपया मुझे कुछ समाधान दें कि इस तरह की स्थिति से कैसे निपटें। मुझे इसकी ज़रूरत में बुरी तरह से जरूरत है।

यह मामला तब भी होता है जब हम फ़ाइल को हटाते हैं?

+0

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

+0

नहीं, हम फाइल डेटा/फाइल बॉडी स्टोर करने के लिए संदर्भ और फ़ाइल सिस्टम स्टोर करने के लिए आरडीबीएमएस का उपयोग कर रहे हैं? –

+0

स्पष्ट उत्तर चीजों को अन्य तरीकों से करना है - डाटाबेस सिस्टम की तुलना में किसी ऑपरेशन को विफल करने की संभावना कम होती है। –

उत्तर

0

एक ही लेनदेन के रूप में दो घटनाओं (संदर्भ का प्रबंधन, और फ़ाइल का प्रबंधन) का इलाज करें। यदि कोई भी विफल रहता है, तो दूसरे को पीछे छोड़ दें। फिर आपको ऐसी स्थिति में जाना मुश्किल हो सकता है जहां दोनों सिंक में नहीं हैं। फाइल सिस्टम ऑपरेशंस की तुलना में रोलबैक डेटाबेस संचालन करना आसान है।

5

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

ध्यान दें कि फ़ाइल अपडेट होने पर यह बहुत जटिल हो सकती है। आपको इसकी प्रतिलिपि बनाने की आवश्यकता है, ताकि फ़ाइल को ओवरराइट करने के बाद डेटाबेस लेनदेन विफल हो जाए, फिर भी आप फ़ाइल के पुराने संस्करण को पुनर्स्थापित कर सकते हैं। चाहे आप ऐसा करना चाहते हैं मजबूती के स्तर पर निर्भर करता है जो वांछित है।

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

मैं डेटाबेस में फ़ाइल के हैश (उदा। MD5) को संग्रहीत करने का भी सुझाव दूंगा। इसकी गणना करने के लिए थोड़ा समय लें, लेकिन समस्याओं का पता लगाने के लिए यह मेरे लिए बेहद उपयोगी रहा है, उदाहरण के लिए अगर फाइल का नाम फाइल सिस्टम पर गलती से बदल दिया गया है लेकिन डेटाबेस में नहीं है। इससे कुछ भी खराब होने की पुष्टि करने के लिए समय-समय पर कुछ अखंडता जांच चलाने की अनुमति मिलती है।

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

1

एक पुरानी सवाल मुझे पता है, लेकिन अन्य पाठकों के लाभ के लिए:

अपने ऑपरेटिंग सिस्टम के आधार पर आप लेन-देन संबंधी TxF

http://msdn.microsoft.com/en-us/magazine/cc163388.aspx

+0

ध्यान दें कि माइक्रोसॉफ्ट अब भविष्य में किसी बिंदु पर टीएक्सएफ को हटाने की योजना बना रहा है। वे [वैकल्पिक दृष्टिकोण] (http://msdn.microsoft.com/en-us/hh802690) का उपयोग करने की सलाह देते हैं जैसे कि [SQL FILESTREAM] (http://technet.microsoft.com/en-us/library/bb933993.aspx) रों। – mwolfe02

0

FILESTREAM उपयोग करने में सक्षम हो सकता है एसक्यूएल सर्वर में पेश किया गया था 2008 को इस सटीक समस्या का समाधान करने के लिए।

हालांकि, यह implementation challenges के अपने सेट के साथ आता है।

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