SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

最新イベントはこちら!

Data Tech 2024

2024年11月21日(木)オンライン開催

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

EnterpriseZine(エンタープライズジン)

EnterpriseZine編集部が最旬ITトピックの深層に迫る。ここでしか読めない、エンタープライズITの最新トピックをお届けします。

『EnterpriseZine Press』

2024年秋号(EnterpriseZine Press 2024 Autumn)特集「生成AI時代に考える“真のDX人材育成”──『スキル策定』『実践』2つの観点で紐解く」

ビッグデータのリーサルウェポン!徹底解析GreenplumDB(AD)

なぜこれまでの汎用RDBMSではビッグデータに対応できないのか

003

Greenplum DBのシステム構成

 ここで、Greenplum DBのシステム構成を見ていきましょう。Greenplum DBのシェアードナッシングアーキテクチャでは、データはセグメントという単位で分割されてそれぞれが独立したRDBMSプロセスで管理されます。システム内に複数用意するセグメントサーバと呼ばれるサーバはそれぞれが1つもしくは複数のセグメントを収容し、高い帯域幅で接続されたディスクにデータを格納します。クライアントから発行されたクエリは、システム内に1つだけ存在するマスターサーバと呼ばれるサーバで受け付けられ、システム構成やデータ配置などの情報をもとに効率的に並列実行がなされるようにクエリ実行プランが生成されます。実行プランは各セグメントサーバに送られ、セグメントサーバは並列にすべてのディスク接続を最大限活用しながら処理を実行し、なおかつネットワークインターコネクトを介して必要なデータがやり取りされます。最終的に処理結果はマスターサーバに集約されクライアントに返されます。

 Greenplum DBは完全なソフトウェア製品であるため、汎用のx86アークテクチャサーバやネットワークスイッチを使用してシステムを構成します。システム全体で最大限の性能を発揮させるには、ハードウェアの構成のバランスが重要なポイントになります。上で述べたように、高いI/O帯域幅を確保するために数台~十数台のサーバ内蔵ハードディスクを接続したり、高速なセグメントサーバ間の通信を行うためにギガビットもしくは10ギガビットイーサーネットを二重で接続したりするのが一般的です。

性能がスケールアウトするしくみ

 シェアードナッシングアーキテクチャにおいては、その名前が示す通りサーバ間のデータの共有はなく、処理は各サーバで独立して実行されます。一般的には各サーバは高いI/O帯域幅を持つローカルディスクに接続するように構成されるため、バックプレーンのSAN接続の共有ストレージに対するアクセスの輻輳に引っ張られることなく、最大限にハードウェアの能力を生かしきることができます。そのため、BIや分析アプリケーションのようなワークロードでは、ノードを増やした分だけ性能がスケールしていきます。

データの分散と並列スキャン

 それでは、効率的な並列処理を行わせるために、ユーザーは何か特別な考慮をする必要があるのでしょうか。Greenplum DBでユーザーが考慮すべきことはただ一つ、テーブル定義の際に1つまたは複数のカラムを「ハッシュ分散」キーとして指定することです。このテーブルに対してデータの各行が挿入される際に、システムは指定されたカラムの値からハッシュ値を計算し、これをもとにどのセグメントサーバにそのデータを配置するかを決定します。ハッシュ分散キーの選び方にもよりますが、たいていのケースでは結果としてすべてのセグメントサーバに渡って均等にデータの各行が格納されるはずです。

--ハッシュ分散キーの指定
CREATE TABLE products 
    ( product_no integer,
      name text,
      price numeric )
DISTRIBUTED BY (product_no);

 一旦このようにシステムにデータが入ってしまえば、データベースシステムが効率的な並列処理を自動で行ってくれるので、ユーザーは意識すること無く汎用RDBとまったく同じクエリを高速に実行することができます。テーブルスキャンは各セグメントでそれぞれが所有する部分に対して並列で行われるため、シーケンシャルなテーブルスキャンと比較して大幅に短い時間で完了します。ユーザーは性能を向上させるために細かいチューニングに多大な労力をかける必要はもはやなくなります。

次のページ
インデックスによる高速化

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
ビッグデータのリーサルウェポン!徹底解析GreenplumDB連載記事一覧

もっと読む

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/3501 2012/02/10 18:04

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング