Amazon S3를 사용하여 많은 양의 텍스트 파일을 저장하고 있습니다.
내 소프트웨어가 Java로되어 있으며 공식 S3 SDK를 사용하고 있습니다.
작성/삭제/검색/외에도 종종 에 새 콘텐츠를 첨부해야합니다.S3 최종 일관성 : 덮어 쓰기로 파일 부분이 손실됩니다
S3는 APPEND를 지원하지 않기 때문에 내가 그 기본적으로 추가 작업을 구현 한 :
를 - S3의 GET으로, S3
에서 파일의 메타 데이터를 가져옵니다 - S3가하세요이, 로컬 복사본에 전체 파일을 다운로드하여
- 로컬 복사본
에 추가 작업을 수행하고 S3 PUT을 사용하여 S3에서 로컬 파일을 업로드하여 이전 파일을 덮어 씁니다.
첨부는 동시에 수행되지 않습니다.
나는 소프트웨어를 테스트했으며 지금까지 제대로 작동하는 것으로 보인다.
여기 내 문제가 있습니다 : 추가가 매우 빈번한 상황에서 추가를 수행하면 파일의 큰 부분이 손실됩니다. 이것이 PUT을 덮어 쓰는 S3 궁극적 인 일관성에 달려 있습니까?
도움 주셔서 감사합니다.
대단한 답변을 해주셔서 감사합니다. 불행히도 AWS 버킷 버전 관리가 상당히 비싸다는 것을 알기 때문에 사용할 수 있을지 모르겠습니다. 내 진짜 문제는 콤보 "추가 기능 없음"+ "최종 일관성"이라고 생각합니다. 방금 전체 파일을 다시 읽지 않아도 내용을 추가 할 수 있다면 훨씬 쉬울 것입니다. –
버젼 생성은 버전 화되지 않은 버킷과 거의 차이가없는 방식으로 사용될 수 있습니다. 추가 된 유일한 비용은 모든 이전 버전을 저장하기위한 것이지만 이전 버전은 보유하지 않아도됩니다 *. 라이프 사이클 정책을 작성하여 1 일 후에 이전 버전을 삭제할 수 있으며, 더 적극적으로 사용하려면 이전 버전의 버전 ID를 현재 버전의 메타 데이터에 저장할 수 있으며 현재 버전을 열 때 삭제 이전에 대한 요청. –
두 가지 기능은 이유가있는 그대로입니다. 객체는 원 자성입니다. 추가하면 원 자성을 잃는다. 덮어 쓰기의 궁극적 인 일관성은 가능한 초당 읽기 요청 수의 상당한 성능 향상을 허용합니다. –