2013-09-24 52 views
5

Trong một ứng dụng sẽ được triển khai trên heroku ....Tại sao không lưu trữ tệp trong cơ sở dữ liệu?

Tôi cần cho phép người dùng tải hình ảnh thu nhỏ lên.

Ứng dụng do Heroku triển khai tất nhiên không có bộ nhớ tệp cục bộ liên tục.

Điều điển hình để làm ở đây, googling xung quanh, dường như được lưu trữ các tập tin trong Amazon S3, hoặc có thể lưu trữ đám mây lưu trữ AWS khác.

Nhưng điều gì sẽ xảy ra nếu tôi chỉ dán hình ảnh vào cột blob sau bưu điện?

Nhược điểm của việc này là gì? Các upsides là, không phải trả tiền cho lưu trữ khác, không phải đối phó với một hệ thống bên ngoài bổ sung với nhiều cơ hội cho các lỗi và mất điện. Nhưng phải có một số lý do tốt để không ai có thể làm được điều này, chúng là gì?

Trả lời

4

Cơ sở dữ liệu và S3 là hai cơ chế lưu trữ khác nhau. Họ khác nhau như thế nào?

Về S3

Amazon S3 là một hệ thống lưu trữ tập tin chuyên môn hoá cao. Nó giảm thiểu những gì bạn có thể làm cho các hoạt động tập tin đọc/ghi/xóa cơ bản và tối ưu hóa bộ nhớ đệm để phục vụ dữ liệu của toàn bộ tệp được lưu trữ.

Về Postgres

Postgres là một cơ sở dữ liệu quan hệ SQL với sự linh hoạt lớn để lưu trữ và lập chỉ mục dữ liệu cho một loạt các hoạt động. Bạn rất có thể nhồi nhét dữ liệu hình ảnh nhị phân vào một hàng trong Postgres.

So sánh Chi phí/Khả năng mở rộng

Tại sao bạn chọn S3 trên Postgres? Chi phí và khả năng mở rộng. Postgres là một nhà tổng quát đắt tiền, có tay nghề cao. Trên Heroku, việc chạy một cơ sở dữ liệu Postgres có thể khiến bạn mất hàng trăm hoặc hàng ngàn đô la/tháng dựa trên lượng dữ liệu và quy mô lưu lượng truy cập.

Amazon S3 là một giải pháp rẻ tiền và có khả năng mở rộng cao phù hợp hoàn hảo với nhu cầu của bạn (viết hình ảnh, phục vụ hình ảnh trong ngữ cảnh của trang web).

TL; DR: Amazon S3 được tối ưu hóa cao cho các tệp như hình ảnh, khả năng mở rộng cao và tương đối rẻ tiền.

+0

Bất kỳ suy nghĩ nào về dữ liệu nhạy cảm không được hiển thị công khai? – abimelex

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