【问题标题】:Copying only new records from AWS DynamoDB to AWS Redshift仅将新记录从 AWS DynamoDB 复制到 AWS Redshift
【发布时间】:2014-01-25 15:12:55
【问题描述】:

我看到有大量示例和文档可以将数据从 DynamoDB 复制到 Redshift,但我们正在研究一个增量复制过程,其中仅将新行从 DynamoDB 复制到 Redshift。我们将每天运行此复制过程,因此无需每天杀死整个 redshift 表。有人对此主题有任何经验或想法吗?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb amazon-redshift


    【解决方案1】:

    如果您的 DynamoDB 表可以有

    时间戳作为属性或

    将数据新鲜度作为属性传递的二进制标志

    然后您可以编写一个配置单元查询以仅将当天的数据或新数据导出到 s3,然后“KEEP_EXISTING”将此增量 s3 数据复制到 Redshift。

    【讨论】:

      【解决方案2】:

      Dynamo DB 有一个名为 Streams 的功能(目前处于预览阶段):

      Amazon DynamoDB Streams 维护按时间排序的项目序列 日志中任何 DynamoDB 表中的级别更改持续时间为 24 小时。使用 Streams API,开发人员可以查询更新, 接收变更前后的项目级数据,并使用 为他们构建的应用程序构建创造性的扩展 DynamoDB。

      此功能将允许您在新更新进入时对其进行处理并按照您的意愿使用它们,而不是在 DynamoDB 之上设计一个导出系统。

      您可以在Reading and Processing DynamoDB Streams 文档中查看有关处理工作原理的更多信息。

      【讨论】:

        【解决方案3】:

        redshift 的拷贝只能拷贝整个表。有几种方法可以实现这一目标

        1. 使用 AWS EMR 集群和 Hive - 如果您设置 EMR 集群,则可以使用 Hive 表对 dynamodb 数据执行查询并移动到 S3。然后可以轻松地将这些数据移至 redshift。

        2. 您可以根据访问模式存储 dynamodb 数据(请参阅http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.TimeSeriesDataAccessPatterns)。如果我们这样存储数据,那么dynamodb表复制到redshift后就可以删除了

        【讨论】:

          【解决方案4】:

          这可以通过仅跟踪自上次备份以来更改的键的辅助 DynamoDB 表来解决。无论初始 DynamoDB 表何时更新(添加、更新、删除),都必须更新此表。在备份过程结束时,您将删除它们或在备份一行后(一个接一个)。

          【讨论】:

          • 即使我使用辅助表,也无法从 redshift 的复制命令中获取这些行。您在这里指的是什么备份过程? Redshift 还是自定义流程?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-12
          • 2018-11-19
          • 1970-01-01
          • 1970-01-01
          • 2020-06-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多