GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

awslabs

amazon-redshift-utils – Amazon Redshift Utilsには、Redshift環境で便利なユーティリティ、スクリプト、およびビ..

投稿日:

Amazon Redshift Utilsには、Redshift環境で便利なユーティリティ、スクリプト、およびビューが含まれています

Amazon Redshift Utilities

著作権2014 Amazon.com、Inc.またはその関連会社。 全著作権所有。

Amazonソフトウェアライセンス(以下「ライセンス」)に基づいて使用許諾されます。 ライセンスに従わない限り、このファイルを使用することはできません。 ライセンスのコピーは、次の場所にあります。

http://aws.amazon.com/asl/

Amazon Redshiftは、IOを最小限に抑え、高いデータ圧縮率を提供し、高速なパフォーマンスを提供するために、カラム型ストレージを使用するペタバイト規模の高速、完全に管理されたデータウェアハウスソリューションです。 このGitHubには、Amazon Redshiftから最高のパフォーマンスを引き出すのに役立つ一連のスクリプトとユーティリティが用意されています。

管理スクリプト

AdminScriptsディレクトリには、クラスタで診断を実行するための一連のユーティリティがあります

管理者ビュー

AdminViewsディレクトリには、あなたのクラスタを管理し、スキーマDDLを生成するための一連のビューがあります。

列エンコーディングユーティリティ

Redshiftデータベースから最高のパフォーマンスを得るには、データベース表に正しい列エンコーディングが適用されていることを確認する必要があります( http://docs.aws.amazon.com/redshift/latest/dg/t_Compressing_data_on_disk.html )。 列エンコーディングは、列内のデータを圧縮するために使用されるアルゴリズムを指定し、データ型、列内の離散値の一意の数などに基づいて選択されます。 COPYコマンド( http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html )を使用してデータを表にロードすると、列エンコーディングが分析され、デフォルトで適用されます。 Extract / Load / Transform / Load(ELT)プロセスを介して他のテーブルをロードすることができます。これらのテーブルでは、ある時点で列エンコーディングを更新する必要があります。

Redshift Column Encoding Utilityを使用すると、すでにロードされたデータを使用して、確立されたスキーマに最適な列エンコーディングを適用できます。 実行すると、スキーマまたは個々のテーブル全体が分析されます。 ANALYZE COMPRESSION( http://docs.aws.amazon.com/redshift/latest/dg/r_ANALYZE_COMPRESSION.html )コマンドを使用して、表内の列のいずれかが更新を必要とするかどうかを判断し、そうであればスクリプトが生成されます。最適な構造に変換します。

分析&真空ユーティリティ

Redshift Analyze Vacuumユーティリティを使用すると、VACUUMおよびANALYZE操作を自動化することができます。 実行すると、スキーマまたは個々のテーブル全体を分析または消去します。 unsorted、stats off、テーブルのサイズ、stl_explain&stl_alert_event_logのシステムアラートなどの特定のパラメータに基づいて、Redshiftデータベーススキーマ内のこのユーティリティ分析およびバキュームテーブルを更新します。 ‘–analyze-flag’と ‘–vacuum-flag’パラメータをオン/オフすることで、 ‘vacuum-only’または ‘analyze-only’ユーティリティとして実行することができます。 このスクリプトは、定期的なメンテナンス/ハウスキーピング活動の一環として、データベースアクティビティ(静かな期間)が少ないときにVACUUMおよびANALYZEを実行するようにスケジュールできます。

アンロード/コピーユーティリティ

Redshift Unload / Copy Utilityは、Redshift ClusterまたはDatabases間でデータを移行するのに役立ちます。 ソースクラスタからS3上の場所にデータをエクスポートし、すべてのデータはAmazon Key Management Serviceで暗号化されます。 次に、設定されたRedshift Clusterにデータを自動的にインポートし、必要に応じてS3をクリーンアップします。 このユーティリティは、データパイプラインシェルアクティビティの一部として実行されるような、進行中のスケジュールされたアクティビティの一部として使用されることを意図しています( http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-shellcommandactivity .html )。

オートメーションモジュール

このプロジェクトにはAWS Lambda経由でAmazon Redshift Utilitiesを実行できるコードが含まれています。 CloudWatchイベント( http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchEvents.html )を介してスケジュールされたラムダ関数を使用することで、これらの貴重なユーティリティが自動的に実行され、Redshiftクラスタが正常に動作するようにすることができます。

スナップショットマネージャ

このプロジェクトには、Redshiftクラスタが必要なだけ頻繁にバックアップされ、作成されたスナップショットが不要になったら自動的にクリーンアップされるようにするラムダ機能が含まれています。

WLM Query Monitoring Rule(QMR)アクション通知ユーティリティー

このプロジェクトにより、スケジュールされたラムダ関数は、QMRアクションシステムログテーブル(stl_wlm_rule_action)からレコードを取り出し、SNSトピックにパブリッシュすることができます。 このユーティリティーを使用して、独自のワークロードおよびルールの構成に対して実行されたWLM照会監視ルール・アクションに基づいて、定期的な通知を送信することができます。

プレゼンテーション

Amazon-Redshift-Utilsの主な機能を説明するプレゼンテーションをいくつかの例、ヒント、ベストプラクティスを含めて紹介しました:Redshift_DBA_Commands.pptx

調査

このプロジェクトには、さまざまなタイプのRedshiftエッジケース、ニュアンス、およびワークロードシナリオに関する詳細な調査が多数含まれています。

認証

Redshiftパスワードは、ほとんどのツール構成でbase64でエンコードされたKMS暗号化文字列として提供することができます。代わりに、 .pgpassファイルまたは$PGPASS環境変数ベースの認証を使用することもできます。 各モジュールで、またはラムダベースの自動化のためのすべてのモジュールをパッケージ化するには、 .pgpassを使用するにはbuild.shスクリプトを使用してモジュールを再構築する必要がbuild.shますが、期待通りに.pgpassする必要があります。

この機能は顧客からの要請により追加されたものですが、最も安全なソリューションではありません。 これはパスワードを平文で保存します。このパスワードは、モジュールの展開方法によってセキュリティ上の脅威になる可能性があります。 慎重に使用してください!

ドッカーの処刑

Dockerfileは、依存関係をローカルにインストールすることなく、次のユーティリティを実行する環境を提供します。

  • 分析&真空ユーティリティ
  • アンロード/コピーユーティリティ
  • 列エンコーディングユーティリティ

次のようにイメージを構築することでこれを行うことができます:

docker build -t amazon-redshift-utils .

そして、次の3つのコマンドのいずれかを実行します(必要に応じて-eパラメータを入力します)。

docker run --net host --rm -it -e DB=my-database .... amazon-redshift-utils analyze-vacuum
docker run --net host --rm -it -e DB=my-database .... amazon-redshift-utils column-encoding
docker run --net host --rm -it -e CONFIG_FILE=s3://.... amazon-redshift-utils unload-copy

ドッカーのエントリポイントスクリプトは環境変数で動作するので、上記の実行スクリプトにそれらを提供したいと思うでしょう。

便宜上、 .envファイルをローカルに作成し、 --env-file引数を使用してドッカーコンテナにアップロードすることが--env-fileます。 例えば:

docker run --net host --rm -it --env-file .env .... amazon-redshift-utils analyze-vacuum

必要な環境変数設定参照のエントリポイントスクリプトを参照してください。


著作権2014 Amazon.com、Inc.またはその関連会社 全著作権所有。

Amazonソフトウェアライセンス(以下「ライセンス」)に基づいて使用許諾されます。 ライセンスに従わない限り、このファイルを使用することはできません。 ライセンスのコピーは、次の場所にあります。

http://aws.amazon.com/asl/







-awslabs

執筆者: