2016-08-23 4 views
0

Redshiftデータベースに3つのテーブルがあり、データはS3から3秒ごとに3つの異なるcsvファイルから取得されています。 1つのテーブルには30億レコードがあり、他のテーブルには1億レコードがあります。ほぼリアルタイムのレポート目的のために、私はこのテーブルを1つのテーブルにマージしなければなりません。どのように赤方偏移でこれを達成するのですか?変換とレポート作成にRedshift Databaseを使用するにはどうすればよいですか?

答えて

1

アマゾン赤方偏移で準リアルタイムデータロード

私は、最初のステップは、赤方偏移は、あなたが検討しているワークロードに最適なプラットフォームであるかどうかを検討することであると言うでしょう。 Redshiftはストリーミングデータの最適なプラットフォームではありません。

Redshiftのアーキテクチャは、ストリーミングインサートよりもバッチインサートに適しています。 Redshiftでは、 "COMMIT"はコストがかかります。

これらの操作がストリーミングデータでリソースと競合する場合は、VACUUMとANALYZEのパフォーマンスへの影響を考慮する必要があります。

Redshiftを使用するには、要件と作業負荷全体に応じてプロジェクトでRedshiftを使用するのが理にかなっていますが、Redshiftを使用するにはエンジニアリングを行い、おそらく作業負荷をマイクロバッチアーキテクチャに「ほぼリアルタイム」で対応します。

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

それを要約するために:

  • ブレーク入力ファイル---スライス
  • 列エンコーディングの数の倍数であるいくつかの小さなファイル であなたのロードファイルをブレーク---列を持っていますあなたのDDLであらかじめ定義されたエンコーディング。
  • コピー設定---あなたの入力ファイルが あなたのソートと同じ「自然順」を持っている必要があります可能であれば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.

関連する問題