将数据从 DynamoDB 加载到 Amazon Redshift - Amazon DynamoDB

将数据从 DynamoDB 加载到 Amazon Redshift

Amazon Redshift 为 Amazon DynamoDB 补充高级业务智能和基于 SQL 的强大接口。将 DynamoDB 表中的数据复制到 Amazon Redshift 后,您就可以对这些数据执行复杂的数据分析查询,包括与 Amazon Redshift 集群中其他表关联。

在预置吞吐量方面,对 DynamoDB 表执行的复制操作会占用该表的读取容量。复制数据后,Amazon Redshift 中的 SQL 查询不会再对 DynamoDB 产生任何影响。这是因为查询针对的是从 DynamoDB 中复制的数据的副本,而不是 DynamoDB 本身。

您必须先创建一个 Amazon Redshift 表用作存储数据的目标位置,然后才能从 DynamoDB 表加载数据。请注意,您是将数据从 NoSQL 环境复制到了 SQL 环境,两个环境之间有一些规则并不通用。以下是一些需要注意的差别:

  • DynamoDB 表名称可以包含多达 255 个字符,包括“.”(点号)和“-”(短划线)字符,并且区分大小写。Amazon Redshift 表名称限制为 127 个字符,不能包含点号或短划线,并且不区分大小写。此外,表名称不能与 Amazon Redshift 保留字冲突。

  • DynamoDB 不支持 NULL 这一 SQL 概念。您需要指定 Amazon Redshift 如何解释 DynamoDB 中的空属性值,是将它们视为 NULL 还是视为空字段。

  • DynamoDB 数据类型与 Amazon Redshift 的数据类型不直接对应。您需要确保 Amazon Redshift 表中每列的数据类型和大小都正确,以容纳来自 DynamoDB 的数据。

以下是 Amazon Redshift SQL 中的 COPY 命令示例:

copy favoritemovies from 'dynamodb://my-favorite-movies-table' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' readratio 50;

在此示例中,DynamoDB 中的源表是 my-favorite-movies-table。Amazon Redshift 中的目标表是 favoritemoviesreadratio 50 语句用于控制所占用的预配置吞吐量百分数;在此示例中,COPY 命令使用的吞吐量不超过为 my-favorite-movies-table 预配置的读取容量单位的 50%。我们强烈建议您将此比率设置为低于未使用的预配置吞吐量的平均值。

有关将 DynamoDB 的数据加载到 Amazon Redshift 的详细说明,请参阅 Amazon Redshift 数据库开发人员指南的以下章节: