メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

データウェアハウスシステムのアーキテクチャ

このセクションでは、次の図で示すような、Amazon Redshift データウェアハウスアーキテクチャの要素について説明します。

クライアントアプリケーション

Amazon Redshift は、さまざまなデータロードおよび ETL (抽出、変換、およびロード) ツールや、ビジネスインテリジェンス (BI) レポート、データマイニング、分析ツールと統合します。Amazon Redshift は業界標準の PostgreSQL が基になっているので、既存のほとんどの SQL クライアントアプリケーションが最小限の変更で動作します。Amazon Redshift SQL と PostgreSQL の重要な相違点については、「Amazon Redshift および PostgreSQL」を参照してください。

接続

Amazon Redshift は、業界標準の PostgreSQL JDBC および ODBC ドライバーを使用して、クライアントアプリケーションと通信します。詳細については、「Amazon Redshift および PostgreSQL JDBC/ODBC」を参照してください。

クラスター

Amazon Redshift データウェアハウスの中核となるインフラストラクチャコンポーネントは、クラスターです。

クラスターは、1 つまたは複数のコンピューティングノードで構成されます。クラスターが 2 つ以上のコンピューティングノードでプロビジョニングされている場合、追加のリーダーノードがコンピューティングノードを調整して、外部の通信を処理します。クライアントアプリケーションはリーダーノードだけと直接通信します。コンピューティングノードは外部アプリケーションからは見えません。

リーダーノード

リーダーノードは、クライアントプログラムおよびコンピューティングノードとのすべての通信を管理します。リーダーノードは、データベース操作を遂行するための実行計画、具体的には複雑なクエリの結果を取得するために必要な一連の手順を解析および作成します。リーダーノードは、実行計画に基づいて、コードをコンパイルし、コンパイル済みのコードをコンピューティングノードに配布してから、データの一部分を各コンピューティングノードに割り当てます。

リーダーノードは、コンピューティングノードに格納されているテーブルがクエリで参照されている場合にのみ、コンピューティングノードに SQL ステートメントを配布します。他のすべてのクエリは、リーダーノードのみで実行されます。Amazon Redshift は、特定の SQL 機能をリーダーノードのみに実装するように設計されています。これらの機能を使用するクエリが、コンピューティングノードに存在するテーブルを参照する場合、エラーが返されます。詳細については、「リーダーノードでサポートされる SQL 関数」を参照してください。

コンピューティングノード

リーダーノードは、実行計画の個別要素のコードをコンパイルし、コードを個々のコンピューティングノードに割り当てます。コンピューティングノードは、コンパイル済みのコードを実行し、中間結果をリーダーノードに返送します。中間結果は、リーダーノードにおいて最終的に集計されます。

各コンピューティングノードの専用 CPU、メモリ、接続されているディスクストレージは、ノードのタイプによって異なります。ワークロードが増えるに従って、ノードの数を増やすかノードの種類をアップグレードして、または両方を行って、クラスターのコンピューティング能力とストレージ容量を増強できます。

Amazon Redshift には、高密度ストレージノードと高密度コンピューティングノードの 2 つのノードタイプがあります。各ノードでは、ストレージの選択肢が 2 種類あります。160 GB ノード 1 個から始めて、16 TB ノード複数個まで拡張できるため、ペタバイト以上のデータをサポートできます。

データウェアハウスのクラスターおよびノードの詳細については、「内部アーキテクチャとシステム操作」を参照してください。

ノードスライス

コンピューティングノードはスライスに分割されています。各スライスは、ノードのメモリとディスク容量の一部を割り当てられて、ノードに割り当てられたワークロードの一部分を処理します。リーダーノードは、スライスへのデータの分散を管理し、クエリまたは他のデータベース操作のワークロードをスライスに分配します。スライスは、並列処理を行って操作を完了します。

ノードあたりのスライスの数は、クラスターのノードサイズによって決まります。それぞれのノードサイズにおけるスライスの数については、Amazon Redshift Cluster Management Guide の「クラスターおよびノードについて」を参照してください。

テーブルを作成するときは、必要に応じて 1 つの列を分散キーとして指定できます。テーブルにデータがロードされるときは、テーブルに対して定義されている分散キーに従って行がノードスライスに分配されます。適切な分散キーを選択することにより、Amazon Redshift は並列処理を使用してデータをロードし、クエリを効率よく実行できます。分散キーの選択については、「最適な分散スタイルの選択」を参照してください。

内部ネットワーク

Amazon Redshift は、高帯域幅接続、近接性、およびカスタム通信プロトコルを利用して、リーダーノードとコンピューティングノードの間のプライベートで非常に高速のネットワーク通信を提供します。コンピューティングノードは、クライアントアプリケーションが直接アクセスすることのない別の独立したネットワークで動作します。

データベース

クラスターは、1 つ以上のデータベースで構成されます。ユーザーデータはコンピューティングノードに格納されます。SQL クライアントはリーダーノードと通信し、リーダーノードはコンピューティングノードでのクエリの実行を調整します。

Amazon Redshift はリレーショナルデータベース管理システム (RDBMS) なので、他の RDBMS アプリケーションと互換性があります。Amazon Redshift は、標準的な RDBMS と同じ機能 (データの挿入や削除といったオンライントランザクション処理 (OLTP) 機能など) を提供しますが、非常に大きいデータセットの高パフォーマンスの分析とレポート向けに最適化されています。

Amazon Redshift は、PostgreSQL 8.0.2 に基づいています。Amazon Redshift と PostgreSQL の間には非常に重要な相違がいくつかあり、データウェアハウスアプリケーションを設計して開発するときはそれを考慮する必要があります。Amazon Redshift SQL と PostgreSQL の違いについては、「Amazon Redshift および PostgreSQL」を参照してください。