2017-11-13 61 views
7

Chúng tôi lưu trữ tệp trong Amazon AWS S3 và muốn giữ tham chiếu đến các tệp đó trong bảng Tài liệu trong Postgres. Tôi đang tìm các phương pháp hay nhất. Chúng tôi sử dụng Python/Django và hiện lưu trữ URL quay lại từ boto3.s3.key.Key().generate_url(...). Nhưng có quá nhiều vấn đề với điều đó:Các phương pháp hay nhất để lưu trữ các tham chiếu đến các đối tượng AWS S3 trong cơ sở dữ liệu?

  • Phải phân tích cú pháp nhóm và rút khỏi URL.
  • Cần phải nới lỏng tên khóa.
  • Không hỗ trợ object versioning.
  • Hỗ trợ Unicode rất dễ gây rối, đặc biệt là do các bước mã hóa/giải mã url.

Vì vậy, tôi đang xem xét lưu trữ Nhóm, Khóa và Phiên bản trong ba trường riêng biệt và tạo Khóa làm tổ hợp khóa chính DB cộng với tên tệp được mã hóa an toàn, nhưng không biết có cách tiếp cận tốt hơn?

Trả lời

1

Không chắc chắn nếu best-est cách tiếp cận, nhưng chúng tôi lưu trữ:

  • ID duy nhất đối tượng (có thể là UUID) trong cơ sở dữ liệu (mà Postgres có một người gốc UUID loại)
  • tên xô và đường dẫn trong cấu hình (như chúng ta lưu trữ tất cả các đối tượng cùng loại thuộc cùng một xô + đường)

Bằng cách đó bạn có thể ít nhất là:

  • Move đối tượng để một xô/path khác nhau mà không havig phải viết lại toàn bộ bảng cơ sở dữ liệu của bạn
  • Chuyển từ S3 để lưu trữ địa phương nếu bạn chọn để
  • vứt bỏ khóa chính của bạn (ví dụ trong khi phân vùng bảng) mà không mất dấu vết đối tượng của bạn
Các vấn đề liên quan