× Sympa のデータベース
Sympa を実行するにはリレーショナルデータベース (RDBMS) が必要です。現在のところ、次のいずれかの RDBMS を使えます: MySQL、SQLite、PostgreSQL、Oracle、Sybase。他の RDBMS とのインタフェースは、コードに若干の修正を施すだけでできます。多くの RDBMS の DBD (データベースドライバ) を持つ DBI (データベースインタフェース) の API を使っているためです,
Sympa はデータベースに 3 種類の情報を、それぞれひとつのテーブルとして格納します:
- ユーザの個人設定とパスワードを
user_table
テーブルに。 - リストの読者登録情報と読者登録オプションを
subscriber_table
テーブルに。このテーブルには、取り込んだ利用者のキャッシュも入ります。 - リストの管理情報と、オーナーや吟味役のオプションを
admin_table
テーブルに。このテーブルには、取り込んだオーナーや吟味役のキャッシュも入ります。 - さらに、運用記録が
log_table
に。リストのオーナーは、ウェブインタフェイスでリストの運用記録を閲覧できます。
前提条件
データベースシステムをインストール (Sympa と同じホストにでなくてもかまいません) し、Sympa のホストにそのデータベースのためのクライアントライブラリをインストールしておく必要があります。おそらく、選択した RDBMS のための Perl DBD (データベースドライバ) が見つかるでしょう。DBI モジュールで使えるようになっているかどうか調べてください。
Perl モジュールのインストール
Sympa はデータベースシステムとのやりとりに DBI
と データベースシステム用の DBD を使います。DBI
と DBD::データベース
が CPAN モジュールとして配布されています (たとえば MySQL ならば Msql-Mysql
モジュール)。モジュールのインストールの詳細については「Perl と CPAN モジュールのインストール」を参照してください。
Sympa データベースの作成
データベースの構成
データベースの自動作成・更新
sympa.pl
プロセスは、起動時に、データベース (sympa.conf
に設定されている) が利用可能で期待通りの構成になっているかどうか調べます。なっていなければ、sympa.pl
プロセスはデータベースを作成するか、構成を更新します。ただし、この機能が利用できるのは MySQL の場合だけで、他の RDBMS との連携は不完全です。なお、この自動処理では MySQL の root
がパスワードを使わないようになっている必要があります。パスワードを使っているのであれば、sympa.pl
を最初に実行するときだけ無効にしてください。
自動処理ではまた、sympa.conf
で宣言した db_user
に権限を与えます。
データベースの手動作成
下記の create_db
スクリプトで sympa データベースを作成できます。このスクリプトは配布物の script/
ディレクトリにあります (現在、MySQL、SQLite、PostgreSQL、Oracle、Sybase 用のスクリプトがあります)。
- MySQL のデータベースを作成するスクリプト
- SQLite のデータベースを作成するスクリプト
- PostgreSQL のデータベースを作成するスクリプト
- Sybase のデータベースを作成するスクリプト
- Oracle のデータベースを作成するスクリプト
mysql
、psql
、sqlplus
のような簡易 SQL シェルを使ってスクリプトを実行できます。
例:
# mysql < create_db.mysql
データベースの権限設定
sympa データベースへのアクセスを制限することを強くお勧めします。そうしておいて、sympa.conf
で db_user
と db_passwd
を設定します。
MySQL では:
grant all on sympa.* to sympa@localhost identified by 'your_password'; flush privileges;
読者データのインポート
データベーステーブルの拡張
データベース中の Sympa ログ
Sympa の設定
新たに作成したデータベースに読者情報を格納するには、まず、稼働させるデータベースの種類を Sympa に教えておき、それからリストがデータベースにアクセスできるよう設定する必要があります。
sympa.conf の関連するパラメータでデータベースの置き場所を定義します。次のものです: db_type
、db_name
、 db_host
、db_user
、 db_passwd
。
Sympa を Oracle データベースとインタフェースしているときは、
db_name
を SID にします。ORACLE_HOME
環境変数を sympa.conf の db_env パラメータで設定しなければなりません。
これで、すべてのリストでデータベースを使うよう設定ができました (ただし、user_data_source
リストパラメータを file
か include
に設定してある場合は別です)。
こうして、Sympa はリストの利用者情報を、subscribers
ファイルではなく、データベースを使って取り出したり格納したりするようになります。なお、読者情報はシャットダウンのたびに subscribers.db.dump
に書き出されます。これは、万一データベースがアクセス不能になった場合に、手動での復旧ができるようにするためです (subscribers.db.dump
の名前を subscribers
に変え、user_data_source
パラメータを変更します)。
× Sympa and its database の 2008/06/25 14:46 の版をもとに翻訳しました。もとの文書の更新に気づいた方は、差分を参照して更新してください。
翻訳作業については 訳語について も参照してください。