如何使用Redshift数据库进行转换和报告?

时间:2016-08-23 15:38:35

标签: amazon-redshift

我的redshift数据库中有3个表,数据来自S3的3个不同的csv文件,每隔几秒钟。一张表有大约30亿条记录,另外两张有大约1亿条记录。对于近乎实时的报告目的,我必须将此表合并到1个表中。我如何在红移中实现这一目标?

1 个答案:

答案 0 :(得分:1)

Amazon Redshift中的近实时数据加载

我想说第一步是考虑Redshift是否是您正在考虑的工作量的最佳平台。 Redshift不是流媒体数据的最佳平台。

Redshift的架构比流式插入更适合批量插入。 " COMMIT" s"昂贵"在Redshift。

如果这些操作要与流数据竞争资源,则需要考虑VACUUM和ANALYZE对性能的影响。

根据整个需求和工作负载,在项目中使用Redshift可能仍然有意义,但请记住,为了使用Redshift,您将围绕它进行工程设计,并且可能会改变您的工作负载。 #34;近实时"微批建筑。

This blog posts details all the recommendations for micro batch loads in Redshift. Read the Micro-batch article here

总结一下:

  • 打破输入文件---将您的加载文件分成几个较小的文件 这是切片数量的倍数
  • 列编码---在DDL中预定义列编码。
  • COPY设置---确保COPY不会尝试评估最佳效果 每个负载的编码
  • 按SORT键顺序加载---如果可能,您的输入文件应该有 相同的"自然顺序"作为您的排序键
  • 临时表---使用多个临时表并加载它们 平行。
  • 多个时间序列表--- This documented approach for dealing with time-series in Redshift
  • ELT ---使用SQL加载到数据库中进行转换 主要事实表。

Of course all the recommendations for data loading in Redshift still apply. Look at this article here

Last but not least, enable Workload Management to ensure the online queries can access the proper amount of resources. Here is an article on how to do it.