Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

将 DynamoDB 中的数据加载到 Amazon Redshift

Amazon Redshift 凭借高级业务智能功能和基于 SQL 的强大界面对 Amazon DynamoDB 进行补充。将 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
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 Database Developer Guide 中的以下章节: