公開用PostgreSQL Databaseの諸元

EDBに蓄積されている情報の中で,公開可能なもののみを抽出したデータベースを作成しPostgreSQLのインタフェースでアクセスできるようにしている. 公開されているデータベースは,

servername port dbname username password 説明 範囲
db1.db.tokushima-u.ac.jp 5434 edb_university guest guest 学内公開可能のみ
履歴なし
無効化情報なし
150.59.0.0/16
db2.db.tokushima-u.ac.jp
db3.db.tokushima-u.ac.jp
db4.db.tokushima-u.ac.jp
db5.db.tokushima-u.ac.jp
db6.db.tokushima-u.ac.jp
db7.db.tokushima-u.ac.jp
db8.db.tokushima-u.ac.jp
db1.db.tokushima-u.ac.jp 5435 edb_public 学外公開可能のみ
履歴なし
無効化情報なし
150.59.0.0/16
db2.db.tokushima-u.ac.jp
db3.db.tokushima-u.ac.jp
db4.db.tokushima-u.ac.jp
db5.db.tokushima-u.ac.jp
db6.db.tokushima-u.ac.jp
db7.db.tokushima-u.ac.jp
db8.db.tokushima-u.ac.jp
である. PostgreSQL 7.4以上のコマンドおよびライブラリインタフェースにて接続可能である.

なお,db[12345678]は互いにバックアップサーバとなっている(ポート番号が異なっていることに注意).dbnameが同じであれば,蓄積されている情報は同じである.

これらのサーバはメンテナンスなどの理由で全てがいつも利用できるとは限らない. その時点で利用できるサーバは

タイプリストsuitable one
edb_university http://web.db.tokushima-u.ac.jp/config/university.list http://web.db.tokushima-u.ac.jp/cgi-bin/dbchooser?TYPE=university
edb_public http://web.db.tokushima-u.ac.jp/config/public.list http://web.db.tokushima-u.ac.jp/cgi-bin/dbchooser?TYPE=public
edbgate http://web.db.tokushima-u.ac.jp/config/edbgate.list http://web.db.tokushima-u.ac.jp/cgi-bin/dbchooser?TYPE=edbgate
servers http://web.db.tokushima-u.ac.jp/config/servers.utlf (not implement)
で確認することができる.

公開用PostgreSQL Databaseの利用に際する注意

情報のマップ処理
EDBにおいては,情報単位でのマップが行われた場合,それらの情報の実体を現実世界で同一のものであると見倣す約束事を設けている. しかし,この処理はPostgreSQLのテーブルレベルでは調整されていないので,直接PostgreSQLのテーブルをSQLコマンドなどにより検索する場合には,それらの処理を独自に行う必要がある.
マップの情報は各テーブルに登録されているタプルのmapto_eidカラムにある. このカラムの値が非0を示すときには情報のマップが情報識別子mapto_eidで示される情報に対して行われているので,情報を分類するときにはそれらの情報を組み入れる処理を行うべきである.
XMLDBとRDBの参照について
RDBのテーブルは,あくまでも検索用として用意されており,原典情報はXMLDB上にある情報である.
検索結果を表示する場合には,XMLDB上にあるタブルを取り出し,そのタプルより抽出結果を生成することが望ましい.
階層化情報の拡張
RDBのテーブルでは,【組織】情報などの階層化が行われている情報やそれに対して参照型記述が可能なカラムについては,参照している情報のみではなく,その情報の上位に位置する情報も参照している情報として登録されている.
この点で,原典情報であるXML記述の情報との差異が生じていることに注意して欲しい.
データベースのロック
公開用PostgreSQL Databaseでは,情報の整合性が保たれた状態を提供するために,テーブル: edb_lockを作成している. このテーブルは,ACCESS SHARE MODEでロックすることができ,ロックされている限りデータベース上の情報の整合性が保たれる.
整合性とは,参照している先の情報が必ず存在することを意味する.
データベースがロックされている状態では,情報の新たな追加は行われない.したがって,長期(10分以上)にわたるロックは情報の更新に著しい遅延を引き起こし,他の利用者にも悪影響を与えることになるので,データベースのアクセス時には,検索や情報の読み出しを連続的に行い,データベースへの接続を切り離した後,情報の表示等は最後にまとめるプログラムが望ましい.
データベースの整合性の保障
公開用PostgreSQL Databaseでは,情報の整合性が保たれた状態を保つために,必ずTRANSACTIONを開始し,その直後にTRANSACTIONのISOLATION LEVELをSERIALIZABLEにセットすることを薦める.
整合性とは,参照している先の情報が必ず存在することを意味する.

Psqlコマンドによる公開用PostgreSQL Databaseへの接続方法

psql(Version 7.2以上)によりデータベースに接続する際には,

	% psql -h db1.db.tokushima-u.ac.jp -p 5435 -U guest edb_public
	Password: guest                       …エコーバックされない
のように実行する.
アクセス中にデータを変更されないようにするためには,
	edb_public=> BEGIN;
	edb_public=> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
	edb_public=> ...	(SELECT文などのQUERYを発行する)
	edb_public=> ...	
	edb_public=> ...	
	edb_public=> ...	
	edb_public=> END;
のようにトランザクションを開始した後,TRANSACTIONのISOLATION LEVELをSERIALIZABLEのセットする. この設定が正しく行われた場合のみ,データベースに登録されている情報間の整合性が保証される. 設定が行われていない場合には,途中で登録内容が変更されることがある.