NTTデータとPostgreSQLが挑んだ総力戦。PostgreSQLを極限まで使い切ったその先に見たものとは?(後編) NTTデータオープンソースDAY2015

2015年2月9日

PostgreSQLを大規模なミッションクリティカルなシステムの中で使うには、どのようなノウハウが求められるのか。オープンソースの利用に積極的なNTTデータがその事例を、1月26日に開催されたイベント「NTTデータオープンソースDAY 2015」で紹介しています。講演内容をダイジェストにしました。

(本記事は「NTTデータとPostgreSQLが挑んだ総力戦。PostgreSQLを極限まで使い切ったその先に見たものとは?(前編)」の続きです)

実行計画をチェックするためにPostgreSQLを騙す。

3つ目は実行計画のチェックです。PostgreSQLのSQL文はコストベースで実行されますので、統計情報を見て、テーブルをスキャンする方法、結合する方法などを選択するのですが、その選択が実行性能にとって重要です。そこで実行計画をチェックしました。

fig

ただし、本番環境でしかもサービス開始後のリアルな計画を開発環境で再現してチェックしなければ意味がありません。

本来であれば本番環境と似たサンプルデータを用意して実行計画を作らせたかったのですが、なかなかデータを用意できなかったので、統計情報を操作してPostgreSQLをだます形でそれを実現しました。

ただし統計情報はテーブルの中身によって更新されるため、一回騙す仕組みだけでなく騙し続ける仕組みも必要でした。そこで統計情報カスタマイズ機能を作りました。

fig

さらに、騙し続ける仕組みとして統計情報固定化機能も作りました。本来の統計情報を使わずに、つねに騙す方へ固定化できます。

これで9割くらいはSQL文の問題が解決できるようになりました。しかしまだ最小限で最大限の効果が求められました。そこで、HINT句を使ってSQLチューニングをしました。

fig

そして5つ目の最後の手段としてSQL文の書き換えも行いました。

この5つの関門を設定したことで、大量のSQL文の性能を守ることができました。

fig

オープンソースの良さでトラブルを解決

最後のトピックは、リスクとの対峙です。

新しい仕組みを取り入れるのは有益な点もありますがリスクもあります。例えば、最終テストに差しかかってからPostgreSQLがセグメンテーションフォルトで落ちました。これはかなり重大な問題で、しかも再現が難しいものでした。

fig

そうすると、そもそもPostgreSQLを選んだのがよかったのか、などとPostgreSQL自体が懸念されるようになることもありました。

しかしそこはオープンソースの良さとして、コアダンプとソースコードがありますから、原因がPostgreSQL本体なのか、外部モジュールなのか、切り分けができます。解析した結果、外部モジュールが原因だということがわかり、原因を追及してパッチを書いて根本解決しました。

fig

必要以上のリスクを負わない、ということは大事ですが、エンジニアの力でリスクを低減するということも大事だと思います。

PostgreSQLでしかできない領域へ

今回のシステム構築で感じたこと。

PostgreSQLは豊富な拡張機能で機能を引き出せるので、今回のようなシビアな要件ではそれらを活用してポテンシャルを引き出すのは、1つの手段としてありかなと。

また、問題はどうしても発生します。その問題の補足手段と対策を持っておくことが大事ではないかと思います。

そして最後は製品だけでなく、その裏にいるエンジニアやサポートの力。オープンソースはホワイトボックスであることを生かして、コアダンプとソースコードで解決できる、ということも感じました。

fig

これまでPostgreSQLは商用データベースの代替としてコスト削減のために使われてきたことが多かったと思います。しかしいまPostgreSQLは例えばJSON型が使えるなど、従来のRDBMSの使い方を超えた領域に挑んでいます。

JSON型を使うことでスキーマレスで自由に列を拡張できたり、PostgreSQLをハブにしてOracleやMySQLを連携するといったこともできるようになります。PostgreSQLは、PostgreSQLにしかできない領域に進んでいると言えるのではないでしょうか。

公開されたスライド。

NTT DATA と PostgreSQL が挑んだ総力戦 from NTT DATA OSS Professional Services

このエントリーをはてなブックマークに追加
Bookmark this on Delicious

タグ : PostgreSQL , オープンソース , リレーショナルデータベース

≪前の記事
NTTデータとPostgreSQLが挑んだ総力戦。PostgreSQLを極限まで使い切ったその先に見たものとは?(前編) NTTデータオープンソースDAY2015

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


新サイト「Publickey Topics」始めました!


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
RSSリーダーで : Feed





アクセスランキング - 過去7日間

  1. SoftLayerの創立者、IBMを去る。その理由は
  2. [速報]VMware、Dockerコンテナ並みのスピードで仮想マシンをプロビジョニング可能な「Instant Clone」機能を発表
  3. [速報]VMware、vSphere 6を発表。長距離vMotion、マルチプロセッサVM用フォルトトレラント機能など
  4. [速報]VMwareがOpenStackディストリビューション「VMware Integrated OpenStack」リリース。VMwareユーザーは無料で利用可能
  5. [速報]欧SAP、R/3後継となる次期ERP「SAP S/4HANA」発表。HANAインメモリデータベース専用に新規開発
  6. 2014年第3四半期、Amazonクラウドのシェアは28%で年50%成長、続くマイクロソフトはシェア約10%ながら年96%成長で猛追中。Synergy Research Group
  7. SAPの新ERP「S/4HANA」、データベースはHANAのみ。HTML5ベースのUI、クラウドとオンプレ両対応
  8. DockerとKubernatesを核にしたPaaS基盤へと変わるOpenShift V3
  9. OpenStack専業のシステムインテグレータ「Mirantis」が日本法人設立、国内本格参入
  10. IT系企業の平均給与を業種別にみてみた 2014年版 ~ ネットベンチャー、ソーシャル、ゲーム編
  11. オープンソースのバルクデータローダー「Embulk」登場。fluentdのバッチ版、トレジャーデータが支援
  12. 今からでも間に合うDockerの基礎。コンテナとは何か、Dockerfileとは何か。Docker Meetup Tokyo #2
  13. YouTubeがHTML5のVideoタグをデフォルトにしたと表明、従来のFlashに代わり
  14. Publickey Smar
  15. マイクロソフトの新しいレンダリングエンジン「Edge」、新ブラウザ「Project Spartan」「次期IE」両方のデフォルトに

Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus