10 Gb bukan jumlah data yang besar, jadi Anda mungkin dapat menggunakan database untuk menyimpannya dan tidak memiliki masalah besar, tetapi tentu saja kinerja terbaik adalah menggunakan sistem file, dan manajemen keamanan lebih baik menggunakan DB (cadangan dan konsistensi).
Untungnya, Sql Server 2008 memungkinkan Anda untuk memiliki kue dan memakannya juga, dengan:
Atribut FILESTREAM
Di SQL Server 2008, Anda dapat menerapkan atribut FILESTREAM ke kolom varbinary, dan SQL Server kemudian menyimpan data untuk kolom tersebut di sistem file NTFS lokal. Menyimpan data pada sistem file membawa dua manfaat utama:
- Kinerja cocok dengan kinerja streaming sistem file.
- Ukuran BLOB hanya dibatasi oleh ukuran volume sistem file.
Namun, kolom tersebut dapat dikelola seperti kolom BLOB lainnya di SQL Server, sehingga administrator dapat menggunakan kemampuan pengelolaan dan keamanan SQL Server untuk mengintegrasikan manajemen data BLOB dengan data lainnya dalam database relasional—tanpa perlu mengelola data sistem file secara terpisah.
Mendefinisikan data sebagai kolom FILESTREAM di SQL Server juga memastikan konsistensi tingkat data antara data relasional dalam database dan data tidak terstruktur yang disimpan secara fisik di sistem file. Kolom FILESTREAM berperilaku sama persis dengan kolom BLOB, yang berarti integrasi penuh operasi pemeliharaan seperti pencadangan dan pemulihan, integrasi lengkap dengan model keamanan SQL Server, dan dukungan transaksi penuh.
Pengembang aplikasi dapat bekerja dengan data FILESTREAM melalui salah satu dari dua model pemrograman; mereka dapat menggunakan Transact-SQL untuk mengakses dan memanipulasi data seperti kolom BLOB standar, atau mereka dapat menggunakan API streaming Win32 dengan semantik transaksional Transact-SQL untuk memastikan konsistensi, yang berarti bahwa mereka dapat menggunakan panggilan baca/tulis Win32 standar ke FILESTREAM Gumpalan seperti jika berinteraksi dengan file pada sistem file.
Di SQL Server 2008, kolom FILESTREAM hanya dapat menyimpan data pada volume disk lokal, dan beberapa fitur seperti enkripsi transparan dan parameter bernilai tabel tidak didukung untuk kolom FILESTREAM. Selain itu, Anda tidak dapat menggunakan tabel yang berisi kolom FILESTREAM dalam snapshot database atau sesi pencerminan database, meskipun pengiriman log didukung.