10 Gb không phải là một lượng dữ liệu khổng lồ, vì vậy bạn có thể sử dụng cơ sở dữ liệu để lưu trữ nó và không gặp vấn đề gì lớn, nhưng tất nhiên hiệu suất tốt nhất là sử dụng hệ thống tệp và quản lý an toàn khôn ngoan hơn là sử dụng DB (bản sao lưu và tính nhất quán).
Thật hạnh phúc, Sql Server 2008 cho phép bạn có chiếc bánh của mình và ăn nó, với:
Thuộc tính FILESTREAM
Trong SQL Server 2008, bạn có thể áp dụng thuộc tính FILESTREAM cho cột varbinary và SQL Server sau đó lưu trữ dữ liệu cho cột đó trên hệ thống tệp NTFS cục bộ. Lưu trữ dữ liệu trên hệ thống tệp mang lại hai lợi ích chính:
- Hiệu suất phù hợp với hiệu suất phát trực tuyến của hệ thống tệp.
- Kích thước BLOB chỉ bị giới hạn bởi kích thước ổ đĩa của hệ thống tệp.
Tuy nhiên, cột có thể được quản lý giống như bất kỳ cột BLOB nào khác trong SQL Server, vì vậy quản trị viên có thể sử dụng khả năng quản lý và bảo mật của SQL Server để tích hợp quản lý dữ liệu BLOB với phần còn lại của dữ liệu trong cơ sở dữ liệu quan hệ — mà không cần quản lý dữ liệu hệ thống tập tin riêng biệt.
Việc xác định dữ liệu dưới dạng cột FILESTREAM trong SQL Server cũng đảm bảo tính nhất quán ở mức dữ liệu giữa dữ liệu quan hệ trong cơ sở dữ liệu và dữ liệu phi cấu trúc được lưu trữ vật lý trên hệ thống tệp. Cột FILESTREAM hoạt động giống hệt như cột BLOB, có nghĩa là tích hợp đầy đủ các hoạt động bảo trì như sao lưu và khôi phục, tích hợp hoàn toàn với mô hình bảo mật SQL Server và hỗ trợ toàn bộ giao dịch.
Các nhà phát triển ứng dụng có thể làm việc với dữ liệu FILESTREAM thông qua một trong hai mô hình lập trình; họ có thể sử dụng Transact-SQL để truy cập và thao tác dữ liệu giống như các cột BLOB tiêu chuẩn hoặc họ có thể sử dụng các API phát trực tuyến Win32 với ngữ nghĩa giao dịch Transact-SQL để đảm bảo tính nhất quán, có nghĩa là họ có thể sử dụng lệnh gọi đọc / ghi tiêu chuẩn của Win32 tới FILESTREAM BLOB như chúng sẽ làm nếu tương tác với các tệp trên hệ thống tệp.
Trong SQL Server 2008, cột FILESTREAM chỉ có thể lưu trữ dữ liệu trên ổ đĩa cục bộ và một số tính năng như mã hóa minh bạch và các tham số có giá trị bảng không được hỗ trợ cho cột FILESTREAM. Ngoài ra, bạn không thể sử dụng các bảng có chứa cột FILESTREAM trong ảnh chụp nhanh cơ sở dữ liệu hoặc phiên phản chiếu cơ sở dữ liệu, mặc dù vận chuyển nhật ký được hỗ trợ.