Amazon의 AWS 및 API for Java에 상당히 익숙하다. 그래서 내가 가장 효율적인 방법이 무엇인지 잘 모르겠다. 하려고하는 것은 될 것입니다. 기본적으로 프로젝트의 ID, 상태, S3 버킷에 사용자가 업로드 할 때 버킷 및 위치를 저장할 데이터베이스를 설정하려고합니다. 내가 겪고있는 문제는 상태 속성에서 "준비"상태 인 모든 프로젝트 ID의 목록을 얻는 것입니다. "준비"상태 인 프로젝트는 추후 참조를 위해 어레이 또는 arraylist에 ID 번호를로드해야합니다. 어떤 추천?Amazon DynamoDB의 속성 값이 ... (Java API)
5
A
답변
4
이렇게하는 방법은 스캔 API를 사용하는 것입니다. 그러나 다이너 모는 테이블의 모든 항목을 살펴보고 속성 "status"가 "ready"와 같은지 확인해야합니다. 이 작업의 비용은 클 것이고 테이블의 모든 항목을 읽는 데 비용이 청구됩니다.
코드는 다음과 같을 것이다 : 그것은 당신의 데이터를 비정규 필요하지만
Condition scanFilterCondition = new Condition()
.withComparisonOperator(ComparisonOperator.EQ.toString())
.withAttributeValueList(new AttributeValue().withS("ready"));
Map<String, Condition> conditions = new HashMap<String, Condition>();
conditions.put("status", scanFilterCondition);
ScanRequest scanRequest = new ScanRequest()
.withTableName("MasterProductTable")
.withScanFilter(conditions);
ScanResult result = client.scan(scanRequest);
이 더 잘 만들 수있는 방법이있다. 해시 키가 "status"이고 범위 키가 "project ID"인 두 번째 테이블을 유지하십시오. 이것은 기존 테이블에 추가 된 것입니다. 이렇게하면 쿼리 API (스캔 속도가 훨씬 저렴)를 사용하고 해시 키가 "준비 됨"인 모든 항목을 요청할 수 있습니다. 그러면 필요한 프로젝트 ID 목록이 표시되며 이미 가지고있는 프로젝트 ID 테이블에서 가져올 수 있습니다.
이 코드는 같은 것을 보일 것이다 :이 방법의 단점은 당신이 상태 필드를 업데이트 할 때마다 두 개의 테이블을 업데이트 할 필요가있다
QueryRequest queryRequest = new QueryRequest()
.withTableName("ProductByStatus")
.withHashKeyValue(new AttributeValue().withS("ready"));
QueryResult result = client.query(queryRequest);
을, 당신은 당신이에 보관 있는지 확인해야합니다 동조. Dynamo는 트랜잭션 성을 제공하지 않으므로 마스터 프로젝트 테이블에 대한 업데이트가 성공했지만 보조 상태 테이블에서는 성공할 준비가되어 있어야합니다. 혹은 그 반대로도.
자세한 참조 : http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/QueryAndScan.html
관련 문제
- 1. DynamoDB의 조건부 업데이트 항목
- 2. Amazon S3 및 Cloudfront with Java API
- 3. 시간 DynamoDB의
- 4. Amazon Product Advertising API : BrowseNodeId에 대한 값이 XXX가 아닙니다.
- 5. AMAZON API 인증 오류
- 6. 레일 + Amazon API + 통합
- 7. Amazon Reseller API
- 8. SignatureDoesNotMatch - Amazon S3 API
- 9. 아마존 AWS - DynamoDB의 토네이도
- 10. 아마존 DynamoDB의 예외 오류
- 11. DynamoDB의 API를 사용하여 통신
- 12. 탈출 속성 값이/여기
- 13. 전송 종속성 속성 값이
- 14. 속성 값이 잘못 되었습니까?
- 15. Java Webservice- Amazon Cloud
- 16. Amazon EC2 API 액세스 제어
- 17. Python 용 Amazon API 라이브러리?
- 18. Amazon Product API and Rails
- 19. C에서 Amazon S3 API 사용
- 20. Amazon Cloud에서 Dropbox API 액세스
- 21. Amazon API - 제품 설명 검색
- 22. C# Amazon Product Advertising API
- 23. Amazon Product Advertising API ItemSearchRequest
- 24. Ruby amazon acs API 변경
- 25. DynamoDB의 키 특성에 대한 검색
- 26. 아마존 DynamoDB의 우리가 DynamoDB의 휴식 API를 사용하여 헤더를 보내야 필요한 헤더입니다
- 27. 정적 속성 값이 간헐적으로 손실됩니까?
- 28. 값이 음수이면 0이어야하는 byte 속성?
- 29. 속성 이름 및 값이 필요합니다.
- 30. 값이 나온 속성 이름 얻기
이것은 트릭을 수행하는 것처럼 보입니다. 이 프로세스는 이미 폭포 형 워크 플로우에서 처리되므로 마지막 단계 (이 상태를 업데이트 할 예정) 이전에 실패한 부분이 있으면 조기에 종료되므로 다른 모든 항목이 성공하면 상태가 업데이트됩니다. 도와 주셔서 감사합니다! – DGolberg
1 년 반 만에 나는 이것에 대한 업보트를 얻었지만, 죄책감을 느낀다 : DynamoDB는 다른 테이블을 관리 할 필요없이이 목적을 위해 만들어진 2 차 인덱스를 발표했다. 한번 봐봐! –
롤 (Lol), 나는 또한 게시물을 업데이트하는 것을 고려하고 있다고 생각했습니다. 하지만 그래, 보조 인덱스는 좋은데 ... 원래 응답이 여전히 적용되는 인스턴스가 여전히 존재하지만. 이 게시물에 관심이있는 사람은 누구인지, 특히 궁금한 사항이 있으면 설명서의 "색인을 드물게 사용"섹션을 참조하십시오. 여기에서 사용할 수 있습니다 (http://docs.aws.com/). .amazon.com/amazondynamodb/latest/developerguide/GuidelinesForLSI.html). – DGolberg