2013-03-12 25 views
8

ứng dụng của tôi phát các tệp video sau khi người dùng đó được đăng ký. (Tệp lớn hơn 100 MB).luồng tệp so với lưu cục bộ trong máy chủ sql?

  1. Là nó tốt hơn để làm tôi lưu trữ chúng trên ổ cứng và Keep đường dẫn tập tin trong cơ sở dữ liệu? Hoặc tôi có lưu trữ trong cơ sở dữ liệu dưới dạng Loại luồng tệp không?

  2. Khi dữ liệu được lưu trữ trong cơ sở dữ liệu, an toàn hơn trước thao tác so với lưu trữ trong khó?

  3. Cách cung cấp bảo mật dữ liệu chống lại thao tác?

Cảm ơn.

Trả lời

10

Có một bài báo thực sự hay của Microsoft Research được gọi là To Blob or Not To Blob.

Kết luận của họ sau khi một số lượng lớn các bài kiểm tra hiệu suất và phân tích là:

  • nếu hình ảnh hoặc tài liệu của bạn thường dưới 256K về kích thước, lưu trữ chúng trong một cơ sở dữ liệu VARBINARY cột là hiệu quả hơn

  • nếu hình ảnh hoặc tài liệu của bạn thường có dung lượng trên 1 MB, lưu trữ chúng trong hệ thống tệp hiệu quả hơn (và với thuộc tính FILESTREAM của SQL Server 2008, chúng vẫn đang được kiểm soát giao dịch và một phần của cơ sở dữ liệu)

  • ở giữa hai, đó là một chút của một toss-up tùy thuộc vào việc bạn sử dụng

Nếu bạn quyết định đưa hình ảnh của bạn vào một bảng SQL Server, tôi sẽ khuyên bạn sử dụng một bảng riêng biệt để lưu trữ những hình ảnh đó - không lưu trữ foto của nhân viên trong bảng nhân viên - giữ chúng trong một bảng riêng biệt. Bằng cách đó, bảng Employee có thể ở mức gọn gàng và có ý nghĩa và rất hiệu quả, giả sử bạn không phải lúc nào cũng cần chọn nhân viên foto, như một phần của truy vấn của bạn.

Đối với nhóm tệp, hãy xem Files and Filegroup Architecture để biết phần giới thiệu. Về cơ bản, bạn có thể tạo cơ sở dữ liệu của bạn với một nhóm tệp riêng biệt cho các cấu trúc dữ liệu lớn ngay từ đầu hoặc thêm một nhóm tệp bổ sung sau này. Hãy gọi nó là LARGE_DATA.

Bây giờ, bất cứ khi nào bạn có một bảng mới để tạo ra mà cần phải lưu trữ VARCHAR(MAX) hoặc VARBINARY(MAX) cột, bạn có thể chỉ định nhóm tập tin này cho dữ liệu lớn:

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 

Kiểm tra các giới thiệu MSDN trên filegroups, và chơi xung quanh với nó!

2

1 - phụ thuộc vào cách bạn xác định "tốt hơn". Nói chung, tôi thích lưu trữ các phần tử nhị phân trong cơ sở dữ liệu để chúng được sao lưu cùng với dữ liệu liên quan, nhưng lưu chúng vào hệ thống tệp. Truyền dữ liệu nhị phân ra khỏi SQL Server cho một yêu cầu trang là một con heo thực sự thực sự, và nó không thực sự mở rộng quy mô.

  1. Nếu kẻ tấn công có thể truy cập vào ổ cứng của bạn, toàn bộ hệ thống của bạn bị xâm phạm - lưu trữ mọi thứ trong cơ sở dữ liệu sẽ không có thêm bảo mật đáng kể.

3 - đó là toàn bộ câu hỏi theo đúng nghĩa của nó. Quá rộng cho Stack Overflow ...

Các vấn đề liên quan