PostgreSQL導入に向けての取り組み ~大規模システムへの適用を目指して~ (1)
NTTコムウェア株式会社 基盤技術本部
山内 孝彦 吉田 敏和
はじめに
2009 年 11 月に JPUG 10 周年記念として開催された「PostgreSQL Conference 2009 Japan」において、「大規模システムへの PostgreSQL の適用」に向けた NTTコムウェア株式会社(以下 NTTコムウェア)の取り組みについて発表させて頂きました。 今回は当日説明させて頂いた内容に加えて、そこに至った背景なども合わせてご紹介いたします。
1. NTTコムウェアの紹介
NTTコムウェアは 1985 年に日本電信電話株式会社内に発足した中央ソフトウェアセンタが起点となり、 1997 年に NTTコミュニケーションウェア株式会社として設立され、 2000 年に NTTコムウェア株式会社に社名を変更し、現在に至ります。
設立当初は NTTグループ内の情報通信システムのソフト開発および運用保守をメインとしていましたが、現在は NGN に関わる通信制御・アプリケーションサービス開発などにより NGN の拡大・普及を推進する他に、NTTグループ以外のお客様への SIer としても幅広く活動を広げシステム開発を行っています。
1.1 自組織の役割
NTTコムウェアは、お客様が求める「TCO の削減」を実現するために、1999 年に「Linux センタ」を立ち上げました。 その後、弊社内でも PostgreSQL を含む OSS について SIer として、システムへ適用検証を行ってきました。 現在は、開発プロジェクトへの支援組織として、基盤技術本部がありますが、OSS推進部が OSS プロダクトに関しての導入支援を中心に活動し、同本部内で、OSS / 非OSS に限らずシステム方式全般の技術支援を行う技術SE部と連携して、OSS の利用技術の蓄積や適用に取り組んでいます。
また、NTT OSS センタ 注1 とも積極的に意見交換を行い、OSS 活用のために連携を図っています。
2. システムへ適用する際の着目点
システムを構築、提供する上で、お客様へ高品質・高信頼なサービスをいかに安く提供できるかが重要となります。 弊社では、その重要なポイントを PostgreSQL で達成できるかどうか、商用 DBMS との比較による検討を重ねてきました。 ここでは、検討する上での着目点を、大きく「性能」「運用」「コスト」の3つに分類して考えていきたいと思います。
PostgreSQL は「追記型 DBMS」という特性から「性能」と「運用」については、PostgreSQL の適用を検討し始めたバージョン 7.4 の頃、 お客様から真っ先に問いかけられた項目です。 特に「更新系処理」の性能と「VACUUM 処理」による運用への影響度は、PostgreSQL 8.3 がリリースされるまで、適用に向けての大きな課題なっていました。
PostgreSQL 7.4 から 8.2 までは「適用可否」の検討は性能と運用面を中心に行ってきました。 PostgreSQL 8.3 以降では、詳細な「コスト」の検討を行う機会が増えてきた事によって、検討すべき事項が明確化されました。
以降の章では、主な着目点として挙げた「性能」「運用」「コスト」の 3 つについて、弊社で検討してきたことを紹介したいと思います。
3. PostgreSQL の適用検討 -性能面-
本章では、性能面で着目する点(更新性能、24 時間 365 日間の安定した性能の継続等)について話を掘り下げていきたいと思います。 対象とする PostgreSQL のバージョンは、HOT 機能の実装により、以前のバージョンと比較して性能向上が期待できる PostgreSQL 8.3 をメインに、その前バージョン 8.2 との比較で示していきます。
3.1 性能面の着目点1:処理性能と安定性
ご存じのように性能や安定性の確保のためには、VACUUM はとても重要なメンテナンス作業です。 VACUUM を適切に実施することで得られる効果としては、主に以下の事項があります。
- データベースの肥大化を抑制(不要領域の増加を抑制)
- 性能低下を抑制
- XID 周回によるシステム停止を防止
そのため、VACUUM を実施しないで運用を行っているシステムは皆無といっても良いでしょう。
弊社で扱うシステムには、以下のようなとても厳しい条件のシステムが多く存在します。
- 更新処理の割合が多い
- 24 時間 365 日ノンストップで稼働する必要がある
- 常に安定した性能を求められる
- 深夜や早朝の業務の閑散期には、負荷の高い大量バッチが実行される
こうしたシステムへ PostgreSQL の適用を検討する場合、VACUUM を実行する事による業務への影響が懸念されます。 そのような懸念点を払拭するために PostgreSQL 7.4 から実機検証を重ね、PostgreSQL を適用するためにはどのような事を検討すれば良いのかを導き出してきました。 以降では PostgreSQL 8.2 から 8.4 までの検証の結果と PostgreSQL を適用する上で検討すべき事項について説明していきたいと思います。
- 注1.
- OSS を利用した ICT システムの構築・運用に対する技術支援を効率よく行うことを目的に NTTグループから技術者が集まった組織です。