トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 データベース−ファイル連携方法及びその実施システム並びにその処理プログラムを記録した媒体
【発明者】 【氏名】岩崎 一正

【氏名】野島 博

【氏名】松澤 茂

【要約】 【課題】データベース中のレコードとそのレコードで管理される管理対象ファイルの整合性を維持することが可能な技術を提供する。

【解決手段】データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの登録を要求するステップと、前記管理対象ファイルへの一般利用者によるアクセスを制限するステップと、前記管理対象ファイルの格納場所を示す情報をレコードに設定する処理を呼び出して前記処理により管理対象ファイルの格納場所が設定されたレコードをデータベースに書き込むステップと、前記管理対象ファイルの格納場所を示す情報をレコードに設定するステップとを有するものである。
【特許請求の範囲】
【請求項1】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの登録を要求するステップと、前記管理対象ファイルへの一般利用者によるアクセスを制限するステップと、前記管理対象ファイルの格納場所を示す情報をレコードに設定する処理を呼び出して前記処理により管理対象ファイルの格納場所が設定されたレコードをデータベースに書き込むステップと、前記管理対象ファイルの格納場所を示す情報をレコードに設定するステップとを有することを特徴とするデータベース−ファイル連携方法。
【請求項2】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの削除を要求するステップと、処理対象のレコード中の格納場所で示される管理対象ファイルを削除する処理を呼び出すと共に前記処理対象のレコードをデータベースから削除するステップと、前記処理対象のレコード中の格納場所で示される管理対象ファイルを削除するトランザクションを発行するステップとを備えることを特徴とするデータベース−ファイル連携方法。
【請求項3】 前記管理対象ファイルへのアクセスが行われていない場合に当該管理対象ファイルを削除するトランザクションを発行することを特徴とする請求項2に記載されたデータベース−ファイル連携方法。
【請求項4】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの更新を要求するステップと、前記更新処理で新たに登録する管理対象ファイルへの一般利用者によるアクセスを制限するステップと、前記新たに登録する管理対象ファイルの格納場所を示す情報を処理対象のレコードに設定する処理を呼び出して前記処理により管理対象ファイルの格納場所が設定されたレコードをデータベースに書き込むステップと、前記新たに登録する管理対象ファイルの格納場所を示す情報を前記処理対象のレコードに設定するステップとを有することを特徴とするデータベース−ファイル連携方法。
【請求項5】 前記管理対象ファイルの格納場所を示す情報をレコードに設定する処理の通番が前記管理対象ファイルへの一般利用者によるアクセスを制限する際に設定した通番と一致する場合に、当該レコードの設定を行うことを特徴とする請求項1または請求項4のいずれかに記載されたデータベース−ファイル連携方法。
【請求項6】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、管理対象ファイルの格納場所を示すレコードへのアクセスを要求して処理対象のレコード中の格納場所を示す情報を取得し、前記取得した格納場所の情報を用いて管理対象ファイルへアクセスするステップと、前記処理対象のレコード中の格納場所を示す情報を取得する処理を呼び出して前記処理により取得した格納場所の情報をその要求元に渡すステップと、前記管理対象ファイルの格納場所を示す情報を前記処理対象のレコードから取得するステップとを有することを特徴とするデータベース−ファイル連携方法。
【請求項7】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、データベース管理システムのトランザクションのコミット処理を要求するステップと、前記コミット処理の処理対象の管理対象ファイルに関するトランザクションのコミット処理を呼び出すと共にデータベースのコミット処理を行うステップと、前記管理対象ファイルに関するトランザクションのコミット処理を行うステップとを有することを特徴とするデータベース−ファイル連携方法。
【請求項8】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、データベース管理システムのトランザクションのロールバック処理を要求するステップと、前記ロールバック処理の処理対象の管理対象ファイルに関するトランザクションのロールバック処理を呼び出すと共にデータベースのロールバック処理を行うステップと、前記管理対象ファイルに関するトランザクションのロールバック処理を行うステップとを有することを特徴とするデータベース−ファイル連携方法。
【請求項9】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムにおいて、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの登録を要求する利用者処理部と、前記管理対象ファイルへの一般利用者によるアクセスを制限する外部ファイル管理処理部と、前記管理対象ファイルの格納場所を示す情報をレコードに設定する処理を呼び出して前記処理により管理対象ファイルの格納場所が設定されたレコードをデータベースに書き込むデータベース管理処理部と、前記管理対象ファイルの格納場所を示す情報をレコードに設定する外部ファイル連携処理部とを備えることを特徴とするデータベース−ファイル連携システム。
【請求項10】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムにおいて、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの削除を要求する利用者処理部と、処理対象のレコード中の格納場所で示される管理対象ファイルを削除する処理を呼び出すと共に前記処理対象のレコードをデータベースから削除するデータベース管理処理部と、前記処理対象のレコード中の格納場所で示される管理対象ファイルを削除するトランザクションを発行する外部ファイル連携処理部とを備えることを特徴とするデータベース−ファイル連携システム。
【請求項11】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムにおいて、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの更新を要求する利用者処理部と、前記更新処理で新たに登録する管理対象ファイルへの一般利用者によるアクセスを制限する外部ファイル管理処理部と、前記新たに登録する管理対象ファイルの格納場所を示す情報を処理対象のレコードに設定する処理を呼び出して前記処理により管理対象ファイルの格納場所が設定されたレコードをデータベースに書き込むデータベース管理処理部と、前記新たに登録する管理対象ファイルの格納場所を示す情報を前記処理対象のレコードに設定する外部ファイル連携処理部とを備えることを特徴とするデータベース−ファイル連携システム。
【請求項12】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムにおいて、管理対象ファイルの格納場所を示すレコードへのアクセスを要求して処理対象のレコード中の格納場所を示す情報を取得し、前記取得した格納場所の情報を用いて管理対象ファイルへアクセスする利用者処理部と、前記処理対象のレコード中の格納場所を示す情報を取得する処理を呼び出して前記処理により取得した格納場所の情報をその要求元に渡すデータベース管理処理部と、前記管理対象ファイルの格納場所を示す情報を前記処理対象のレコードから取得する外部ファイル連携処理部とを備えることを特徴とするデータベース−ファイル連携システム。
【請求項13】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムにおいて、データベース管理システムのトランザクションのコミット処理を要求する利用者処理部と、前記コミット処理の処理対象の管理対象ファイルに関するトランザクションのコミット処理を呼び出すと共にデータベースのコミット処理を行うデータベース管理処理部と、前記管理対象ファイルに関するトランザクションのコミット処理を行う外部ファイル連携処理部とを備えることを特徴とするデータベース−ファイル連携システム。
【請求項14】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムにおいて、データベース管理システムのトランザクションのロールバック処理を要求する利用者処理部と、前記ロールバック処理の処理対象の管理対象ファイルに関するトランザクションのロールバック処理を呼び出すと共にデータベースのロールバック処理を行うデータベース管理処理部と、前記管理対象ファイルに関するトランザクションのロールバック処理を行う外部ファイル連携処理部とを備えることを特徴とするデータベース−ファイル連携システム。
【請求項15】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムとしてコンピュータを機能させる為のプログラムを記録した媒体において、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの登録を要求する利用者処理部と、前記管理対象ファイルへの一般利用者によるアクセスを制限する外部ファイル管理処理部と、前記管理対象ファイルの格納場所を示す情報をレコードに設定する処理を呼び出して前記処理により管理対象ファイルの格納場所が設定されたレコードをデータベースに書き込むデータベース管理処理部と、前記管理対象ファイルの格納場所を示す情報をレコードに設定する外部ファイル連携処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする媒体。
【請求項16】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムとしてコンピュータを機能させる為のプログラムを記録した媒体において、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの削除を要求する利用者処理部と、処理対象のレコード中の格納場所で示される管理対象ファイルを削除する処理を呼び出すと共に前記処理対象のレコードをデータベースから削除するデータベース管理処理部と、前記処理対象のレコード中の格納場所で示される管理対象ファイルを削除するトランザクションを発行する外部ファイル連携処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする媒体。
【請求項17】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムとしてコンピュータを機能させる為のプログラムを記録した媒体において、管理対象ファイル及びその管理対象ファイルの格納場所を示すレコードの更新を要求する利用者処理部と、前記更新処理で新たに登録する管理対象ファイルへの一般利用者によるアクセスを制限する外部ファイル管理処理部と、前記新たに登録する管理対象ファイルの格納場所を示す情報を処理対象のレコードに設定する処理を呼び出して前記処理により管理対象ファイルの格納場所が設定されたレコードをデータベースに書き込むデータベース管理処理部と、前記新たに登録する管理対象ファイルの格納場所を示す情報を前記処理対象のレコードに設定する外部ファイル連携処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする媒体。
【請求項18】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムとしてコンピュータを機能させる為のプログラムを記録した媒体において、管理対象ファイルの格納場所を示すレコードへのアクセスを要求して処理対象のレコード中の格納場所を示す情報を取得し、前記取得した格納場所の情報を用いて管理対象ファイルへアクセスする利用者処理部と、前記処理対象のレコード中の格納場所を示す情報を取得する処理を呼び出して前記処理により取得した格納場所の情報をその要求元に渡すデータベース管理処理部と、前記管理対象ファイルの格納場所を示す情報を前記処理対象のレコードから取得する外部ファイル連携処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする媒体。
【請求項19】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムとしてコンピュータを機能させる為のプログラムを記録した媒体において、データベース管理システムのトランザクションのコミット処理を要求する利用者処理部と、前記コミット処理の処理対象の管理対象ファイルに関するトランザクションのコミット処理を呼び出すと共にデータベースのコミット処理を行うデータベース管理処理部と、前記管理対象ファイルに関するトランザクションのコミット処理を行う外部ファイル連携処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする媒体。
【請求項20】 データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムとしてコンピュータを機能させる為のプログラムを記録した媒体において、データベース管理システムのトランザクションのロールバック処理を要求する利用者処理部と、前記ロールバック処理の処理対象の管理対象ファイルに関するトランザクションのロールバック処理を呼び出すと共にデータベースのロールバック処理を行うデータベース管理処理部と、前記管理対象ファイルに関するトランザクションのロールバック処理を行う外部ファイル連携処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする媒体。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明はオペレーティングシステムのファイルシステムによって定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携システムに関し、特にデータベースに対するレコードの追加、削除、更新及び検索に対応してデータベース管理下にあるファイルの追加、削除、更新及び検索を行うデータベース−ファイル連携システムに適用して有効な技術に関するものである。
【0002】
【従来の技術】データベースのレコードに関連付けてオペレーティングシステムのファイルシステム(以下OSファイルシステム)の定義する「ファイル」を管理する方法として、ファイル所在位置情報(いわゆるディレクトリパス)をレコード内の一つのフィールドに書きこんでおく方法がある。この方法では、データベース管理システム(以下DBMS)側から見たときにそのフィールドには単に文字列が格納されているに過ぎず、その文字列がファイルを指しているという認識はない。つまり、DBMSと独立に利用者が当該ファイルを管理する必要がある。こうした方法でデータベースを作成した利用者プログラムは、任意のフィールドを検索キーとしてデータベースを検索した後、当該レコード中のファイルのディレクトリパスを書き込んだフィールドの文字列を取得し、その文字列をディレクトリパスと見なして当該ファイルを参照していた。またDBMSの外に置かれたファイルを指し示すことによりDBMSに格納しているのと同等に扱う外部ファイル機能については「InfoIT,Inc.調査報告書DataLinks:MANAGING EXTERNAL DATA WITH DB2 UNIVERSAL DATABASE P10〜P11」等に記載されている。
【0003】
【発明が解決しようとする課題】ディレクトリパスをデータベースレコードに格納する従来技術によれば、ファイルの管理とディレクトリパスを格納したレコードの管理が別々に行われるので、データベースのレコードの更新・削除とは非同期にファイルの追加・削除が実行される可能性がある。この為、長期間のシステム運用の結果、データベースにレコードが存在するにも関わらず対応するファイルが存在しないという不整合やファイルが存在するにも関わらず対応すべきデータベースのレコードが存在しないという様な不整合が発生しやすい。こうした状況になると、再度、整合性ある状態に回復することは非常に困難となる。これは、仮にファイルの集合とデータベースレコードの集合との突き合わせチェックを行ったとしても、片方が存在しないレコードまたはファイルを消し去って良いかどうか簡単には決定できない為である。本発明の目的は上記問題を解決し、データベース中のレコードとそのレコードで管理される管理対象ファイルの整合性を維持することが可能な技術を提供することにある。
【0004】
【課題を解決するための手段】本発明は、データベースの外部で定義されるファイルをデータベース管理システム制御下で管理するデータベース−ファイル連携方法において、データベースに対するレコードの追加、削除、更新及び検索に対応してそのレコードが示すファイルの追加、削除、更新及び検索を行うものである。
【0005】本発明ではDBMSによりファイルを管理する為にファイル抽象データ型をDBMSに導入する。ファイル抽象データ型は、管理されるファイルに関する情報を格納するデータ構造と当該情報を処理する為の関数を提供する。DBMS利用者は、このファイル抽象データ型のフィールドを持つレコードを定義することによりデータベースにファイルを登録することが出来る様になる。
【0006】またDBMS管理下のファイルを管理する為に、一般利用者よりも上位のファイルアクセス権限を持つファイル管理システム(DBMS外部ファイル管理システムと呼ぶ)を導入する。DBMS管理下の管理対象ファイルはこのDBMS外部ファイル管理システムを所有者とし、これらのファイルには一般利用者からはOSファイルシステムレベルにおいて参照・更新不可のアクセス制御情報を設定しておく。
【0007】更にレコード上のファイル管理情報とDBMS外部ファイル管理システムを連携させる為に、DBMS内部にファイル抽象データ型の処理機能としての外部ファイル連携機能を定義し、データベース操作(例えば、INSERT処理、SELECT処理等)の実行契機に、上記DBMS外部ファイル管理システムの該当処理を呼び出す様に設定する。
【0008】またDBMS利用者がファイルにアクセスする為の手段を提供する為に、外部ファイル連携機能には、データベースレコードの検索時にアクセス用ハンドルを作成する機能を持たせる。この機能は、上記ファイル抽象データ型の提供する関数から呼び出される。DBMS管理下のファイルを参照するには、データベースレコードを検索し、ファイル抽象データ型の関数により前述のアクセス用ハンドルを取得し、アクセス用ハンドルを使用してDBMS外部ファイル管理システムのファイル参照機能を呼び出すことにより、参照可能なファイルが用意される。
【0009】この様に、データベース操作処理とファイル操作処理を連携させることにより、データベースレコードとそのレコードに関連付けられて管理されるファイルとの整合性維持をデータベース管理システムに対する操作で実現できる様になる。
【0010】以上の様に本発明のデータベース−ファイル連携システムによれば、データベースに対するレコードの追加、削除、更新及び検索に対応してそのレコードが示す管理対象ファイルの追加、削除、更新及び検索を行うので、データベース中のレコードとそのレコードで管理される管理対象ファイルの整合性を維持することが可能である。
【0011】
【発明の実施の形態】以下にデータベースに対するレコードの追加、削除、更新及び検索に対応してそのレコードが示すファイルの追加、削除、更新及び検索を行う一実施形態のデータベース−ファイル連携システムについて説明する。
【0012】図1は本実施形態のデータベース−ファイル連携システムの概略構成を示す図である。図1に示す様に本実施形態のデータベース−ファイル連携システムは、利用者処理部1110と、FMS−C1120と、FMS−F1410と、DBMS1610と、外部ファイル連携処理部1615とを有している。
【0013】利用者処理部1110は、管理対象ファイル1420及びその格納場所を示すレコードの登録、削除、更新、アクセス、コミット処理及びロールバック処理を要求する処理部である。FMS−C1120は、FMS−F1410からデータを受け取って管理対象ファイル1420のコピーファイル1130を作成する外部ファイル管理処理部である。
【0014】FMS−F1410は、登録用ハンドルの生成、管理対象ファイル1420への一般利用者によるアクセスの制限、登録用ハンドルの不正使用のチェック、管理対象ファイル1420が使用中であるかのチェック、管理対象ファイル1420のFMS−C1120でのコピーファイル1130の作成、管理対象ファイル1420の削除等の処理を行う外部ファイル管理処理部である。
【0015】DBMS1610は、外部ファイル連携処理部1615の管理対象ファイル1420の登録、削除、更新、アクセス、コミット終了及びロールバック終了を行う処理を呼び出し、管理対象ファイル1420の格納場所を示すレコードの登録、削除、更新、アクセス、コミット処理及びロールバック処理等を行うデータベース管理処理部である。外部ファイル連携処理部1615は、管理対象ファイル1420の登録、削除、更新、アクセス、コミット処理及びロールバック処理やアクセス用ハンドルの生成及び取得等の処理を行う処理部である。
【0016】データベース−ファイル連携システムを利用者処理部1110、FMS−C1120、FMS−F1410、DBMS1610及び外部ファイル連携処理部1615として機能させる為のプログラムは、CD−ROM等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する媒体はCD−ROM以外の他の媒体でも良い。
【0017】図1では本実施形態のデータベース−ファイル連携システムを利用者計算機1000、ファイルサーバ1300及びDBサーバ1500で構成される分散データ管理システムに適用した場合の計算機とその上で稼動するソフトウェアの構成を表しており、利用者計算機1000とファイルサーバ1300、DBサーバ1500は、互いにネットワーク1200で接続されている。
【0018】利用者計算機1000は、二次記憶装置1010、メモリ1020、CPU1030、ネットワークインタフェース1050を備え、これらはバス1040によって接続されている。利用者計算機1000は、ネットワークインタフェース1050を通してネットワーク1200に接続している。二次記憶装置1010上には、利用者計算機1000のオペレーティングシステムであるOS1100、利用者処理部1110、DBMS外部ファイル管理システムFMS−C1120、ファイルアクセスの為に取得したDBMS1610管理下のファイルのコピーファイル1130、及びこのコピーファイル1130のOSファイル情報1140が格納される。
【0019】ファイルサーバ1300は、二次記憶装置1350、メモリ1340、CPU1320、ネットワークインタフェース1310を備え、これらはバス1330によって接続されている。ファイルサーバ1300は、ネットワークインタフェース1310を通してネットワーク1200に接続している。二次記憶装置1350上には、OS1400、DBMS外部ファイル管理システムFMS−F1410、DBMS1610管理下の管理対象ファイル1420、及びこの管理対象ファイル1420のOSファイル情報1430が格納される。
【0020】DBサーバ1500は、二次記憶装置1550、メモリ1540、CPU1520、ネットワークインタフェース1510を備え、これらはバス1530によって接続されている。DBサーバ1500は、ネットワークインタフェース1510を通してネットワーク1200に接続している。二次記憶装置1550上には、OS1600、DBMS1610、DBMS1610管理下の表1620及びこの表更新に対する操作のログファイル1625が格納される。表1620の詳細は図2で説明する。
【0021】DBMS1610は、SQLをインタフェースとして採用しており、通常のSQLデータ型の他にファイル抽象データ型を扱える様に拡張されている。ファイル抽象データ型は、管理対象ファイル1420を管理する為の情報を格納するデータ構造とこのデータ構造専用の関数を提供する。DBMS1610において、ファイル抽象データ型の処理機能を実装するモジュールを外部ファイル連携処理部1615(FE)と呼ぶ。
【0022】DBMS外部ファイル管理システムは、ファイルサーバ1300上のFMS−F1410及び利用者計算機1000上のFMS−C1120から構成される。DBMS外部ファイル管理システムは、一般利用者よりも上位のファイルアクセス権限を持つ利用者FMSの権限で稼動する。DBMS1610管理下の管理対象ファイル1420は、登録時にFMS−F1410により、そのOSファイル情報1430を変更され、DBMS外部ファイル管理システム(すなわち利用者FMS)以外は参照も更新も出来ない様に設定される。これによりデータベースに登録された管理対象ファイル1420に対する不正な参照及び更新を防止している。
【0023】ファイルサーバ1300上のFMS−F1410は、外部ファイル連携処理部1615及び利用者処理部1110とのインタフェースを持ち、FMS−C1120はFMS−F1410とのインタフェースを持つ。これらのインタフェースは一般にリモートプロシージャコールと呼ばれる手段を用いて実装される。リモートプロシージャコールにより、プログラムは呼び出し先プログラムの識別子と関数名称を特定して他プログラムの関数を呼び出すことが出来る。DBMS外部ファイル管理システムの関数を呼び出す為に必要となる、FMS−F1410、FMS−C1120の識別子は、動的に呼び出し側に提供される。次に図2から図4を用いてファイル抽象データ型と外部ファイル連携処理部1615について説明する。
【0024】図2は本実施形態のファイル管理の為のデータを持つ表1620の構造を示す図である。表名はimagesであり、表1620のレコード2000には、番号2002、表題2003、ファイルフィールド2004の3つのフィールドがある。DBMS1610は、表1620のレコード2000の各フィールドにそれぞれレコード識別子2001、フィールド識別子2005を付与する。レコード識別子2001は、表1620に含まれるレコード2000を一意に識別するものであり、フィールド識別子2005は、レコード2000を構成するフィールドを一意に識別するものである。ファイルフィールド2004のデータ型は前述のファイル抽象データ型であり、ファイル抽象データ型のデータ構造として、FMS−F識別子2011とディレクトリパス2012が格納される。
【0025】図3は本実施形態の外部ファイル連携処理部1615の概要を示す図である。図3ではDBMS1610の処理とこれに関連付けられる外部ファイル連携処理部1615の処理との対応を表している。第1列は項番であり、第2列は外部ファイル連携処理部1615が用意する関数であり、第3列はその関数へDBMS1610が渡すべきパラメタであり、第4列はDBMS1610がその関数を呼び出す契機を示している。
【0026】1行目はファイル登録処理を行う関数であり、DBMS1610がINSERT文を処理する際に呼び出される。この際にパラメタとして、新規レコードの識別子、このレコードのファイル抽象データ型のフィールドの識別子、現行トランザクションの識別子が与えられる。この関数により、登録される管理対象ファイル1420に関する情報がINSERT文で作成されるレコード2000のファイルフィールド2004に格納される。
【0027】2行目はファイル削除処理を行う関数であり、DBMS1610がDELETE文を処理する際に呼び出される。この際にパラメタとして、新規レコードの識別子、このレコードのファイル抽象データ型のフィールドの識別子、現行トランザクションの識別子が与えられる。この関数により、削除されるレコード2000のファイルフィールド2004に格納された情報で指定される管理対象ファイル1420が削除される。
【0028】3行目はファイル更新処理を行う関数であり、DBMS1610がUPDATE文を処理する際に呼び出される。この際にパラメタとして、新規レコードの識別子、このレコードのファイル抽象データ型のフィールドの識別子、現行トランザクションの識別子が与えられる。この関数により、新規に登録される管理対象ファイル1420に対応するファイル抽象データ型のデータがUPDATE文で更新されるレコード2000のファイルフィールド2004に格納され、このファイルフィールド2004の旧値として格納されていた情報で指定される管理対象ファイル1420が削除される。
【0029】4行目はコミット処理を行う関数であり、DBMS1610が現行トランザクションをコミット終了する際に呼び出す。この際にパラメタとして、コミット終了するトランザクションの識別子が渡される。この関数により、現行トランザクション内で行われたファイル登録処理、ファイル削除処理、及びファイル更新処理の結果が確定される。
【0030】5行目はロールバック処理を行う関数であり、DBMS1610が現行トランザクションをロールバック終了する際に、当該トランザクション中に外部ファイル連携処理部1615が作成したログレコード毎に呼び出される。この際にパラメタとして、ロールバック終了するトランザクションの識別子とロールバックすべきログレコードが渡される。この関数により、ログレコードに記録されたファイル登録処理、ファイル削除処理、及びファイル更新処理が取り消される。
【0031】6行目はファイル抽象データ型の関数newに対する処理であり、new関数は、ファイル登録に関するパラメタを指定する為にINSERT文またはUPDATE文に埋め込まれる。利用者処理部1110では、パラメタとして登録用ハンドルのみを指定するが、DBMS1610において、処理対象となるレコードの識別子、このレコードのファイル抽象データ型のフィールドの識別子をパラメタに追加して、外部ファイル連携処理部1615の機能呼び出しを行う。
【0032】7行目はファイル抽象データ型の関数get_accesshandleに対する処理であり、get_accesshandle関数は、登録された管理対象ファイル1420をアクセスする為のアクセス用ハンドルを取得する為にSELECT文に埋め込まれる。利用者処理部1110は、パラメタとして利用者名称のみを指定するが、DBMS1610において、処理対象となるレコードの識別子、このレコードのファイル抽象データ型のフィールドの識別子をパラメタに追加して、外部ファイル連携処理部1615の機能呼び出しを行う。利用者処理部1110は、この関数の戻り値としてアクセス用ハンドルをFETCH文により取得する。
【0033】図4は本実施形態のデータベース−ファイル連携システムの表1620に対するDB操作文を示す図である。(1)は、ファイル登録を伴うレコード登録の為のINSERT文である。VALUES句の三つ目には、前述のファイル抽象データ型の関数newを指定する。この関数newのパラメタである変数:entry_handleには、登録されるファイルの登録用ハンドルが格納されている。この例では、番号2002に「102」、表題2003に「dandelion」、指定したファイルの情報をファイルフィールド2004に持つレコードがデータベースに登録され、指定したファイルがデータベースの管理下に入る(但し、確定するのは現行トランザクションのコミット後である)。
【0034】(2)は、レコード削除の為のDELETE文である。この例では、番号2002が「100」であるレコードとこのレコードで管理されるファイルが削除される(但し、確定するのは現行トランザクションのコミット後である)。
【0035】(3)は、ファイル更新を行う為のUPDATE文である。この例では、番号2002が「101」であるレコード2000のファイルフィールド2004に前述のファイル抽象データ型の関数new(変数:entry_handleは、新規に登録されるファイルの登録用ハンドル)指定することにより、このレコードで管理される管理対象ファイル1420を新規ファイルに差換えている。差し替えられるファイル(更新前に登録されていたファイル)は、削除される(但し、確定するのは現行トランザクションのコミット後である)。
【0036】(4)は、ファイルアクセスの為のアクセス用ハンドルを取得する為のSELECT文である。この例では、表題2003が「sun」で始まるレコードが検索対象となる。表1620の内容が図2に示した状態である場合、番号2002が「100」のレコードと番号2002が「101」のレコードが該当する。
【0037】検索結果は、表題2003と前述のファイル抽象データ型の関数get_accesshandleの実行結果として得られるアクセス用ハンドルである。検索結果は、SELECT文実行後にFETCH文を実行する毎に、1レコードずつ取得することが出来る。
【0038】図5から図7は、DBMS外部ファイル管理システム(FMS−C1120、FMS−F1410)及び外部ファイル連携処理部1615のインタフェースを示している。図5は本実施形態の利用者処理部1110がFMS−F1410を呼び出す時のインタフェースを示す図である。(1)は、前述のINSERT文、UPDATE文で使用するファイル登録用ハンドルを作成する為の関数であり、入力として登録するファイルのディレクトリパスを指定し、成功した場合、そのファイルに対する登録用ハンドルが出力として返される。登録するファイルは、予めFMS−F1410の稼動するファイルサーバ1300上に配置しておく。(2)は、前述のSELECT文の結果として得られたアクセス用ハンドルで示されるファイルの内容をコピーしたファイルを作成する為の関数である。入力パラメタとして、アクセス用ハンドル、コピーを作成する計算機上で稼動するFMS−C1120の識別子、コピーのディレクトリパスを指定し、成功した場合、アクセス識別子が返される。(3)は、ファイルアクセスセッションを終了する為の関数であり、入力として(2)で取得したアクセス識別子を指定する。
【0039】図6は本実施形態の外部ファイル連携処理部1615がFMS−F1410を呼び出す時のインタフェースを示す図である。(1)は、外部ファイル連携処理部1615におけるファイル登録処理において、登録用ハンドルの有効性検証の為に呼び出す関数である。登録用ハンドルから取得した通番を入力として指定する。(2)は、外部ファイル連携処理部1615におけるトランザクション完了処理(コミット処理またはロールバック処理)において、削除すべき管理対象ファイル1420を指示する為に呼び出す関数である。削除するファイルのディレクトリパスを入力として指定する。(3)は、外部ファイル連携処理部1615におけるファイル削除処理またはファイル更新処理において、更新対象となる管理対象ファイル1420を削除して良いかを確認する為に呼び出す関数である。確認するファイルのディレクトリパスを入力として指定する。
【0040】図7は本実施形態のFMS−F1410がFMS−C1120を呼び出す時のインタフェースを示す図である。(1)は、ファイルアクセスセッション終了時において、make_copy関数で作成されたファイルを削除する為に呼び出す関数である。削除するファイルのディレクトリパスを入力として指定する。(2)は、make_copy関数でファイルの内容を送出する際に呼び出す関数である。送出されるファイルの内容、格納先となるファイルのディレクトリパス、格納先ファイルを利用する利用者の名称を入力として指定する。
【0041】図8は本実施形態のOSファイル情報1140のデータ構造を示す図である。図8ではOSファイル情報1140、すなわちOS1400が管理する管理対象ファイル1420に関する情報の内、本実施形態に係わる部分のデータ構造を表している。OSファイル情報1140を例としているが、OSファイル情報1430及びOSファイル情報1650も同様のデータ構造である。OSファイル情報1140内には、一つ以上のOSファイル情報レコード2020が格納される。OSファイル情報レコード2020は、コピーファイル1130の利用者毎に作成され、利用者名称2021とその利用者に与えられるファイルへのアクセス権2022が登録される。アクセス権2022として、「参照」と「参照+更新」がある。登録されていない利用者は、コピーファイル1130を参照することができない。また、アクセス権2022として「参照+更新」が設定された利用者のみがコピーファイル1130を更新することができる。
【0042】図9は本実施形態の登録用ハンドルのデータ構造を示す図である。登録用ハンドルは、FMS−F1410のmake_entryhandle関数において作成される。登録用ハンドルレコード2030は、通番2031、FMS−F識別子2032及びディレクトリパス2033の三つのフィールドから構成される。通番2031の値は、make_entryhandle関数実行時に作成されるファイル登録管理情報レコード2050(後述)の通番2052と同じ値が設定される。FMS−F識別子2032の値は、当該登録用ハンドルを作成したFMS−F1410の識別子が設定される。ディレクトリパス2033の値は、make_entryhandle関数の入力パラメタとして指定されたディレクトリパスの値が設定される。
【0043】図10は本実施形態のアクセス用ハンドルのデータ構造を示す図である。アクセス用ハンドルは、外部ファイル連携処理部1615において作成され、ファイル抽象データ型のget_accesshandle関数の戻り値として与えられる。アクセス用ハンドルレコード2040は、FMS−F識別子2041、ディレクトリパス2042、利用者名称2043の三つのフィールドから構成される。FMS−F識別子2041の値は、アクセス対象となる管理対象ファイル1420を管理するFMS−F1410の識別子が設定される。ディレクトリパス2042の値は、アクセス対象となるファイルのディレクトリパスが設定される。利用者名称2043は、get_accesshandle関数の入力パラメタとして指定された利用者の名称が設定される。
【0044】図11は本実施形態のFMS−F1410がメモリ1340上に確保するFMS−F用領域1345内のデータ構造を示す図である。上部はファイルの登録管理情報に関するデータ構造であり、下部はファイルアクセスセッションの管理情報に関するデータ構造である。
【0045】ファイル登録管理情報は、インクリメントカウンタ2051と、幾つかのファイル登録管理情報レコード2050とで構成される。インクリメントカウンタ2051はある正の値を保持し、参照された場合に現在の値を返してカウンタの値を一つ増やす動作をする。ファイル登録管理情報レコード2050は、make_entryhandle関数で作成され、通番2052及びディレクトリパス2053から構成される。通番2052は、レコード識別用であり、レコード作成時にインクリメントカウンタ2051の参照により入手した値が設定される。ディレクトリパス2053は、入力パラメタに指定されたファイルのディレクトリパスが設定される。
【0046】ファイルアクセスセッション管理情報は、インクリメントカウンタ2061と、幾つかのファイルアクセスセッション管理情報レコード2060とで構成される。インクリメントカウンタ2061は、インクリメントカウンタ2051と同様の動きをする。ファイルアクセスセッション管理情報レコード2060は、make_copy関数で作成され、通番2062、ディレクトリパス2063、FMS−C識別子2064、コピーディレクトリパス2065から構成される。通番2062は、レコード識別用であり、レコード作成時にインクリメントカウンタ2061の参照により入手した値が設定される。ディレクトリパス2063は、入力パラメタに指定されたアクセス用ハンドルから取り出したディレクトリパスが設定される。FMS−C識別子2064、コピーディレクトリパス2065は、入力パラメタに指定された、FMS−C1120の識別子及びディレクトリパスが設定される。
【0047】図12は本実施形態の外部ファイル連携処理部1615が取得するログレコードのデータ構造を示す図である。外部ファイル連携処理部1615では、レコード登録時、レコード削除時及びレコード更新時においてファイルフィールド2004が更新されるときに、トランザクションロールバック処理において参照する情報を保持する為に、DBMS1610のログ取得機能を用いてログレコード2070を記録する。ログレコード2070は、トランザクション識別子2071、操作2072、FMS−F識別子2073、ディレクトリパス2074、FMS−F識別子(後)2075及びディレクトリパス(後)2076から構成される。トランザクション識別子2071は、ログレコード2070を取得する契機となった更新処理の属する現行トランザクションの識別子が設定される。操作2072は、更新処理に応じて「INSERT」(レコード登録時)、「DELETE」(レコード削除時)、「UPDATE」(レコード更新時)の何れかが設定される。FMS−F識別子2073、ディレクトリパス2074、FMS−F識別子(後)2075及びディレクトリパス(後)2076には、更新対象となる管理対象ファイル1420のFMS−F識別子及びディレクトリパスが設定される。操作2072が「DELETE」または「INSERT」の場合は、FMS−F識別子(後)2075及びディレクトリパス(後)2076には空値が設定される。操作2072が「UPDATE」の場合は、FMS−F識別子2073及びディレクトリパス2074に更新前の管理対象ファイル1420に関する情報が設定され、FMS−F識別子(後)2075及びディレクトリパス(後)2076には、更新後の管理対象ファイル1420に関する情報が設定される。
【0048】図13は本実施形態のファイル更新管理情報レコードとnew関数のパラメタ待避レコードの例を示す図である。ファイル更新管理情報レコード2080は、トランザクション識別子2081、FMS−F識別子2082及びディレクトリパス2083から構成され、ログレコード2070が保有する情報のうち、トランザクションコミット処理で参照すべき情報のみを保有する。パラメタ待避レコード2090は、レコード識別子2091、フィールド識別子2092、登録用ハンドル2093から構成され、それぞれnew関数のパラメタがそのまま設定される。
【0049】図14から図22のフローチャートは、本実施形態に係わる処理の流れを示している。図14は本実施形態のファイル登録処理の処理手順を示すフローチャートである。図14ではファイル登録処理の主な処理手順を表している。図15は本実施形態のINSERT文処理3400の処理手順を示すフローチャートである。図15では図14に示したステップ3400のINSERT文処理3400の詳細を表している。
【0050】図16は本実施形態のファイル削除処理の処理手順を示すフローチャートである。図17は本実施形態のファイル更新処理の処理手順を示すフローチャートである。図18は本実施形態のデータベース検索からコピー作成までの処理手順を示すフローチャートである。図18ではファイルアクセス処理のデータベース検索からコピー作成までの流れを表している。
【0051】図19は本実施形態のmake_copy関数の処理手順を示すフローチャートである。図19では図18のステップ3034のmake_copy関数3220の詳細を表している。図20は本実施形態のアクセス終了処理の処理手順を示すフローチャートである。図20ではファイルアクセス処理のアクセス終了処理の流れを表している。
【0052】図21は本実施形態のコミット処理の処理手順を示すフローチャートである。図21ではトランザクションコミット終了時の流れを表している。図22は本実施形態のロールバック処理の処理手順を示すフローチャートである。図22ではトランザクションロールバック終了時の流れを表している。図22におけるROLLBACK文処理3450は、利用者処理部1110の不正終了等に起因するトランザクションロールバック時の処理と同じものである。
【0053】図14及び図15のフローチャートに基づいて利用者処理部1110が管理対象ファイル1420をDBMS1610に登録する手順を説明する。利用者処理部1110は、FMS−F1410に対してmake_entryhandle関数3200を呼び出し、ファイルサーバ1300上の管理対象ファイル1420の登録を依頼する(ステップ3001)。パラメタとして、予めファイルサーバ1300に置いてある管理対象ファイル1420のディレクトリパスを指定する。
【0054】利用者処理部1110からの要求を受けてFMS−F1410では、入力パラメタのディレクトリパスにより指定される登録対象ファイルのOSファイル情報1430に登録されているOSファイル情報レコード2020をOS1400の提供するOSファイル情報変更関数により、利用者名称2021として「FMS」、アクセス権2022として「参照+更新」を持つOSファイル情報レコード2020のみに変更する(ステップ3201)。これにより、登録対象ファイルをDBMS外部ファイル管理システム以外の一般利用者が参照及び更新できない様にする。続いて、インクリメントカウンタ2051の参照値、指定されたディレクトリパスをそれぞれ通番2052及びディレクトリパス2053に設定したファイル登録管理情報レコード2050を作成し、メモリ1340上に登録する(ステップ3202)。最後にステップ3203で作成したファイル登録管理情報レコード2050の通番2052の値、FMS−F1410の識別子、利用者処理部1110が指定したディレクトリパスをそれぞれ通番2031、FMS−F識別子2032及びディレクトリパス2033に設定した登録用ハンドルレコード2030を作成する(ステップ3203)。この登録用ハンドルレコード2030をmake_entryhandle関数3200の出力パラメタとして終了する。
【0055】続いて利用者処理部1110は、図4(1)の形式のINSERT文(変数:entry_handleにはステップ3001で取得した登録用ハンドルレコード2030を指定)を用いて新規レコード2000をDBMS1610に登録する(ステップ3002)。
【0056】利用者処理部1110からの要求を受けてDBMS1610では、INSERT文処理3400を実行する。まず新規レコード2000を作成する(ステップ3401)。これにより新規レコード2000のレコード識別子2001とこのレコードに属する各フィールドのフィールド識別子2005が確定する。続いてレコード2000の定義情報を参照してファイル抽象データ型のフィールドを含むレコードであるかの判定が行われ(ステップ3402)、含まない場合はステップ3406へ進む。含む場合はファイル抽象データ型に関する処理が行われ、ファイル抽象データ型に関する処理として、まずINSERT文中のnew関数を処理する為、外部ファイル連携処理部1615のnew関数3500を呼び出す(ステップ3403)。
【0057】外部ファイル連携処理部1615におけるnew関数3500では、パラメタであるレコード識別子、フィールド識別子及び登録用ハンドルを、それぞれレコード識別子2091、フィールド識別子2092及び登録用ハンドル2093に設定した新規パラメタ待避レコード2090を作成し、メモリ1540上のファイル機能拡張用領域1545に登録する(ステップ3501)。
【0058】続いてファイル抽象データ型に関する処理として、INSERT文処理3400中に呼び出す様に関連付けられた外部ファイル連携処理部1615のファイル登録処理3510を呼び出す(ステップ3404)。
【0059】外部ファイル連携処理部1615におけるファイル登録処理3510では、まず、パラメタであるレコード識別子及びフィールド識別子と一致するレコード識別子2091及びフィールド識別子2092を持つパラメタ待避レコード2090をメモリ1540から検索し、見つかったパラメタ待避レコード2090の登録用ハンドル2093から登録用ハンドルレコード2030を取り出す(ステップ3511)。続いて、登録用ハンドルレコード2030から、通番2031、FMS−F識別子2032及びディレクトリパス2033の値を取り出す(ステップ3512)。登録用ハンドルの有効性検証の為、ステップ3512で取得したFMS−F識別子で識別されるFMS−F1410のnew_file関数3210を呼び出す(ステップ3513)。この時、入力パラメタとして、ステップ3512で取得した登録用ハンドルレコード2030の通番2031の値を設定する。
【0060】外部ファイル連携処理部1615から呼び出されたFMS−F1410のnew_file関数3210では、メモリ1340上のFMS−F用領域1345内のファイル登録管理情報の中から入力パラメタに指定された通番と一致する通番2052を持つファイル登録管理情報レコード2050が存在するかを確認する(ステップ3211)。存在した場合、見つけたファイル登録管理情報レコードを削除し(ステップ3212)、OKを返す(ステップ3213)。存在しない場合にNGを返す(ステップ3214)。外部ファイル連携処理部1615では、new_file関数3210がNGを返した場合にエラー終了し、OKを返した場合は処理を続行する(ステップ3514)。
【0061】ファイル登録処理3510のパラメタであるトランザクション識別子、ステップ3512で登録用ハンドルから取り出したFMS−F識別子及びディレクトリパスをそれぞれトランザクション識別子2071、FMS−F識別子2073及びディレクトリパス2074に設定し、操作2072としてINSERTを設定したログレコード2070を作成し、DBMS1610のログ記録機能を利用してログファイル1625に記録する(ステップ3515)。最後に、ステップ3512で登録用ハンドルから取り出したFMS−F識別子及びディレクトリパスを、ファイル登録処理3510のパラメタであるレコード識別子及びフィールド識別子で指定されるFMS−F識別子2011及びディレクトリパス2012に設定し、ファイル登録処理3510を終了する(ステップ3516)。
【0062】DBMS1610はファイル登録処理3510が正常終了しなかった場合(ステップ3405)、INSERT文処理3400をエラー終了する。正常終了した場合は、作成された新規レコード2000をデータベースに書き込み、INSERT文処理3400を正常終了させる(ステップ3406)。
【0063】ファイル登録処理3510に関して、上記では予め管理対象ファイル1420をファイルサーバ1300上に配置することとしていたが、利用者計算機1000上のファイルを登録対象に指定する方法も考えられる。この場合、FMS−F1410で登録ハンドルを作成するmake_entryhandle関数3200のステップ3201の前ステップとして利用者計算機1000上のファイルをファイルサーバ1300上に転送するステップを追加し、make_entryhandle関数3200のパラメタとしてファイルを配置した計算機名称を指定するパラメタを追加することで実現可能である。
【0064】また、登録の為に指定されたファイルを利用者から隠蔽する等の目的で特定のディレクトリにコピーする方法も考えられる。この場合も同様に、make_entryhandle関数3200のステップ3201の前ステップとして登録する管理対象ファイル1420を特定のディレクトリへコピーするステップを組み込めば実現できる。
【0065】図16のフローチャートに基づいて利用者処理部1110がDBMS1610管理下の管理対象ファイル1420を削除する手順を説明する。利用者処理部1110は、DBMS1610に登録されたレコード2000とこのレコードで管理される管理対象ファイル1420の削除を図4(2)の形式のDELETE文を用いて要求する(ステップ3011)。
【0066】利用者処理部1110から呼び出されたDBMS1610ではDELETE文処理3410を実行する。まず、指定されたDELETE文のWHERE句の条件を満たすレコードが確認され(ステップ3411)、レコードが無い場合、DELETE文処理3410を終了する。レコードがある場合、処理対象となるレコードを決定する(ステップ3412)。続いてこのレコードの定義情報に基づいてファイル抽象データ型のフィールドを含むレコードであるか判定が行われ(ステップ3413)、含まない場合はステップ3416へ進む。含む場合は、ファイル抽象データ型に関する処理が行われる。ファイル抽象データ型に関する処理として、外部ファイル連携処理部1615のファイル削除処理3520が呼ばれる(ステップ3414)。
【0067】DBMS1610から呼び出された外部ファイル連携処理部1615のファイル削除処理3520では、まず、パラメタであるレコード識別子及びフィールド識別子で指定されるFMS−F識別子2011及びディレクトリパス2012を取り出す(ステップ3521)。続いて、削除対象となるファイルへのアクセスが行われているかを確認する為に、ステップ3521で取得したFMS−F識別子で識別されるFMS−F1410のcheck_file関数3240を呼び出す(ステップ3522)。この時入力パラメタとして、ステップ3521で取得したディレクトリパスを指定する。
【0068】FMS−F1410のcheck_file関数3240では、メモリ1340上のFMS−F用領域1345のファイルアクセスセッション管理情報からディレクトリパス2063がパラメタと一致するファイルアクセスセッション管理情報レコード2060が有るか調べる(ステップ3241)。ファイルアクセスセッション管理情報レコード2060が無い場合は、OKを返す(ステップ3242)。ファイルアクセスセッション管理情報レコード2060がある場合、パラメタで指定された管理対象ファイル1420を参照中のファイルアクセスセッションがあり、ファイルアクセスを保証する為には管理対象ファイル1420を削除できない為、NGを返す(ステップ3243)。ファイル削除処理3520では、check_file関数3240の結果を見て、NGの場合エラー終了し、OKの場合、処理を続行する(ステップ3523)。
【0069】続いて、ファイル削除処理3520のパラメタであるトランザクション識別子、ステップ3521で取得したFMS−F識別子及びディレクトリパスをそれぞれトランザクション識別子2071、FMS−F識別子2073及びディレクトリパス2074に設定し、操作2072としてDELETEを設定したログレコード2070を作成し、DBMS1610のログ記録機能を利用してログファイル1625に記録する(ステップ3524)。続いて、ファイル削除処理3520のパラメタであるトランザクション識別子、ステップ3521で取得したFMS−F識別子及びディレクトリパスをそれぞれトランザクション識別子2081、FMS−F識別子2082及びディレクトリパス2083に設定したファイル更新管理情報レコード2080を作成し、メモリ1540上のファイル機能拡張用領域1545に登録する(ステップ3525)。
【0070】DBMS1610では、ファイル削除処理3520が正常終了した場合(ステップ3415)、レコード削除を行い(ステップ3416)、ステップ3411へ戻る。ファイル削除処理3520でエラーが発生した場合、DELETE文処理3410をエラー終了する(ステップ3417)。
【0071】図17のフローチャートに基づいて利用者処理部1110がレコードの管理する管理対象ファイル1420を新規ファイルに更新する手順を説明する。利用者処理部1110は、FMS−F1410に対してmake_entryhandle関数3200を呼び出しファイルサーバ1300上の管理対象ファイル1420の登録を依頼する(ステップ3021)。パラメタとして、予めファイルサーバ1300に置いてある新規管理対象ファイル1420のパスを指定する。続いて利用者処理部1110は、図4(3)の形式のUPDATE文(変数:entry_handleにはステップ3021で取得した登録用ハンドルレコード2030を指定)を用いて、WHERE句の条件で指定されるDBMS1610に登録されたレコード2000が管理する管理対象ファイル1420をステップ3021で取得した登録用ハンドルで指される管理対象ファイル1420に更新することを要求する(ステップ3022)。
【0072】利用者処理部1110からの要求を受けてDBMS1610は、UPDATE文処理3420を実行する。まず、指定されたUPDATE文のWHERE句の条件を満たすレコードが確認され(ステップ3421)、レコードが無い場合、UPDATE文処理3420を終了する。レコードがある場合、処理対象となるレコードを決定する(ステップ3422)。続いてこのレコードの定義情報に基づいてファイル抽象データ型のフィールドを含むレコードであるかの判定が行われ(ステップ3423)、含まない場合はステップ3427へ進む。含む場合は、ファイル抽象データ型に関する処理が行われる。ファイル抽象データ型に関する処理として、まず外部ファイル連携処理部1615のnew関数3500が呼び出される(ステップ3424)。続いて、外部ファイル連携処理部1615のファイル更新処理3530を呼び出す(ステップ3425)。
【0073】DBMS1610から呼び出された外部ファイル連携処理部1615のファイル更新処理3530では、まず、パラメタであるレコード識別子及びフィールド識別子で指定されるレコードフィールドのFMS−F識別子2011及びディレクトリパス2012を取り出す(ステップ3531)。続いて、ステップ3531で取得したディレクトリパスをパラメタとして、ステップ3531で取得したFMS−F識別子で識別されるFMS−F1410のcheck_file関数3240を呼び出す(ステップ3532)。check_file関数3240の戻り値が、NGの場合、ファイル更新処理3530はエラー終了し、OKの場合は、処理を続行する(ステップ3533)。続いて、ファイル更新処理3530のパラメタであるレコード識別子及びフィールド識別子と一致するレコード識別子2091、フィールド識別子2092を持つパラメタ待避レコード2090をメモリ1540から検索し、見つかったパラメタ待避レコード2090の登録用ハンドル2093から登録用ハンドルレコード2030を取り出す(ステップ3534)。次に登録用ハンドルレコード2030から、通番2031、FMS−F識別子2032及びディレクトリパス2033の値を取り出す(ステップ3535)。登録用ハンドルの有効性検証の為、ステップ3535で取得したFMS−F識別子で識別されるFMS−F1410のnew_file関数3210を呼び出す(ステップ3536)。この時、入力パラメタとして、ステップ3535で取得した登録用ハンドルレコード2030の通番2031の値を設定する。外部ファイル連携処理部1615では、new_file関数3210がNGを返した場合、エラー終了し、OKを返した場合は処理を続行する(ステップ3537)。
【0074】ファイル更新処理3530のパラメタであるトランザクション識別子、ステップ3531でレコード2000から取り出したFMS−F識別子及びディレクトリパス、ステップ3535で登録用ハンドルから取り出したFMS−F識別子及びディレクトリパスを、それぞれトランザクション識別子2071、FMS−F識別子2073、ディレクトリパス2074、FMS−F識別子(後)2075及びディレクトリパス(後)2076に設定し、操作2072としてUPDATEを設定したログレコード2070を作成し、DBMS1610のログ記録機能を利用してログファイル1625に記録する(ステップ3538)。続いて、ファイル更新処理3530のパラメタであるトランザクション識別子、ステップ3531で取得したFMS−F識別子及びディレクトリパスをそれぞれトランザクション識別子2081、FMS−F識別子2082及びディレクトリパス2083に設定したファイル更新管理情報レコード2080を作成し、メモリ1540上のファイル機能拡張用領域1545に登録する(ステップ3539)。最後に、ステップ3535で登録用ハンドルから取り出したFMS−F識別子及びディレクトリパスを、ファイル更新処理3530のパラメタであるレコード識別子及びフィールド識別子で指定されるレコード2000のファイルフィールド2004のFMS−F識別子2011及びディレクトリパス2012に設定しファイル更新処理3530を終了する(ステップ3540)。
【0075】DBMS1610はファイル更新処理3530が正常終了しなかった場合(ステップ3426)、UPDATE文処理3420をエラー終了する(ステップ3428)。正常終了した場合は、更新されたレコード2000をデータベースに書き込み(ステップ3427)、ステップ3421に進む。
【0076】図18及び図19のフローチャートに基づいて利用者処理部1110がDBMS1610管理下の管理対象ファイル1420をアクセスする手順を説明する。利用者処理部1110は、図4(4)の形式のSELECT文を用いてレコードの選択とアクセス用ハンドルレコード2040の生成をDBMS1610に要求し(ステップ3031)、これを受けてDBMS1610はSELECT文処理3430を行う(ステップ3430)。続いて、利用者処理部1110は、SELECT文の結果を取得すべく、FETCH文の実行をDBMS1610に要求する(ステップ3032)。
【0077】利用者処理部1110からの要求を受けてDBMS1610はFETCH文処理3440を実行する。まず検索結果として条件を満たすレコードがあるかの判定を行い(ステップ3441)、無い場合はFETCH文処理3440を終了する。ある場合は処理対象となるレコードを決定する(ステップ3442)。続いてこのレコードの定義情報に基づいてファイル抽象データ型のフィールドを含むレコードであるかの判定が行われ(ステップ3443)、含まない場合はステップ3445へ進む。含む場合は、ファイル抽象データ型に関する処理が行われる。ファイル抽象データ型に関する処理として、外部ファイル連携処理部1615のget_accesshandle関数3550を呼び出す(ステップ3444)。
【0078】DBMS1610から呼び出された外部ファイル連携処理部1615のget_accesshandle関数3550では、まず、パラメタであるレコード識別子及びフィールド識別子で指定されるFMS−F識別子2011及びディレクトリパス2012を取り出す(ステップ3551)。続いて、ステップ3551で取得したFMS−F識別子2011及びディレクトリパス2012とget_accesshandle関数3550のパラメタである利用者名称をそれぞれFMS−F識別子2041、ディレクトリパス2042、利用者名称2043に設定したアクセス用ハンドルレコード2040を取得し(ステップ3552)、出力変数に設定して返す。
【0079】DBMS1610のFETCH文処理3440は、get_accesshandle関数3550の呼び出しの結果得られたアクセス用ハンドルレコード2040を他の検索結果データと併せて出力結果に設定してFETCH文処理3440を完了する(ステップ3445)。
【0080】続いて、利用者処理部1110は、ステップ3032で取得したアクセス用ハンドルレコード2040のFMS−F識別子2041からFMS−F識別子を取り出す(ステップ3033)。ステップ3032で取得したアクセス用ハンドルに対応する管理対象ファイル1420の内容をコピーしたコピーファイル1130を利用者計算機1000上に作成する為に、ステップ3033で取得したFMS−F識別子で識別されるFMS−F1410のmake_copy関数3220を呼び出す(ステップ3034)。このとき入力パラメタとして、ステップ3032で取得したアクセス用ハンドルレコード2040、FMS−C1120のFMS−C識別子及びコピーファイル1130を作成するディレクトリパスを指定する。
【0081】図19のフローチャートに基づいてmake_copy関数3220の処理を説明する。FMS−F1410のmake_copy関数3220では、まずパラメタであるアクセス用ハンドルのディレクトリパス2042、利用者名称2043からディレクトリパス及び利用者名称を取り出す(ステップ3221)。続いて、インクリメントカウンタ2061の参照値、ステップ3221で取得したディレクトリパス、make_copy関数3220のパラメタであるFMS−C1120の識別子及びディレクトリパスをそれぞれ通番2062、ディレクトリパス2063、FMS−C識別子2064、コピーディレクトリパス2065に設定してファイルアクセスセッション管理情報レコード2060を作成し、メモリ1340上のFMS−F用領域1345に登録する(ステップ3222)。ステップ3221で取得したディレクトリパスで示されるファイルの内容をメモリに読み出し(ステップ3223)、読み出したファイルの内容を転送する為に、make_copy関数3220のパラメタであるFMS−C識別子で識別されるFMS−C1120のreceive関数3100を呼び出す(ステップ3224)。このとき入力パラメタとして、ステップ3223で読み出したファイルの内容、make_copy関数3220のパラメタであるディレクトリパス、利用者名称を指定する。
【0082】FMS−C1120のreceive関数3100では、パラメタであるディレクトリパスで指定されるコピーファイル1130を作成する(ステップ3101)。続いて、パラメタであるデータをステップ3101で作成したコピーファイル1130に書き出す(ステップ3102)。最後に、利用者名称2021にパラメタである利用者名称を設定し、アクセス権2022として「参照」を設定したOSファイル情報レコード2020を作成し、ステップ3101で作成したコピーファイル1130のOSファイル情報1140に追加する(ステップ3103)。これにより、コピーファイル1130はget_accesshandle関数3550のパラメタとして設定された利用者が参照できる状態になる。
【0083】make_copy関数3220は、ステップ3222で作成した新規ファイルアクセスセッション管理情報レコード2060の通番2062の値を出力パラメタであるアクセス識別子に設定し(ステップ3225)、当該処理を終了する。
【0084】ファイルアクセス処理として、利用者計算機1000上にコピーファイル1130を作成する替わりに利用者処理部1110のメモリへ読み込む方法も考えられる。これは、make_copy関数3220でディレクトリパスの替わりにメモリ上のコピー先をパラメタとして指定し、このパラメタの指すメモリ上のコピー先へステップ3223でファイル内容を読み込み、ステップ3224を行わないことで実現できる。
【0085】また、利用者処理部1110をファイルサーバ1300上に置く、或いは、ファイルサーバ1300上の管理対象ファイル1420をネットワークファイルシステムを利用して利用者計算機1000から参照できる様にしておき、管理対象ファイル1420に対するOSファイル情報1430を変更することにより、利用者処理部1110が管理対象ファイル1420を直接参照できる様にする方法も考えられる。これは、make_copy関数3220でステップ3223を行わず、ステップ3224のファイル転送処理をステップ3103同様のOSファイル情報1430の更新処理に変更すれば良い。
【0086】管理対象ファイル1420の利用に関して、DBMS1610を利用する権限を持つ利用者が代行して管理対象ファイル1420の参照権を取得する方法が考えられる。この為には利用者処理部1110がファイル利用者の管理を行い、get_accesshandle関数3550のパラメタの利用者名称としてファイル利用者の名称を設定すれば良い。
【0087】図20のフローチャートに基づいてファイルアクセスセッションの終了処理を説明する。利用者処理部1110は、ステップ3034で取得したアクセス識別子をパラメタとして、ステップ3033で取得したFMS−F識別子で識別されるFMS−F1410のend_access関数3230を呼び出す(ステップ3041)。FMS−F1410のend_access関数3230では、パラメタであるアクセス識別子に一致する値を通番2062として持つファイルアクセスセッション管理情報レコード2060をメモリ1540から検索し(ステップ3231)、無い場合はそのまま終了する。見つかった場合は、見つけたファイルアクセスセッション管理情報レコード2060のFMS−C識別子2064、コピーディレクトリパス2065からFMS−C1120の識別子及びディレクトリパスを取り出す(ステップ3232)。続いて、ステップ3232で取得したFMS−C識別子で識別されるFMS−C1120のdelete_copy関数3110を呼び出す(ステップ3233)。このときパラメタとしてステップ3232で取得したディレクトリパスを指定する。FMS−C1120のdelete_copy関数3110では、パラメタであるディレクトリパスで指定されたコピーファイル1130を削除する(ステップ3111)。end_access関数3230では、ステップ3231で見つけたファイルアクセスセッション管理情報レコード2060を削除し(ステップ3234)、終了する。
【0088】図21のフローチャートに基づいてトランザクションコミット処理について説明する。利用者処理部1110はCOMMIT文によりDBMS1610にトランザクションをコミット終了させることを要求する(ステップ3041)。DBMS1610のCOMMIT文処理3460では、外部ファイル連携処理部1615のコミット処理3560を呼び出す(ステップ3461)。外部ファイル連携処理部1615のコミット処理3560では、パラメタであるトランザクション識別子と一致する値をトランザクション識別子2081の値として持つファイル更新管理情報レコード2080をメモリ1540上で検索し(ステップ3561)、無い場合は終了する。見つかった場合は、見つけたファイル更新管理情報レコード2080のFMS−F識別子2082及びディレクトリパス2083からFMS−F識別子及びディレクトリパスを取り出す(ステップ3562)。続いて、ステップ3562で取得したFMS−F識別子で識別されるFMS−F1410のdelete_file関数3250を呼び出す(ステップ3563)。FMS−F1410のdelete_file関数3250では、パラメタであるディレクトリパスで指定される管理対象ファイル1420を削除し(ステップ3251)、終了する。続いて外部ファイル連携処理部1615のコミット処理3560では、ステップ3561で見つけたファイル更新管理情報レコード2080を削除し(ステップ3564)、ステップ3561に進む。外部ファイル連携処理部1615のコミット処理3560の終了後、DBMS1610は、データベースに関するCOMMIT処理を行う(ステップ3462)。
【0089】次に図22のフローチャートに基づいてトランザクションロールバック処理について説明する。利用者処理部1110はROLLBACK文によりDBMS1610にトランザクションをロールバック終了させることを要求する(ステップ3041)。
【0090】DBMS1610のROLLBACK文処理3450では、ログファイル1625からロールバック対象のトランザクションに関するログレコードを調べ(ステップ3451)、無い場合は終了する。ログレコードがある場合は、外部ファイル連携処理部1615のログレコードであるかを判定し(ステップ3452)、そうでない場合はデータベースのロールバック処理を呼び出し(ステップ3454)、ステップ3451へ進む。外部ファイル連携処理部1615のログレコードである場合は、外部ファイル連携処理部1615のロールバック処理3570を呼び出す(ステップ3453)。
【0091】外部ファイル連携処理部1615のロールバック処理3570では、ログレコード2070の操作2072から操作種別を取り出し、操作種別毎の処理に分岐する(ステップ3571)。
【0092】DELETEの場合、何もせずにステップ3576へ進む。INSERTの場合、ログレコード2070のFMS−F識別子2073及びディレクトリパス2074からFMS−F識別子及びディレクトリパスを取り出し(ステップ3572)、ステップ3572で取得したディレクトリパスをパラメタとして、ステップ3572で取得したFMS−F識別子で識別されるFMS−F1410のdelete_file関数3250を呼び出し(ステップ3573)、ステップ3576へ進む。
【0093】UPDATEの場合、ログレコード2070のFMS−F識別子(後)2075及びディレクトリパス(後)2076の値を取り出し(ステップ3574)、ステップ3574で取得したディレクトリパスをパラメタとして、ステップ3574で取得したFMS−F識別子で識別されるFMS−F1410のdelete_file関数3250を呼び出し(ステップ3575)、ステップ3576へ進む。
【0094】ステップ3576では、ログレコード2070のトランザクション識別子2071、FMS−F識別子2073及びディレクトリパス2074と一致するトランザクション識別子2081、FMS−F識別子2082及びディレクトリパス2083を持つファイル更新管理情報レコード2080がメモリ1540上のファイル機能拡張用領域1545にあるかを判定し(ステップ3576)、無ければ終了する。ある場合は、ステップ3576で見つけたファイル更新管理情報レコード2080を削除し(ステップ3577)、終了する。
【0095】前記の様に本実施形態では、DBMS1610にファイル抽象データ型と外部ファイル連携処理部1615を導入し、DBMS1610管理下のファイルを管理する為にDBMS外部ファイル管理システムFMS−F1410を導入し、外部ファイル連携処理部1615とFMS−F1410とが適切に連携する様に設定することによりDBMS利用者が行うデータベースレコードの操作に対応して当該レコードと関連付けられたファイルに対する適切な操作が行われることが保証される為、前記データベースレコードとファイルとの整合性が保証される。またDBMS1610管理下のファイルに対する不正なアクセスを排除することが出来る。
【0096】利用者処理部1110は、データベース検索後に、入手したコピーファイル1130を通常のファイルアクセス手段を用いて参照することが出来る。この為、既存の利用者処理部1110が利用するファイルをDBMSの管理下へ移行することが容易に行える様になる。
【0097】また、外部ファイル連携処理部1615とDBMS外部ファイル管理システムとの連携をリモートプロシージャコール機能を利用して実装することにより、ネットワーク1200で互いに接続された複数の計算機上にDBMS1610、DBMS外部ファイル管理システム、利用者処理部1110を配置することが出来る。
【0098】従来のディレクトリパスをデータベースレコードに格納する技術では、ファイルの管理とディレクトリパスを格納したレコードの管理が別々に行われる為、データベースのレコードの更新・削除とは非同期にファイルの追加・削除が実行される可能性があったが、前記の様に本実施形態では、ファイルの管理とディレクトリパスを格納したレコードの管理が連携して行われる為、データベースのレコードの更新・削除と同期してファイルの追加・削除が実行される。
【0099】この為、長期間のシステム運用の結果、データベースにレコードが存在するにも関わらず対応するファイルが存在しない、或いは、ファイルが存在するにも関わらず対応すべきデータベースのレコードが存在しないという様な従来技術で発生し易かった不整合は、本実施形態では発生しない。
【0100】以上説明した様に本実施形態のデータベース−ファイル連携システムによれば、データベースに対するレコードの追加、削除、更新及び検索に対応してそのレコードが示す管理対象ファイルの追加、削除、更新及び検索を行うので、データベース中のレコードとそのレコードで管理される管理対象ファイルの整合性を維持することが可能である。
【0101】
【発明の効果】本発明によればデータベースに対するレコードの追加、削除、更新及び検索に対応してそのレコードが示す管理対象ファイルの追加、削除、更新及び検索を行うので、データベース中のレコードとそのレコードで管理される管理対象ファイルの整合性を維持することが可能である。
【出願人】 【識別番号】000005108
【氏名又は名称】株式会社日立製作所
【出願日】 平成10年11月9日(1998.11.9)
【代理人】 【識別番号】100083552
【弁理士】
【氏名又は名称】秋田 収喜
【公開番号】 特開2000−148552(P2000−148552A)
【公開日】 平成12年5月30日(2000.5.30)
【出願番号】 特願平10−317716