5
NTT技術ジャーナル 2014.3 34 IT基盤のTCO削減に寄与するオープンソースソフトウェア活用推進技術 データベース管理システムに対す る研究開発 さまざまなデータを格納管理し,運 用するデータベース管理システム (DBMS: Data Base Management System)はこれまでも数十年にわた り,研究開発が続けられてきました. DBMSはICTシステムにおいて非常に 重要な位置を占めており,果たしてい る役割は多岐にわたります. 例えば,「データを格納管理する」 という意味では,複数の人が同時に データを変更しても正確な処理を行 い,矛盾を生じさせない「同時実行制 御」や,たとえシステムがダウンして もすでに完了した処理結果を失わない ようにする「リカバリ」機能をシステ ムに提供しています. また,「データを検索する」という 意味では,アプリケーションで詳細な 検索アルゴリズムを実装しなくても, どういうデータが欲しいのかを記述す るだけで簡単にデータを検索すること ができる「宣言的言語」を提供してい ます.これにより,アプリケーション の開発が容易になります.DBMSは 高度な仕組みで成り立っており,開発 には高い技術力が求められます.ま た, 5 年10年と,多くのユーザやシ ステムに使い続けられるものである ため,継続して維持管理し,安定し た品質を保っていく必要があります. PostgreSQLは世界中の技術者が集ま り,コミュニティを形成して開発して おり,現在では商用DBMSに引けを 取らない機能 ・ 性能を有しています. NTTもそのコミュニティの一員とし て,日本PostgreSQLユーザ会(JPUG) のポータルサイト運営支援や,開発方 針議論への参画,多数の機能 ・ 性能改 善パッチの提供〔現在の主要バージョ ンである9.x(9.0 〜 9.3)において国 内トップのパッチ提供実績〕などで貢 献しています(図1 ). PostgreSQLの可用性を大きく向上 させ,社内外でミッションクリティカ ル用途に利用されることの契機となっ た,ストリーミングレプリケーション 機能も,NTTが提案し,コミュニティ とともに開発したもので,現在では世 界中の多くのユーザに利用されてい ます. NTT OSSセンタでは,データベー スサイズの大規模化に伴う性能 ・ 機能 の充実と,商用DBMSからの移行性 のさらなる向上をテーマに掲げ,外部 表機能の活用による大規模データベー スへの取り組みや,分散データベース の研究開発,商用DBMSが独自に規 定しているSQL(Structured Query Language) 方 言 をPostgreSQLで も そのまま実行できるようにする互換機 能の向上に力を入れています. PostgreSQLバ ー ジ ョ ン9.3の 紹介 PostgreSQLは,年 1 回大幅な改訂 がされていますが,直近では2013年 9 月にバージョン9.3がリリースされ ました. この新バージョンでは多くの機能強 化や性能改善が図られています.主な 3 つを以下に記します. (1) ビュー機能の拡張 本機能にはマテリアライズドビュー と更新可能ビューが新たに導入されま した. ビューとは,仮想的に用意された表 (テーブル)で,その実体は例えば複 数の表に対する問合せ(SELECT文) です. マテリアライズドビューとは,一度 実行した問合せ結果を表として蓄えて DBMS PostgreSQL オープンソース コスト削減の旗頭PostgreSQL NTT OSSセンタでは,OSS(Open Source Software)の普及・展開を目的 に,オープンソースデータベース管理システム「PostgreSQL」の研究開発 に取り組んでいます.PostgreSQLは,近年の開発成果により,商用システ ムでも十分利用可能なレベルに達しており,また商用製品と比較したとき のコスト削減効果が大きいことから,基幹系システムにも導入されるなど, 注目を集めています.本稿では,2013年 9 月にリリースされたPostgreSQL の最新バージョン9.3の新機能,およびNTTのOSS開発方針について紹介し ます.またPostgreSQLの適用領域拡大先としてログ分析を行う基盤とする ことを目的に著者らが開発したSQL/MEDインデックスエンジンについて も紹介します. あきよし /西 にしむら ごう てらもと じゅんじ /藤 えつろう やまむろ たけし /若 わかもり NTT OSSセンタ

03 06 特集 - ntt.co.jp · に取り組んでいます.PostgreSQLは,近年の開発成果により,商用システ ムでも十分利用可能なレベルに達しており,また商用製品と比較したとき

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

NTT技術ジャーナル 2014.334

IT基盤のTCO削減に寄与するオープンソースソフトウェア活用推進技術

データベース管理システムに対する研究開発

さまざまなデータを格納管理し,運用するデータベース管理システム

(DBMS: Data Base Management System)はこれまでも数十年にわたり,研究開発が続けられてきました.DBMSはICTシステムにおいて非常に重要な位置を占めており,果たしている役割は多岐にわたります.

例えば,「データを格納管理する」という意味では,複数の人が同時にデータを変更しても正確な処理を行い,矛盾を生じさせない「同時実行制御」や,たとえシステムがダウンしてもすでに完了した処理結果を失わないようにする「リカバリ」機能をシステムに提供しています.

また,「データを検索する」という意味では,アプリケーションで詳細な検索アルゴリズムを実装しなくても,どういうデータが欲しいのかを記述するだけで簡単にデータを検索することができる「宣言的言語」を提供しています.これにより,アプリケーションの開発が容易になります.DBMSは高度な仕組みで成り立っており,開発

には高い技術力が求められます.また, 5 年10年と,多くのユーザやシステムに使い続けられるものであるため,継続して維持管理し,安定した品質を保っていく必要があります.PostgreSQLは世界中の技術者が集まり,コミュニティを形成して開発しており,現在では商用DBMSに引けを取らない機能 ・ 性能を有しています.NTTもそのコミュニティの一員として,日本PostgreSQLユーザ会(JPUG)のポータルサイト運営支援や,開発方針議論への参画,多数の機能 ・ 性能改善パッチの提供〔現在の主要バージョンである9.x(9.0 〜 9.3)において国内トップのパッチ提供実績〕などで貢献しています(図 1 ).

PostgreSQLの可用性を大きく向上させ,社内外でミッションクリティカル用途に利用されることの契機となった,ストリーミングレプリケーション機能も,NTTが提案し,コミュニティとともに開発したもので,現在では世界中の多くのユーザに利用されています.

NTT OSSセンタでは,データベースサイズの大規模化に伴う性能 ・ 機能の充実と,商用DBMSからの移行性

のさらなる向上をテーマに掲げ,外部表機能の活用による大規模データベースへの取り組みや,分散データベースの研究開発,商用DBMSが独自に規定しているSQL(Structured Query Language)方言をPostgreSQLでもそのまま実行できるようにする互換機能の向上に力を入れています.

PostgreSQLバージョン9.3の紹介

PostgreSQLは,年 1 回大幅な改訂がされていますが,直近では2013年9 月にバージョン9.3がリリースされました.

この新バージョンでは多くの機能強化や性能改善が図られています.主な3 つを以下に記します.(1) ビュー機能の拡張本機能にはマテリアライズドビュー

と更新可能ビューが新たに導入されました.

ビューとは,仮想的に用意された表(テーブル)で,その実体は例えば複数の表に対する問合せ(SELECT文)です.

マテリアライズドビューとは,一度実行した問合せ結果を表として蓄えて

DBMS PostgreSQL オープンソース

コスト削減の旗頭PostgreSQL

NTT OSSセンタでは,OSS(Open Source Software)の普及・展開を目的に,オープンソースデータベース管理システム「PostgreSQL」の研究開発に取り組んでいます.PostgreSQLは,近年の開発成果により,商用システムでも十分利用可能なレベルに達しており,また商用製品と比較したときのコスト削減効果が大きいことから,基幹系システムにも導入されるなど,注目を集めています.本稿では,2013年 9 月にリリースされたPostgreSQLの最新バージョン9.3の新機能,およびNTTのOSS開発方針について紹介します.またPostgreSQLの適用領域拡大先としてログ分析を行う基盤とすることを目的に著者らが開発したSQL/MEDインデックスエンジンについても紹介します.

川か わ だ

田 明あきよし

良 /西にしむら

村  剛ご う

寺てらもと

本 純じゅんじ

司 /藤ふ じ た

田 悦えつろう

山やまむろ

室  健たけし

/若わかもり

森 拓た く ま

NTT OSSセンタ

NTT技術ジャーナル 2014.3 35

特集

おき,同じ問合せがきた際に再利用することで,問合せ処理の高速化を実現するものです.また更新可能ビューとは,複雑な定義をすることなく,ビューに対する更新を実現するものです.ビュー機能は,商用DBMSとの比較でこれまで弱点とされてきたもので,この機能が実装されたことにより,商用DBMSからの移行がより簡単になることが期待できます.

(2) レプリケーション機能の改善PostgreSQLでは,システムの耐障

害性を高めるため,レプリケーション機能を用いて 2 台のサーバを稼働系 ・待機系として運用することが可能です.稼働系に障害が発生した場合,待

機系を稼働系として立ち上げ直す処理が必要ですが,この処理時間を短縮する改善が入りました.これはシステムの可用性を向上させ,稼働率を限りなく100%に近付けるもので,NTTが力を入れて開発し,貢献している機能の1 つです.(3) 外部表機能の拡張PostgreSQLの外部にあるデータを

外部表として管理する機能の拡充が図ら れ て い ま す.外 部 表 機 能 と は,DBMS内部の表と区別なく,DBMS外部のデータ(例えばCSVファイル)を表として扱う機能です.この機能により,大量 ・ 多数のログをDBMSにロードすることなく,外部に置いたま

まSQLで分析することが可能となります.外部表は, PostgreSQL9.1で導入された機能であり,最新の9.3では,対象がファイルだけではなく,ほかのPostgreSQLサーバ上のデータも外部表として管理できるようになりました.外部表へのレコードの追加 ・ 削除などを可能にする更新機能も合わせて追加されており,大量のデータを複数のPostgreSQLサーバで容易に分散管理することが可能になりました.NTTは外部表機能の導入当初から,外部表への問合せ最適化技術の高度化に貢献してきましたが,その成果は今回の機能拡張においても活かされています.

図 1  PostgreSQL各バージョンにおけるNTTの主要貢献機能

・CPUスケール・オンライン索引作成・GIN:汎用転置索引

8.22000

7.4

7.3

・Windows対応・セーブポイント ・メディア故障対応・テーブルスペース

・パーティショニング・ 2相コミット・バッファ管理改良

8.1

・HOT:更新性能向上・VACUUM自動化・全文テキスト検索

8.3 (2008/2)

・同期レプリケーション・UNLOGGED TABLE・パーティショニングを強化・外部表機能

9.1 (2011/9) ・書き込み可能外部テーブル・外部表機能の拡張・更新可能ビュー・マテリアライズドビュー・LATERAL JOINs

9.3 (2013/9)

・インデックス・オンリ-・スキャン・大幅な性能向上・プラニング改善・レプリケーション進化

9.2 (2012/9)8.0

2003

20072008

20092010

2011

2006

NTT参画

NTT OSSセンタ設立

20132012

・Window関数・再帰クエリ・他DBMS互換性向上・VACUUM用メモリ自動管理

8.4 (2009/7)

・非同期レプリケーション・列 ・条件付きトリガ・排他制約・Windows 64bit対応

9.0 (2010/9)

:NTT貢献機能

性能向上

可用性向上適用領域拡大

NTT技術ジャーナル 2014.336

IT基盤のTCO削減に寄与するオープンソースソフトウェア活用推進技術

SQL/MEDインデックスエンジン開発の取り組み

PostgreSQLの外部表機能を活用し,ログ分析を行う基盤とすることを目的に著者らが開発したSQL/MEDインデックスエンジンについて紹介します.

DBMSは,従来オンライントランザクション処理での利用が中心でしたが,ビジネスインテリジェンスによる経営意思決定などが脚光を浴びる中,ログ情報のような大規模データを分析する目的での利用も期待されています.

近年,顧客の嗜好分析などを目的として,サービスの履歴情報(ログ情報)をCSVファイルとして管理しているケースが増えてきました.また,サービスの背景で動いている情報系システムでも,システムの運用 ・ エラーのログがより詳細に取得されるようになり,ログの分析による運用改善が多くみられるようになりました.

取得したログの分析や解析作業は,エディタやスクリプトなどを用いて手作業を中心に行われるケースもありますが,処理対象のログが大量になった場合,手作業では分析を簡易に行うことは困難です.そこでログをDBMSに入れてしまえば,大量のデータに対して,さまざまな観点で集計や分析,解析作業を行うことが可能になり,複雑 な 条 件 を 与 え た 高 度 な 検 索 をDBMSに任せて,本来の分析業務に専念することができます.ただし,こ

の方法には問題もありました.それは,大量 ・ 多数のログをDBMSにロードするためには非常に大きな時間的コスト,管理コストを要するという問題です.この問題を解決する技術の 1 つが外部表です(図 2 ).

NTTで は,PostgreSQLを ベ ー スに,SQL2003(2003年に制定されたSQL言語国際標準)で規定されたSQL/MED(Management of External Data)を実装し,さらにSQL標準にない外部表のインデックス処理を拡張実装したSQL/MEDインデックスエンジンを開発(1)しました.

現在,NTTはパーティション技術,インデックス ・ オンリー ・ スキャン技術を実装してさらなる処理の高速化を図る研究開発を進めています(図3 ).この技術は,コンタクトセンタ向け音声マイニング ・ プラットフォームの通話分析(音声マイニングシステム)にも導入されており,従来技術で

はかなりの時間を要していたデータベース更新処理を,半分〜 3 分の 1程度の時間に短縮しました.その短縮時間分を他の分析処理の計算処理に割り当てることで,分析作業者により多くの分析機能や情報の提供を可能としています.

高速化の鍵となる 2 つの技術,パーティション技術と,インデックス ・ オンリー ・ スキャン技術について紹介します.

(1) パーティション技術 パーティション技術は参照処理,

インデックス作成などの高速化を目的に,表分割を行う技術です.表分割することで参照処理ではキーの値の範囲で対象となる表が絞り込めます.新しく到着したログが常に末尾に追記される場面では,変更の生じた最新のログファイルのみを対象とすれば,インデックス作成は完了します.一部の分割された表のみを処理することで高速

図 2  PostgreSQL SQL/MED技術概要

ログデータ参照アプリケーション

PostgreSQLデータベーステーブル情報(内部表)

CSVファイルによる仮想テーブル情報(外部表)

ログデータ(CSVファイル)

CSVファイルラッパ

データベースの内部表も外部表も同じSQLで扱える

データベースへの長時間ロードの

コストを大幅に削減する

NTT技術ジャーナル 2014.3 37

特集

化を図ります.PostgreSQLでは表分割に表継承という機能を利用していますが,これを外部表にも使えるようにしました.月ごとに分けられた表は,例えば 1 年以上古くなった表を定期的に削除して,最新月の表を登録するといった巡回的な運用が考えられますが,この削除や登録,インデックス作成などが表分割後の対象月の表にのみ及ぶため,運用の手間,処理時間も軽減されます.大量のログを分析する外部表の処理は,CPUではなくディスク入出力がボトルネックとなる傾向があるため,パーティション技術を用いたディスク入出力の軽減は特に高速化に効果を発揮します.

(2)  インデックス ・ オンリー ・ スキャン技術

インデックス ・ オンリー ・ スキャン技術は,参照処理の高速化を目的にSQLが特定の条件を満たす場合にインデックスの走査のみで(データ本体にアクセスせずに)検索結果を取得する技術です.一般的にインデックスサイズは小さくて済むためメモリに常駐できます.そのため外部表の処理におけるディスク入出力の軽減になり,一層参照処理の高速化に効果を発揮します.このインデックス ・ オンリー ・スキャン技術が有効なSQLの条件は,SQLの条件節(WHERE句),取得対象(ターゲット)の列がインデックス作成に使用した列(複数の列の使用が

可能)にすべて登場することです.インデックスの列に検索結果取得に必要な列がすべてそろっていることは,インデックスの設計時点で考慮されていますので,インデックス ・ オンリー ・スキャン技術が有効な場面は多いと考えています.

以上のような技術を組み合せることでSQL/MEDインデックスエンジンは大量のデータをDBMS内部にロードせずとも高速アクセスを可能としており,データ分析などの利用を通じてビジネスに活用いただけます.

今後の展開

本稿では,PostgreSQLの最新バージョン動向と,NTT OSSセンタによ

図 3  パーティション技術とインデックス・オンリー・スキャン技術

データロード処理

データロード処理

内部表

OLAPアプリケーション

パーティション技術で構築処理の局所化(追加したログファイルのみ)

SQL/MED技術(外部表機能)によりCSVファイルを直接参照

インデックス・オンリー・スキャン技術で実データ参照を省略

外部表

外部表向けインデックスで高速な絞り込み検索

インデックス

インデックス

ログファイル(CSVファイル)

ログファイル(CSVファイル)

ログファイル(CSVファイル)

ログファイル(CSVファイル)

PostgreSQL

SQL/MED機能

NTT技術ジャーナル 2014.338

IT基盤のTCO削減に寄与するオープンソースソフトウェア活用推進技術

るログ分析基盤向け開発を中心に説明しました.NTT OSSセンタでは,これら開発に加え,PostgreSQLをビジネスで安心して活用いただけるよう,導入 ・ 運用に関する支援等のサポートにも力を入れています.開発で培った技術力をサポートに活かし,そしてサポートで得られた要望や改善点を開発に フ ィ ー ド バ ッ ク す る こ と でPostgreSQLのさらなる改善につなげていきます.今後もサポートと開発を両輪として,皆様のビジネスのコスト削減,事業領域の拡大に貢献していきます.

■参考文献(1) 日 高 ・ 小 谷 ・ 須 賀 ・ 藤 田 ・ 川 田 ・ 山 室:

“PostgreSQL SQL/MED技術——サービスログやシステムログの分析を効率的に行う基盤技術,” NTT技術ジャーナル,Vol.23,No.8, pp.30-34,2011.

NTTグループの大きな財産NTT東日本 ビジネス&オフィス営業推進本部 ソリューションエンジニアリング部 担当課長 森山健彦

大規模スケジューラ案件でのPostgreSQL利用について,NTT OSSセンタからデータベースのチューニングはもちろんのこと,利用するアプリケーションのロジックにまで配慮した高度な提案を受けました.PostgreSQLの技術蓄積はもちろんのこと,それに裏付けられたコンサルテーション能力は,NTTグループの大きな財産です.

蓄積した技術力を武器にNTTデータ 基盤システム事業本部 システム方式技術ビジネスユニット 第三技術統括部 担当課長 坂野昌平

日頃より,NTT OSSセンタとはPostgreSQLの研究開発からサポートまで,さまざまな側面で連携しており,特にミッションクリティカル領域への適用に向け,レプリケーションをはじめとした各種機能強化に,タッグを組んで取り組んでいます.NTT OSSセンタとともに蓄積した技術力を武器に,引き続きNTTデータ社内でもOSS活用を推進していきます.

コラム

(後列左から) 寺本 純司/ 川田 明良/ 西村  剛

(前列左から) 若森 拓馬/ 藤田 悦郎/ 山室  健

OSSは,ソフトウェア開発にとどまらず,集合知という文脈で語られる場面もあります.科学をはじめとする人類の知的資産の発展を加速させるこの有望な手法に,今後ともうまくかかわっていきたいものです.

◆問い合わせ先NTT OSSセンタ 基盤技術ユニット

TEL 03-5860-5055FAX 03-5463-5491E-mail oss-contact lab.ntt.co.jp