2010-12-15 20 views
13

Ben bir DBA değilim, bu yüzden bir SQL Server'da ikili veriyi saklamanın çeşitli yöntemlerini kullanmanın alt üstünü ve downsidesini bilmiyorum.SQL Server: İkili veri nasıl saklanır (ör. Word dosyası)?

  • varbinary(n) mağaza sadece 8000 byte
  • varbinary(max) depolar 2 GB
  • BLOB ler dosyaları yalnızca DB başvurulan, ama aslında oturan ediliyor (büyük dosyalar için geliyordu ama "idari" yükü ile birlikte gelir bir SQL Server 2008 R2 veritabanı (indirme ile basit bir Gridview tarafından görüntülenmesiyle, basit bir ASPX formu yükleme ile dolu olmanın depolamak istediğiniz yerel harddisk)

temelde yılda (1000 belgeleri)). Tüm belgeler muhtemelen 2MB - 8MB civarında olacaktır (Word, Excel dosyaları).

MyDocuments 
    Data  varbinary(max) 
    Title  varchar(255) 
    ModifiedOn datetime() 
    ModifiedBy varchar(100) 

varbinary(max) ile yolda Ben: Benim tahminim aşağıdaki düzen içeren bir tablo MyDocuments kullanıyor gerektiğidir? Yoksa yanlış yöne gidiyorum (ör. Performans-bilge)?

+0

bunları sıkıştırmak ve daha sonra tek kaydetmek için gitmek olurdu. –

+0

GridView'de tek belge olarak başvurulan tek belgeler oldukları için bir seçenek değil. Döküman yönetim sistemini düşünün. –

+0

Peki, her birini eklemeden önce sıkıştırın. Excel ve word dosyaları oldukça yüksek bir sıkıştırma oranı alır. Bu da veritabanı boyutunu azaltacaktır. –

cevap

16

SQL Server 2008'de 'FILESTREAM' depolaması vardır. SQL Server 2008 ve NTFS dosya sisteminin bir bileşimini kullanarak BLOB verilerinin depolanmasını ve verimli erişimini sağlar.

Bu bakabilirsiniz:

FILESTREAM Storage in SQL Server 2008
Saving and Retrieving File Using FileStream SQL Server 2008

DÜZENLEME: 1M daha büyük nesneleri en iyi dosya sisteminde saklanır ise 256 K daha küçük
Nesneler iyi bir veritabanında saklanır.

Performans: Daha iyi Varbinary FileStream

vs

http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-2008-FILESTREAM-performance.aspx
To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem
SQL Server 2008 FILESTREAM performance

+0

"FILESTREAM" ı duydum - neden varbinary (max) 'kullanmam? –

+0

Dosya 1mb'den küçükse, varyantary kullan, FILESTREAM kullanın. Düzenlemeyi kontrol et. –

+0

Bana iyi geliyor. Teşekkürler Asseem! –