Skenario:
Database SQL Server 2005 yang melayani aplikasi ASP.NET (pada server web terpisah).
Database:
DB memiliki sekitar 5GB data "normal" di dalamnya, dan sekitar 15GB "file" (misalnya: 200k PDF disimpan sebagai gambar (BLOB), semacam itu). Semakin banyak file yang diunggah oleh pengguna, dan secara cepat memakan lebih banyak ruang disk (DB dapat tumbuh hingga 50GB dalam beberapa bulan ke depan, sebagian besar file).
Kekhawatiran:
Menyimpan begitu banyak file dalam DB sudah menyebabkan masalah (misalnya: Ukuran total database yang besar membuat sesekali pencadangan dan penyebaran DB keseluruhan menjadi sulit.).
Dan kami khawatir akan ada lebih banyak masalah . (misalnya: masalah kinerja - mungkin disebabkan karena tidak dapat menyimpan seluruh DB dalam RAM, mungkin?)
Pertanyaan:
Apa solusi teknis yang akan Anda sarankan untuk masalah ini? Simpan file dalam sistem file? Membagi database menjadi dua dan memiliki yang lebih besar, lebih lambat untuk file?
Rincian Lebih Lanjut jika Dibutuhkan:
File-file ini tidak super penting, dan tidak perlu waktu akses yang sangat cepat - beberapa detik akan baik-baik saja, dan mungkin ada selusin paling banyak per jam, paling banyak saat ini. Data "normal" lainnya di DB termasuk info yang diperlukan berkali-kali per detik.
Jawaban:
Saya menjaga database yang sangat mirip, saat ini 3TB dan tumbuh 5GB per hari.
Timbang pro dan kontra untuk Filestream dan lihat apakah cocok dengan kasus Anda. Dalam kasus kami, kami telah mengambil rute yang berbeda dan memilih untuk mempartisi basis data sehingga kami dapat menggunakan ketersediaan sebagian / pengembalian sedikit demi sedikit .
Salah satu opsi yang tidak tersedia bagi kami, yang mungkin Anda miliki, adalah untuk menandai filegroup yang lebih lama / arsip sebagai hanya-baca. Filegroup read-only kemudian dapat dicadangkan dengan jarang.
Jika macet pada Standar 2005 (mempartisi adalah fitur edisi Perusahaan) dan Anda memiliki opsi hanya-baca untuk riwayat, Anda bisa mengatasi ini dengan cara lama.
Satu opsi terakhir (yang kami pertimbangkan untuk blobber 3TB kami) adalah memindahkan data file ke database dokumen atau penyimpanan cloud (mis. AmazonS3 , Azure BLOB Storage ). Ini tidak memperkenalkan masalah konsistensi transaksional yang saya sebutkan sebelumnya tetapi mengambil beban dari Server SQL yang sangat mahal.
sumber
coba fitur FILESTREAM di SQL server,
FILESTREAM mengintegrasikan Mesin Basis Data SQL Server dengan sistem file NTFS dengan menyimpan data objek besar (BLOB) varbinary (blob) sebagai file pada sistem file
artikel bagus tentang itu
sumber