2014-07-09 2 views
-1

나는 이것을 읽었습니다 : http://boto.readthedocs.org/en/latest/ref/dynamodb2.htmlBoto Dynamo에 관한 명확한 질문 aws

그러나 나는 몇 가지 질문을 가지고 있습니다.

results = users.scan(
...  age__in=[25, 26, 27, 28, 29], 
...  limit=1 
...) 

질문 추구 확인 :에서

1) 사용자는 발전기 테이블입니다. 2) 연령은 저장할 때 데이터 [ "연령"]과 비슷합니다. 따라서 다음과 같이 입력하십시오 :

def createSwfInDynamo(key,images,text): 
    data={} 
    data["time"]=five 
    data["age"]=25 
    newI = swfTable.new_item(id,data["time"], data) 
    newI.save() 

users.scan으로 스캔 할 수 있습니다.

3) 또한 __은 오브젝트 이름이 아니고 비교 연산자를 구분합니다. 따라서 age__in은 기둥 시대가 [25, 26, 27, 28, 29]에 있어야 함을 암시합니다.

4) 제한 = 1은 사용자가 1 일치 만 반환하기를 원한다는 의미입니까?

5) 마지막으로 dynamo는 첫 번째 1MB 또는 1000 개 개체 만 반환한다는 사실을 알고 있습니다. 모든 일치 항목을 검색하고 싶다면 어떻게하면 되겠습니까?

답변

1

1) 2) 예

3) 나는 테이블 100 개 항목이 아무 생각

4) 가정 5)

이없는 당신은 테이블을 스캔합니다. 한계를 25로 설정하고 스캔을 4 회 호출 할 수 있습니다. 또는 제한을 1로 설정하고 스캔 API를 100 번 호출 할 수 있습니다. 스캔 응답에는 LastEvaluatedKey이 저장되어 다음 스캔 호출로 저장하고 ExclusiveStartKey으로 전달해야합니다.

예를 들어 제한을 25로 설정하면 검사 결과에 26 번째 항목을 찾기위한 DynamoDB 서비스의 힌트 인 LastEvaluatedKey가 포함됩니다. 내가 here

def search(table, scan_filter=None, range_key=None, 
      attributes_to_get=None, 
      limit=None): 

    start_key = None 

    while True: 
     results = self.conn.layer1.scan(table_name=table, 
            attributes_to_get=attributes_to_get, 
            exclusive_start_key=start_key, 
            limit=request_limit) 
     # do stuff with your results 

     start_key = results['LastEvaluatedKey'] 
     if start_key is None: 
      break 

에서 빌린 코드를 기반으로

예 나는 자바 API에 더 유사하다 당신이 지금 DynamoDB의에 대한 낮은 수준의 파이썬 API를 사용하는 것이 좋습니다 것입니다 그리고 당신은 더 많은 정보를 얻을 수 있습니다 기본 API에 대한 온라인 좀 더 편안하게되면 더 높은 수준의 API로 이동하여 생산성을 높일 수 있습니다.

+0

에 의해 주어진

  • 진정한

  • 솔루션? ty – Tai

  • +0

    대단히 감사합니다. Anychance는 왜 당신이 알고있는 http://boto.readthedocs.org/en/latest/ref/dynamodb2.html 예제에서 age__in이 작동하는지는 알려주지 만, advertiser__eq = "iTunes ...."는 scan()이 실패하고 테이블에 열 광고주가 있고 그 열의 값이 "iTunes ...."인 예기치 않은 키워드 인수 'advertiser__eq' – Tai

    +0

    또한/below는 전송 한 링크의 하위 레벨 파이썬 api – Tai

    0
    1. users 테이블

    2. 이다 나는이 here있는 변수 이름

      입니다 "이것은 정확한 나이입니다".

      소스 코드를 확인한 후에는 인수를 __으로 나눈 것으로 보입니다.

    3. 그렇기 때문에이 경우 끝은 인수 /입니다.당신이 lastEvaluatedKey의 예를해야합니까 @Erben 모