AWS Firehose中间S3存储桶和传输流依赖关系

时间:2016-06-17 07:19:45

标签: amazon-web-services amazon-s3 amazon-redshift amazon-kinesis amazon-kinesis-firehose

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

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

  3. BTW我正在使用firehose将我的应用程序日志推送到redshift进行分析。

2 个答案:

答案 0 :(得分:1)

  1. S3存储桶旨在存储几乎无限的数据,所以回答你的问题是肯定是的。
  2. 即使您可以定义外键,Redshift实际上并不强制执行 。来自文档here
  3.   

    唯一性,主键和外键约束是信息性的   只要; 它们不是由Amazon Redshift强制执行的。尽管如此,小学   密钥和外键用作计划提示,它们应该是   如果您的ETL过程或您的应用程序中的其他过程声明   强化他们的诚信。

答案 1 :(得分:0)

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

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

来自Amazon Kinesis Firehose FAQ:

  

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

     

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