Tôi có một ứng dụng web lưu trữ nhiều tệp do người dùng tạo. Hiện tại tất cả chúng đều được lưu trữ trên hệ thống tập tin của máy chủ, trong đó có một số nhược điểm đối với tôi.Lưu trữ tệp cho các ứng dụng web: Hệ thống tập tin vs DB và công cụ NoSQL
- Khi chúng tôi di chuyển "thư mục" (theo định nghĩa của ứng dụng), chúng tôi cũng phải di chuyển tệp trên đĩa (mặc dù điều này là do các quyết định thiết kế lạ hơn. những thứ trên hệ thống tập tin).
- Thật khó để viết các thử nghiệm cho các hành động của hệ thống tệp; Tôi có một lớp hệ thống tập tin giả lập ghi nhật ký các hành động như di chuyển, xóa, vv, mà không thực hiện chúng, mà nhiều hay ít công việc, nhưng tôi không có 100% sự tự tin trong các bài kiểm tra.
- Tôi sẽ thêm một số công việc khác cần truy cập các tệp từ dịch vụ khác để thực hiện các tác vụ bổ sung (ví dụ: lập chỉ mục trong Solr, tạo hình thu nhỏ, chuyển đổi định dạng phim), vì vậy tôi cần nhận các tệp từ xa. Làm điều này qua mạng chia sẻ có vẻ tinh ranh ...
- Xử lý các quyền trên hệ thống tệp đôi khi cho chúng tôi vấn đề trong quá khứ, mặc dù hiện tại chúng tôi đã chuyển sang môi trường Linux thuần túy, điều này sẽ ít hơn.
Vì vậy, câu hỏi chính của tôi là
- các nhược điểm của lưu trữ file như BLOB trong MySQL là gì?
- Các vấn đề tương tự tồn tại với các hệ thống NoSQL như Cassandra?
- Có ai có bất kỳ đề xuất nào khác có thể thích hợp không, ví dụ: MogileFS, v.v ...?
Cảm ơn, trông giống như một tập hợp các liên kết rất hữu ích. Lưu trữ hình ảnh/đốm màu của bất kỳ loại nào là những gì tôi đang theo sau (chúng tôi đang lưu trữ tất cả các loại công cụ). –
Cảm ơn, các liên kết được đề xuất của bạn thật tuyệt vời. Rõ ràng tôi cần tìm kiếm kỹ hơn trước khi đặt câu hỏi :) Tóm lại, tránh DB trông giống như cách đi. Tôi chỉ cần tách ứng dụng ra khỏi hệ thống tập tin để nó bớt đau đớn hơn ... –
Rất vui khi bạn thấy chúng hữu ích. Và tôi chia sẻ kết luận này. –