2009-06-16 9 views
7

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

मुझे डेटाबेस से ब्लॉब फ़ील्ड को हटाने और फ़ाइल को वास्तविक फ़ाइल सिस्टम पर सहेजने के साथ काम सौंपा गया है। दुर्भाग्यवश, एप्लिकेशन संग्रहीत नहीं करता है कि फ़ाइल प्रकार डेटाबेस के भीतर क्या है। हालांकि मैं डेटाबेस में मौजूद फ़ाइल को पढ़ सकता हूं, लेकिन मुझे नहीं पता कि फ़ाइल को किस प्रकार से सहेजना है। एप्लिकेशन का समर्थन डेस्क अब सॉफ्टवेयर के इस संस्करण का समर्थन नहीं करता है और डेटा निकालने के बारे में हमसे बात नहीं करेगा। दुर्भाग्यवश, हमारे पास उनके स्रोत कोड तक पहुंच नहीं है।

किसी भी सुझाव की सराहना की जाएगी! अग्रिम में धन्यवाद!

+0

मुझे यकीन नहीं है कि यह प्रासंगिक है, लेकिन शायद इन फ़ाइलों में से 70% कार्यालय दस्तावेज़ हैं, Office 2003 से अलग प्रारूप - Office 2007. – proudgeekdad

उत्तर

2

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

2

आप TriD http://mark0.net/soft-trid-e.html

का उपयोग कर यह फ़ाइलें स्कैन और एक्सटेंशन का निर्धारण करने की कोशिश करेंगे की कोशिश हो सकती है।

+0

या लिनक्स फ़ाइल कमांड http: //downloads.sourceforge के विंडोज पोर्ट का उपयोग करें .net/gnuwin32/फ़ाइल-5.03-setup.exe – jitter

0

आप कैसे जानते हैं कि यह जानकारी मानव पठनीय है?

फ़ाइलें एक्सटेंशन प्रयोजनों फ़ाइल को खोलने के लिए एक विशेष सॉफ्टवेयर संबद्ध करने के लिए कर रहे हैं ताकि जब आप एक .txt फ़ाइल पर डबल क्लिक करें, notepad.exe यह संभालती है।

आप केवल उन्हें डेटाबेस उतारने के लिए फाइल सिस्टम के लिए लिख रहे हैं, तो किसी भी विशिष्ट विस्तार के लिए कोई जरूरत नहीं है। आप इसके साथ एक सॉफ्टवेयर संबद्ध करने के लिए चाहते हैं, तो आप urlmon.dll में FindMimeFromData() फ़ंक्शन का उपयोग (PInvoke का प्रयोग करके) कर सकता है उचित विस्तार

0

एक और विकल्प शारीरिक रूप से आपके डेटाबेस को विभाजित करना होगा। आप उस तालिका को स्टोर कर सकते हैं जिसमें ब्लॉब फ़ील्ड को एक अलग डेटाबेस फ़ाइल में शामिल किया जा सकता है जिसे एक अलग हार्ड डिस्क/स्पिंडल पर संग्रहीत किया जा सकता है। डिस्क कि ब्लॉब तालिका में शामिल है और आगे कर रही है यह RAID 0 या RAID 10

यह चीज़ों को गति सकता द्वारा अनुकूलित किया जा सकता है। साथ ही, यह दृष्टिकोण एप्लिकेशन तर्क को बदलने की आवश्यकता को समाप्त करता है।

0

अपने शब्दों में "... मैं के साथ ... काम सौंपा गया है" - आप यकीन है कि यह एक समस्या यह है कि डेटाबेस पर कुछ अनुकूलन प्रदर्शन करके हल किया जा सकता है कर रहे हैं? एक विरासत अनुप्रयोग हैकिंग के रास्ते पर जाकर जिसके लिए आपके पास स्रोत कोड नहीं है और जिसके लिए कोई समर्थन नहीं है, जिसे आप जितना संभव हो से बचाना चाहते हैं।

तो, यहां समस्या को देखें - एप्लिकेशन की धीमा। तो यह धीमा क्यों है? डेटाबेस डेटाबेस कुछ हल नहीं कर सका?

यदि आपको फाइल सिस्टम में बीएलओबी निकालना है, तो फ़ाइल का प्रारूप प्रासंगिक क्यों है? निश्चित रूप से एप्लिकेशन को फ़ाइल प्राप्त करने के लिए डेटाबेस पर एक क्वेरी करने के लिए डिज़ाइन किया गया है - फाइल सिस्टम में बीएलओबी को निकालने में आपकी मदद कैसे होगी?

हालांकि एक तरफ के रूप में - मैं आमतौर पर जादू संख्याओं के माध्यम से फ़ाइलों की पहचान करने के लिए यूनिक्स file कमांड का उपयोग करता हूं।

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

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