2014-04-22 6 views
0

로컬 보조 인덱스를 사용하여 쿼리를 수행하려고합니다 .... HashRangeKey를 지정하지 않으면 필수라고 말하는 오류가 발생합니다. 추가하면 범위 조건이 무시됩니다.로컬 보조 인덱스 (PHP)가 포함 된 AWS DynamoDB 쿼리

AWS "테이블 탐색기"에서 쿼리가 제대로 작동하는 것 같습니다. 따라서이 스크립트는 단순한 오류 또는 라이브러리와 관련된 것일뿐입니다.

유효성 검사 오류 : [HashKeyValue]는 필수 개체입니다. 복합 기본 키의 해시 구성 요소의 특성 값입니다. 여기에이 코드에 따르면

array(
     'TableName'=>self::$_tableName, 
     'IndexName'=>'vote-index', 
     'KeyConditions' => array(
     'itemId' => array(
      'ComparisonOperator' => 'EQ', 
      'AttributeValueList' => array(
      array('N'=>$itemId), 
     ), 
     ), 
     'vote' => array(
      'ComparisonOperator' => 'EQ', 
      'AttributeValueList' => array(
      array('N'=>$vote), 
     ), 
     ), 
    ), 
     'Count' => true, 
    ) 

*

: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LowLevelPHPQuerying.html 나는 HashKeyValue을 필요가 없습니다.

이 실행하지만 그것은 단지 나에게 HashKeyValue

array(
     'TableName'=>self::$_tableName, 
     'IndexName'=>'vote-index', 

     'HashKeyValue'=>array(
     'N'=>$itemId, 
    ), 
     'RangeKeyValue'=>array(
     'N'=>$vote, 
    ), 
) 

오류에 의해 필터링 된 결과를 제공합니다 제공되는 핵심 요소가 도움이 될 수있는 스키마

array(
     'TableName'=>self::$_tableName, 
     'IndexName'=>'vote-index', 

     'HashKeyValue'=>array(
     'N'=>$itemId, 
    ), 
     'RangeKeyCondition'=>array(
     'ComparisonOperator' => 'EQ', 
     'AttributeValueList' => array(
      array('N'=>$vote), 
     ), 
    ), 
) 

답변

3

This answer과 일치하지 않습니다.

로컬 보조 인덱스는 대체 범위 키와 같은 기능을합니다 ... 테이블의 기본 해시 키/범위 키 조합 또는 해시 키/로컬 보조 인덱스를 쿼리하는지 여부에 관계없이 해시 키를 지정해야합니다 (DynamoDB를 큰 것으로 생각하십시오 해시 테이블 ... 해시 키없이 일을 볼 수 없음). DynamoDB Secondary Index Documentation (강조 광산)에서

: 당신이 테이블의 주요 해시 키가 아닌 테이블의 다른 속성으로 조회 할 경우

Local secondary index — an index that has the same hash key as the table, but a different range key. A local secondary index is "local" in the sense that every partition of a local secondary index is scoped to a table partition that has the same hash key.

것은, 당신이 글로벌 보조 인덱스를 확인해야합니다 이것은 대체 테이블 해시 키와 비슷합니다. 불행하게도, 생성시에만 인덱스를 지정할 수 있으며 인덱스를 수정할 수 없으므로 테이블을 마이그레이션해야 할 수도 있습니다.

+0

아 감사합니다. 다행히도 이것은 아직 설계 단계에 있으므로 마이그레이션이 필요 없습니다. itemId를 해시로, ipAddress를 범위로, 표를 간단한 속성으로 표로 만드는 테이블을 다시 디자인했습니다. 그것은 고유 한 투표 유지 및 해시 키만 허용하는 것으로 보입니다. 투표를 표시하기위한 쿼리. – darknsf

관련 문제