EDBへのアプリケーションレベルでのコネクション指向アクセスインタフェースを提供する.
以下に,EDB/Gateへの接続に必要な諸元を示す. EDB/Gateはクライアントサイドのアプリケーションからの接続を想定しているが,接続例のようにマニュアルでも接続は可能である.
port# | description | service area | command example |
---|---|---|---|
44443 | SSL(SSLv3/TLSv1) automatic authentication mode. ユーザの個人証明書を提示し,検証が成功し,かつ自動ログイン設定されている場合. プライマリデータベースを参照する. |
0.0.0.0/0 | % openssl s_client \ -cert your-certificate.pem \ -key your-certificate-key.pem \ -CAfile CA-certificate.pem \ -quiet \ -nbio \ -connect db.db.tokushima-u.ac.jp:44443 |
SSL(SSLv3/TLSv1) connection mode. ユーザの個人証明書を提示しない場合. ログインした場合には,プライマリデータベースを参照する.ログインするまでは,公開用(学内,学外)のデータベースを参照する. |
150.59.0.0/16 | % openssl s_client \ -CAfile CA-certificate.pem \ -quiet \ -nbio \ -connect db.db.tokushima-u.ac.jp:44443 |
|
44080 | without authentication. Referencing the university/public readable database as backend. So you can get only information which is readable from university or world wide. |
150.59.0.0/16 | % telnet db.db.tokushima-u.ac.jp 44080 |
全ての通信データは,Unicode (UTF-8 encoding)で表現された文字列で行われる.
EDB/Gateはクライアントサイドのアプリケーションとの接続を想定しているので,telnetのようなコマンドプロンプトは提示しない. その代わりに,クライアントからのリクエストをrequest-idによって管理し,レスポンスにそれらを付加して応答を行う.
リクエストの発行方法と,レスポンスの様式は以下に示す通り.
- <Request Form>
- COMMAND arg1 [arg2 [arg3 ...]]
- OPTION1 arg1 [arg2 [arg3 ...]]
- OPTION2 arg1 [arg2 [arg3 ...]]
- ...
- (insert a blank line: blank line means the end-of-request)
- <Response Form>
- --- BEGIN-OF-RESPONSE (request-id)
- request-id(TAB) Status: 3-digits-code comment
- request-id(TAB) result-information1
- request-id(TAB) result-information2
- request-id(TAB) ...
- request-id(TAB) (blank)
- request-id(TAB) content-of-response1
- request-id(TAB) content-of-response2
- request-id(TAB) content-of-response3
- request-id(TAB) content-of-response4
- request-id(TAB) ...
- --- END-OF-RESPONSE (request-id)
- ○ リクエストのブロックの終了は空行(改行コードのみの行)で示す.
- EDB/Gateは空行が現れたとき,コマンドの解析と実行を開始する.
- ○ リクエストは,レスポンスの終了を待たなくても,発行することができる.
- ただし,ソケット接続においてブロックされないことが必要.
- ○ EDB/Gateからのレスポンスについて
- EDB/Gateからのレスポンスは,
- でブロック化されて返送される.
- --- BEGIN-OF-RESPONSE (request-id)
- --- END-OF-RESPONSE (request-id)
- このブロック内に含まれる行には,
があり,前者はEDB/Gateのデバッグ用もしくは,内部処理を確認するためのものであるので,無視する.
- 行頭の`!'はその行が注釈である事を示す.
- 行頭にrequest-id(TAB)が記述されている行
後者は更に,に分けられ,これらは,
- レスポンスヘッダ
- コンテンツ
のみの行で区切られる. レスポンスヘッダにはリクエストの成功の可否やコンテンツの長さなどが示される. コマンドが何らかの情報を取得する場合には,コンテンツの場所において情報が返送される.
- request-id(TAB)
- インタラクティブにコマンドとレスポンスを繰り返す場合には,request-idのフィールドに書かれているIDを無視することも可能であるが,コマンドを同時に発行するような場合には,ID部分によりレスポンスを選別した後,各々のレスポンスの内容を解析する必要がある.
- なお,通常request-id はサーバ側で自動的に生成される.1ずつ増える値となるが,クライアント側から request-idをリクエストのオプションで指定する事も可能である.
("request-id" は正の整数である事).
- Request-ID: request-id
request-idを指定すると,それ以降の値は指定したrequest-idに続くものになる.
Command | Synopsis | Description | Return | Option |
---|---|---|---|---|
Connection Management | ||||
LOGIN | LOGIN user-eid passphrase | データベースにログインする.(EDB/SSL mode only) | (none) | |
SLOGIN | SLOGIN passphrase | データベースにスタッフ権限でログインする.(LOGIN state only) | (none) | |
SLOGOUT | SLOGIN | スタッフ権限からログアウトする.(STAFF state only) | (none) | |
ENV | ENV | コネクション状態を表示する. | environment variables and their values | |
VERBOSE | VERBOSE [level] | VERBOSEレベル(≧0)の設定(既定値: 0) | (none) | |
QUIT | QUIT | コネクションを切断する. | (none) | |
HELP | HELP [cmd] | ヘルプメッセージを表示する. | summary of command usage | |
BEGIN | BEGIN | トランザクションを開始する. | (none) | |
END | END | トランザクションを終了する. | (none) | |
Retrive Information | ||||
TABLE | TABLE | テーブルの全リストを得る. | 形式2 | |
TABLE regular | 標準テーブルのリストを得る. | |||
TABLE auxiliary | 補助テーブルのリストを得る. | |||
AGE | AGE | 全情報について最大のEOIDを得る. | EOID | |
AGE eid | eidで示される情報について,参照まで含めたEOIDの最大値を得る.この値が増加している場合には,補間後の情報(cXML; completed XML)の記述が変更された可能性がある. | |||
INFO | INFO MAX(eid) | 全情報について最大のEIDを得る. | EID | |
INFO MAX(eoid) | 全情報について最大のEOIDを得る. | EOID | ||
GET | GET eid-of-tuple [eoid] | eid-of-tupleで指定された情報のXML形式の登録情報を得る.eoidが指定された場合には,過去の変更履歴中のXML形式の情報を得る. | 形式3 | |
GET eid-of-table | eid-of-tableで指定されたテーブルのXML形式の定義情報を得る. | |||
GET xmlname | xmlnameで指定されたテーブルのXML形式の定義情報を得る. | |||
DTD | DTD xmlname | xmlnameで指定されたテーブルのDTDを得る. | DTDの内容 | |
FRESH | FRESH seconds | 現在から遡ってseconds秒以内に更新された情報のリストを得る. | 形式1 | |
HISTORY | HISTORY eid | eidで指定された情報の変更履歴のリストを得る. (非LOGIN状態では変更履歴は参照できない.最新のもののみ返される.) |
形式1 | |
LOOK | LOOK condition | 条件(condition)による検索を行う. | 形式1 | Order |
COUNT | COUNT condition | 条件(condition)に適合する情報の数を得る. | 整数値 | |
TRCOUNT | TRCOUNT eid | すべてのテーブルについて,eidを参照している情報の数を得る. | 形式1+整数値 | |
TOCOUNT | TOCOUNT eid | すべてのテーブルについて,eidが所有している情報の数を得る. | 形式1+整数値 | |
TPCOUNT | TPCOUNT eid | すべてのテーブルについて,eidが権限をもつ情報の数を得る. | 形式1+整数値 | |
TMCOUNT | TMCOUNT eid | すべてのテーブルについて,eidをマップしている情報の数を得る. | 形式1+整数値 | |
CLASSIFY | CLASSIFY cxn condition | 条件(condition)に適合する情報をカラム(cxn)で分類する. | 整数値(EIDまたは年等の整数値)+整数値 | Mode: fiscal |
OWNERSHIP | OWNERSHIP xmlname eid | テーブル(xmlname)の登録情報においてユーザ(eid)が(直接)所有する情報のリストを得る. | 形式1 | |
REFER | REFER xmlname eid | テーブル(xmlname)の登録情報において情報(eid)が(直接)参照されている情報のリストを得る. | 形式1 | |
CAPTION | CAPTION eid | 情報の見出しを得る. | 形式4 | |
EXPAND | EXPAND eid | 情報を展開する. | 形式1 | |
Editting Information (required LOGIN-state) | ||||
EDITOR | EDITOR eid | 情報(eid)を編集可能なユーザのリストを得る. | 形式1 | |
NOTIFY | NOTIFY immediate | 電子メールによる変更通知の可否を設定する.(required STAFF-state) | (none) | |
NOTIFY delay | ||||
NOTIFY off | ||||
CHECK | CHECK xml | XML記述を検査する. | checked status | |
MODIFY | MODIFY xml | XML記述を修正する. | modified XML | |
UPDATABLE | UPDATABLE xml | XML記述が更新可能な内容であるかを検査する. | checked status | |
UPDATE | UPDATE xml | XML形式で与えられた情報をデータベースに登録する. | 形式1 | |
CREATABLE | CREATABLE xmlname | 指定されたテーブルにおける新規情報作成の可否を得る. | 論理値 | |
CREATABLE eid | ||||
WRITABLE | WRITABLE eid | 指定された情報の書き込み可否を得る. | 論理値 | |
DELETABLE | DELETABLE eid | 指定された情報の無効化の可否を得る. | 論理値 | |
ISUSER | ISUSER eid | 指定された情報(person)がユーザ権限を持つかどうか判定する. | 論理値 | |
ISSTAFF | ISSTAFF eid | 指定された情報(person)がスタッフ権限を持つかどうか判定する. | 論理値 | |
ISODIN | ISODIN eid | 指定された情報(person)がOdin権限を持つかどうか判定する. | 論理値 | |
PASSPHRASE | PASSPHRASE passphrase | ログインパスフレーズを変更する. | 論理値 | |
Miscellaneous | ||||
CTEXT | CTEXT text | テキスト(text)に文字変換テーブルによる変換を施す. | converted text. | |
CTABLE | CTABLE | 文字変換テーブルをダンプする. | conversion table. |
Format | Fields | |||||
---|---|---|---|---|---|---|
形式1 | request-id | EID | EOID | TABLE-EID | ||
形式2 | request-id | EID | EOID | TABLE-EID | xmlname | |
形式3 | request-id | EID | EOID | TABLE-EID | XML | 形式4 | request-id | EID | EOID | TABLE-EID | 短見出し | 長見出し |
各フィールドはTAB文字(U+0009)で区切られる.(フィールド内のテキストにはTAB文字は含まれない.)
valueの型 | 指定形式 | 説明 |
---|---|---|
存在 | ANY | 何かがあるとき.リレーショナルデータベースにおいて比較の対象となるものが存在するときに真値をとる.!ANYは使用不可. |
EID | \e{NULL} \E{NULL} |
参照なし. |
\e{eid} | 展開なし. | |
\E{eid} | 展開あり. | |
サブクエリ | 展開あり. | |
テキスト | "string" | 登録内容に等しいテキスト.MTEXTのように左辺から複数のテキストを抽出可能な場合には,(英),(日),(読)のいずれかに等しいテキスト |
数値 | "val" | 登録内容に等しい数値. |
"val1 val2" | もしくは登録内容を含む範囲 | |
年月日 | "date" | 登録内容に等しい月日 |
"from-date to-date" | 登録内容を含む期間 |
column="val1 val2"と指定する.val2が省略された場合,完全一致とみなす.
option | usage | description |
---|---|---|
Order | Order: column1 column2 ... | 排列に利用するカラムを指定する.先に書いたカラムが優先される.カラム名の前に'!'を記すと逆順となる. |
2xx | 肯定的応答 | 処理が正常に終了したことを示す. |
---|---|---|
3xx | 肯定的応答 | 処理の過程で何らかの修正がなされたことを示す. |
4xx | 否定的応答 | 要求にエラーがあったことを示す. |
5xx | サーバのエラー | サーバ側で不可避なエラーが生じたことを示す. |
EDB/Gateのコマンドにはトランザクションの開始(BEGIN)と終了(END)が用意されているが,これは,バックエンドデータベースのSQLにおける"BEGIN", "END"に1対1で対応していない.以下の点で異なる.
サーバのリソースを節約するため,アイドル状態が約60分以上経過すると自動的にEDB/Gateは接続を切断する.