2010-02-09 9 views
5

मेरे पास विभिन्न मीडिया फ़ाइलों (पीडीएफ, जेपीजी, टिफ्स) के लगभग 7 टेराबाइट हैं जो वर्तमान में एक बहुत ही गोमांस वाले फ़ाइल सर्वर पर रहते हैं। मैं डेटा को SQL सर्वर 2008 में ले जाने और डेटा प्रबंधित करने में मेरी सहायता के लिए फ़ाइलस्ट्रीम विशेषता का उपयोग कर रहा हूं। मैं ऐसा इसलिए करना चाहता हूं क्योंकि मेरे पास इस मीडिया का प्रबंधन करने वाले वेबपृष्ठ हैं, और वे (वेबपृष्ठ) धीमे और धीमे हो रहे हैं क्योंकि फ़ाइल सर्वर पर प्रतिदिन अधिक मीडिया जोड़ा जाता है।एसक्यूएल सर्वर 2008 का फिलस्ट्रीम स्थान

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

मेरे समस्याएं:

1) मैं अवधारणा का एक सबूत किया है और सत्यापित है कि मैं एक filestream एसक्यूएल सर्वर 2008 डेटाबेस के लिए स्थानीय बना सकते हैं, और मैं सफलतापूर्वक पढ़ सकते हैं और यह करने के लिए मीडिया ने लिखा है। हालांकि, मुझे अभी तक यह पता लगाने की जरूरत नहीं है कि एक यूएनसी को फाइलस्ट्रीम के रूप में कैसे उपयोग किया जाए। दूसरे शब्दों में, डेटाबेस MySQLDB08 पर होस्ट किया गया है, और मेरी फ़ाइलें TheFileServer01 पर संग्रहीत हैं। मैंने इसे पढ़ा है, लेकिन मुझे अभी तक नहीं मिला है। इस पर किसी भी प्रकार की सहायताबहुत प्रशंसनीय होगी!

2) चूंकि मेरे पास मीडिया के 7 टेराबाइट्स (और बढ़ते) हैं, तो क्या मेरे बैकअप उनके आकार के कारण अप्रबंधनीय होंगे? क्या यह ऐसा कुछ है जो मुझे फिलस्ट्रीम का उपयोग करने से रोक सकता है?

किसी भी सुझाव या मदद की सराहना की जाएगी!

उत्तर

5
  1. आप नहीं कर सकते। Afaik filestream डेटा localy संग्रहित है और एसक्यूएल एक यूएनसी से पढ़ने/लिखने से इनकार कर देगा।
  2. आपके पूर्ण बैकअप में संपूर्ण फ़ाइलस्ट्रीम डेटा होगा। अनियंत्रित? निश्चित रूप से एक बहुत ही गंभीर चुनौती है।

मेरा प्रश्न यह होगा कि आप फिलस्ट्रीम से क्या निकालना चाहते हैं? हमेशा की तरह लाभ डेटाबेस कार्यों के साथ ब्लॉब एकीकरण से आते हैं Win32 फ़ाइल संभाल आधारित कार्यों के लिए उपलब्धता रखते हुए:

हालांकि FILESTREAM प्रौद्योगिकी कई आकर्षक सुविधाओं है, यह सभी स्थितियों में इष्टतम विकल्प नहीं हो सकता। जैसा कि पहले उल्लेख, ब्लॉब डेटा की आकार और पहुंच पैटर्न सबसे महत्वपूर्ण कारकों समय स्पष्ट करें कि पूर्ण डेटाबेस के भीतर या FILESTREAM का उपयोग करके ब्लॉब डाटा स्टोर करने का निर्णय लेने से कर रहे हैं।

  • क्षमता है जिसके साथ ब्लॉब डेटा या तो भंडारण प्रणाली का उपयोग करके पहुँचा जा सकता है:

    आकार निम्नलिखित प्रभावित करता है। जैसा कि पहले उल्लेख किया गया है, बड़े BLOB डेटा की स्ट्रीमिंग पहुंच FILESTREAM का उपयोग करके अधिक कुशल है, लेकिन आंशिक अपडेट (संभावित रूप से बहुत अधिक) धीमी है।

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

देखने के एक शुद्ध प्रदर्शन बिंदु से, वहाँ कई कदम आप एक फाइल सिस्टम के स्तर पर कर सकते हैं प्रदर्शन में सुधार कर रहे हैं। आप वर्तमान समस्या क्या हैं, मीडिया सिस्टम द्वारा आपके सिस्टम थ्रूपुट को क्यों प्रभावित किया जाता है? इसका मतलब है कि आपके पास कहीं भी विवाद का एक चोक बिंदु है, शायद एक निर्देशिका गणना, या कुछ अन्य बाधा जो आपको मीडिया आकार के साथ प्रतिक्रिया समय को स्केल करने का कारण बनती है। मीडिया तक आपकी पहुंच ओ (1) हो सकती है, शायद ओ (लॉग इन), बी निश्चित रूप से ओ (एन) नहीं है।

मैं आपको एसक्यूएल व्हाइट पेपर FILESTREAM Storage in SQL Server 2008 पर जाने की सलाह दूंगा, जहां से मुझे उपयोग के मामलों के बारे में मेरा उद्धरण मिला।

+0

मैं सफेद पेज के माध्यम से कई बार पढ़ा है, लेकिन, काफी स्पष्ट रूप से, इसके बारे में कुछ मेरे सिर पर है, क्योंकि यह क्षेत्रों जिनमें से मैं नहीं कर रहा हूँ परिचित के साथ संबंधित चला जाता है (उदाहरण के लिए - बैकअप)। इसके अलावा, श्वेत पत्र कहता है * फ़ाइल सिस्टम फ़िल्टर ड्राइवर का उपयोग यूएनसी पथ * के माध्यम से FILESTREAM डेटा तक दूरस्थ पहुंच की अनुमति देता है, जो मुझे इंगित करता है कि वास्तविक डेटाबेस सर्वर के अलावा किसी अन्य स्थान पर फ़ाइलस्ट्रीम डेटा संग्रहीत करना संभव हो सकता है । इसके अलावा, कृपया मेरे मूल प्रश्न में मेरा संपादन देखें; मुझे आशा है कि यह बेहतर बताएगा कि मैं फिलस्ट्रीम का उपयोग क्यों कर रहा हूं। – Jagd

+2

सिस्टम चालक * अन्य * स्थान से फ़ाइलस्ट्रीम के लिए यूएनसी * से * तक पहुंच की अनुमति देता है। दूसरे शब्दों में, यह आपको filestream साझा करने की अनुमति देता है। यह आपको यूएनसी पर फिएलस्ट्रीम स्टोर करने की अनुमति नहीं देता है। ध्यान दें कि 7Tb पर, 'स्थानीय' का अर्थ कुछ प्रकार की SAN उपयोगिता का होना चाहिए। –

+1

आपके संपादन के बारे में: मुझे लगता है कि समस्या का एक पहलू यह है कि आपके पास फ़ाइलों के बारे में एक संबंधपरक प्रारूप में मेटाडेटा नहीं है, और आपको इसके लिए फ़ाइल सिस्टम को देखने की आवश्यकता है। क्या आप टेबल में मेटाडेटा रख सकते हैं, या यह फाइल सिस्टम के साथ जल्दी से सिंक हो जाएगा? –

1

मुझे यूएनसी मुद्दे पर @RemusRusanu से असहमत होना होगा। हालांकि, @RemusRusanu पर कुछ अच्छे अंक बनाता है क्यों आप एक फाइलस्ट्रीम का उपयोग करना चुनेंगे।

वैसे भी, आप यूएनसी के फाइलस्ट्रीम के लिए उपयोग कर सकते हैं - यह अन्यथा अधिक उपयोग नहीं करेगा। वर्तमान में, मैं एक ऐसी साइट का निर्माण करता हूं जो एक SQL फार्मस्ट्रीम से फ़ाइलों को पढ़ने के लिए वेब फार्म में सर्वर के लिए यूएनसी सुविधा का उपयोग कर रहा है।

यूएनसी Filestreams के प्रयोग पर कुछ अंक ...

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

  • एक और तरीके से कहा, आप विंडोज एक्सप्लोरर से फिलस्ट्रीम यूएनसी पर नेविगेट नहीं कर सकते हैं।

  • यदि आप SQL सर्वर में अपनी बाइनरी संग्रहीत कर रहे हैं, तो आमतौर पर ~ 1.2 एमबी ब्रेक पॉइंट है जहां आपको VarBinary पर filestream का पक्ष लेना चाहिए। Here एमएस 1 एमबी का सुझाव देता है, लेकिन शोध पत्र में एक और है जिसे मैं इस समय नहीं ढूंढ सकता कि सुझाव दिया गया है कि ब्रेक भी बिंदु है।

  • यूएनसी एक्सेस को सक्षम करने के लिए एक वितरित लेनदेन की आवश्यकता होती है, इसलिए SQL सर्वर और यूएनसी पथ के उपभोक्ता को वितरित लेनदेन सक्षम करने की आवश्यकता होती है।

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

public FileStream GetStream(string FilePath){ 
     FileStream FStream = null; 

     Conn = new SqlConnection(MyConnectionStringHere); 
     Conn.Open(); 
     txn = Conn.BeginTransaction(); 

     using (SqlCommand cmd = new SqlCommand("SELECT GET_FILESTREAM_TRANSACTION_CONTEXT()", Conn, txn)){ 

      Object obj = cmd.ExecuteScalar(); 
      TransContext = (byte[])obj; 
     } 

     SafeFileHandle SHandle = NativeSqlClient.GetSqlFilestreamHandle (FilePath, NativeSqlClient.DesiredAccess.Read, TransContext); 
     FStream = new FileStream(SHandle, FileAccess.Read); 

     return FStream; 
    } 
+1

मेरा मानना ​​है कि आपने यूएनसी के संबंध में मेरे प्रश्न को गलत समझा होगा। मैं बस पूछ रहा था कि क्यों [फिलस्ट्रीम व्हाइट पेपर] (http://msdn.microsoft.com/en-us/library/cc949109.aspx) यह इंगित करता था कि एक फाइलस्ट्रीम को एक अलग सर्वर पर संग्रहीत किया जा सकता है, जहां से एसक्यूएल सर्वर 2008 डेटाबेस रहता है। व्हाइट पेपर कहता है, "फाइल सिस्टम फ़िल्टर ड्राइवर का उपयोग यूएनसी पथ के माध्यम से FILESTREAM डेटा तक दूरस्थ पहुंच की अनुमति देता है।" रीमस ने यह समझाकर मुझे यह स्पष्ट कर दिया कि इसका मतलब यह है कि यूएनसी पथ द्वारा आपके नेटवर्क पर फाइलस्ट्रीम साझा किया जा सकता है (इस प्रकार पहुंचा जा सकता है)। – Jagd

+0

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

+0

इसके अलावा, मैंने आपको -1 नहीं दिया था। मुझे यकीन नहीं है कि किसने किया था। मुझे आपके उत्तर में कुछ भी गलत नहीं दिख रहा है; मुझे लगता है कि आप रीमस और मैं क्या प्राप्त कर रहे थे की हिम्मत को गलत समझा। – Jagd

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