Tôi đang viết một ứng dụng php và đã tự hỏi nếu đó là một ý tưởng tồi để lưu trữ các tập tin hoàn chỉnh trong cơ sở dữ liệu. Các tệp phải có kích thước khoảng 100-200kb chủ yếu là tệp văn bản (txt, doc, docx, v.v.) hoặc các tệp hình ảnh nhỏ. Hay nó chỉ là một ý tưởng sai lầm đơn giản?Ưu điểm và nhược điểm của việc lưu trữ tệp trong cơ sở dữ liệu là gì?
Trả lời
Pro: có độ di động cao.
Con: bạn không thể làm bất cứ điều gì với nó bằng cách sử dụng SQL (lập chỉ mục, tìm kiếm, vv) và bạn sẽ cần phải thêm siêu dữ liệu trong các cột khác (loại nội dung, tên tệp, v.v.) để cải thiện khả năng sử dụng và bảo trì .
Tôi sẽ không làm điều đó. Hệ thống tập tin đĩa là hệ thống phù hợp hơn cho những nhiệm vụ đó.
Tôi đang hướng đến tính di động, vì các tệp đó sẽ không được chỉnh sửa theo bất kỳ cách nào, có thể chúng sẽ bị xóa nhưng đó là nó. – Gabriel
Cá nhân, tôi thích ý tưởng, đặc biệt nếu DB lưu trữ chúng được nén hoặc bạn nén chúng theo cách thủ công.
Trong số những thứ khác, điều đó có nghĩa là bạn không cần phải lo lắng về tên duy nhất cho tệp, điều này tiết kiệm rất nhiều sự phức tạp.
Tuy nhiên, bạn vẫn cần xác định chúng duy nhất trong cơ sở dữ liệu. – Cameron
Thật vậy. Tôi đã không nghĩ đến trường hợp tầm thường chỉ lưu trữ tệp trong cơ sở dữ liệu; Tôi giả định một số "siêu dữ liệu" như tên người dùng, ngày tháng, tên tệp hoặc các loại tương tự. –
Nó thực sự phụ thuộc vào tình huống?
- Cách các tệp sẽ là được phân phối?
- Các tệp được sử dụng độc lập hay là chúng có phải là một phần của hệ thống có thể có ủy quyền riêng và logic xác thực không?
- Làm cách nào để chiến lược sao lưu của bạn là ?
- Bạn có cần sao chép không?
- Bạn có cần hỗ trợ nhiều I/O không?
- Điều gì về bộ nhớ đệm?
Có nói rằng, tôi sẽ dựa vào một số loại hệ thống tệp cho tài liệu trên cơ sở dữ liệu.
Ưu điểm:
- Không cần phải lo lắng về quyền ghi vào lưu trữ tập tin.
- Không cần phải thử và đồng bộ hóa các tệp trên filestore với các hàng trong cơ sở dữ liệu, tránh các tệp mồ côi hoặc liên kết bị hỏng. Ví dụ, bạn có thể tự động cascade xóa các tập tin khi nội dung liên quan bị xóa.
- Trong cơ sở dữ liệu nào đó (chẳng hạn như Oracle và SQL Server), bạn có thể tập tin chỉ mục và tìm kiếm trong họ sử dụng SQL
- Không cần phải lo lắng về tên tập tin độc đáo, thư mục và nó có thể làm cho tải lên đơn giản hơn trong một số trường hợp
- Dễ bảo vệ quyền truy cập vào các file để người dùng chỉ được ủy quyền có thể nhìn thấy chúng
Nhược điểm:
- Performance phục vụ các file thường rừng đặc dụng fers so với filestore
- Có thể dẫn đến cơ sở dữ liệu lớn. Cần cẩn thận khi chọn các cột nhị phân.
- làm việc nhiều hơn để liên kết đến tập tin và phân phát nội dung - bạn cần phải xử lý chuyên ngành, vv
- 1. Ưu và nhược điểm của cơ sở dữ liệu đối tượng là gì?
- 2. Ưu điểm/khuyết điểm của việc lưu trữ dữ liệu phiên trong tệp so với cơ sở dữ liệu là gì?
- 3. Ưu và nhược điểm của việc cho phép Google lưu trữ jQuery cho tôi là gì?
- 4. Ưu điểm và nhược điểm của việc lưu trữ tĩnh trong ứng dụng ASP.NET MVC
- 5. Truy vấn cơ sở dữ liệu chéo, tham gia các ưu điểm và nhược điểm
- 6. Ưu và nhược điểm của cơ sở dữ liệu Access. Cuộc sống sau khi SQLite
- 7. Ưu điểm và nhược điểm của việc sử dụng Phonegap và Titanium là gì?
- 8. Ưu điểm và nhược điểm của NHibernate
- 9. Cây thiết bị là gì? Ưu điểm và nhược điểm?
- 10. Ưu điểm/nhược điểm của .NET 64 bit là gì?
- 11. Ưu điểm và nhược điểm để giữ mã và dữ liệu trong các kho lưu trữ riêng lẻ
- 12. Cơ sở dữ liệu enums - ưu và khuyết điểm
- 13. Điểm của nhiều Cơ sở dữ liệu Redis là gì?
- 14. Ưu điểm và nhược điểm của việc sử dụng boost :: iterator_facade là gì?
- 15. Ưu điểm và nhược điểm của việc sử dụng ARC là gì?
- 16. Ưu điểm và nhược điểm của BPMN?
- 17. Ưu điểm và nhược điểm của trình kích hoạt cơ sở dữ liệu so với Rails ActiveRecord gọi lại?
- 18. Điểm mạnh và điểm yếu của cơ sở dữ liệu ba tầng là gì?
- 19. Ưu điểm và nhược điểm của DDD Repositories
- 20. Ưu và nhược điểm của việc sử dụng git-svn là gì?
- 21. Những nhược điểm của việc sử dụng một lớp cơ sở dữ liệu PHP như là một singleton là gì?
- 22. Ưu điểm của dữ liệu schemaless lưu trữ trên lưu trữ dữ liệu với lược đồ
- 23. Ưu điểm/nhược điểm của việc sử dụng bộ ria mép với Backbone.js là gì?
- 24. Ưu điểm & nhược điểm của DotNetNuke?
- 25. Ưu và nhược điểm của việc liên kết tĩnh một thư viện là gì?
- 26. SELECT * - ưu/nhược điểm
- 27. Ưu điểm và nhược điểm của xóa và cập nhật Cascading là gì?
- 28. Ưu điểm của CodeFirst so với Cơ sở dữ liệu đầu tiên là gì?
- 29. Ưu điểm và nhược điểm của Model-View-Controller
- 30. Yêu cầu đối tượng, ưu và nhược điểm là gì?
Bạn có thể muốn kiểm tra này: Lưu trữ hình ảnh trong DB - Yea hoặc Nay? (http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay) –
MongoDB có một số tính năng thú vị để lưu trữ tệp. – benlumley
@Daniel Vassallo: thú vị, tôi không nghĩ rằng tôi sẽ lưu trữ ở đó nhiều hình ảnh và chắc chắn nó sẽ không dành cho bất kỳ trang web lưu lượng truy cập cao nào. – Gabriel