2013-03-12 11 views
8

मेरा एप्लिकेशन उस उपयोगकर्ता के बाद वीडियो फ़ाइलों को चलाता है, वे पंजीकृत हैं। (फ़ाइलें 100 एमबी से बड़ी हैं)।एसक्यूएल सर्वर में स्थानीय स्ट्रीम बनाम स्थानीय स्ट्रीम?

  1. यह मैं उन्हें स्टोर कर हार्ड ड्राइव पर और डेटाबेस में फ़ाइल पथ रखने के लिए बेहतर है? या क्या मैं डेटाबेस में फ़ाइल स्ट्रीम प्रकार के रूप में स्टोर करता हूं?

  2. जब डेटाबेस में डेटा संग्रहीत किया जाता है, तो मैनिपुलेशन बनाम कड़ी मेहनत के साथ अधिक सुरक्षित होते हैं?

  3. हेरफेर के खिलाफ डेटा सुरक्षा कैसे प्रदान करें?

धन्यवाद।

उत्तर

10

माइक्रोसॉफ्ट रिसर्च द्वारा To Blob or Not To Blob नामक एक बहुत अच्छा पेपर है।

प्रदर्शन परीक्षण और विश्लेषण की एक बड़ी संख्या के बाद उनके निष्कर्ष यह है:

  • अगर अपने चित्रों या दस्तावेज़ आम तौर पर आकार में 256K से नीचे हैं, उन्हें एक डेटाबेस VARBINARY स्तंभ और अधिक कुशल है में संग्रहीत

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

  • उन दोनों के बीच में

    , यह आपके उपयोग के आधार पर एक टॉस अप का एक सा

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

फ़ाइल समूह के लिए, एक परिचय के लिए Files and Filegroup Architecture देखें। असल में, आप या तो शुरुआत से ही बड़े डेटा संरचनाओं के लिए एक अलग फ़ाइल समूह के साथ अपना डेटाबेस बनाते हैं, या बाद में एक अतिरिक्त फ़ाइल समूह जोड़ते हैं। आइए इसे LARGE_DATA पर कॉल करें।बाहर filegroups पर MSDN परिचय

CREATE TABLE dbo.YourTable 
    (....... define the fields here ......) 
    ON Data     -- the basic "Data" filegroup for the regular data 
    TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data 

चेक, और:

अब, जब भी आप एक नया टेबल जो VARCHAR(MAX) या VARBINARY(MAX) कॉलम संग्रहीत करना होता है बनाने के लिए है, तो आप इस फाइल को समूह बड़े डेटा के लिए निर्दिष्ट कर सकते हैं इसके साथ खेलें!

2

1 - इस पर निर्भर करता है कि आप "बेहतर" को कैसे परिभाषित करते हैं। आम तौर पर, मैं डेटाबेस में बाइनरी संपत्तियों को स्टोर करना पसंद करता हूं ताकि उन्हें संबंधित डेटा के साथ बैक अप लिया जा सके, लेकिन उन्हें फ़ाइल सिस्टम पर कैश करें। पृष्ठ अनुरोध के लिए SQL सर्वर से बाइनरी डेटा स्ट्रीम करना एक वास्तविक प्रदर्शन हॉग है, और यह वास्तव में स्केल नहीं करता है।

  1. यदि कोई हमलावर आपकी हार्ड ड्राइव पर जा सकता है, तो आपकी पूरी प्रणाली से समझौता किया जाता है - डेटाबेस में चीजें संग्रहीत करने से कोई अतिरिक्त अतिरिक्त सुरक्षा नहीं मिलती है।

3 - यह एक संपूर्ण प्रश्न है जो अपने अधिकार में है। स्टैक ओवरफ़्लो के लिए बहुत व्यापक ...

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