CLI命令 - 读取数据

读取数据

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"}}'

image-20230107193900802

默认情况下从DynamoDB中读数据使用最终一致性因为可以相比强一致性省一半的价格

get-item的参数如下:

  • –consistent-read : 使用强一致性
  • –projection-expression : 只返回特定列
  • –return-consume-capacity : 返回结果里告诉这次读消耗了多少capacity

现在使用这三个参数重新请求

aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"101"}}' \
    --consistent-read \
    --projection-expression "ProductCategory, Price, Title" \
    --return-consumed-capacity TOTAL

返回结果:

image-20230107193936961

这个请求消耗了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

输出如下:

image-20230107194106047