2009-07-14 38 views
8

Hiện tại chúng tôi có hàng ngàn tệp Microsoft Word, tệp Excel, PDF, hình ảnh, vv được lưu trữ trong thư mục/thư mục con. Chúng được tạo ra bởi một ứng dụng một cách thường xuyên và có thể được truy cập bất cứ lúc nào trong ứng dụng đó. Khi chúng ta tìm cách nâng cấp, bây giờ chúng ta đang xem xét lưu trữ tất cả các tài liệu này trong SQL Server 2005. Lý do cho việc này dựa trên việc có thể nén tài liệu, thêm các trường bổ sung để lưu trữ thêm thông tin về các tài liệu đó và áp dụng chỉ mục nếu cần.Lưu trữ tệp trong SQL Server hoặc giữ chúng trên Máy chủ tệp?

Tôi cho rằng điều sau đây là ưu điểm và nhược điểm của việc sử dụng SQL Server làm kho lưu trữ tài liệu thay vì giữ chúng trên máy chủ tệp cũng như bất kỳ trải nghiệm nào bạn có thể thực hiện.

Chúng tôi sẽ sử dụng C# và Windows Workflow để thực hiện tác vụ này.

Cảm ơn nhận xét của bạn.

Sửa


Làm thế nào lớn là các tập tin?

giữa 100k = 200k kích thước (avg. 70KB)

Có bao nhiêu sẽ được?

Hiện tại, có khoảng 3,1 triệu tệp (từ Word/Excel và PDF), có thể tăng thêm 2,600 mỗi ngày. (Tăng trưởng cũng sẽ tăng theo thời gian)

Có bao nhiêu lần đọc?

Điều này khó xác định vì hệ thống/ứng dụng cũ của chúng tôi làm cho việc này khó thực hiện.


Một liên kết hữu ích khác được chỉ ra trên một bài đăng tương tự bao gồm ưu và khuyết điểm của cả hai phương pháp.

Files Stored on DB vs FileSystem - Pros and Cons

+0

Các tệp lớn đến mức nào? Sẽ có bao nhiêu? Có bao nhiêu lần đọc? Các quyết định như thế này phải luôn được thực hiện khi có chỉ số. – Ricardo

+1

Có thể trùng lặp ... xem http://stackoverflow.com/questions/616762/what-is-the-best-way-to-associate-a-file-with-a-piece-of-data –

+0

chắc chắn tương tự tôi đã không phát hiện ra khi tạo mỏ. Ưu và khuyết điểm tốt trong đó. – kevchadders

Trả lời

8

Tôi sẽ có cả hai.

Tôi sẽ giữ cho các tệp được đổi tên thành tên duy nhất, do đó dễ quản lý hơn và tôi sẽ giữ tất cả dữ liệu meta bên trong cơ sở dữ liệu (tên tệp, loại nội dung, vị trí trên hệ thống tệp, kích thước, mô tả, v.v.), vì vậy các tệp được truy cập thông qua cơ sở dữ liệu (gián tiếp).

Ưu điểm:

  • file là dễ dàng để xử lý; bạn có thể mang một số ổ đĩa trong hỗn hợp
  • cơ sở dữ liệu có thể giữ bất kỳ số lượng thông tin meta nào, bao gồm mô tả tệp mà bạn có thể tìm kiếm.
  • theo dõi trong hồ sơ truy cập và thông tin thống kê khác
  • sắp xếp lại các tập tin sử dụng mô hình khác nhau: cây (cấu trúc thư mục), thẻ, tìm kiếm hoặc bối cảnh

Bạn có thể nén trên một ổ đĩa cũng có. Bạn có thể có RAID để sao lưu và tốc độ.

1

Chúng tôi đang nói về loại tài liệu nào?

Lưu trữ tài liệu trong máy chủ SQL có thể hữu ích vì bạn có thể liên kết tài liệu với các bảng khác và sử dụng các kỹ thuật như lập chỉ mục toàn văn và thực hiện các thao tác như tìm kiếm mờ.

Nhược điểm là có thể khó khăn hơn để tạo bản sao lưu tài liệu. Và cũng có thể nén bằng nén NTFS hoặc các kỹ thuật khác.

+0

Chúng sẽ là Mircosoft Word Docments. – kevchadders

+0

sry ... cũng là tệp Excel và PDF. – kevchadders

+0

cũng lưu trữ hình ảnh cũng như các tệp JPEG & BMP. – JamesM

1

Các tài liệu này có dựa trên văn bản và bạn có đang lên kế hoạch sử dụng tìm kiếm toàn văn của SQL Server để tìm kiếm các tài liệu này không? Nếu không, tôi không thấy bất kỳ lợi ích nào trong việc lưu trữ các tài liệu này trên cơ sở dữ liệu. Ofcourse, bạn luôn có thể lưu trữ dữ liệu meta liên quan đến các tài liệu bao gồm thông tin đường dẫn đến cơ sở dữ liệu.

+0

Chúng tôi sẽ sử dụng Tìm kiếm toàn văn bản cũng như thêm các trường bổ sung để lưu trữ dữ liệu meta trên các tài liệu đó. – kevchadders

1

Lợi ích lớn khi vuốt tài liệu trong DB là việc kiểm soát bảo mật trở nên dễ dàng hơn nhiều, vì bạn có thể thực hiện tất cả thông qua kiểm soát truy cập trong ứng dụng của mình. Lưu trữ chúng trên một máy chủ tập tin đòi hỏi phải đối phó với các tư nhân truy cập ở cấp độ tập tin và thư mục để ngăn chặn bất kỳ truy cập trực tiếp. Cũng có họ trong một DB làm cho một điểm duy nhất của sao lưu, vì vậy bạn có thể dễ dàng tạo một bản sao đầy đủ và/hoặc di chuyển nó xung quanh nếu cần thiết.

12

Nếu bạn nâng cấp tất cả các cách, lên SQL Server 2008, thì bạn có thể sử dụng tính năng FILESTREAM mới, cho phép tài liệu xuất hiện dưới dạng cột trong bảng, chứ không phải là tệp trên chia sẻ. có thể được truy cập trực tiếp bởi một chương trình (như Word).

+0

Đẹp, không biết về khả năng đó. – kenny

17

quy tắc của ngón tay cái cho kích thước doc là:

size < 256 kb: store in db 
265 kb < size < 1 MB: test for your load 
size > 1 Mb: store on file system 

EDIT: các nguyên tắc này cũng áp dụng cho việc lưu trữ FileStream trong SQL Server 2008

+2

+1 Cách tiếp cận thực dụng. –

1

Thay vì viết một DMS (hệ thống quản lý tài liệu) tùy chỉnh, bạn có lẽ nên xem xét việc mua một hoặc sử dụng WSS/SharePoint vì điều này sẽ xử lý tất cả các chi tiết trần tục (lưu trữ, lập chỉ mục, siêu dữ liệu) và cho phép bạn xây dựng chức năng tùy chỉnh của mình ở trên cùng.

+0

Sharepoint được xem xét nhưng chi phí được coi là quá nhiều! :( – kevchadders

+0

Chi phí nào là miễn phí cho mỗi máy chủ –

+0

Sự hiểu biết của tôi là Windows SharePoint Services (WSS) là phiên bản miễn phí có nhiều hạn chế. Phiên bản được cấp phép mà tôi đã sử dụng là Microsoft Office SharePoint Server (MOSS). Xin lỗi vì bất kỳ sự nhầm lẫn nào. – kevchadders

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