home prev next

はじめに

PostgreSQL とはフリーのデータベースサーバーのひとつです。
バージョン8.0 から Linux, FreeBSD, Solaris, HP-UX, AIX等、UNIX系システムだけでなく、Windows系システムもサポートしています。
尚、商用データベースと遜色無い高機能性を持ち、配列データの扱いや実行結果のインデックス等他には無い機能も備えています。

今回、ターゲットにしたマシンは Intel版 Solaris 10 です。


PostgreSQL インストール

PostgreSQL は OS とは別の管理ユーザを使用しますので予め作成しておく必要があります(一般的には postgres というユーザで管理します)。

既に PostgreSQL がインストール済みのマシンをターゲットにしたので、コンパイルオプションに --prefix を指定してインストール先を変更しましたが、
通常はデフォルトで /usr/local/pgsql にインストールされるので指定する必要はありません。
また、--enable-muntibyte は日本語文字を扱えるようにするためのオプションです。
インストール先の /usr/local は root が所有しているのでスーパーユーザで make install を実行します。
しかし、前述の通り PostgreSQL は別の管理ユーザを使用するので /usr/local/pgsql8 以下の所有者を chown 及び chgrp コマンドで変更して下さい。

Table.1-1: コンパイルオプション --enable-muntibyte で指定可能なエンコード
エンコーディング 説明
SQL_ASCII ASCII
EUC_JP 日本語 EUC
EUC_CN 中国語 EUC
EUC_KR 韓国語 EUC
EUC_TW 台湾で使われている EUC
UNICODE ユニコード(UTF-8)
MULE_INTERNAL Mule 内部コード
LATIN1 ISO 8859-1 の英語とヨーロッパ言語の一部
LATIN2 ISO 8859-2 の英語とヨーロッパ言語の一部
LATIN3 ISO 8859-3 の英語とヨーロッパ言語の一部
LATIN4 ISO 8859-4 の英語とヨーロッパ言語の一部
LATIN5 ISO 8859-5 の英語とヨーロッパ言語の一部
KOI8 KOI8-R(U)
WIN Windows CP1251
ALT Windows CP866

fig.1-1: PostgreSQLインストール
# tar zxvf postgresql-8.3.4.tar.gz
# cd postgresql-8.3.4
# ./configure --prefix=/usr/local/pgsql8 --enable-multibyte=UNICODE
# make
# make install
# chown -R postgres /usr/local/pgsql8
# chgrp -R postgres /usr/local/pgsql8

/usr/local/pgsql8 に PostgreSQL がインストールできました。

configure でエラーが発生し、コンパイルができない場合があります。
その際には config.log を参照すると原因が記されています。
以下は 必要なライブラリが参照できずに終了してしまった例をあげます。


fig.1-1-1: PostgreSQLインストール失敗例
# ./configure --prefix=/usr/local/pgsql8 --enable-multibyte=UNICODE
... (略) ...
checking test program... failed
configure: error:
Could not execute a simple test program. This may be a problem
related to locating shared libraries. Check the file 'config.log'
for the exact reason.
# cat config.log
... (略) ...
configure:8294: ./conftest
ld.so.1: conftest: fatal: libreadline.so.5: open failed: No such file or directory
... (略) ...
# export LD_LIBRARY_PATH=/usr/local/lib
# ./configure --prefix=/usr/local/pgsql8 --enable-multibyte=UNICODE
# make
# make install

データベース作成

環境設定

前述の通り PostgreSQL は OS とは別の管理ユーザを使用しますので、suコマンドでユーザをスイッチします(本書では通例に習い postgres ユーザを使用)。
viエディタでパスと環境変数の設定内容を /usr/local/pgsql8/.bash_profile に作成します(実際には何処に何と言う名前であっても構いません)。
設定内容は B-Shell系の場合を記しましたが、C-Shell系の設定は別途何かを参照してください。

データベースを並列で稼働させる場合には、特に注意が必要です。
設定を間違えると既存データに思わぬ影響を与える場合があります。

fig.2-1: データベース管理ユーザの環境設定
# su - postgres
# vi /usr/local/pgsql8/.bash_profile

fig.2-2: データベース管理ユーザの環境設定内容
export PATH=/usr/local/pgsql8/bin:"$PATH"
export POSTGRES_HOME=/usr/local/pgsql8
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export PGPORT=15432
export MANPATH=$POSTGRES_HOME/man:"$MANPATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":/usr/local/lib:"$PGLIB"

完了したら、source /usr/local/pgsql8/.bash_profile として、設定内容を反映してください。


データベース初期化

PostgreSQL のインストール後、一度だけ initdbコマンドを実行してデータ領域を確保します。
オプションによりデータディレクトリを指定しているが、PGDATA で指定していれば必要ありません。

fig.2-3: データベース初期化
# initdb /usr/local/pgsql8/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
 
The database cluster will be initialized with locales
... (略) ...
Success. You can now start the database server using:
 
postgres -D /usr/local/pgsql8/data
or
pg_ctl -D /usr/local/pgsql8/data -l logfile start
 

これでデータベースの初期化は完了です。


データベース起動

既に PostgreSQL が使用するポート番号 5432 を使用済なので、別のポートを使用します。
使用するポート番号は postgres.conf で設定するので viエディタ等で変更しますが、通常は変更する必要はありません。

ネットワーク経由でデータベースにアクセスをするためには postmaster が -i オプション付きで起動されていることと、pg_hba.conf で許可されたホストからの接続でなければなりません。 デフォルトでは、全ての外部マシンからの接続を禁止しています。pg_hba.conf で設定するので接続を許可するよう viエディタ等で編集します。

fig.2-4: データベース初期化
# vi /usr/local/pgsql8/data/postgres.conf
# vi /usr/local/pgsql8/data/pg_hba.conf
# pg_ctl -o "-i" start

pg_ctlコマンドより postmaster を実行しますが、その際 postmaster に渡すオプションを -o で指定しています。
つまり、-o "-i" とすることで postmaster -i として実行します。


データベース作成

PostgreSQL では複数のデータベースを持つことができます(世の中には一つのシステムにデータベースを一つしか管理できないものもあります)。
データベースの作成には createdbコマンドを使用します。-p オプションで使用するポート番号を指定します。
尚、PostgreSQL の場合、異なるデータベース間でテーブルの結合などはできません。

fig.2-5: データベース作成
# createdb -p 15432 dncdb

「psql -p 15432 dncdb」とすれば、データベースに接続することができます。


データベース移行

通常は必要ありません。

fig.2-6: データベース移行
# pg_dump -p 5432 -s dncdb | psql -d dncdb -p 15432

一般的にはユーザを作成してテーブルを作成して INSERTして ... UPDATEして ... などという流れになると思いますが、本サイトでは割愛します。


あとがき

詳しいデータ件数やテスト手順等は公開できませんが、今回インストールした PostgreSQL 8.3.4 で検証したところ、バージョン 8.1.5 と比べて若干処理速度が速くなっています。


home prev next

Last-modified: Mon Nov 17 12:15:01 JSP 2008
Site admin:りお

Powerd by ninjatools

がんばりましょう このページは Another HTML-lint gatewayがんばりましょうと判断されました。