DynamoDB vs Redshift

DynamoDB 和 Amazon Redshift 很少是二选一。DynamoDB 是运营数据库——对已知键的个位数毫秒级读写,服务实时应用流量。Redshift 是 "a fully managed, petabyte-scale data warehouse service in the cloud," 为扫描和聚合大型数据集做报表与分析而构建。同时运行两者的团队才是常态,AWS 也提供了在二者之间单向搬运数据的托管集成。

你该用 DynamoDB 还是 Redshift?

DynamoDB 用于应用的实时数据:正在下的订单、正在读的会话、按键取出的记录。把 Redshift 用于需要跨整个数据集提问的场景——按区域和月份的收入、队列留存、连接多个来源的仪表板。"选哪一个"通常归结为"DynamoDB 走写入路径,Redshift 给分析师",中间是零 ETL 集成。

DynamoDB vs Redshift 速览

特性DynamoDBRedshift
工作负载运营型(OLTP 风格)——高容量按键读写分析型——扫描和聚合大型数据集
数据模型无 schema 的 NoSQL 项目,最大 400 KB;每项属性各异关系型表,带声明式列、分布键和排序键
查询语言原生 API(GetItemQueryScan、…)加上 PartiQL完整 SQL,以及随之而来的 BI 和 SQL 工具链
联接与聚合无服务端联接;聚合不是服务端操作联接、窗口函数、GROUP BY 以及分析型 SQL 的其余部分
访问模式围绕已知键设计;Scan 是昂贵的例外为扫描而设计——读取大量行是常态
延迟每次请求个位数毫秒每次分析查询数秒到数分钟,覆盖远多数据
扩展无服务器;分区由 AWS 管理无服务器工作组或预置集群;容量按查询工作负载定规格
新鲜度按需读你所写取决于加载方式——零 ETL 集成每 15–30 分钟落地更新
定价模型按请求或预置容量,加存储计算容量加存储;空闲的无服务器仓库不计计算费用

何时 DynamoDB 是更好的选择

  • 实时应用流量。 对已知键可预测的个位数毫秒读写,任意请求速率。
  • 每项 schema 各异。 DynamoDB 一张表里的异构项目很正常;数据仓库需要声明式列。
  • 无服务器运维。 没有需要定规格、打补丁或暂停的集群。
  • 写入密集型路径。 DynamoDB 以吸收高容量写入为主业;数据仓库为批量加载和读取而优化。

何时 Redshift 是更好的选择

  • 跨整张表的问题。 聚合一年的订单本质上是扫描,正是 DynamoDB 要你避免的访问模式,也是 Redshift 为之设计的模式。
  • 跨多个来源的联接。 数据仓库做联接。DynamoDB 没有服务端联接。
  • BI 工具。 Redshift 通过 JDBC/ODBC 说 SQL,因此能接入现有仪表板和 "the same SQL-based tools and business intelligence applications that you use today."
  • 不能打扰生产的分析。 在副本上跑分析,把负载从服务用户的表上挪开。

搭配使用

标准模式是单向的:DynamoDB 服务应用,副本落到 Redshift,分析师在副本上工作。AWS 支持两条路径——较老的 COPY 命令,可直接 "from Amazon S3 or Amazon DynamoDB into Amazon Redshift," 以及托管零 ETL 集成,自行保持副本最新。

零 ETL 集成实际做什么

"Zero-ETL" 听起来像实时视图。它不是,在设计仪表板之前这些细节很重要。

它是定时复制的管道。 AWS 写得很精确:"On activation, the integration exports the full DynamoDB table to populate the Amazon Redshift database." 然后 "the zero-ETL integration then incrementally replicates updates from DynamoDB to Amazon Redshift every 15-30 minutes using DynamoDB incremental exports." 因此 Redshift 中的数据最多滞后半小时。这对日报没问题,对需要反映用户上一动作的任何界面则是错的。

时间点恢复(PITR)是强制前提——原因现在很清楚了。 前提写得很直白:"A zero-ETL integration between Amazon DynamoDB and Amazon Redshift requires your source DynamoDB table to have Point-in-time recovery (PITR) enabled." AWS 在一处写要求,在另一处写机制,却没有把它们连起来,但你必须附加的基于资源的策略暴露了真相——它授予 redshift.amazonaws.com 执行 dynamodb:ExportTableToPointInTime 的权限。集成建立在 DynamoDB 导出到 S3 的机械装置上,而该装置从连续备份读取。没有 PITR,就没有导出,也就没有集成。

这有一个人们很晚才碰到的预算后果:在大表上启用 PITR 是按表大小持续收费,为分析管道而非为恢复而承担。把集成定价为"Redshift 加 PITR",而不是 Redshift 单独——免费的 DynamoDB 定价计算器 能在你承诺之前估算存储侧成本。

两个会卡住现有表的约束。 二者都是文档化的限制,事后修复都很别扭:

  • "The DynamoDB table and Amazon Redshift cluster need to be in the same Region." 合并多个区域的数据仓库无法通过这条路径全部拉入。
  • "The source DynamoDB table must be encrypted with either an Amazon-owned or Customer-managed AWS KMS key. Amazon managed encryption is not supported for the source DynamoDB table." 在 AWS 托管加密下创建的表需要先改加密设置才能创建集成。

数据形状会在哪里咬你。 DynamoDB 项目按设计就是异构的;数据仓库表有列。在单一分区键约定下存放多种实体类型的单表设计,复制过去不会自动变成干净的星型 schema。数据落地后要在 Redshift 里做建模工作——集成去掉的是管道,不是 schema 设计。

何时你还不需要数据仓库

并非每个聚合都是分析问题。大量"我们应该放进 Redshift"的起点只是一个问题——这个状态有多少项、这位客户的总额是多少、哪些分区键占主导——偶尔由工程师针对一张表提出。

DynoTable 的 SQL Workbench 直接在 DynamoDB 上按需回答这类问题:真正的 SQL,带 COUNTSUMAVGMINMAXGROUP BYHAVINGDISTINCT,以及 INNER/LEFT JOIN。定位刻意收窄——在 DynamoDB 的访问模式规则内的 SQL。它是单个 SELECT;没有 CTE、没有 UNION、没有窗口函数,也没有标量子查询;联接目标必须是分区键或 GSI 分区键。结果流式返回并带部分结果标记,查询跑完后变为精确,读取数据仍然按读取计费。

这不是数据仓库的替代品,上面的限制就是诚实的边界。但它比复制管道、PITR 费用和 schema 设计更快给出答案——并帮你在建仓之前判断这个问题是否值得一个数据仓库。运行 Workbench 查询是付费功能;编辑器和自动补全免费。DynoTable 是一款闭源商业应用;本页描述的是它做什么,而不是它如何构建。

FAQ

Redshift 能取代 DynamoDB 吗?

不能用于应用流量。Redshift 是为扫描和聚合而构建的数据仓库;它不是为高容量按键查找、个位数毫秒延迟而设计的。二者并行运行,DynamoDB 服务应用,Redshift 中的副本服务分析。

Redshift 中的 DynamoDB 数据有多新?

使用零 ETL 集成时,最多大约滞后 30 分钟。AWS 文档写明,初始全量导出后它 "incrementally replicates updates from DynamoDB to Amazon Redshift every 15-30 minutes using DynamoDB incremental exports." 把它当作近实时报表,而不是实时视图。

为什么零 ETL 集成要求 PITR?

因为它建立在 DynamoDB 的时间点导出上。集成所需的基于资源的策略授予 Amazon Redshift dynamodb:ExportTableToPointInTime 操作,而该导出从 PITR 维护的连续备份读取。因此启用 PITR 是集成真实、持续的成本。

相关内容

参考资料

2026-08-02 对照官方 AWS Redshift 管理指南和 DynamoDB 开发人员指南核验。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。