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 の問題かどうかは誰にもわかりませんか? または私のコードに間違った仮定がありますか?