1

dynamodb に問題があります。内部に含まれるデータを検証しようとしていますが、スキャンはデータのサブセットのみを返すようです。これは、python boto バインディングで使用しているコードです。

#!/usr/bin/python
#Check the scanned length of a table against the Table Description
import boto.dynamodb
#Connect
TABLENAME = "MyTableName"
sdbconn = boto.dynamodb.connect_to_region(
    "eu-west-1",
    aws_access_key_id='-snipped-',
    aws_secret_access_key='-snipped-')

#Initial Scan
results = sdbconn.layer1.scan(TABLENAME,count=True)
previouskey = results['LastEvaluatedKey']

#Create Counting Variable
count = results['Count']

#DynamoDB scan results are limited to 1MB but return a Key value to carry on for the next MB
#so loop untill it does not return a continuation point
while previouskey != False:
    results = sdbconn.layer1.scan(TABLENAME,exclusive_start_key=previouskey,count=True)
    print(count)
    count = count + results['Count']
    try:
        #get next key
        previouskey = results['LastEvaluatedKey']
    except:
        #no key returned so thats all folks!
        print(previouskey)
        print("Reached End")
        previouskey = False

#these presumably should match, they dont on the MyTableName Table, not even close
print(sdbconn.describe_table(TABLENAME)['Table']['ItemCount'])
print(count)

print(sdbconn.describe_table)私は 1748175 と 583021 を print(count)返します。これらは常に一致するはずだという印象を受けましたか? (私は 6 時間の更新を認識しています) 過去 24 時間で 300 行しか追加されていませんが、これが dynamodb の問題かどうかは誰にもわかりませんか? または私のコードに間違った仮定がありますか?

4

1 に答える 1

2

最後に、それはローカルセカンダリインデックスに関係しており、それらはテーブルの説明に一意のアイテムとして表示され、テーブルには2つのLSIがあり、実際に存在するアイテムの数の3倍が表示されます

于 2013-10-29T10:31:15.140 に答える