Amazon web services 从dynamoDb中提取数据并将其移动到另一个表的最佳方法

Amazon web services 从dynamoDb中提取数据并将其移动到另一个表的最佳方法,amazon-web-services,amazon-dynamodb,extract,etl,Amazon Web Services,Amazon Dynamodb,Extract,Etl,我有一张500gb的桌子。我想根据时间戳将数据传输到另一个表。 表中有几个项目,我只需要另一个表中每个项目的最新条目 考虑到表的大小,有谁能推荐最好的aws服务来快速、轻松地完成它 我遇到过aws胶水,hivecopyactivity。这是最好的解决方案还是我可以使用任何其他服务?(假设您现在可以在该表上添加一个全局二级索引(GSI),即:您当前有

我有一张500gb的桌子。我想根据时间戳将数据传输到另一个表。 表中有几个项目,我只需要另一个表中每个项目的最新条目

考虑到表的大小,有谁能推荐最好的aws服务来快速、轻松地完成它

我遇到过aws胶水,hivecopyactivity。这是最好的解决方案还是我可以使用任何其他服务?

(假设您现在可以在该表上添加一个全局二级索引(GSI),即:您当前有<5个GSI)

在表上定义一个新的GSI。GSI的分区键将是
x
。GSI的排序键将是
时间戳
。一旦定义了GSI,您就可以对该索引执行一次检查,将
ScanIndexForward
设置为
false
,首先获取最新的项目。您需要提供感兴趣的
x
的值。在下面的请求示例中,它被简单地设置为
'abc'

{
    "TableName": "<your-table-name>",
    "IndexName": "<your-GSI-name>",
    "KeyConditionExpression": "x = :argx",
    "ExpressionAttributeValues": {
        ":argx": {"S": "abc"}
    },
    "ScanIndexForward": false,
    "Limit": 1
}
{
“表名”:“,
“IndexName”:“,
“KeyConditionExpression”:“x=:argx”,
“ExpressionAttributeValue”:{
“:argx”:{“S”:“abc”}
},
“ScanIndexForward”:false,
“限额”:1
}
此查询查看具有给定
x
值(在
ExpressionAttributeValues
字段中设置)的项目,该值按降序排序(通过GSI的排序键,即
时间戳
字段),并选择第一个(
限制
设置为
1
)。只要不需要筛选(FilterExpression字段为空),就可以通过发出单个查询请求来获得所需的结果


如果确实要使用筛选,则需要执行多个请求并取消设置
限制
字段(即使用其默认值)。有关这些细节的详细信息,请参阅。

该表的分区键和排序键(如果有)是什么?“基于时间戳”:每个项目中是否都有时间戳字段?如果没有,在哪里定义了项目的时间戳?那个表上有多少全局二级索引?还有一个问题,关于“我只想要每个项目的最新条目”。更新原始表时会发生什么情况(添加了具有较新时间戳的条目)。是否也要更新第二个表?如果是这样,那么应用程序可以容忍的传播延迟是多少?@ItayMan该表在提取期间将被冻结。是的,DB中的每个条目都有时间戳。分区和排序键是不同的。我对另一个列感兴趣,我想要它的最新条目。“最新条目”:具有相同主键的最新条目?是否使用相同的主键+排序键?还有别的吗?@Itayman还有别的。列x:String既不是主键也不是排序键。我必须得到x的最新条目。对不起,我有一些新信息。我感兴趣的列是排序键。这会改变你的回答吗@ItayManis'x'是排序键还是'timestamp'是排序键?x是排序键然后我的答案没有改变现在要求已经改变了。现在我需要考虑两列和时间戳。所以,现在我需要两列x和y的每个唯一组合的最新条目@伊塔曼