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

ステップ 1: テストデータセットを作成する

データウェアハウスデータベースは一般的に、スタースキーマ設計を使用します。この設計では、中央のファクトテーブルにデータベースのコアデータが格納され、複数のディメンションテーブルにファクトテーブルの内容を示す属性情報が格納されます。ファクトテーブルは、ディメンションのプライマリキーと一致する外部キーを使用して各ディメンションテーブルを結合します。

スタースキーマベンチマーク (SSB)

このチュートリアルでは、スタースキーマベンチマーク (SSB) スキーマに基づいた 5 つのテーブルをセットとして使用します。以下の図に示しているのは SSB データモデルです。

テストデータセットを作成するには

ソートキー、分散スタイル、または圧縮エンコードを使用しないでテーブルのセットを作成します。続いて、SSB データセットのデータをテーブルにロードします。

  1. (省略可能) クラスターを起動します。

    使用するクラスターがすでにある場合は、この手順を省略できます。クラスターには 2 つ以上のノードが必要です。このチュートリアルの演習では、4 ノードクラスターを使用します。

    4 ノード構成の dc1.large クラスターを起動するには、Amazon Redshift 入門ガイド の手順に従いますが、[Cluster Type] には [Multi Node] を選択し、[Number of Compute Nodes] は 4 に設定します。

    SQL クライアントからクラスターに接続して接続をテストする手順に従います。その後のテーブルの作成、データのアップロード、クエリ例の試行の手順を完了する必要はありません。

  2. 必要最小限の属性を使用して SSB テストテーブルを作成します。

    注記

    SSB テーブルが現在のデータベースにすでにある場合は、まずそのテーブルを削除する必要があります。DROP TABLE コマンドについては、「ステップ 6: テストデータセットを再作成する」を参照してください。

    このチュートリアルでは、テーブルを初めて作成するユーザーを対象にしているため、ソートキー、分散スタイル、または圧縮エンコードは使用しません。

    以下の CREATE TABLE コマンドを実行します。

    Copy
    CREATE TABLE part ( p_partkey INTEGER NOT NULL, p_name VARCHAR(22) NOT NULL, p_mfgr VARCHAR(6) NOT NULL, p_category VARCHAR(7) NOT NULL, p_brand1 VARCHAR(9) NOT NULL, p_color VARCHAR(11) NOT NULL, p_type VARCHAR(25) NOT NULL, p_size INTEGER NOT NULL, p_container VARCHAR(10) NOT NULL ); CREATE TABLE supplier ( s_suppkey INTEGER NOT NULL, s_name VARCHAR(25) NOT NULL, s_address VARCHAR(25) NOT NULL, s_city VARCHAR(10) NOT NULL, s_nation VARCHAR(15) NOT NULL, s_region VARCHAR(12) NOT NULL, s_phone VARCHAR(15) NOT NULL ); CREATE TABLE customer ( c_custkey INTEGER NOT NULL, c_name VARCHAR(25) NOT NULL, c_address VARCHAR(25) NOT NULL, c_city VARCHAR(10) NOT NULL, c_nation VARCHAR(15) NOT NULL, c_region VARCHAR(12) NOT NULL, c_phone VARCHAR(15) NOT NULL, c_mktsegment VARCHAR(10) NOT NULL ); CREATE TABLE dwdate ( d_datekey INTEGER NOT NULL, d_date VARCHAR(19) NOT NULL, d_dayofweek VARCHAR(10) NOT NULL, d_month VARCHAR(10) NOT NULL, d_year INTEGER NOT NULL, d_yearmonthnum INTEGER NOT NULL, d_yearmonth VARCHAR(8) NOT NULL, d_daynuminweek INTEGER NOT NULL, d_daynuminmonth INTEGER NOT NULL, d_daynuminyear INTEGER NOT NULL, d_monthnuminyear INTEGER NOT NULL, d_weeknuminyear INTEGER NOT NULL, d_sellingseason VARCHAR(13) NOT NULL, d_lastdayinweekfl VARCHAR(1) NOT NULL, d_lastdayinmonthfl VARCHAR(1) NOT NULL, d_holidayfl VARCHAR(1) NOT NULL, d_weekdayfl VARCHAR(1) NOT NULL ); CREATE TABLE lineorder ( lo_orderkey INTEGER NOT NULL, lo_linenumber INTEGER NOT NULL, lo_custkey INTEGER NOT NULL, lo_partkey INTEGER NOT NULL, lo_suppkey INTEGER NOT NULL, lo_orderdate INTEGER NOT NULL, lo_orderpriority VARCHAR(15) NOT NULL, lo_shippriority VARCHAR(1) NOT NULL, lo_quantity INTEGER NOT NULL, lo_extendedprice INTEGER NOT NULL, lo_ordertotalprice INTEGER NOT NULL, lo_discount INTEGER NOT NULL, lo_revenue INTEGER NOT NULL, lo_supplycost INTEGER NOT NULL, lo_tax INTEGER NOT NULL, lo_commitdate INTEGER NOT NULL, lo_shipmode VARCHAR(10) NOT NULL );
  3. SSB サンプルデータをテーブルにロードします。

    このチュートリアルのサンプルデータがあるのは、認証済みのすべての AWS ユーザーに読み取りアクセスを許可する Amazon S3 バケット内であるため、Amazon S3 へのアクセスを許可する有効な AWS 認証情報はすべて機能します。

    1. 以下の SQL を含めた新しいテキストファイルを loadssb.sql という名前で作成します。

      Copy
      copy customer from 's3://awssampledbuswest2/ssbgz/customer' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip compupdate off region 'us-west-2'; copy dwdate from 's3://awssampledbuswest2/ssbgz/dwdate' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip compupdate off region 'us-west-2'; copy lineorder from 's3://awssampledbuswest2/ssbgz/lineorder' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip compupdate off region 'us-west-2'; copy part from 's3://awssampledbuswest2/ssbgz/part' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip compupdate off region 'us-west-2'; copy supplier from 's3://awssampledbuswest2/ssbgz/supplier' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' gzip compupdate off region 'us-west-2';
    2. <Your-Access-Key-ID><Your-Secret-Access-Key> を自身の AWS アカウント認証情報に置き換えます。一重引用符で囲まれている認証情報文字列のセグメントには、スペースや改行を含めることはできません。

    3. COPY コマンドを実行します。そのためには、SQL スクリプトを実行するか、それらのコマンドを SQL クライアントに貼り付けます。

      注記

      ロードオペレーションは、5 つのすべてのテーブルに対して完了するまでに、約 10 〜 15 分かかります。

      結果は以下のようになります。

      Copy
      Load into table 'customer' completed, 3000000 record(s) loaded successfully. 0 row(s) affected. copy executed successfully Execution time: 10.28s (Statement 1 of 5 finished) ... ... Script execution finished Total script execution time: 9m 51s
  4. 5 つのすべてのテーブルの実行時間を合計するか、スクリプトの合計実行時間を記録します。その時間はステップ 2 でベンチマークテーブルにロード時間として記録します。

  5. 各テーブルが正しくロードされていることを確認するには、以下のコマンドを実行します。

    Copy
    select count(*) from LINEORDER; select count(*) from PART; select count(*) from CUSTOMER; select count(*) from SUPPLIER; select count(*) from DWDATE;

    以下の結果の表に示しているのは、各 SSB テーブルの行数です。

    テーブル名 Rows
    LINEORDER 600,037,902
    PART 1,400,000
    CUSTOMER 3,000,000
    SUPPLIER 100 万回
    DWDATE 2,556

次のステップ

ステップ 2: システムパフォーマンスをテストしてベースラインを確定する