Scan命令会扫描全表并最大返回1MB,scan操作不适合用于大表。我们的数据量很小,先查看ProductCatalog
表:
aws dynamodb scan --table-name ProductCatalog
返回数据如下:
{
"Items": [
{
"Title": {
"S": "18-Bike-204"
},
"Price": {
"N": "500"
},
"Brand": {
"S": "Brand-Company C"
},
"Description": {
"S": "205 Description"
},
"Color": {
"L": [
{
"S": "Red"
},
{
"S": "Black"
}
]
},
"ProductCategory": {
"S": "Bicycle"
},
"Id": {
"N": "205"
},
"BicycleType": {
"S": "Hybrid"
}
},
{
"Title": {
"S": "19-Bike-203"
},
"Price": {
"N": "300"
},
"Brand": {
"S":
....
如果我们只想读取一条记录,可以使用GetItem API ,执行的时候需要指定Primary Key:
aws dynamodb get-item \
--table-name ProductCatalog \
--key '{"Id":{"N":"101"}}'
默认情况下从DynamoDB中读数据使用最终一致性因为可以相比强一致性省一半的价格
get-item
的参数如下:
现在使用这三个参数重新请求
aws dynamodb get-item \
--table-name ProductCatalog \
--key '{"Id":{"N":"101"}}' \
--consistent-read \
--projection-expression "ProductCategory, Price, Title" \
--return-consumed-capacity TOTAL
返回结果:
这个请求消耗了1个RCU,因为条目小于4K,如果把 –consistent-read参数去掉,我们看到最终一致性 读会消耗一半的capacity:
aws dynamodb get-item \
--table-name ProductCatalog \
--key '{"Id":{"N":"101"}}' \
--projection-expression "ProductCategory, Price, Title" \
--return-consumed-capacity TOTAL
输出如下: