AmazonやSalesforceなど、クラウドサービスでの環境構築のお手伝いをすることも増えてきました。
今回は、Amazon Redshiftを使ってみたいと思います。
RedshiftはPostgresqlを元に作られた、データウェアハウスで、
特に大規模データに対するクエリを投げるBI(ビジネスインテリジェンス)などの業務に向いています。
数億件のデータであっても、比較的早くクエリが戻ってきますが、
それゆえ、DBの構造としては通常のデータベースとは異なるところもあります。
例えばMerge処理のような、Insert or Updateを判断してデータ投入を行うクエリは遅いため、
あらかじめS3と呼ばれるデータストレージに投入対象のデータをアップロードして、
更新対象データをDeleteしたうえで、Insertするなどの工夫が必要です。
このあたりのやり方については次回の記事でくわしく述べるとして、
今回はRedshiftのデータベースを新規にセットアップするところまでを重点的に解説します。
クラスタの作成
AWSの契約を済ませたら、最初に、管理コンソールから「Redshift」をクリックして、「Redshift」の管理画面に遷移します。
管理画面に行ったら、右上のところからリージョンを選択します。
選んだリージョンによってパフォーマンスが著しく異なることはないと思いますが、
今回は東京を選択しました。
その後、「Launch Cluster」ボタンを押下して、クラスタを新たに起動しましょう。
クラスタの詳細
最初のステップはクラスタの詳細情報を入力します。入力項目は以下の通りです。
Cluster Identifier・・・クラスタの名称です。「examplecluster」と入力しました。
Database Name・・・Redshiftに作成するデータベース名を指定します。空欄のままでもOKです。デフォルトで「dev」という名称でデータベースが作成されます。
Database Port・・・データベースが接続を待ち受けるポート番号です。後程、SQL クライアントからデータベースに接続できるように、お使いのファイアウォールの開いているポート番号を確認しておきましょう。デフォルトでは5439番です。
Master User Name・・・DBに接続するユーザ名です。今回は「masteruser」としました。
ノードの設定
次に、クラスタを構成するノードの設定を行います。
ここでは特に変更する箇所はありません。
参考までに、ノードタイプを変更すると、使用できるCPU数、メモリなど、スペックが変わってきます。
追加設定
次に、追加の設定を行います。
主に暗号化やネットワーク構成などセキュリティに関する設定を行います。
ここでも特に変更するところはありません。
VPCは、Amazonが提供する仮想的なネットワークのことで、
従来のデータセンターで提供してきたネットワークサービスを クラウドに置き換えたものです。
今回は、普通にインターネット上に公開するので、デフォルトで結構です。
最後に、設定した項目の確認を行います。
画面下部にフリートライアルでない場合の課金のされかたの注意事項が表示されます。
今回はフリートライアルなので、関係ないですね。
確認してOKであれば、右下の青いボタン「Launch Cluster」を押して、クラスタを作成します。
作成ボタンを押すと、クラスタの作成が始まります。
数分時間がかかりますので、その間に、
このクラスタにアクセスするためのネットワーク設定を、さきほど指定したデフォルトのVPCに対して 行いましょう。
ネットワーク(ファイアウォール)設定
上記のクラスタ一覧画面で、クラスタ名のリンクをクリックすると、以下のような画面になります。
ここで、「Configuration」タブをクリックして、デフォルトのセキュリティグループをさらに選択します。
すると、そのVPCのINとOUTのネットワーク設定ができます。
Windowsでいうところの、ファイアウォールのようなものだと思えばわかりやすいでしょう。
インバウンド・タブの、「編集」ボタンを押下します。
ここで、クラスタの作成時に指定した、
「データベースの待ち受けているポート番号」に対するインバウンドを、
「どこから許可するか」を設定します。
「任意の場所」を選択すれば、IPが「0.0.0.0/0」になり、特にアクセス元について制限を設けない設定になります。
今回はお試しなので、これで良いですが、
セキュリティを強化するためにアクセス元を制限したい場合は、ここにアクセスを許すアドレスを指定してください。
さて、ここまでできたら、
先ほどのクラスタ一覧の画面に戻って、クラスタができたか確認してみましょう。
できていたら、SQLクライアントツールから実際にRedshiftにアクセスして、クエリを投げてみたいのですが、
少し長くなってしまったので、これ以降は次回に行います。
次回は実際にRedshiftに接続してみますよー。