1
  1. 为多个传输流设置一个 s3 存储桶是个好主意吗?(例如:考虑两个具有不同流吞吐量、s3 缓冲区大小/缓冲区间隔的传输流......)

  2. 如果两个交付流(S1、S2)正在将数据路由到 redshift。S1 将数据传送到 T1,S2 传送到 T2。在 T2 中,T1 上有一个外键约束。是否可以保证当 S2 向 T2 传递数据(D2)时,D2 引用的 T1 中的所有记录都已被 S1 传递?(即交付流中存在依赖关系)

顺便说一句,我正在使用 firehose 将我的应用程序日志推送到 redshift 以进行分析。

4

2 回答 2

1
  1. S3 存储桶旨在存储几乎无限的数据,因此您的问题的答案是肯定的。
  2. 即使您可以定义外键,Redshift 实际上也不会强制执行它们。从这里的文档,

唯一性、主键和外键约束仅供参考;它们不是由 Amazon Redshift 强制执行的。尽管如此,主键和外键被用作计划提示,如果您的 ETL 过程或应用程序中的某些其他过程强制执行它们的完整性,则应声明它们。

于 2016-06-17T14:41:54.130 回答
0

假设:T1 和 T2 是同一个 Redshift 集群中的表。

您可以(实际上)拥有任意数量的 S3 存储桶。对两个传输流使用相同的 S3 存储桶不是一个好主意,因为 Redshift 执行的将数据加载到集群中的 COPY 命令将针对两个传输流查看相同的 Manifest 文件夹。

来自 Amazon Kinesis Firehose 常见问题:

问:我的 Amazon S3 存储桶中的 manifests 文件夹是什么?

对于 Amazon Redshift 目标,Amazon Kinesis Firehose 生成清单文件以将 Amazon S3 对象批量加载到 Redshift 集群。manifests 文件夹存储由 Firehose 生成的清单文件。

于 2017-06-05T19:49:04.683 回答