【问题标题】:Backup only new records from DynamoDB to S3 and load them into RedShift仅将新记录从 DynamoDB 备份到 S3 并将它们加载到 RedShift
【发布时间】:2016-03-22 11:48:13
【问题描述】:

我看到类似的问题已经存在:

Backup AWS Dynamodb to S3

Copying only new records from AWS DynamoDB to AWS Redshift

Loading data from Amazon dynamoDB to redshift

不幸的是,它们中的大多数已经过时(因为亚马逊推出了新服务)和/或有不同的答案。

就我而言,我有两个数据库(RedShift 和 DynamoDB),我必须:

  • 使 RedShift 数据库保持最新
  • 在 S3 上存储数据库备份

为此,我想使用该方法:

  1. 仅备份新的/修改的记录 一天结束时从 DynamoDB 到 S3。 (每天 1 个文件)
  2. 使用 S3 中的文件更新 RedShift 数据库

所以我的问题是最有效的方法是什么?

我阅读了this tutorial,但我不确定 AWS Data Pipeline 是否可以配置为仅“捕获”来自 DynamoDB 的新记录。如果无法做到这一点,则不能每次都扫描整个数据库。

提前谢谢你!

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-dynamodb amazon-redshift amazon-data-pipeline


    【解决方案1】:

    您可以将 Amazon Lambda 与 dynamodb 流 (documentation) 一起使用

    您可以配置您的 lambda 函数以获取更新的记录(来自 dynamodb 流),然后更新 redshift db

    【讨论】:

    • 在该示例中,他们使用附加到 DynamoDB Stream 的 Lambda 函数。每次 DynamoDB 更改(插入/修改)时都会调用 Lambda。这样我应该从 S3 读取整个“日志”文件然后更新它。也许我需要安排 Lambda 在一天结束时只执行一次。
    • 我不明白 s3 日志文件的使用。有了 lambda,你就不需要它了
    • 我正在使用 s3 文件作为数据库备份。另一个原因是:“COPY 加载大量数据比使用 INSERT 语句更有效,并且也更有效地存储数据。”此外,如果我需要恢复一些数据,我不需要从 DynamoDb 再次读取它
    • 是的,所以在这种情况下,您可以将所有 dynamodb 更新记录到一个文件中,然后将其从 s3 加载到 dynamodb
    • 是的,这就是我想要的。我在想我可以通过 Data Pipeline 实现这一目标。但如果没有其他答案 - 我应该写一个 lambda(s) 来做到这一点。
    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多