2011-10-01 84 views
7

Tôi hy vọng ai đó có thể giải thích cách sử dụng BLOB. Tôi thấy rằng BLOB có thể được sử dụng để lưu trữ các tệp video. Câu hỏi của tôi là tại sao một người lưu trữ một tệp video trong một BLOB trong cơ sở dữ liệu SQL? Những ưu điểm và nhược điểm so với việc lưu trữ con trỏ tới vị trí của tệp video là gì?BLOB trong SQL lưu trữ tệp Video

Trả lời

6

Một vài lý do khác nhau.

Nếu bạn lưu con trỏ vào tệp trên đĩa (có lẽ là sử dụng loại dữ liệu BFILE), bạn phải đảm bảo rằng cơ sở dữ liệu của mình được cập nhật bất cứ khi nào tệp được di chuyển, đổi tên hoặc xóa trên đĩa. Nó tương đối phổ biến khi bạn lưu trữ dữ liệu như thế này theo thời gian cơ sở dữ liệu của bạn không đồng bộ với hệ thống tệp và bạn kết thúc với các liên kết bị hỏng và nội dung mồ côi.

Nếu bạn lưu con trỏ vào tệp trên đĩa, bạn không thể sử dụng ngữ nghĩa giao dịch khi bạn đang xử lý đa phương tiện. Vì bạn không thể làm điều gì đó như phát hành ngược lại với hệ thống tệp, bạn phải xử lý thực tế là bạn sẽ có tình huống mà dữ liệu trên hệ thống tệp không khớp với dữ liệu trong cơ sở dữ liệu (ví dụ: ai đó đã tải video lên hệ thống tệp nhưng giao dịch đã tạo tác giả và tiêu đề trong cơ sở dữ liệu không thành công hoặc ngược lại) hoặc bạn phải thêm các bước bổ sung vào tệp tải lên để mô phỏng ngữ nghĩa giao dịch (tức là tải lên một giây <> _done.txt tệp chỉ chứa số byte trong tệp thực tế đã được tải lên. Điều đó rất cồng kềnh và dễ xảy ra và có thể tạo ra các vấn đề về khả năng sử dụng. Nếu bạn muốn tránh cho người dùng một URL FTP trực tiếp vào tệp của bạn vì họ có thể sử dụng nó để bỏ qua một số ứng dụng bảo mật mức cation, tùy chọn đơn giản nhất là có một ứng dụng được cơ sở dữ liệu hỗ trợ để lấy dữ liệu, cơ sở dữ liệu đọc nó từ hệ thống tệp và sau đó trả về tầng trung gian, sau đó gửi dữ liệu cho máy khách. Nếu bạn sẽ phải đọc dữ liệu vào cơ sở dữ liệu mỗi khi dữ liệu được lấy ra, nó thường có ý nghĩa hơn khi chỉ lưu trữ dữ liệu trực tiếp trong cơ sở dữ liệu và để cơ sở dữ liệu đọc dữ liệu từ các tệp dữ liệu của nó khi người dùng hỏi cho nó.

Cuối cùng, các cơ sở dữ liệu như Oracle cung cấp các tiện ích bổ sung để làm việc với dữ liệu đa phương tiện trong cơ sở dữ liệu. Ví dụ: Oracle interMedia cung cấp một bộ đối tượng phong phú để tương tác với dữ liệu video được lưu trữ trong cơ sở dữ liệu-- bạn có thể dễ dàng gắn thẻ nơi cảnh bắt đầu hoặc kết thúc, thẻ nơi các đối tượng khác nhau được thảo luận, khi video được ghi lại. Và bạn có thể tích hợp chức năng tìm kiếm đó với các tìm kiếm đối với tất cả dữ liệu quan hệ của bạn. Tất nhiên, bạn có thể viết một ứng dụng trên cơ sở dữ liệu đã làm tất cả những điều đó, nhưng sau đó bạn đang viết rất nhiều mã hoặc sử dụng một khung công tác khác trong ứng dụng của bạn. Thường dễ dàng hơn nhiều để tận dụng chức năng cơ sở dữ liệu.

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