XMLによる情報を蓄積するサーバ.
サーバ上では,PostgreSQLサーバが稼働し,データベース名: edb_database にてXMLDBの原典情報を管理している.
データベース: edb_database で管理されているテーブルは以下のとおり.
Read onlyでかつTRANSACTION内で得た情報をオリジナルデータベースの更新に用いない場合には,テーブル edb_lock をロックせずに TRANSACTION の ISOLATION LEVEL を SERIALIZABLE にセットする方法もある.
本データベースサーバは,登録情報の検索,およびデータのバックアップおよびバックアップサーバとして利用する.
データベースサーバ(RDB)は下記のテーブルからなる.
Original (XMLDB) | Replica (XMLDB and RDB) | |||||
---|---|---|---|---|---|---|
edb_database | →(dwarf)→ | edb_database | →(dwarf)→ | edb_latest only latest information |
→(dwarf)→ | edb_university latest and readable in university |
→(dwarf)→ | edb_public latest and public readable |
XMLとRDBから,文書作成に必要な情報を抽出し,冊子やweb頁を作成する.
データベース間の変更通知は,PostgreSQLの機能として提供されているNOTIFYとLISTENコマンドを用いて行なう.
各データベース毎に,バックグラウンドプロセス(edb_dwarf)を起動し,メインのデータベースのおけるNOTIFYイベントを監視する.
edb_browse, edb_edit, その他は,メインのデータベースに何らかの情報の追加を行なった場合には,そのテーブルに対してNOTIFYコマンドを実行すると取り決める. NOTIFYの対象はテーブルであり,対象となるテーブルは,
edb_dwarfは上記の2つのテーブルに対してLISTENコマンドを実行し,それらのテーブルへの変更イベントを受け取る.
変更イベントを受けとった後,edb_dwarfは以下の作業を行なう.