SHOEISHA iD

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

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

直近開催のイベントはこちら!

Data Tech 2022

2022年12月8日(木)10:00~15:50

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

お申し込み受付中!

利用範囲がさらに広がる!Postgres Plus 9.4新機能の全容

Postgres Plus 9.4独自の新機能解説


 商用RDBMSと遜色ない機能を持ち、エンタープライズ用途での採用が拡がるPostgres Plusの最新バージョン 9.4が、PostgreSQL 9.4リリースに追随する形で2015年1月にリリースされます。本連載ではエンジンであるPostgreSQLとともにPostgres Plus 9.4に実装される新機能の全容に迫ります。

Postgres Plus 9.4 独自のエンタープライズ向け新機能

 Postgres Plus Advanced Server(以下、PPAS)は、Postgres Plus Enterprise Edition(以下、PPEE)のデータベース・エンジンで、PostgreSQLをベースとしパフォーマンスやセキュリティなどの分野のエンタープライズ向け機能が強力されています。

 図1はPPAS 9.4の主な新機能をカテゴリ別にまとめたもので、エンジンであるPostgreSQL 9.4には性能、運用、可用性、データウェアハウス、開発などのカテゴリで主要な新機能が実装されており、PPAS 9.4には性能、運用でより使いやすいRDBMSを目指したエンタープライズ向けの機能が追加されています。

図1:PPAS 9.4の主な新機能
図1:PPAS 9.4の主な新機能

 前回は、エンジンであるPostgreSQL 9.4の新機能の中からエンタープライズでの利用を想定した以下の機能に焦点を当ててご紹介しました。

  •  性能        - HugePage対応
  •  運用        - ALTER SYSTEMコマンド
  •  可用性       - レプリケーション・スロット
  •  データウェアハウス - マテリアライズド・ビューの拡張
  •  開発        - バイナリJSON

 今回は、PPAS 9.4独自のエンタープライズ向け新機能として「パーティション」と「リソースマネージャ」をご紹介します。

ハッシュ・パーティションで用途に合わせたデータ分割

 パーティションとは、図2のように大規模な表をパーティションというより小さくて管理しやすい固まりに分割して格納する機能です。各パーティションを異なるディスク領域へ配置することで検索処理を高速化したり、管理の効率化を図ることができます。

図2:パーティションによるデータ分割
図2:パーティションによるデータ分割

 PPASではPostgreSQLと同様に「継承」「制約」「トリガ」の3つの機能を組み合わせてパーティショニング機能を実現していますが、PostgreSQLに比べて設定手順が簡略化されています。PostgreSQLでは親テーブル、パーティションの位置づけとなる子テーブルの作成に続き、データ挿入のためのINSERTトリガ作成など複数のステップを踏む必要がありますが、PPASはOracle Databaseのパーティションテーブルと同じ構文をサポートしており、親テーブルを作成するコマンド1つですべての作業が内部的に行われるため、設定はとても簡単です。(※1)

 パーティションによる検索処理を高速化するために、内部ではパーティション・プルニングと呼ばれる機構が動作します。例えば、図3のようにsales表から5月の売り上げを検索する場合、WHERE句にパーティションキーであるorderdate列を「2013-05-01から2013-05-31」と指定すると、4月から6月分のデータが格納されたパーティションにのみアクセスします。それによりディスクI/Oを抑制し、処理の高速化を実現しています。

図3:パーティション・プルニングの動作
図3:パーティション・プルニングの動作

 PostgreSQLではテーブルに定義したCHECK制約を利用してアクセスする子テーブルを絞り込みます。そのため、子テーブルの数が増えると絞り込む際にオーバーヘッドが発生する可能性があり、子テーブルは100個程度が上限と言われています。PPASではこの点にも改善が加えられており、1,000個の子テーブルを持つテーブルに対する複数セッションからの検索処理では最大76倍、大量データの挿入では450倍以上の性能向上が確認されています。(※1)

 (※1)PPASのパーティションテーブル作成コマンド、処理性能の詳細は、以下の記事をご参照ください。→「Postgres Plus 9.3 いかに進化したのか検証してみた


 一般的にパーティションには用途に応じていくつかの種類が用意されており、PPASでは従来から「レンジ」「リスト」がサポートされています。どちらのパーティションを利用するかはパーティション・キーに指定する列の値をどのような方法で分割するかで決定します。

 レンジ・パーティションは、図4のようにパーティション・キーの範囲や期間に基づいて、データを分割します。これは最も広く使われているパーティション化で、主に日付データとともに使用されます。例えば、売り上げデータなど時系列で生成されるデータに対して、年、四半期、月といった日付をWHERE句に指定してアクセスする場合に有効です。また、リスト・パーティションは、国や地域、都道府県など順不同で関連性のないデータをグループ化し、任意のパーティションへ格納する場合に有効な手法です。

図4:従来のパーティションの種類
図4:従来のパーティションの種類

 そして、今回、もう1つの主要パーティションである「ハッシュ」がPPAS 9.4でサポートされます。ハッシュ・パーティションは、レンジやリストによる分割が難しいデータをPPAS独自のハッシュ・アルゴリズムによって均等に分割します。レンジやリストによる分割はデータ自体に依存するため、図5にあるように各パーティションに格納されるサイズが均等にならないケースがありますが、ハッシュはパーティション間でデータを均等に分散するため、すべてのパーティションはほぼ同一のサイズになります。これにより、主にデータ挿入を含むバッチ処理でディスクアクセスを均等化し、パフォーマンスの向上が期待できます。今後、1つの処理を複数のプロセスで並列に実行できるパラレルクエリが実装されれば、ハッシュ・パーティションのメリットがより活かせるようになります。

図5:ハッシュ・パーティション
図5:ハッシュ・パーティション

 さらに、Postgres Plusでは図6のように各パーティションの下にさらに小さいサブセットを持たせるサブパーティションもサポートされており、「レンジ」「リスト」「ハッシュ」の3種類のパーティションを用途にあわせて自由に組み合わせることができます。例えば、売り上げデータを年(レンジ)、国(リスト)で分割すると、期間ごとの各地域の売り上げを参照するアプリケーションで効果を発揮します。

図6:サブパーティション
図6:サブパーティション

次のページ
異なる処理へリソースを適切に割り当てるリソースマネージャ

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

  • Facebook
  • Twitter
  • Pocket
  • note
利用範囲がさらに広がる!Postgres Plus 9.4新機能の全容連載記事一覧

もっと読む

この記事の著者

高瀬 洋子(タカセ ヨウコ)

 株式会社アシスト データベース技術本部 アシスト入社後、Oracle Databaseのサポート業務を経て、2009年よりPostgreSQL、EDB Postgresのサービス立ち上げに参画。2017年4月にイギリスから日本へ拠点を戻し、海外イベントで得た情報などを活かしてEDB Postgre...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/6454 2015/02/02 16:58

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

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

2022年12月8日(木)10:00~15:50

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

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

メールバックナンバー

アクセスランキング

アクセスランキング