0

DynamoDB에 약 300,000 행의 테이블이 있습니다. 여기에는 소스, 데이터 및 사이클이라는 세 개의 열이 있습니다. 원본 속성은 해시 키이고 데이터는 범위 키입니다. cycles 속성은 행이 추가 될 때마다 응용 프로그램에 의해 추가되는 숫자입니다. 나는 다음과 같은 필터를 사용하여 이러한 행을 검사하는 데 사용 :필터를 사용하여 스캔하면 DynamoDB에 0이라는 결과가 반환됩니다.

{ 
    TableName: "tableName", 
    Limit: 20, 
    ScanFilter: { 
     cycles: { 
      AttributeValueList: [ 
       { 
        N: "0" 
       } 
      ], 
      ComparisonOperator: "EQ" 
     } 
    } 
} 

그러나이 scanfilter가 자발적으로 더 이상 제대로 작동하지 않기로 결정 것으로 보인다. 이 요청을 실행할 때마다 0 개의 결과가 반환됩니다. scanfilter를 제거하면 20 개의 결과가 반환되므로 limit 또는 tableName 특성과 아무 관련이 없다고 가정합니다. 재미있는 점은 사이클이 "1"인 항목을 찾기 위해 필터를 설정할 때 실제로 작동한다는 것입니다. 아마도 테이블의 시작 부분에 사이클 = 1 인 10 개의 행이 있기 때문일 수 있습니다.

제 질문은이 문제를 해결하는 방법입니다. 새 색인을 추가해야합니까, 아니면이 스캔 필터를 변경해야합니까? 또한 scan 대신 query 명령을 사용하려고 시도 할 수도 있지만이 작업을 수행하려는 이전의 시도는 제대로 작동하지 않았습니다.

답변

0

신경 쓰지 마라. 나는 이것에 대해 쿼리 메서드를 사용해야한다. 스캔 방법은 scanFilter가 false를 반환 할 때까지 테이블의 첫 번째 X 행만 가져옵니다. 따라서 전체 테이블을 검색하지 않습니다.

관련 문제