【レポート】

見えてきたPostgreSQL 8.0

1 PostgreSQL 8.0 4つの新機能

鶴田展之  [2004/09/22]
  • <<
  • <

1/3

PostgreSQLの最新バージョン「8.0」が、ベータテスト段階に入っている。今回のアップデートは、メジャーバージョンアップにふさわしい大きな改善、新機能が目白押しとなっている。本稿では、3日に新宿で行われたオープンソース・カンファレンス2004における日本PostgreSQLユーザ会会長片岡裕生氏の講演、そして15日築地で行われたSRAのテクニカルセミナーにおけるPostgreSQL開発コアメンバーのBruce Momjian氏の講演をもとに、この新しいPostgreSQLの概要をレポートする。

PostgreSQL開発コアメンバーのBruce Momjian氏

PostgreSQL 8.0 4つの新機能

現在、オープンソース・ソフトウェアの多くがエンタープライズ市場への進出を指向しているが、PostgreSQLも例外ではないようだ。信頼性の向上、SQL標準のサポートといった目標を達成したPostgreSQL開発コアチームは、1998年頃より特にエンタープライズ市場をターゲットとした機能の開発に注力している。Momjian氏の挙げる「エンタープライズ」向けシステムに重要な機能は3つ、「パフォーマンス」「容易な管理」、そして「効率的な連続稼働」だ。PostgreSQL 8.0では、当然のことながらこれらの目標に向けた新機能の追加及び改善が行われている。まずは大きな4つの新機能から紹介しよう。

Windowsへの対応

最大のトピックは、なんと言ってもWindowsプラットフォームへの正式対応だろう。PostgreSQL 8.0は、SRAのPowerGresや米PeerDirectによるWindowsポートの成果を取り入れ、Windowsプラットフォーム上でネイティブに稼働するようになった。これまでもCygwinを使えばWindows上で動かすことは可能だったが、最大50接続に制限される上に、信頼性・パフォーマンス面でも決して満足のいく性能を発揮できず、実用環境への適用は進まなかった。結局、PostgreSQLを利用するにはUNIXのスキルが必須となり、そのことが潜在的なユーザ層を狭める大きな要因となっていたのだ。

PostgreSQL 8.0はWindows NT SP4以降の"NT系"のシステム、つまりWindows 2000、Windows XP、Windows Server 2003に対応する。インストールも一般的なWindowsアプリケーションと同様のインストーラによって簡単に行える。日常的な管理作業のためのクライアント・アプリケーションとして、対話型コマンドラインモニタの"psql"はもちろんのこと、pgadmin IIIも付属する。pgadmin IIIはエクスプローラ・ライクなインタフェースで各種管理作業が行え、メニュー等の日本語表示も可能だ。

pgadmin III

テーブルスペースのサポート

パフォーマンス面では「テーブルスペース」がサポートされ、入出力の負荷分散が可能となった。従来のPostgreSQLでは基本的に特定のデータディレクトリ内に全てのデータベース・オブジェクトが配置されていたが、PostgreSQL 8.0では「テーブル」「インデックス」といったデータベース・オブジェクトを、それぞれ異なるディレクトリに自在に配置できるようになった。つまり、物理的に異なるディスク装置にリソースを分散し、ディスクI/Oの並列性を高めることもできるわけだ。

セーブポイント

トランザクション処理機構にも、新たな機能として「セーブポイント」が追加された。これはいわゆる「ネステッド・トランザクション」機能の一部と言えるもので、トランザクションの部分的なロールバックを可能にする。トランザクション内で多数のクエリが発行されるような複雑なデータベース処理の途中でエラーが発生した場合、従来のPostgreSQLではトランザクション全体で行われた更新を全てロールバックし、処理前の状態にデータを戻すしかなかったが、PostgreSQL 8.0ではエラーの状況に応じてロールバックを行うトランザクション内の位置を指定できる。

PITR (Point In Time Recovery)

一般向けに最もセンセーショナルな新機能がWindowsへの対応だとしたら、PITRは最も実質的な改善となる新機能であり、既にPostgreSQLを導入済みのユーザの多くが最も待ち望んでいた機能のひとつだ。PITRを理解するためには、まずPostgreSQL 7.1から実装された「WAL (Write-Ahead Logging)」と呼ばれる機能について知っておく必要がある。

データベース内のデータ更新は、トランザクションの「コミット」によって確定する。しかし、速度の遅いディスク装置への書き込みをコミットのたびに行うことは、パフォーマンスの大幅な低下を招いてしまう。そこで、コミットが実行された段階ではあくまでもメモリ上のバッファへの書き込みが行われるだけで、実際のディスク装置への反映は非同期に行われる。非同期書き込みでは、"チェックポイント"と呼ばれる一定サイクルで実行されるfsync()システムコールによってメモリ上のコミット済みデータがディスクに書き込まれる。

これによって頻繁なディスクアクセスを避け、パフォーマンスの向上を図ることができるが、コミット後チェックポイントまでの間に唐突な電源断などが起きると、ディスクに書き込まれていない更新データ(ダーティページ)は失われてしまう。データベース・システム上ではコミットが正常に実行されているにも関わらず、実際のデータが失われてしまうことで、データベースの整合性は破綻してしまうわけだ。

この問題を避けるために導入されたのが、いわゆる「トランザクションログ」機能である「WAL」だ。WALでは、実際の更新データをディスクに書き込むより前に、実行されたクエリのログを逐一ディスク上のWALファイルに書き込む。このWALファイルへの書き込みに限っては、直ちにディスク上に反映する同期書き込みが行われるが、実データの書き込みに比べれば、ログの書き込みによるパフォーマンスへのインパクトは無視できる程度に小さい。そして、万一ダーティページが存在する状況で電源断等によるクラッシュが発生した場合でも、PostgreSQLは次回起動時に自動的にWALファイルからコミット済みのトランザクションを再実行する。これがロールフォワードリカバリ(REDO)である。

ただ、PostgreSQL 7.4までのWALの機能では、単純にデータを最新のコミット時点の状態に復元することしかできない。つまり、コミットされたトランザクションを取り消すことはできず、極端な話、タイプミスでテーブルのデータ全件を誤って削除してしまったりすると、バックアップから復元するしか対応の方法がない。この場合、バックアップ後に行われた更新は全て失われてしまうだろう。

PostgreSQL 8.0で実装される「PITR」は、WALファイルからの復元をどの時点まで行うかを指定することで、データベースを過去の任意の時点に戻せる機能だ。これにより、データを失うリスクが最低限になる、管理が容易になる等のメリットが期待できるだろう。

  • <<
  • <

1/3

インデックス

目次
(1) PostgreSQL 8.0 4つの新機能
(2) パフォーマンス改善
(3) 急速に整備されるPostgreSQLの周辺環境


IT製品 "比較/検討" 情報

転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

特別企画 PR

人気記事

一覧

イチオシ記事

新着記事

東京都交通局「2016路面電車の日」6/12開催、都電7700形・7000形の撮影会も
[21:32 5/26] ホビー
iiyama PC、SSD+HDDツインドライブ構成のミニタワーPC - 約6万円から
[21:31 5/26] パソコン
山田涼介、日本映画批評家大賞・新人賞に! 浅野忠信のエールに感激
[21:11 5/26] エンタメ
西武鉄道・秩父鉄道「SLパレオエクスプレス」臨時列車運行を記念した乗車券
[21:04 5/26] ホビー
大河ドラマ『おんな城主 直虎』出演者が発表 - 三浦春馬、柳楽優弥ら
[21:00 5/26] エンタメ

特別企画 PR

求人情報