最終変更時: 2003年6月18日.
このドキュメントはBioSQLをインストールして使う方法を述べています。BioSQLはOBDA標準の一部で、Open Bioinformatics Foundation内の異なる言語プロジェクトのための共通のシークエンスデータベース用スキーマとして開発されました。
BioSQLは、その設計においてかなりベンダーに対して中立ですが、このチュートリアルは私が一番良く知っている、RedHat7.2を入れたx86マシンでのBioSQLのインストールの例に基づいています。
既にインストール済でなければ、RPMから以下のコマンドでPostgreSQLをインストールできます。
rpm -ivh postgresql-7.2.1-5.i386.rpm postgresql-libs-7.2.1-5.i386.rpm postgresql-server-7.2.1-5.i386.rpm
ほぼ間違いなくroot権限が必要とされます(そうでないとセキュリティに問題あり!!!)。また、JavaでPostgreSQLに接続させるためJDBCが必要とされますが、postgresql-jdbc-7.1.3-2.i386.rpmを使ってインストールできます。ですが、ここから最新版をダウンロードすることをお勧めします。JDBCの実装を含むjarファイルをCLASSPATHの通ったところに置くことになります。
インストール作業では、postgresqlという名前の制御スクリプトが/etc/init.dに置かれます。このスクリプトは初回実行時にデータベースクラスターを作り、初期化します。このクラスターはデータ保持のためにデータベースに使われるファイル群です。
RedHat 7.2では、このクラスターのデフォルトの場所は/var/lib/pgsql/になっています。/varは普通小さいパーティションが割り当てられるので、これは少し不都合です。この段階では、これを回避するために/var/lib/pgsqlから他のパーティションへのシンボリックリンクを張ることができます。これをすぐにやっておくことをお勧めします。
この段階では、使いたいデータベースとそれを使用するためのユーザーを作成しておく必要があります。一時的に管理に使う以外は、postgresというスーパーユーザーを使うことはお勧めしません。
ここでの選択によって、何が出来るかに影響してきますので、ここでPostgreSQlの認証について簡単に述べます。PostgreSQLにはこれを実現するためにいろいろなやり方があります。インストール時のデフォルトでは、ローカルのユーザーからのみの接続を許可し、そしてデータベースと同じ名前をもつユーザーからの接続のみが許可されています。試してみるにはこれでも良いのですが、何人かのローカルユーザーやあるいはリモートユーザーからBioSQLデータベースを使えるようにセットアップしたいときはあまり便利ではありません。
PostgreSQLには、そのドキュメントに書かれているように、別の仕組みもあります。特に認証についてはここに書かれています。パスワード認証をするときは、特にリモートユーザーの認証をするときはmd5暗号化を使って下さい。RedHat 7.2でのインストールでは、このオプションをセットするためのファイルは/var/lib/pgsql/data/pg_hba.confです。他のディストリビューションではファイルの場所が異なることもあります。
RH7.2でインストールした最初の状態では、PostgreSQLをさらにセットアップしていくためにroot権限が必要とされます。postgresスーパーユーザーではログインできませんが、'-'を使ってrootのまま必要なコマンドを動作させることが出来ます。
$ su postgres -c 'createdb <ここにデータベース名を入れて下さい>'
そして以下でユーザー作成
$ su postgres -c 'createuser <ここにユーザー名を入れて下さい>'
このチュートリアルの目的においては、デフォルトの認証を変更するつもりはないので、あなたのユーザー名と同じデータベースの名前を選ぶべきです。この訓練で使うユーザー名はgadflyで、データベース名とユーザー名の選択に反映されます。デフォルトのインストールでUNIXドメインのソケット制限としてTCP/IP接続を可能にするのに必要なもう一つの変更は、PostgreSQL のJDBC実装とは互換性がありません。
そうするためには、起動スクリプトに"-i"フラグを追加する必要があります。/etc/init.d/postgresqlを編集します。
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $PGDATA -p /usr/bin/postmaster start > /dev/null 2>&1" < /dev/null以下のように変更
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -o "-i" -D $PGDATA -p /usr/bin/postmaster start > /dev/null 2>&1" < /dev/null
TCP/IP経由でのアクセスを許可するには/var/lib/pgsql/data/pg_hba.confファイルも編集する必要があります。以下の行をコメントアウトします。
#host all 127.0.0.1 255.255.255.255 trust
これらの作業は共にroot権限を必要とします。ローカルのセキュリティ環境に合わせてベストなやり方を探してください。
さらに変更点として、RH7.3でのPostgreSQLはpgsql言語が初めは可能になっていません。BioSQLではこれをスピードアップのために使っているので、可能にする必要があります。rootで以下のように行います。
su postgres -c 'createlang plpgsql template1'
BioSQLのインストールを完了するためには、PostgreSQLサーバーが起動していないといけません。以下のようにして確かめることができます。
$ /etc/rc.d/postgresql status
起動していないときは
$ /etc/rc.d/postgresql start
と入力して起動します。これにはroot権限が必要です。たいていのUnixユーザーがやるように、System V方式でのシステム起動時にPostgreSQLを起動させた方が良いです。
BioSQLのスキーマで新しいデータベースを初期化し、このスキーマに対するacceleratorをロードするために、3つのスクリプトを必要とします。これらは
biosql-accelerators-pg.sql biosqldb-assembly-pg.sql biosqldb-pg.sql
で、ここで入手できます。
ここでスキーマを、作成したデータベースにロードする必要があります。以下のように行います(ユーザー入力部分は太字)
$ psql gadfly
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
gadfly=> \i biosqldb-pg.sql
CREATE
psql:biosqldb-pg.sql:13: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'biodatabase_pkey' for table 'biodatabase'
CREATE
<残りの出力は省略>
INSERT 16862 1
psql:biosqldb-pg.sql:304: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'cache_corba_support_pkey' for table 'cache_corba_support'
CREATE
gadfly=> \i biosqldb-assembly-pg.sql
<残りの出力は省略>
gadfly=> \i biosql-accelerators-pg.sql
<残りの出力は省略>
gadfly=> \q
$
この処理を見てみましょう。psqlはPostgreSQLのインタラクティブなシェルの名前です。psqlを起動すると、PostgreSQLに接続して既に作成したgadflyという名前のデータベースに対するコマンド入力を受け入れます。psqlは起動するとユーザーに対してプロンプトを表示します。全てのpsqlコマンドは、バックスラッシュ("\")で始まります。\iで、psqlへのファイルからの読み込みを行います。psqlで、biosql-pg.sql, biosqldb-assembly-pg.sql, biosql-accelerators-pg.sqlを続けて読み込んでいます。psqlは各ファイルのSQL文を読み込んでBioSQLデータベーススキーマの構築に進み、その過程で動作の概要を表示します。最後に、\qコマンドでpsqlのインタラクティブシェルを終了します。この段階でBioSQLスキーマのインストールは出来ており、後は動かすだけです!!!
ソース中でJDBCドライバを明示的にロードしない場合には、Java環境変数をセットして知らせる必要があることを忘れないで下さい。
java -Djdbc.drivers=org.postgresql.Driver <Javaソースファイル名>
注意:仮にBiojava1.3をSingaporeスキーマと一緒に使っている場合、以上に述べたbiosqldb-assembly-pg.sqlまたはbiosql-accelerators-pg.sqlのインストールは行わないで下さい。必要なのは新しいbiosqldb-pg.sqlだけです。他のソフトウェアが一緒にインストールされている場合に、パフォーマンスに問題が起こることがあるようです。最終的にこれらの情報を反映した形でこのノートもアップデートされるでしょう。