Amazon S3 bổ sung tính năng Put-If-Match (Compare-and-Swap)
(aws.amazon.com)-
Tính năng mới của Amazon S3: ghi có điều kiện
-
Amazon S3 giờ đây có thể thực hiện ghi có điều kiện để cập nhật sau khi đánh giá xem đối tượng có bị sửa đổi hay chưa. Điều này giúp điều phối các lần ghi đồng thời lên cùng một đối tượng và ngăn nhiều trình ghi đồng thời vô tình ghi đè khi không biết nội dung của đối tượng.
-
Có thể sử dụng tính năng này trên cả bucket mục đích chung và bucket thư mục của S3 bằng cách cung cấp ETag của đối tượng thông qua yêu cầu API S3 PutObject hoặc CompleteMultipartUpload.
-
Ghi có điều kiện giúp đơn giản hóa cách các ứng dụng phân tán cập nhật đồng thời các tập dữ liệu dùng chung. Tương tự như việc dùng header điều kiện HTTP
if-none-matchđể kiểm tra xem đối tượng đã tồn tại trước khi được tạo hay chưa, giờ đây client có thể thực hiện kiểm tra ghi có điều kiện bằng cách chỉ định ETag của đối tượng qua header HTTPif-matchtrong yêu cầu API. -
S3 sẽ đánh giá xem ETag của đối tượng có khớp với giá trị được cung cấp trong yêu cầu API hay không rồi mới commit thao tác ghi, qua đó ngăn client ghi đè đối tượng cho đến khi điều kiện được đáp ứng.
-
Header điều kiện mới này có thể giúp cải thiện hiệu quả của phân tích quy mô lớn, machine learning phân tán và các tác vụ khác có mức độ song song hóa rất cao.
-
Tính năng ghi có điều kiện mới này được cung cấp không tính thêm phí tại tất cả các khu vực AWS. Có thể thực hiện ghi có điều kiện bằng AWS SDK, API hoặc CLI. Để biết thêm chi tiết về ghi có điều kiện, có thể tham khảo Sổ tay người dùng S3.
-
1 bình luận
Ý kiến trên Hacker News
Amazon S3 đã bổ sung tính năng cho phép áp dụng bắt buộc các thao tác ghi có điều kiện
Turbopuffer.com đã sử dụng điều này trong cơ sở dữ liệu để tránh phụ thuộc vào bất cứ thứ gì ngoài object storage
Nhờ tính nhất quán mạnh, đã đạt được một nửa chức năng mong muốn
Cũng có người thấy khó hiểu vì sao tính năng này lại quan trọng
Tính năng này gần với compare-and-set hơn là compare-and-swap
Khi kết hợp với bảo đảm tính nhất quán read-after-write, đây trở thành nền tảng hoàn hảo để xây dựng kho lưu trữ chỉ cho phép thêm dần trên object storage
Azure Blob Storage cũng hỗ trợ e-tag và optimistic control
Nếu thuật toán ETag mặc định của AWS chỉ là hàm băm MD5 thông thường, có người đặt câu hỏi liệu dữ liệu đối tượng có thể bị lỗi do va chạm MD5 hay không
MinIO, bản triển khai mã nguồn mở của Amazon S3, đã cung cấp tính năng này từ gần 2 năm trước
Tính năng mới đã được bổ sung vào mùa hè để phản hồi chức năng IfNoneMatch của s3fs