현재 DynamoDB를 사용하고 있으며 스캔 중 문제가 발생했습니다. ExclusiveStartKey를 사용하여 순방향으로 페이징 된 결과를 얻을 수 있습니다. 그러나 ScanIndexForward
을 true로 설정했는지 또는 false로 설정했는지에 관계없이 스캔 작업에서 정방향으로 결과가 표시됩니다. DynamoDB의 Scan
에서 역순으로 결과를 얻으려면 어떻게해야합니까?DynamoDB에서 역순으로 인덱스를 스캔하려면 어떻게합니까?
답변
ScanIndexForward
은을 쿼리하는 인 테이블 또는 인덱스의 범위 키에 따라 내림차순으로 항목을 가져 오는 올바른 방법입니다. AWS API Reference에서 :
, 나는 역에서 스캔 수있는 방법은 없습니다 결론. 그러나 필요한 경우 DynamoDB를 올바르게 사용하지 않는다고 말합니다. DyanmoDB와 같은 데이터베이스의 스키마를 디자인 할 때는 예상 쿼리를 기반으로 스키마를 계획하여 거의 모든 응용 프로그램 쿼리가 좋은 인덱스를 갖도록해야합니다. 스캔은 시스템 관리자 작업이나 MapReduce 또는 분석에 추가로 제공됩니다. "스캔 작업은 항상 전체 테이블을 스캔 한 다음 값을 필터링하여 원하는 결과를 제공합니다. 결과 세트에서 데이터를 제거하는 추가 단계를 추가해야합니다." (Query and Scan Performance) 그러면 performance problems and other issues이 될 수 있습니다.(TRUE) 또는 상승 상태 (false) 인덱스 순회 내림차순 지정하는 값. DynamoDB는 범위 키로 결정된 요청 순서를 반영한 결과를 반환합니다. 데이터 유형이 인 경우 결과는 숫자 순으로 반환됩니다. String 유형의 경우 결과는 ASCII 문자 코드 값의 순서로 반환됩니다. 이진 유형의 경우 DynamoDB는 이진 값을 비교할 때 이진 데이터의 각 바이트를 부호가없는 으로 처리합니다. docs for Scan을 바탕으로
DynamoDB는 근본적으로 전통적인 관계형 데이터베이스로 작업하는 것과는 다르며 사용 방법을 크게 변경해야합니다. DynamoDB의 스토리지 가용성 및 성능, 안정성 및 가용성이 제한 사항을 수용하는 데 가치가 있는지 여부를 결정해야합니다.
네 말이 맞지만 ScanIndexForward는 Scan이없는 쿼리에서 작동합니다. 쿼리에서는 해시 키와 범위 키를 다른 필드에 대해서만 설정할 수 있습니다. DynamoDB에 완전히 지쳤습니다. –
H/R 키 이외의 속성/필드에서 쿼리 필터를 사용할 수 있습니다. http : //aws.amazon.com/blogs/aws/modified-queries-and-updates-dynamodb/ –
댓글을 명확히하기 위해. 쿼리 작업은 해시 및 범위 키 조건에서만 수행해야합니다. 추가 필드를 필터링 할 수있는 선택적 쿼리 필터가 있습니다. 그러나 쿼리 작업은 해시 및 범위 키 조건과 일치하는 모든 항목을 계속 읽습니다. 필터와 일치하는 행만 반환합니다. 이상적으로 해시 및 범위 키 조건은 너무 많은 행을 읽지 않도록 가능한 한 좁아야합니다. –
현재 DynamoDB 검사는 정렬 된 결과를 반환 할 수 없습니다.
해시 키 및 범위 필드와 함께 새로운 GSI (Secondary Gear Index)를 사용하는 쿼리를 사용해야합니다. 트릭은 테이블의 모든 데이터에 동일한 값이 할당 된 해시 키를 사용하는 것입니다.
모든 데이터에 대해 새 필드를 만들고 "상태"라고 설정하고 값을 "확인"또는 비슷한 것으로 설정하는 것이 좋습니다.
그런 다음 쿼리가 다음과 같을 것이다 정렬 된 모든 결과를 얻을 : GSI 쿼리를 작성하는 방법에 대한
{
TableName: "YourTable",
IndexName: "Status-YourRange-index",
KeyConditions: {
Status: {
ComparisonOperator: "EQ",
AttributeValueList: [
"OK"
]
}
},
ScanIndexForward: false
}
워드 프로세서 여기에 찾을 수 있습니다 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying
- 1. Boto를 사용하여 dynamoDB에서 키를 만료하려면 어떻게합니까?
- 2. DynamoDB에서 날짜순으로 항목 정렬
- 3. 공백을 문자열로 스캔하려면 어떻게해야합니까?
- 4. python으로 디렉토리를 스캔하려면 어떻게해야합니까?
- 5. 정수 배열의 인덱스를 찾으려면 어떻게합니까?
- 6. Java의 jcombobox에 인덱스를 삽입하려면 어떻게합니까?
- 7. DynamoDB에서 일괄로드
- 8. Amazon DynamoDB에서 배열 배열 추가
- 9. DynamoDB에서 "social-feed"설계
- 10. dynamodb에서 원자 트랜잭션 구현
- 11. DynamoDB에서 EC2를 사용해야합니까?
- 12. amazon dynamodb에서 삭제
- 13. DynamoDB에서 대량의 데이터 검색
- 14. 과도한 TableStatus가 dynamodb에서 대기
- 15. DynamoDB에서 페이지 매기기
- 16. Amazon DynamoDB에서 항목 검색
- 17. 아마존 dynamodb에서 테이블 디자인하기
- 18. DynamoDB에서 처리량 읽기
- 19. DynamoDB에서 속성 삭제
- 20. 공간 인덱스를 HIGH보다 큰 레벨로 사용하려면 어떻게합니까?
- 21. 전체 파이썬 파이썬 패키지 인덱스를 다운로드하려면 어떻게합니까?
- 22. 그룹화가있을 때 LINQ 쿼리에 인덱스를 추가하려면 어떻게합니까?
- 23. 라인을 역순으로 처리하십시오.
- 24. 특정 텍스트 상자에서만 바코드를 스캔하려면 어떻게해야합니까?
- 25. 드라이버, 나는 문서를 스캔하려면 다음 코드를 사용하고
- 26. React : 주어진 배열을 역순으로 역순으로 렌더링합니다.
- 27. 역순으로 역순 정렬 역순 역순으로 배열
- 28. N 개의 레코드를 범위 역순으로 역순으로 조회합니다.
- 29. 역순으로 작성
- 30. Object.keys 역순으로
어떤 API 당신이 코드 – Max
을 보여주십시오 DynamoDB에 액세스하는 데 사용 하시겠습니까? 대부분의 경우 스캔 작업에 대해'ScanIndexForward'를 지정할 수 없습니다. 직접 웹 서비스 호출을하고 있습니까? –