2016-08-23 41 views
0

我在我的redshift數據庫中有3個表格,數據來自S3的3個不同的csv文件,每隔幾秒鐘。一張表有30億條記錄,另外2條記錄有1億條記錄。對於近實時報告目的,我必須將此表合併到一個表中。我如何在紅移中實現這一點?如何使用Redshift數據庫進行轉換和報告?

回答

1

亞馬遜紅移近實時數據加載

我會說,第一步是要考慮是否紅移是你正在考慮工作量的最佳平臺。 Redshift不是流數據的最佳平臺。

Redshift的架構比流式插入更適合批量插入。 「提交」在Redshift中是「昂貴的」。

如果這些操作將與流數據競爭資源,則需要考慮VACUUM和ANALYZE的性能影響。

根據整套要求和工作量,在您的項目中使用Redshift可能仍然有意義,但請記住,爲了使用Redshift,您將圍繞它進行工程設計,並且可能會將工作量從「近實時」到微量批處理架構。

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

爲了總結一下:

  • 歇輸入文件---打破幾個你的負載文件大小的文件 是切片的數量
  • 列的編碼的多---有柱編碼預先定義在您的DDL中。
  • 複印設置---確保COPY不嘗試評估最佳 編碼爲每個負載
  • 負載在排序鍵順序 - 如果可能的話你的輸入文件應該有 相同的「自然秩序」作爲排序鍵
  • 暫存表---使用多個暫存表並將它們加載到 並行中。
  • 多時間序列表--- 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.

相關問題