如何逐步扫描AWS dynamoDb中的数据

时间:2015-03-03 03:16:58

标签: amazon-dynamodb

我在AWS dynamoDb中创建了一个只有一个哈希键的表。目前它拥有超过2000万条数据,每天都会插入数千个数据。

最近,我想每天将这些数据从dynamoDb提取到本地硬盘。我写了一个小程序来使用扫描操作来保存它们。数据的总大小不大,大约10G,但扫描过程中的时间成本每天近5小时。当然,考虑到费用,我没有设置更大的读取吞吐量。

我的问题是:有没有办法逐步扫描这些数据,这意味着我只需要复制新插入的数据,而不是整个数据库。我曾尝试使用withExclusiveStartKey,但找不到新插入的数据,可能是因为lastKeyEvaluated仅描述了特定细分的最后一个关键字。

1 个答案:

答案 0 :(得分:1)

您可以在表格上创建LSI,然后使用

查询表格

默认情况下,如果您希望按降序排列,则可以按顺序给出结果,您可以使用" ScanIndexForward" =>假,

E.g

 $response = $this->dbClient->query(array(
            "TableName" => $this->tableName,
            "IndexName" => "TableNameIndex",
            "KeyConditions" => array(
                "Id" => array(
                    "ComparisonOperator" => ComparisonOperator::EQ,
                    "AttributeValueList" => array(
                        array(Type::NUMBER => $this->getId())
                    )
                )
            ),
            "ScanIndexForward" => false,
        ));

您将在递减模型中获得结果。

如果您想要前50个记录,那么您也可以设置限制

'limit' => Number;

希望它会对你有所帮助。