|
||||||||||
| 1 2 3 次のページ | ||||||||||
| はじめに | ||||||||||
|
「オープン・ソース・ソフトウェア(OSS)を業務システムで使う」と聞いたときに、すでに、OSSを使ったことのあるユーザであれば、何も違和感を感じないだろう。ところが、今までWindowsしか使ったことのないエンジニアにとっては、まったく未知の世界だ。「無償で使えるソフトウェアを使えるわけがない」とか「製造元の技術支援が受けられないから使いたくない」と思うユーザもいるのではないだろうか(図1)。 今回はOSSのDBMSについて、業務システムへの可用性を考えてみたい。 OSSのDBMSにはいくつかあるが、メジャーなのは「PostgreSQL」と「MySQL」の2つだ。 |
||||||||||
| エンタープライズ向けの機能が豊富なPostgreSQL | ||||||||||
|
まず、前者について紹介しよう。PostgreSQLは、大学の研究プロジェクトから生まれたDBだ。 1998年のバージョン6.3でダブルバイト対応し、6.4でストアドプロシージャに対応。2001年の7.1で、トランザクションログ機能を追加。翌年のバージョン7.2で、ロックをかけずにVACUUMできる機能を搭載。2005年11月には、最新版のバージョン8.1がリリースされた。 |
||||||||||
| バージョン8.1の新機能 | ||||||||||
|
ここでは、バージョン8.1の改善点と新機能を紹介する。バージョン8.1では、いくつかの機能で処理速度の向上をはかっている。その1つに、「ビットマップインデックススキャン」と呼ばれる機能がある。 例えば、図2のようにアンケートの結果データが格納されたテーブルがあるとする。この大量のデータの中から、「アンケートのQ1にYes、Q2にA、Q3に1と答えた東京都に住む女性」といった、検索条件でデータを抽出する際に効果を発揮する。 こうしたアンケートの場合、回答の選択肢がそれほど多くないので格納されるデータは限られている。さらに、その中から1つを検索条件の値として指定し、さらにそれが複数個ある場合に有効な機能といえる。 また、データの更新量を監視し、適切なタイミングでVACUUMを実行する自動VACUUM機能が追加されている。 PostgreSQLは、追記式の記憶管理を採用している。データを更新する場合、元のデータは残したままデータを追記する。同様に削除の場合は、物理的にデータを削除するのではなく、削除フラグを立てるという論理削除方式を採っているのだ。そのため、VACUUMというガーベジコレクションコマンドを定期的に実行する必要がある。 この仕様上、頻繁にデータの追加や更新、削除を繰り返すとDBファイルの中に無駄な領域が増え処理速度が低下してしまう。そこで、VACUUMコマンドを実行するわけだ。バッチ処理などの直前にこのコマンドを実行するかどうかで、処理が完了するまでの時間が大幅に変わることも少なくない。 |
||||||||||
|
1 2 3 次のページ |
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||



