Đây là cách sử dụng đơn giản của chúng tôi: user2 muốn sao chép tài liệu của người dùng1 vào kho lưu trữ của chính họ trong ứng dụng của chúng tôi. Nên đơn giản, phải không? Tất cả những gì chúng ta cần làm là tạo ra một đốm màu giống hệt nhau trong blobstore với khóa được trả về mà chúng ta có thể liên kết với user2. Chúng ta phải thiếu một cái gì đó ở đây. Có vẻ như chức năng chính của công cụ ứng dụng blob store là xử lý các blobs được tải lên và tải xuống trình duyệt và thao tác sao chép đơn giản được khởi xướng phía máy chủ không đơn giản như vậy.Cách tốt nhất tạo bản sao của thực thể blobstore trên công cụ ứng dụng trong Java là gì?
Giải pháp rõ ràng dường như đang sử dụng api tệp thử nghiệm trong java, nhưng không có tình yêu. Nó hoạt động, cho đến khi bạn nhận được trong kích thước tập tin vượt quá một MB hoặc như vậy, sau đó nó không thành công, phần nào không thể đoán trước. Đọc tất cả vào lớp máy chủ cũng có vẻ ngớ ngẩn, khi chúng ta chỉ cần tạo một bản sao trong lớp lưu trữ. Ngoài ra, tỷ lệ cược của chúng tôi nhận được một tính năng thử nghiệm thông qua vào môi trường sản xuất của chúng tôi là mỏng, mặc dù khác không.
Một số thông tin về môi trường của chúng tôi: ứng dụng được viết bằng Java và chúng tôi đang sử dụng blobstore, không phải lưu trữ đám mây và cam kết với nó ngay bây giờ. Chúng tôi là một nhóm bộ phận nhỏ và muốn làm cho trường hợp công cụ ứng dụng là một nền tảng tuyệt vời để sử dụng, nhưng điều này khiến chúng tôi bối rối. S3 làm cho điều này đơn giản một cách mù quáng, có phải chúng ta đang thiếu một cái gì đó thực sự ngu ngốc ở đây?
Vì không thể sửa đổi các đốm màu, tại sao tạo bản sao? Chỉ có một tham chiếu khác cho cùng một đốm màu cho user2.Nếu người dùng được phép xóa nội dung của blob, hãy kiểm tra bộ đếm tham chiếu trước khi thực sự xóa nó khỏi blobstore. –
Chúng tôi nghĩ về điều đó nhưng bị loại bỏ khá nhanh vì người dùng có thể xóa. Với sự sang trọng của một đốm màu duy nhất và nỗi đau của việc sao chép, đây là một giá trị khác. Điều gì sẽ là cách tốt nhất để mô hình hóa điều này? Một thực thể tham chiếu chéo để theo dõi xem một blob có nhiều hơn một tham chiếu hay không - tạo một mục trong thực thể tham chiếu chéo khi một blob được 'sao chép' và cộng/trừ một bộ đếm hoặc id mỗi khi nó được 'sao chép' hoặc 'xóa' cho đến khi chỉ có một tham chiếu. Chúng tôi đã có những thách thức của chúng tôi với các quầy và lưu trữ dữ liệu, do đó, thực sự xóa khi nó chỉ là một tài liệu tham khảo cuối cùng là một chút đáng sợ. – coleMan
Sau một số cuộc tranh luận, chúng tôi đã quyết định đi theo một biến thể của gợi ý của Kalle. Trả lời dưới đây trong trường hợp nó sẽ giúp người khác. Ngoài ra, trong tầm nhìn, chúng tôi nghĩ rằng chúng tôi đã có một câu hỏi thực hiện mã, nhưng hóa ra lại là một câu hỏi kiến trúc có lẽ phù hợp hơn cho việc trao đổi ngăn xếp chương trình. – coleMan