(57)【特許請求の範囲】
【請求項１】
データベース管理システムで管理されるテーブル情報と外部ファイルを連携させるデータベース−ファイル連携方法であって、
前記テーブル情報に、管理すべき外部ファイルのコンテンツに関する所在情報を格納するデータ構造を提供するファイル抽象データ型のフィールドを定義し、前記データベース管理システムに、前記ファイル抽象データ型のフィールドの所在情報を用いてコンテンツを参照・更新処理する前記データ構造専用の関数を設け、
前記テーブル情報の前記ファイル抽象データ型のフィールドの更新処理時に呼び出される前記関数の処理機能により、当該データベース管理システムのみが参照・更新できるアクセス権限で前記外部ファイルを管理する外部ファイル管理システムを制御するとともに、
同一外部ファイルへのリンク数を管理し、
リンク先ファイル更新処理において、ファイルの内容を更新する際にファイルの複製を作成して更新し、
更新処理の行なわれたレコード中のフィールドのみ複製後のファイルをリンク先として設定する
ことを特徴とするデータベース−ファイル連携方法。
【請求項２】
データベース管理システムが稼働するデータベースサーバと、外部ファイルを管理する外部ファイル管理システムが稼働するファイルサーバと、利用者クライアントとを、ネットワークで接続したシステムにおけるデータベース−ファイル連携方法であって、
前記データベース管理システムが管理するテーブル情報に、管理すべき前記ファイルサーバ上の外部ファイルに関する所在情報を格納するデータ構造を提供するファイル抽象データ型のフィールドを定義して、複数の前記フィールドから１つの外部ファイルに関連付けられるようにし、前記データベース管理システムに、前記ファイル抽象データ型のフィールドの所在情報を用いてコンテンツを参照・更新処理する前記データ構造専用の関数を設け、
前記ファイルサーバでは、前記外部ファイル管理システム経由でのみ前記外部ファイルに対する参照・更新が実行されるようにアクセス権限が設定されており、
前記利用者クライアントが前記テーブル情報から外部ファイルの検索処理を行なうときには、前記レコード中の前記ファイル抽象データ型のフィールドで管理される外部ファイルに関する処理機能の１つであるアクセスハンドル生成処理を実行する関数を呼び出すことにより、検索条件を満たす外部ファイルのリンク情報であるアクセスハンドルを取得し、取得したアクセスハンドルと前記外部ファイル管理システムを用いて、前記レコード中のフィールドにより管理される外部ファイルを参照し、
前記利用者クライアントが前記テーブル情報のレコードに対応する外部ファイルの更新処理を行なうときには、前記レコード中の前記ファイル抽象データ型のフィールドで管理される外部ファイルに関する処理機能の１つであるリンク先ファイル更新処理を実行する関数を呼び出すことにより、当該外部ファイルの複製を作成した後、指定された更新を実行し、該更新処理の行なわれた前記レコード中のフィールドの所在情報として前記複製後のファイルの所在を示す情報を設定する
ことを特徴とするデータベース−ファイル連携方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オペレーティングシステムのファイルシステム（以下、ＯＳファイルシステム）によって定義される「ファイル」をデータベース管理システム（以下、ＤＢＭＳ）制御下で管理するシステムに関し、特にこのデータベース管理システムを用いて管理されたファイルの内容を更新する際に効果的なデータベース−ファイル連携方法及び装置に関する。
【０００２】
【従来の技術】
データベースのレコードに関連づけてＯＳファイルシステムの定義する「ファイル」または「ディレクトリ」（以降、単一ファイル、複数ファイル、ディレクトリ構造を伴った複数ファイルの総称として「コンテンツ」と表記する）を管理する方法として、その所在位置情報（いわゆるディレクトリパス）をレコード内の一つのフィールドに書き込んでおく方法がある。この方法では、ＤＢＭＳ側から見たとき、単に文字列が格納されているに過ぎず、その文字列がファイルまたはディレクトリを指しているという認識はなく、ファイルサイズを始めとする属性、ファイルとディレクトリの区分も関知していない。つまり、当該ディレクトリパスの指し示すコンテンツは、ＤＢＭＳとは独立に、利用者が管理する必要がある。こうした方法でデータベースを作成した利用者プログラムは、任意のフィールドを検索キーとしてデータベースを検索した後、当該レコード中のディレクトリパスが書き込まれたフィールドの文字列を取得し、その文字列をディレクトリパスと見なしてコンテンツを参照していた。
【０００３】
【発明が解決しようとする課題】
ディレクトリパスをデータベースのレコードに直接格納する従来の技術によれば、外部のコンテンツの管理と、そのディレクトリパスを格納したフィールドの管理が別々に行なわれるため、データベースのフィールド値の更新・削除とは非同期に外部のコンテンツに対しての更新・削除が実行される可能性があり、データベースと外部のコンテンツとの間に不整合が発生しやすい。一度整合性が取れなくなると、整合性の取れた状態に戻すことは困難である。
【０００４】
また、上述した従来の技術によれば、同一のコンテンツに対してデータベースの複数のフィールドと対応関係を持たせようとすると、対応を保持しているフィールドの数を別途管理する必要があった。この管理をしないと、コンテンツの更新と削除を行なうときに、他のリンク元となっているデータベースのフィールドから見たときのリンク先の内容まで更新されることになり、不整合が生じるからである。このようにデータベースを用いてコンテンツの版管理を行なうことは困難であった。
【０００５】
このように従来の方法は、運用上データベースと外部のファイルとの連携整合性を保ち続けるのが困難であり、外部のコンテンツの内容の更新や削除を行なう際の確認手順が煩雑になるという問題があった。
【０００６】
本発明の目的は、データベースのトランザクションの延長で外部のコンテンツとの連携処理を行なうことで、データベースからの参照整合性及び更新整合性を保つ方法及び装置を提供することにある。
【０００７】
【課題を解決するための手段】
ＤＢＭＳを用いて外部のコンテンツを管理するために、ファイル抽象データ型をＤＢＭＳに導入する。ファイル抽象データ型は、管理するコンテンツに関する所在情報（ファイルサーバ名、ディレクトリパスなど）を格納するデータ構造と当該情報を処理するための関数を提供する。ＤＢＭＳ利用者は、このファイル抽象データ型のフィールドを持つテーブルを定義することにより、データベースの外部のコンテンツをテーブルのリンク先として登録することが出来るようになる。
【０００８】
また、ＤＢＭＳ管理下のコンテンツを管理するために、一般利用者よりも上位のファイルアクセス権限を持つファイル管理システム（以下、ＤＢＭＳ外部ファイル管理システムと呼ぶ）を導入する。ＤＢＭＳ管理下のコンテンツは、このＤＢＭＳ外部ファイル管理システムを所有者とし、ＯＳファイルシステムレベルにおいて、一般利用者から参照・更新ができないようなアクセス制御情報を設定しておく。抽象データ型フィールドのリンク先としてしてコンテンツを管理するため、ＤＢＭＳ外部ファイル管理システムはリンク先のコンテンツの内部のファイル構成を管理する機構を持つ。また、同一のコンテンツを複数の抽象データ型フィールドのリンク先として管理するため、リンク数を管理する機構を持つ。さらに、ＤＢＭＳトランザクションの延長でリンク先コンテンツの内容更新を行なうため、更新差分情報を保持する機構を持つ。
【０００９】
テーブルに格納されたファイル管理情報とＤＢＭＳ外部ファイル管理システムとを連携させるために、ＤＢＭＳ内部にファイル抽象データ型の処理機能としての外部ファイル連携機能を定義し、データベース操作（例えば、ＩＮＳＥＲＴ処理、ＳＥＬＥＣＴ処理など）の実行契機に、上記ＤＢＭＳ外部ファイル管理システムの該当する処理を呼び出すように設定する。
【００１０】
また、ＤＢＭＳの利用者が検索結果のコンテンツにアクセスする手段を提供するために、外部ファイル連携機能には、データベースレコードの検索時にアクセスハンドルを作成する機能を持たせる。この機能は、上記ファイル抽象データ型の提供する関数から呼び出される。ＤＢＭＳ管理下のコンテンツを参照するには、データベースレコードを検索し、ファイル抽象データ型の関数により前述のアクセスハンドルを取得し、アクセスハンドルを使用してＤＢＭＳ外部ファイル管理システムのファイル参照機能を呼び出すことにより、コンテンツの参照が可能となる。
【００１１】
加えて、ＤＢＭＳの利用者がデータベースのフィールドのリンク先のコンテンツの内容を更新する手段を提供するために、外部ファイル連携機能には、データベースレコードの検索によって取得されたアクセスハンドルによって、ＤＢＭＳ管理下のコンテンツに対する更新情報を登録する機能を持たせる。ＤＢＭＳ管理下のコンテンツを更新するには、更新情報登録の際に取得された編集更新ハンドルを使用して、データベースのトランザクションでフィールド値の更新を行なうことで、ＤＢＭＳ外部ファイル管理システムのファイル更新機能が呼び出されて、リンク先のコンテンツの内容更新が行なわれる。
【００１２】
このように、データベース操作処理とファイル操作処理とを連携させることにより、データベースレコードとそのレコードに関連付けられて管理されるコンテンツとの整合性維持が、データベース管理システムに対する操作の延長で行なわれることから、データベースからの参照整合性及び更新整合性の保証が実現される。
【００１３】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態を詳細に説明する。
【００１４】
図１は、本発明を、データベースサーバ（以下、ＤＢサーバと呼ぶ）、ファイルサーバ、及び利用者クライアントで構成される分散データ管理システムに適用した場合の各計算機と、その上で稼動するソフトウェアの構成を示すシステムブロック図である。
【００１５】
利用者クライアント１０と、ファイルサーバ２０と、ＤＢサーバ３０とは、互いに通信ネットワーク９０で接続されている。
【００１６】
利用者クライアント１０は、ＣＰＵ１１、メモリ１２、ネットワークインタフェース１３、及び二次記憶装置１４を備え、これらはバス１９によって接続されている。利用者クライアント１０は、ネットワークインタフェース１３を通して通信ネットワーク９０に接続している。二次記憶装置１４上には、オペレーティングシステム（以下、ＯＳと呼ぶ）１４１、利用者プログラム１４２、ＤＢＭＳ外部ファイル連携ライブラリ（以下、ＦＭＬと呼ぶ）１４３、及び利用者プログラムからデータベースに登録する登録対象コンテンツ１４４が格納される。本実施形態では、利用者プログラム１４２はＦＭＬ１４３に対してライブラリ呼び出しをする実装例で説明しているが、その他の実装方式としても本発明の実施には差し支えない。
【００１７】
ファイルサーバ２０は、ＣＰＵ２１、メモリ２２、ネットワークインタフェース２３、及び二次記憶装置２４を備え、これらはバス２９によって接続されている。ファイルサーバ２０は、ネットワークインタフェース２３を通して通信ネットワーク９０に接続している。二次記憶装置２４上には、ＯＳ２４１、ＤＢＭＳ外部ファイル管理システム（以下、ＦＭＳと呼ぶ）２４２、データベースに登録されたＤＢ管理下コンテンツ２４３、ＤＢ管理下コンテンツの属性情報などを保持するコンテンツ情報ファイル２４４、及びＤＢ管理下コンテンツ２４３とコンテンツ情報ファイル２４４に関するＯＳファイルアクセス制御情報２４５が格納される。ＤＢ管理下コンテンツ２４３は複数あり、１つ１つのファイルを別個にＤＢ管理下に置くことも、複数ファイルをまとめてＤＢ管理下に置くことも出来る。
【００１８】
ＤＢサーバ３０は、ＣＰＵ３１、メモリ３２、ネットワークインタフェース３３、及び二次記憶装置３４を備え、これらはバス３９によって接続されている。ＤＢサーバ３０は、ネットワークインタフェース３３を通して通信ネットワーク９０に接続している。二次記憶装置３４上には、ＯＳ３４１、ＤＢＭＳ３４２、ＤＢＭＳの外部ファイル連携機能拡張（以下、ＦＡＥと呼ぶ）３４３、ＤＢＭＳ３４２が管理しているテーブル情報３４４、及びＤＢＭＳ３４２のテーブル更新に関する操作のログ３４５が格納される。テーブル情報３４４の詳細は、後述する。
【００１９】
ＤＢＭＳ３４２は、ＳＱＬ(Structured Query Language)をインタフェースとして採用しており、通常のＳＱＬデータ型の他にファイル抽象データ型を扱えるように拡張されている。ファイル抽象データ型は、ファイルを管理するための情報を格納するデータ構造とこのデータ構造専用の関数群を提供する。ＤＢＭＳ３４２において、ファイル抽象データ型の処理機能を実装するモジュールが、前述のＦＡＥ３４３である。本実施形態では、ＤＢＭＳ３４２はＦＡＥ３４３に対してライブラリ呼び出しをする実装例で説明しているが、その他の実装方式としても本発明の実施には差し支えない。
【００２０】
本発明で実現されるＤＢＭＳ外部ファイル管理システムは、ファイルサーバ２０上のＦＭＳ２４２、利用者クライアント１０上のＦＭＬ１４３、及びＤＢサーバ３０上のＤＢＭＳ３４２中のＦＡＥ３４３から構成される。
【００２１】
ファイルサーバ２０上のＦＭＳ２４２は、一般利用者よりも上位のファイルアクセス権限を持つ利用者（ＦＭＳ）の権限で稼動する。ＤＢＭＳ管理下コンテンツ２４３は、ＦＭＳ２４２により、データベース登録時にＯＳファイルアクセス制御情報２４５を更新され、ＦＭＳ２４２以外からは参照も更新も出来ないように設定される。これにより、データベースに登録されたファイルに対する不当な参照及び更新を防止する。また、データベース登録時には、ＤＢ管理下コンテンツ２４３に関する属性情報をコンテンツ情報ファイル２４４で保持する。
【００２２】
ファイルサーバ２０上のＦＭＳ２４２は、外部ファイル連携機能拡張ＦＡＥ３４３及びＤＢＭＳ外部ファイル連携ライブラリＦＭＬ１４３とのインタフェースを持つ。これらのインタフェースは、一般にリモートプロシージャコール（以下、ＲＰＣと呼ぶ）と呼ばれる手段を用いて実装される。ＲＰＣにより、プログラムは、呼び出し先プログラムの識別子と関数名称を指定することで、他プログラム内の関数を呼び出すことが出来る。
【００２３】
図２から図４を用いて、ファイル抽象データ型と外部ファイル連携機能拡張ＦＡＥ３４３について説明する。
【００２４】
図２は、テーブル情報３４４内に格納される、外部ファイル管理テーブル４０００の構造を示している。このフィールド構成は一つの例であり、これと異なるフィールド構造のテーブルであっても、本発明の実施には差し支えない。テーブル４０００には、整数型の番号４０１１、文字列型の表題４０１２、及びファイル抽象データ型の外部ファイル４０１３の３つのフィールドがある。
【００２５】
ＤＢＭＳ３４２は、テーブル４０００のレコード及びフィールドに、それぞれレコード識別子４００１及びフィールド識別子４００２を付与する。レコード識別子４００１は、テーブル４０００に含まれるレコードを一意に識別するためのものである。フィールド識別子４００２は、レコードを構成するフィールドを一意に識別するためのものである。
【００２６】
ファイル抽象データ型の外部ファイル４０１３のデータ構造として、ＦＭＳ識別子４０１４、ディレクトリパス４０１５、及びコンテンツがファイルであるかディレクトリであるかのコンテンツ形式４０１６が格納される。ファイル抽象データ型のデータ構造にさらに他の付加情報を加えても、本発明の実施には差し支えない。
【００２７】
図３は、ＤＢＭＳ３４２の処理とそれに関連付けられる外部ファイル連携機能拡張ＦＡＥ３４３の処理との対応を示している。パラメータは、ＤＢＭＳ３４２がＦＡＥ３４３の関数を呼び出すときに渡す情報であり、ＤＢＭＳ契機は、ＤＢＭＳ３４２がデータベース処理のどの時点でＦＡＥ３４３の関数を呼び出すのかを示している。以下、それぞれの連携機能について説明する。
【００２８】
＃１のコンテンツリンク登録連携機能は、ＤＢＭＳ３４２がＳＱＬのＩＮＳＥＲＴ文を処理してＤＢ管理下コンテンツ２４３へのリンクを設定する際、またはＳＱＬのＵＰＤＡＴＥ文を処理してＤＢ管理下コンテンツ２４３へのリンクを設定する際に呼び出される。呼び出しパラメータとして、現行トランザクションのトランザクション識別子及びファイル抽象データ型値を与える。呼び出しの結果、データベース管理下に置かれるコンテンツ２４３に関する情報が、ＩＮＳＥＲＴ文で作成されるレコードの外部ファイル４０１３に格納され、更新情報がログ３４５に格納される。
【００２９】
＃２のコンテンツリンク削除連携機能は、ＤＢＭＳ３４２がＳＱＬのＤＥＬＥＴＥ文を処理してＤＢ管理下コンテンツ２４３へのリンクを削除する際、またはＳＱＬのＵＰＤＡＴＥ文を処理してＤＢ管理下コンテンツ２４３へのリンクを削除する際に呼び出される。呼び出しパラメータとして、現行トランザクションのトランザクション識別子及びファイル抽象データ型値を与える。呼び出しの結果、削除されるレコードの外部ファイル４０１３に係わる更新情報がログ３４５に格納される。
【００３０】
＃３のコンテンツ編集更新連携機能は、ＤＢＭＳ３４２がＳＱＬのＵＰＤＡＴＥ文を処理してＤＢ管理下コンテンツ２４３の内容を編集更新しようとする際に呼び出される。呼び出しパラメータとして、現行トランザクションのトランザクション識別子及び更新前後のファイル抽象データ型値を与える。呼び出しの結果、編集更新されるレコードの外部ファイル４０１３に係わる更新情報がログ３４５に格納される。
【００３１】
＃４のコミット処理の連携機能は、ＤＢＭＳ３４２が現行のトランザクションをコミット終了する際に呼び出される。呼び出しパラメータとして、コミット終了するトランザクションのトランザクション識別子を与える。呼び出しの結果、ログ３４５に格納されたコンテンツリンク登録処理、コンテンツリンク削除処理、及びコンテンツ編集更新処理の情報の中で指定されたトランザクション識別子を持つものが、それぞれ関係するＤＢ管理下コンテンツ２４３に対して確定され、ログ３４５から削除される。
【００３２】
＃５のロールバック処理の連携機能は、ＤＢＭＳ３４２が現行のトランザクションをロールバック終了する際に呼び出される。呼び出しパラメータとして、ロールバック終了するトランザクションのトランザクション識別子を与える。呼び出しの結果、ログ３４５に格納されたコンテンツリンク登録処理、コンテンツリンク削除処理、及びコンテンツ編集更新処理の情報の中で指定されたトランザクション識別子を持つものが、すべてログ３４５から削除される。
【００３３】
＃６の登録パラメータ設定連携機能、すなわちファイル抽象データ型関数ｎｅｗ（）は、コンテンツリンク登録に関するパラメータを指定するためにＩＮＳＥＲＴ文またはＵＰＤＡＴＥ文に埋め込まれる。利用者プログラム１４２では、パラメータとして登録ハンドルを指定する。この処理の中で、ファイル抽象データ型としての値が構築される。この値は、登録ハンドルと同じ値であっても、ｎｅｗ（）の内部で何らかの変換処理が施された値であっても、本発明の実施には差し支えない。
【００３４】
＃７の編集更新パラメータ設定連携機能、すなわちファイル抽象データ型関数ｕｐｄａｔｅ（）は、ファイルの編集更新に関するパラメータを設定するためにＵＰＤＡＴＥ文に埋め込まれる。利用者プログラム１４２では、パラメータとして編集更新ハンドルを指定する。この処理の中で、ファイル抽象データ型としての値が構築される。
【００３５】
＃８のアクセスハンドル生成連携機能、すなわちファイル抽象データ型関数ｇｅｔ＿ａｃｃｅｓｓｈａｎｄｌｅ（）は、データベースに登録されたコンテンツにアクセスするためのアクセスハンドルを取得するために、ＳＱＬのＳＥＬＥＣＴ文中に埋め込まれる。利用者プログラム１４２は、この関数の戻り値であるアクセスハンドルをＳＱＬのＦＥＴＣＨ文により取得する。
【００３６】
図４は、外部ファイル管理テーブル４０００に対するＤＢ操作文の例である。以下、各々について説明する。
【００３７】
（１）は、外部コンテンツへのリンク登録を伴うレコード登録のためのＩＮＳＥＲＴ文である。ＶＡＬＵＥＳ句の３つ目には、前述のファイル抽象データ型の関数ｎｅｗ（）を指定する。この関数ｎｅｗ（）のパラメータである変数：ｅｎｔｒｙｈａｎｄｌｅには、登録されるコンテンツの登録ハンドルが格納されている。この例では、番号４０１１に１０４、表題４０１２に”ｄａｎｄｅｌｉｏｎ”、外部ファイル４０１３に：ｅｎｔｒｙｈａｎｄｌｅで指定した外部コンテンツに関する情報を持つレコードがデータベースに登録され、指定されたコンテンツがＤＢＭＳの管理下に入り、リンクが設定される。ただし、リンク登録が確定するのはＤＢＭＳトランザクションのコミット時である。
【００３８】
（２）は、レコード削除のためのＤＥＬＥＴＥ文である。この例では、番号４０１１が１００であるレコードが削除され、このレコードの外部ファイル４０１３で指定される外部コンテンツへのリンクが削除される。ただし、リンク削除が確定するのはＤＢＭＳトランザクションのコミット時である。
【００３９】
（３）は、外部ファイル４０１３を更新するためのＵＰＤＡＴＥ文である。この例では、番号４０１１が１０３であるレコードの外部ファイル４０１３に、前述のファイル抽象データ型の関数ｎｅｗ（）を、変数：ｅｎｔｒｙｈａｎｄｌｅには新規に登録されるコンテンツの登録ハンドルを格納して指定することにより、外部ファイル４０１３で既に管理されているコンテンツへのリンク情報を、別のコンテンツへのリンク情報に差し替える。具体的には、元のリンク先コンテンツへのリンクを削除し、新しいコンテンツに対するリンクを設定することになる。ただし、リンク登録とリンク削除とが実際に確定するのは、ＤＢＭＳトランザクションのコミット時である。
【００４０】
（４）は、外部ファイル４０１３で指定される外部のコンテンツの内容を編集更新するためのＵＰＤＡＴＥ文である。この例では、番号４０１１が１０３であるレコードの外部ファイル４０１３で指定される外部のコンテンツが、ファイル抽象データ型の関数ｕｐｄａｔｅ（）のパラメータ：ｕｐｄａｔｅｈａｎｄｌｅで指定される編集更新ハンドルで示される編集更新差分情報に基づいて、その内容を更新される。ただし、外部のコンテンツに対して内容の更新が反映されるのは、ＤＢＭＳトランザクションのコミット時である。
【００４１】
（５）は、外部コンテンツをアクセスするためのアクセスハンドルを取得するためのＳＥＬＥＣＴ文である。この例では、表題４０１２が‘ｓｕｎ’で始まるレコードが検索対象となる。外部ファイル管理テーブル４０００の内容が図２に示した状態である場合、レコード４０２１及び４０２２が該当する。検索結果として取得されるのは、該レコードの表題４０１２と、前述の抽象データ型の関数ｇｅｔ＿ａｃｃｅｓｓｈａｎｄｌｅ（）の戻り値として返されるアクセスハンドルである。
【００４２】
次に、ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）２４２のインタフェースの一例を示す。ＤＢ管理下コンテンツ２４３に対する操作はこれらのインタフェースを通じて行なわれる。
【００４３】
まず、外部ファイル連携機能拡張（ＦＡＥ）３４３から呼び出されるインタフェースの例としては、次の７つがある。
【００４４】
（１）コンテンツ登録準備機能は、利用者クライアント１０上の登録対象コンテンツ１４４をファイルサーバ２０に転送してＤＢ管理下コンテンツ２４３を作成するためのものである。入力として、ＦＭＬ１４３が読み出す登録対象コンテンツ１４４のファイルデータを指定する。該ファイルデータには、ファイル名とファイルの内容が含まれるが、該ファイルデータの形式は規定しない。また、ここで作成されるＤＢ管理下コンテンツ２４３のディレクトリパスについても特に規定しない。出力として、ＦＭＳ２４２で作成された登録ハンドルが返される。なお、本実施例ではＦＭＬ１４３から呼び出しているが、ＤＢＭＳトランザクションの延長でＦＡＥ３４３から呼び出す実装としても本発明の実施には差し支えない。
【００４５】
（２）コンテンツ登録中止機能は、登録ハンドルの無効化を行なうためのものである。入力として、前記コンテンツ登録準備機能で取得した登録ハンドルを指定する。該登録ハンドルに関連するＤＢ管理下コンテンツ２４３がＤＢＭＳ３４２に未登録であり、なおかつトランザクションも開始されていなかった場合、登録ハンドルの解放とともにＤＢ管理下コンテンツ２４３の削除を行なう。
【００４６】
（３）リンク登録機能は、登録ハンドル４３００（後述）で指定されるコンテンツへのリンクを仮登録状態とするためのものである。入力として、ＤＢＭＳ３４２のトランザクション識別子、及びリンク登録対象コンテンツのパス名（ファイル名もしくはディレクトリ名）を指定する。指定されたＤＢ管理下コンテンツ２４３へのリンクが仮登録状態となり、ＦＭＳ２４２内部でコミットまたはロールバック待ち状態となる。
【００４７】
（４）リンク削除機能は、コンテンツへのリンクを仮削除状態とするためのものである。入力として、ＤＢＭＳ３４２のトランザクション識別子、及びリンク削除対象コンテンツのパス名（ファイル名もしくはディレクトリ名）を指定する。指定されたＤＢ管理下コンテンツ２４３へのリンクが仮削除状態となり、ＦＭＳ２４２内部でコミットまたはロールバック待ち状態となる。
【００４８】
（５）リンク先編集更新機能は、コンテンツの内容を更新するためのものである。入力として、ＤＢＭＳ３４２のトランザクション識別子及び編集更新ハンドルを指定する。指定されたＤＢ管理下コンテンツ２４３への内容更新が仮登録状態となり、ＦＭＳ２４２内部でコミットまたはロールバック待ち状態となる。
【００４９】
（６）トランザクション確定機能は、外部コンテンツに対するリンク登録、リンク削除、及び内容更新を確定するためのものである。入力として、ＤＢＭＳ３４２のトランザクション識別子を指定する。
【００５０】
（７）トランザクション無効化機能は、外部コンテンツに対するリンク登録、リンク削除、及び内容更新を無効化するためのものである。入力として、ＤＢＭＳ３４２のトランザクション識別子を指定する。
【００５１】
次に、ＤＢＭＳ外部ファイル連携ライブラリ（ＦＭＬ）１４３から呼び出される、外部コンテンツへのアクセスを行なうためのＦＭＳ２４２のインタフェースとしては、次の４つがある。
【００５２】
（１）アクセス開始機能は、利用者プログラム１４２とＦＭＳ２４２との間でアクセスセッションを開始するためのものである。入力として、アクセスハンドル中に格納されているアクセス対象のコンテンツのパス名、及び利用者プログラム１４２を一意に識別するためのクライアント識別子（利用者クライアント１０のネットワークアドレスと、利用者プログラム１４２がネットワークインタフェース１３との間で確立したセッションの識別子を合わせたもの、など）を指定する。出力として、確立されたセッションを一意に表わすアクセス識別子が返される。この処理の延長で、ＦＭＳ２４２ではアクセス情報をアクセス管理テーブル４６００（後述）に登録する。
【００５３】
（２）コンテンツ属性情報取得機能は、外部コンテンツに関するファイル属性情報を取得するためのものである。入力として、前記アクセス開始機能で取得されたアクセス識別子を指定する。出力として、外部コンテンツのファイル構成情報が返される。ファイル構成情報の一例として、ファイル数、ファイル名、及びファイルサイズなどのリストがある。属性情報の種類及び取得形式は、本発明の実施においては特に規定されるものではない。
【００５４】
（３）データ読み出し機能は、ＤＢ管理下コンテンツ２４３のデータを取得するためのものである。入力として、前記アクセス開始機能で取得されたアクセス識別子、ファイル名、ファイルの読み出し開始地点のオフセット、及び読み出す長さを指定する。出力として、読み出されたファイルデータが返される。
【００５５】
（４）アクセス終了機能は、前記アクセス開始機能で開始したアクセスセッションを終了するためのものである。入力として、前記アクセス開始機能で取得されたアクセス識別子を指定する。この処理の延長で、ＦＭＳ２４２ではアクセス情報をアクセス管理テーブル４６００（後述）から削除する。
【００５６】
最後に、ＤＢＭＳ外部ファイル連携ライブラリ（ＦＭＬ）１４３から呼び出される、外部コンテンツへの編集更新を行なうためのＦＭＳ２４２の各種インタフェースとしては、次の８つがある。なお、これらのインタフェースは、編集更新に関わる更新差分情報をＦＭＳ２４２内で保持するためのものであり、ＤＢ管理下の外部コンテンツに対する更新が反映されるのは、ＤＢＭＳのトランザクションがコミットした時点である。
【００５７】
（１）編集更新開始機能は、利用者プログラム１４２とＦＭＳ２４２との間で更新セッションを開始するためのものである。入力として、アクセスハンドル中に格納されている編集更新対象のコンテンツのパス名、及び利用者プログラム１４２を一意に識別するためのクライアント識別子（利用者クライアント１０のネットワークアドレスと、利用者プログラム１４２がネットワークインタフェース１３との間で確立したセッションの識別子を合わせたもの、など）を指定する。出力として、確立されたセッションを一意に表わす更新識別子が返される。この処理の延長で、ＦＭＳ２４２ではアクセス情報をアクセス管理テーブル４６００（後述）に登録する。
【００５８】
（２）コンテンツ属性取得機能は、外部コンテンツに関するファイル属性情報を取得するためのインタフェースである。入力として、前記編集更新開始機能で取得された更新識別子を指定する。出力として、外部コンテンツのファイル構成情報が返される。ファイル構成情報の一例として、ファイル数、ファイル名、及びファイルサイズなどのリストがある。属性情報の種類及び取得形式は、本発明の実施においては特に規定されるものではない。
【００５９】
（３）ファイル作成機能は、ＤＢ管理下に置かれた外部コンテンツに対してファイルやディレクトリの追加を行なうためのものである。入力として、前記編集更新開始機能で取得された更新識別子、及び作成するファイルまたはディレクトリの名称を指定する。この処理の延長で、ＦＭＳ２４２ではファイル作成の更新情報を編集更新管理テーブル４７００（後述）に登録する。
【００６０】
（４）ファイル削除機能は、ＤＢ管理下に置かれた外部コンテンツに含まれるファイルやディレクトリの削除を行なうためのものである。入力として、前記編集更新開始機能で取得された更新識別子、及び削除するファイルまたはディレクトリの名称を指定する。この処理の延長で、ＦＭＳ２４２ではファイル削除の更新情報を編集更新管理テーブル４７００（後述）に登録する。
【００６１】
（５）データ書き出し機能は、ＤＢ管理下コンテンツ２４３に対してデータの追記や更新を行なうためのものである。入力として、前記編集更新開始機能で取得された更新識別子、ファイル名、ファイルの書き込み開始地点のオフセット、書き込む長さ、及び書き込むファイルデータを格納した領域を指定する。この処理の延長で、ＦＭＳ２４２ではファイル内容変更の更新情報を編集更新管理テーブル４７００（後述）に登録する。
【００６２】
（６）ファイル移動機能は、ＤＢ管理下コンテンツ２４３に対してファイルの移動、すなわちファイル名称の変更を行なうためのものである。ファイルだけでなく、ディレクトリの移動に対しても適用される。入力として、前記編集更新開始機能で取得された更新識別子、移動の元となるファイル名またはディレクトリ名、及び移動後のファイル名またはディレクトリ名を指定する。この処理の延長で、ＦＭＳ２４２ではファイル移動の更新情報を編集更新管理テーブル４７００（後述）に登録する。
【００６３】
（７）編集更新ハンドル取得機能は、前記編集更新開始機能で開始した更新セッションに係わる編集更新ハンドルを取得するためのものである。入力として、前記編集更新開始機能で取得された更新識別子を指定する。出力として、ＦＭＳ２４２で作成された編集更新ハンドルが返される。
【００６４】
（８）編集更新終了機能は、前記編集更新開始機能で開始した更新セッションを終了するためのものである。入力として、前記編集更新開始機能で取得された更新識別子を指定する。この処理の延長で、保持していたセッション情報及びロックが解放される。
【００６５】
図５から図９は、本実施の形態に係わる種々のデータ構造を示している。
【００６６】
図５は、コンテンツ情報ファイル２４４のデータ構造である。コンテンツ情報ファイル２４４は、ＤＢ管理下コンテンツ２４３一つに対して一つ作成される。ファイルが作成される場所は特に規定しないが、ＤＢ管理下コンテンツ２４３とコンテンツ情報ファイル２４４との対応は容易に取れるものとする。リファレンス数４１２１は、外部ファイル管理テーブル４０００（図２）中のいくつの外部ファイルフィールドからリンクが設定されているかを保持する。ディレクトリ名エントリ４１２２は、コンテンツ内に含まれるディレクトリの情報を保持する。該エントリ４１２２中には、ディレクトリ名とそのディレクトリの下に含まれるファイル数などの情報が格納される。ファイル名エントリ４１２３は、コンテンツ内に含まれるファイルの情報を保持する。該エントリ４１２３中には、ファイル名とファイルサイズなどの情報が格納される。なお、格納効率向上のため、複数のＤＢ管理下コンテンツ２４３に対して一つのコンテンツ情報ファイル２４４を対応させる構成としても、本発明の実施には差し支えない。
【００６７】
図６に、登録ハンドル４３００、アクセスハンドル４４００、及び編集更新ハンドル４５００のデータ構造を示す。
【００６８】
登録ハンドル４３００は、ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）２４２のコンテンツ登録準備機能で作成される。登録ハンドルは、ＦＭＳ識別子４３１１、及びディレクトリパス４３１２の２つのフィールドから構成される。ＦＭＳ識別子４３１１には、当該登録ハンドルを作成したＦＭＳ２４２の識別子が設定される。ディレクトリパス４３１２には、ＤＢ管理下コンテンツ２４３に係わるディレクトリパスが設定される。コンテンツが一つのファイルとして指定された場合は該ファイルのフルパス、コンテンツがディレクトリとして指定された場合は該ディレクトリのフルパスが、それぞれ設定される。
【００６９】
アクセスハンドル４４００は、外部ファイル連携機能拡張（ＦＡＥ）３４３において作成され、ファイル抽象データ型関数ｇｅｔ＿ａｃｃｅｓｓｈａｎｄｌｅ（）の戻り値として利用者プログラム１４２に与えられる。アクセスハンドルは、ＦＭＳ識別子４４１１、及びディレクトリパス４４１２の２つのフィールドから構成される。ＦＭＳ識別子４４１１には、アクセス対象のコンテンツを管理するＦＭＳ２４２の識別子が設定される。ディレクトリパス４４１２には、アクセス対象となるコンテンツのディレクトリパスが設定される。コンテンツが一つのファイルとしてリンク登録されている場合は該ファイルのフルパス、コンテンツがディレクトリとしてリンク登録されている場合は該ディレクトリのフルパスが、それぞれ設定される。
【００７０】
編集更新ハンドル４５００は、ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）２４２の編集更新ハンドル取得機能で作成され、利用者プログラム１４２に与えられる。編集更新ハンドルは、ＦＭＳ識別子４５１１、ディレクトリパス４５１２、及び通番４５１３の３つのフィールドから構成される。ＦＭＳ識別子４５１１には、編集更新対象のコンテンツを管理するＦＭＳ２４２の識別子が設定される。ディレクトリパス４５１２には、編集更新対象となるコンテンツのディレクトリパスが設定される。コンテンツが一つのファイルとしてリンク登録されている場合は該ファイルのフルパス、コンテンツがディレクトリとしてリンク登録されている場合は該ディレクトリのフルパスが、それぞれ設定される。通番４５１３には、編集更新管理テーブル４７００（後述）でキーとして使用される、編集更新の識別子が設定される。
【００７１】
図７は、ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）２４２がメモリ２２上に確保する領域２２１内に格納される、利用者クライアント１０に係わる管理情報のデータ構造の一例を示している。上図は外部コンテンツへのアクセスセッション管理に関するデータ構造であり、下図は外部コンテンツへの編集更新セッション管理に関するデータ構造である。アクセスセッション管理情報は、アクセス管理テーブル４６００で管理される。編集更新セッション管理情報は、編集更新管理テーブル４７００で管理される。
【００７２】
アクセス管理テーブル４６００は、通番４６１１、ディレクトリパス４６１２、クライアント識別子４６１３、及び更新フラグ４６１４の４つのフィールドから構成される。ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）２４２のアクセス開始機能または編集更新開始機能の呼び出しによって外部コンテンツへのアクセスセッションまたは更新セッションが開始されるときに、アクセス管理テーブル４６００に新規レコードが登録される。通番４６１１はセッションの識別のためのものであり、セッション開始時に一意な値が設定される。ディレクトリパス４６１２には、前記機能の入力に指定されたパス名が設定される。クライアント識別子４６１３には、前記機能の入力の際に指定されたクライアント識別子が設定される。更新フラグ４６１４には、アクセス開始機能の場合はＮ、編集更新開始機能の場合にはＹが設定され、参照のみのセッションなのか、編集更新のセッションなのかが区別される。
【００７３】
編集更新管理テーブル４７００は、通番４７１１、更新種別４７１２、及び更新内容４７１３の３つのフィールドから構成される。通番４７１１の値は、アクセス管理テーブル４６００中の通番４６１１に対応しており、アクセス管理テーブル４６００と編集更新管理テーブル４７００の通番で結合することにより、どの利用者プログラムから編集更新要求が来ているのかが識別される。更新種別４７１２と更新内容４７１３を合わせたものが、更新の具体的内容を示している。４７２１で示されるレコードは、４６２２で示されるディレクトリパス‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｒｉｖｅｒ／’の下に、ファイル名‘Ｔａｍａ．ｊｐｅｇ’で、更新内容４７１３中に続いて格納されたデータで、ファイルを新規作成することを示している。なお、既存のファイルの内容更新の場合もこの形式である。４７２２で示されるレコードは、４６２２で示されるディレクトリパス‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｒｉｖｅｒ／’の下に、ディレクトリ‘Ｅｄｏ’を作成することを示している。４７２３で示されるレコードは、４６２２で示されるディレクトリパス‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｒｉｖｅｒ／’の下にあるファイル‘Ｎａｋａ．ｊｐｇ’を削除することを示している。４７２４で示されるレコードは、４６２２で示されるディレクトリパス‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｒｉｖｅｒ／’の下にあるファイル‘Ｅｄｏ．ｊｐｇ’を、‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｒｉｖｅｒ／Ｅｄｏ／０００１．ｊｐｇ’に名称変更（移動）することを示している。
【００７４】
なお、本実施の形態では編集更新管理テーブル４７００をすべてメモリ上で保持しているが、これを部分的に二次記憶装置上に格納する実装としても、本発明の実施においては差し支えない。
【００７５】
図８は、ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）２４２がメモリ２２上に確保する領域２２１内に格納される、ＤＢＭＳ３４２のトランザクションに係わる管理情報のデータ構造の一例を示している。
【００７６】
トランザクション管理テーブル４８００は、トランザクション識別子４８１１、更新種別４８１２、ディレクトリパス４８１３、及び通番４８１４の４つのフィールドから構成される。トランザクション識別子４８１１は、ＤＢＭＳ３４２のトランザクションを一意に示す識別子である。更新種別４８１２には、ｉｎｓｅｒｔ（リンク登録）、ｄｅｌｅｔｅ（リンク削除）、及びｕｐｄａｔｅ（リンク先編集更新）の３種類がある。ディレクトリパス４８１３は、更新に係わるリンク先コンテンツのフルパスである。通番４８１４は更新種別４８１２がｕｐｄａｔｅのときのみ意味を持ち、アクセス管理テーブル４６００の通番４６１１、及び編集更新管理テーブル４７００の通番４７１１と同じ値が設定される。図８の４８２１は、トランザクションｔｘ００３で、ディレクトリ‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｓｅａ／’をリンク先コンテンツとして登録する場合の例である。４８２２は、トランザクションｔｘ００４でファイル‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｍｏｕｎｔａｉｎ．ｂｍｐ’へのリンクを削除する場合の例である。４８２３と４８２４は、ｕｐｄａｔｅ文でファイル‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｓｕｎ．ｂｍｐ’へのリンクを削除し、その代わりにファイル‘ｄｂ／ｐｉｃｔｕｒｅｓ／ｍｏｏｎ．ｊｐｇ’をリンク先コンテンツとして登録する場合の例である。４８２５は、ディレクトリ‘／ｄｂ／ｐｉｃｔｕｒｅｓ／ｒｉｖｅｒ’以下のコンテンツを、編集更新管理テーブル４７００中のアクセス通番５で示される編集更新情報に基づいて更新する場合の例である。
【００７７】
図９は、ログ３４５に格納されるＤＢＭＳ３４２のログレコードのうち、外部ファイル連携機能拡張（ＦＡＥ）３４３が取得する外部ファイルログ４９００のデータ構造の一例を示している。ＦＡＥ３４３では、トランザクション中のレコード登録時、レコード削除時、及びレコード更新時において外部ファイル４０１３が更新されるときに、ＤＢＭＳ３４２のログ取得機能を用いて外部ファイルログ４９００にＤＢＭＳ外部ファイル管理システム（ＦＭＳ）２４２の識別子を記録しておく。これにより、コミット時またはロールバック時に、ＦＡＥ３４３がＦＭＳ２４２と通信をしてＤＢＭＳトランザクションの決着結果を通知することで、外部ファイルテーブル４０００と外部コンテンツとの参照整合性を保証する。
【００７８】
外部ファイルログ４９００は、トランザクション識別子４９１１、及びＦＭＳ識別子４９１２の２つのフィールドから構成される。トランザクション識別子４９１１には、外部ファイルログ４９００にログを取得する契機となった更新処理の属するトランザクションの識別子を設定する。ＦＭＳ識別子４９１２には、ＤＢＭＳトランザクションに係わるＦＭＳの識別子を設定する。トランザクション識別子４９１１とＦＭＳ識別子４９１２の組が同一となるレコードが既に登録済みの場合、重複を排除するため、外部ファイルログ４９００へのログ出力は行なわない。
【００７９】
図１０から図１９のフローチャートは、本実施の形態に係わる処理の流れを示している。コンテンツへのリンク登録処理を、図１０及び図１１に示す。コンテンツへのリンク削除処理を、図１２及び図１３に示す。コンテンツ参照処理を、図１４及び図１５に示す。リンク先コンテンツの編集更新処理を、図１６及び図１７に示す。トランザクションコミット処理については、図１８に示す。トランザクションロールバック処理については、図１９に示す。図１９に示すＲＯＬＬＢＡＣＫ文処理は、ＤＢＭＳ３４２の障害時、あるいは利用者プログラムの不正終了などによるトランザクションロールバック時の処理と同じものである。
【００８０】
図１０及び図１１のフローチャートに基づいて、利用者プログラム１４２が登録対象コンテンツ１４４をＤＢＭＳ３４２にリンク登録する手順を説明する。
【００８１】
図１０から始まる。ステップ５００１で、利用者プログラム１４２は、ＦＭＬ１４３経由でＦＭＳ２４２のコンテンツ登録準備機能を呼び出し、利用者クライアント１０上の登録対象コンテンツ１４４の登録準備を依頼する。ＦＭＳ２４２では、入力パラメータよりファイルデータを抽出し、ＯＳ２４１の提供するＯＳファイルアクセス制御情報設定機能を用いて、ＯＳファイルアクセス制御情報２４５にＦＭＳの所有を意味する設定をした上で、ＤＢ管理下コンテンツ２４３を作成する。ファイルが複数渡されてきたときは、ＤＢ管理下コンテンツ２４３として複数のファイルが作成される。登録ハンドル４３００が作成され、出力パラメータとして、利用者プログラム１４２に返される。
【００８２】
ステップ５００２で、続いて利用者プログラム１４２は、図４（１）の形式のＩＮＳＥＲＴ文（変数：ｅｎｔｒｙｈａｎｄｌｅにはステップ５００１で取得した登録ハンドル４３００を指定）を用いて、ＤＢＭＳ３４２の外部ファイル管理テーブル４０００に新規レコード４０２３を登録する。
【００８３】
図１１へ行く。利用者プログラム１４２からの要求を受けてＤＢＭＳ３４２では、ＩＮＳＥＲＴ文処理を実行する。まず、ステップ５１０１で新規レコード４０２３を作成する。これにより新規レコード４０２３のレコード識別子４００１とフィールド識別子４００２が確定する。続いてステップ５１０２で、レコード４０２３の定義情報を参照し、ファイル抽象データ型関数ｎｅｗ（）を含むか否か判定が行われ、含まれない場合はステップ５１０７へ進む。含む場合は、続いてＦＡＥ３４３でファイル抽象データ型に関する処理が行なわれる。
【００８４】
ステップ５１０３で、まずＩＮＳＥＲＴ文中のｎｅｗ（）を処理する。ｎｅｗ（）では、登録ハンドルを元にしてファイル抽象データ型値が生成される。この例では登録対象コンテンツはファイルであるので、コンテンツ形式４０１６にはｆｉｌｅが設定される。
【００８５】
続いてステップ５１０４で、ＦＡＥ３４３のコンテンツリンク登録処理を呼び出す。このとき、パラメータとして、トランザクション識別子とファイル抽象データ型値が渡される。コンテンツリンク登録処理では、ファイル抽象データ型値からＦＭＳ識別子、ディレクトリパス、及びコンテンツ形式を抽出する。コンテンツ形式がディレクトリの場合、ディレクトリパスの末尾にディレクトリ区切り文字‘／’を付加する。そして、コンテンツの確認とリンクを仮登録状態にするため、ＦＭＳ２４２のリンク登録機能を呼び出す。この際、呼び出すＦＭＳ２４２はファイル抽象データ型値のＦＭＳ識別子で示されるＦＭＳである。このときの入力パラメータとして、ＤＢＭＳ３４２の現行トランザクションの識別子と、ディレクトリパスを指定する。ＦＭＳ２４２では、入力パラメータで指定されたディレクトリパス下にファイルが存在することを確認し、このときコンテンツ情報ファイル２４４も作成する。トランザクション管理テーブル４８００に、更新種別４８１２をｉｎｓｅｒｔとして、トランザクション識別子、ディレクトリパスとともにエントリを追加する。
【００８６】
ステップ５１０５で、ＤＢＭＳ３４２のログ記録機能を利用して外部ファイルログ４９００に新規ログレコードを作成し、トランザクション識別子とＦＭＳ識別子を記録する。
【００８７】
続くステップ５１０６で、ＤＢＭＳ３４２は、ＦＡＥ３４３のコンテンツリンク登録処理が正常終了しなかった場合、ＩＮＳＥＲＴ文の処理もステップ５１０９へ進み異常終了する。正常終了した場合は、ステップ５１０７で、作成されたファイル抽象データ型値をレコード４０２３の外部ファイル４０１３に書き込み、ステップ５１０８でＩＮＳＥＲＴ文の処理を正常終了させる。
【００８８】
図１０に戻り、ステップ５００３でコミット処理またはロールバック処理が行なわれる。これらの処理については後述する。
【００８９】
最後にステップ５００４で、ＤＢＭＳ処理終了後に、登録ハンドルの解放を行なうため、利用者プログラム１４２は、ＦＭＬ１４３経由でＦＭＳ２４２に対してコンテンツ登録中止機能を呼び出す。このとき入力パラメータとして、登録ハンドルを渡す。ＦＭＳ２４２では、登録ハンドルに係わる外部コンテンツが未登録かどうかを確認する。リンクが設定されているか、もしくはリンク設定のトランザクションの途中であった場合、何もしない。そうでなかった場合、コンテンツ登録準備機能で作成したファイル及びディレクトリは削除される。
【００９０】
以上で、外部コンテンツへのリンク登録処理は終了する。
【００９１】
コンテンツリンク登録処理に関して、上記では登録対象コンテンツ１４４が利用者クライアント１０上にある場合としたが、あらかじめファイルサーバ２０上にあるコンテンツをＤＢ管理下に置きたい場合もある。この場合、ＦＭＳ２４２のコンテンツ登録準備機能呼び出しの際にファイルデータの転送を行なわず、指定されたコンテンツのＯＳファイルアクセス制御情報２４５のみ更新して所有者をＦＭＳ２４２とし、そのままＤＢ管理下コンテンツ２４３とすれば良い。
【００９２】
図１２及び図１３のフローチャートに基づいて、利用者プログラム１４２がＤＢＭＳ３４２管理下のコンテンツ２４４のリンクを削除する手順を説明する。
【００９３】
図１２から始まる。ステップ５２０１で、利用者プログラム１４２は、図４（２）の形式のＤＥＬＥＴＥ文を用いて、ＤＢＭＳ３４２に登録されたレコード４０２３と該レコードで管理されるＤＢ管理下コンテンツ２４３の削除を要求する。
【００９４】
図１３へ行く。利用者プログラム１４２から呼び出されたＤＢＭＳ３４２では、ＤＥＬＥＴＥ文の処理を実行する。まず、ステップ５３０１で、指定されたＤＥＬＥＴＥ文のＷＨＥＲＥ句の条件を満たすレコードが確認され、レコードが無い場合、ステップ５３０８へ行きＤＥＬＥＴＥ文の処理は正常終了する。レコードがある場合、ステップ５３０２で、処理対象となるレコードを決定する。
【００９５】
続いてステップ５３０３で、このレコードの定義情報に基づいてファイル抽象データ型のフィールドを含むレコードであるか否か判定が行なわれ、含まない場合はステップ５３０７へ進む。含む場合は、ＦＡＥ３４３でファイル抽象データ型に関する処理が行われる。
【００９６】
ステップ５３０４で、ＦＡＥ３４３のコンテンツリンク削除処理を呼び出す。このとき、入力パラメータとして、ＤＢＭＳ３４２の現行トランザクションの識別子と、ファイル抽象データ型値が渡される。ＦＡＥ３４３では、ファイル抽象データ型値から取得したＦＭＳ識別子とディレクトリパスをもとに、ＦＭＳ２４２のリンク削除機能を呼び出す。ＦＭＳ２４２では、トランザクション管理テーブル４８００に、更新種別４８１２をｄｅｌｅｔｅとして、入力パラメータとして渡されたトランザクション識別子及びディレクトリパスとともにエントリを追加する。
【００９７】
続いてステップ５３０５で、ＤＢＭＳ３４２のログ記録機能を利用して外部ファイルログ４９００に新規ログレコードを作成し、トランザクション識別子とＦＭＳ識別子を記録する。ステップ５３０６でＦＡＥ３４３の内部処理が正常に終了したか否かを判断し、正常でなかった場合はステップ５３０９に進み異常終了とする。正常の場合はステップ５３０７に進む。
【００９８】
ステップ５３０７では、データベースのレコード削除を行ない、その後、処理はステップ５３０１に戻り、引き続き別のレコードの削除処理を行なう。処理対象となるレコードが残っていなければ、ＤＢＭＳにおけるＤＥＬＥＴＥ文の処理は終了する。
【００９９】
図１２に戻り、続いて、ステップ５２０２でコミット処理またはロールバック処理が行なわれる。これらの処理については後述する。
【０１００】
以上で、外部コンテンツのリンク削除処理は終了する。
【０１０１】
ＳＱＬのＵＰＤＡＴＥ文で、元のファイル抽象データ型の値を、別のファイル抽象データ型の値で上書きすることによって、リンク情報の付け替えを行なうことができる。これは、ＦＡＥ３４３の内部で、上述したＤＥＬＥＴＥ文の処理とＩＮＳＥＲＴ文の処理とを同時に行なうことで、実現できる。この場合、トランザクション管理テーブル４８００には、図８の４８２３と４８２４で示したレコードが作成される。
【０１０２】
図１４及び図１５のフローチャートに基づいて、利用者プログラム１４２がＤＢＭＳ３４２管理下のコンテンツ２４３を参照する手順を説明する。
【０１０３】
図１４から始まる。利用者プログラム１４２は、ステップ５４０１で、図４（５）の形式のＳＥＬＥＣＴ文を用いてレコードの選択条件とアクセスハンドル４４００の生成をＤＢＭＳ３４２に要求し、これを受けてＤＢＭＳ３４２はＳＥＬＥＣＴ文を処理する。
【０１０４】
続いて、ステップ５４０２で、ＳＥＬＥＣＴ文の結果を取得するために、ＦＥＴＣＨ文の実行をＤＢＭＳ３４２に要求する。利用者プログラム１４２からの要求を受けてＤＢＭＳ３４２はＦＥＴＣＨ文処理を実行する。
【０１０５】
図１５に行く。まず、ステップ５５０１で、検索結果として条件を満たすレコードがあるか否か判定を行ない、無い場合はＦＥＴＣＨ文処理を終了して戻る。ある場合にはステップ５５０２に進み、処理対象となるレコードを決定する。ステップ５５０３で、このレコードの定義情報に基づいてファイル抽象データ型のフィールドを含むレコードであるか否か判定が行なわれ、含まない場合はステップ５５０５へ進む。含む場合は、ステップ５５０４で、ＦＡＥ３４３でファイル抽象データ型に関する処理が行なわれる。
【０１０６】
ＦＡＥ３４３内部処理として、アクセスハンドル生成処理ｇｅｔ＿ａｃｃｅｓｓｈａｎｄｌｅ（）が呼び出される。このとき入力パラメータとして、ファイル抽象データ型値が渡される。ＦＡＥ３４３では、ファイル抽象データ型値から、ＦＭＳ識別子及びディレクトリパスを取り出し、アクセスハンドル４４００を作成する。
【０１０７】
ステップ５５０５で、作成されたアクセスハンドル４４００を他の検索結果データと併せて出力結果に設定する。次にステップ５５０１に戻り、ＳＥＬＥＣＴ文の条件を満たすレコードが無くなるまで上記の処理を繰り返し、無くなればＦＥＴＣＨ文の処理は完了である。
【０１０８】
図１４のステップ５４０３に戻る。アクセスハンドルを取得した後、外部コンテンツに対するアクセスを開始するため、ＦＭＬ１４３経由でＦＭＳ２４２のアクセス開始機能の呼び出しを行なう。呼び出し先となるＦＭＳ２４２は、アクセスハンドル４４００のＦＭＳ識別子４４１１によって動的に決定される。入力パラメータは、前述のＳＥＬＥＣＴ文で取得したアクセスハンドル４４００中のディレクトリパス４４１２と、利用者プログラム１４２のクライアント識別子（利用者クライアント１０のネットワークアドレスと、利用者プログラム１４２がネットワークインタフェース１３との間で確立したセッションの識別子を合わせたもの、など）である。ＦＭＳ２４２では、アクセス管理テーブル４６００に、更新フラグ４６１４としてＮ、ディレクトリパス４６１２及びクライアント識別子４６１３として入力パラメータのディレクトリパスとクライアント識別子を設定したエントリを作成し、利用者プログラム１４２にアクセス識別子が返される。
【０１０９】
続いて、該アクセスハンドル４４００に対応するコンテンツに関する情報を取得するため、ステップ５４０４でＦＭＬ１４３経由でＦＭＳ２４２のコンテンツ属性情報取得機能を呼び出し、ＤＢ管理下コンテンツ２４３に関する情報を取得する。入力パラメータには前記アクセス開始機能で取得したアクセス識別子を設定する。ＦＭＳ２４２では、アクセス管理テーブル４６００から、入力パラメータのアクセス識別子を元にディレクトリパスを取得し、対応するコンテンツ情報ファイル２４４を読み出し、読み出した属性情報を利用者プログラム１４２に返す。
【０１１０】
続いて、ステップ５４０４で取得した属性情報を元に、ファイル名を指定してファイルデータの読み出しを行なう。ステップ５４０５でＦＭＬ１４３経由でＦＭＳ２４２のデータ読み出し機能を呼び出し、ＤＢ管理下コンテンツ２４３のファイルデータを読み出す。入力パラメータには前記アクセス開始機能の呼び出しで取得したアクセス識別子の他、読み出すファイル名、ファイル内オフセット位置、及び読み出すデータのサイズを設定する。ＦＭＳ２４２では、アクセス管理テーブル４６００から、入力パラメータのアクセス識別子を元にディレクトリパスを取得する。取得したディレクトリパスに、入力パラメータとして指定されたファイル名を付加し、ファイルデータの読み出しを行ない、読み出したデータを利用者プログラム１４２に返す。
【０１１１】
コンテンツの参照が終わった時点で、アクセス終了処理を行なう。すなわちステップ５４０６で、ＦＭＬ１４３経由でＦＭＳ２４２のアクセス終了処理機能を呼び出し、入力パラメータとして、アクセス識別子を指定する。ＦＭＳ２４２では、アクセス管理テーブル４６００を検索し、アクセス識別子に合致するレコードを削除する。これによって、ＦＭＳ２４２によって掛けられていた外部コンテンツへのロックも解除される。
【０１１２】
以上で、利用者プログラムにおけるコンテンツ参照処理は終了する。
【０１１３】
なお、ＳＥＬＥＣＴ文に伴うコミット処理もしくはロールバック処理は、ＦＭＳ２４２のアクセス開始機能の呼び出し以降であれば、どの時点で実行しても構わない。
【０１１４】
ＦＭＬ１４３のコンテンツ参照処理として、利用者プログラム１４２のメモリ上にデータを読み出す代わりに、利用者クライアント１０の二次記憶装置１４上にファイル形式で取得する方法を採ってもよい。これはＦＭＬ１４３にファイル取得のインタフェースを定義すれば実現できる。取得先がメモリ上でも二次記憶装置上であっても、本発明の実施には差し支えない。
【０１１５】
図１６及び図１７のフローチャートに基づいて、利用者プログラム１４２がＤＢＭＳ３４２管理下のコンテンツ２４３の内容を更新する手順を説明する。
【０１１６】
図１６から始まる。利用者プログラム１４２は、ステップ５６０１で、図４（５）の形式のＳＥＬＥＣＴ文を用いてレコードの選択条件とアクセスハンドル４４００の生成をＤＢＭＳ３４２に要求し、これを受けてＤＢＭＳ３４２はＳＥＬＥＣＴ文を処理する。
【０１１７】
続いて、ステップ５６０２で、ＳＥＬＥＣＴ文の結果を取得するために、ＦＥＴＣＨ文の実行をＤＢＭＳ３４２に要求する。利用者プログラム１４２からの要求を受けてＤＢＭＳ３４２はＦＥＴＣＨ文処理を実行する。（ＦＥＴＣＨ文処理の内容は、図１５に示した通りである。）
【０１１８】
アクセスハンドルを取得した後、ステップ５６０３で、外部コンテンツに対する編集更新を開始するため、ＦＭＬ１４３経由でＦＭＳ２４２の編集更新開始機能の呼び出しを行なう。呼び出し先となるＦＭＳ２４２は、アクセスハンドル４４００のＦＭＳ識別子４４１１によって動的に決定される。入力パラメータは、前述のＳＥＬＥＣＴ文で取得したアクセスハンドル４４００中のディレクトリパス４４１２と、利用者プログラム１４２のクライアント識別子（利用者クライアント１０のネットワークアドレスと、利用者プログラム１４２がネットワークインタフェース１３との間で確立したセッションの識別子を合わせたもの、など）である。ＦＭＳ２４２では、アクセス管理テーブル４６００に、更新フラグ４６１４としてＹ、ディレクトリパス４６１２及びクライアント識別子４６１３として入力パラメータのディレクトリパスとクライアント識別子を設定したエントリを作成し、利用者プログラム１４２に更新識別子が返される。
【０１１９】
続いて、該アクセスハンドル４４００に対応するコンテンツに関する情報を取得するため、ステップ５６０４でＦＭＬ１４３経由でＦＭＳ２４２のコンテンツ属性情報取得機能を呼び出し、ＤＢ管理下コンテンツ２４３に関する情報を取得する。入力パラメータには前記編集更新開始機能で取得した更新識別子を設定する。ＦＭＳ２４２では、アクセス管理テーブル４６００から、入力パラメータの更新識別子を元にディレクトリパスを取得し、対応するコンテンツ情報ファイル２４４を読み出し、読み出した属性情報を利用者プログラム１４２に返す。
【０１２０】
続いて、ステップ５６０４で取得した属性情報を元に、外部コンテンツに対して各種の更新処理を行なう。ステップ５６０５では、ファイル（またはディレクトリ）作成、ファイル（またはディレクトリ）削除、ファイルへの書き込み、ファイル（またはディレクトリ）名称の変更、などの処理を行なう。
【０１２１】
ファイル（またはディレクトリ）作成では、ＦＭＬ１４３経由でＦＭＳ２４２のファイル作成機能を呼び出し、ＤＢ管理下コンテンツ２４３を新規に作成する。入力パラメータには前記編集更新開始機能で取得した更新識別子と、新規作成するファイル（またはディレクトリ）の名称を指定する。ＦＭＳ２４２では、編集更新管理テーブル４７００に対して、更新種別がｎｅｗのエントリを追加する。
【０１２２】
ファイル（またはディレクトリ）削除では、ＦＭＬ１４３経由でＦＭＳ２４２に対してファイル削除機能を呼び出し、ＤＢ管理下コンテンツ２４３を削除する。入力パラメータには前記編集更新開始機能で取得した更新識別子と、削除するファイル（またはディレクトリ）の名称を指定する。ＦＭＳ２４２では、編集更新管理テーブル４７００に対して、更新種別がｄｅｌｅｔｅのエントリを追加する。
【０１２３】
ファイルへの書き込みでは、ＦＭＬ１４３経由でＦＭＳ２４２のファイル書き出し機能を呼び出し、ＤＢ管理下コンテンツ２４３の内容を更新する。入力パラメータには、前記編集更新開始機能で取得した更新識別子、書き込みを行なうファイルの名称、ファイル内オフセット位置、書き込むデータのサイズ、及び書き込むデータの格納された領域を指定する。ＦＭＳ２４２では、編集更新管理テーブル４７００に対して、必要があれば更新種別がｎｅｗのエントリを追加した上で、更新結果のファイルイメージを登録する。
【０１２４】
ファイル（またはディレクトリ）名称の変更では、ＦＭＬ１４３経由でＦＭＳ２４２のファイル移動機能を呼び出し、ＤＢ管理下コンテンツ２４３の名称を変更する。入力パラメータには、前記編集更新開始機能で取得した更新識別子、名称変更を行なうファイル（またはディレクトリ）の名称及び変更後の名称を指定する。ＦＭＳ２４２では、編集更新管理テーブル４７００に対して、更新種別がｒｅｎａｍｅのエントリを追加する。
【０１２５】
以上に述べたような各種編集更新処理を行なった後、ステップ５６０６で、編集更新ハンドルを取得する。ＦＭＬ１４３経由でＦＭＳ２４２の編集更新ハンドル取得機能を呼び出し、外部コンテンツに係わる更新ハンドルを取得する。入力パラメータには前記編集更新開始機能で取得した更新識別子を設定する。ＦＭＳ２４２ではアクセス管理テーブル４６００から編集更新ハンドル４５００を生成し、利用者プログラム１４２に返す。
【０１２６】
図１６のステップ５６０７に戻る。続いて利用者プログラム１４２は、図４（４）の形式のＵＰＤＡＴＥ文（変数：ｕｐｄａｔｅｈａｎｄｌｅにはステップ５３０６で取得した編集更新ハンドル４５００を指定）を用いて、ＤＢＭＳ３４２の外部ファイル管理テーブル４０００中のレコード中の外部ファイル４０１３の値を更新するとともに、ＤＢＭＳトランザクションの延長でＤＢ管理下コンテンツ２４３を仮更新状態にする。
【０１２７】
図１７へ行く。利用者プログラム１４２からの要求を受けてＤＢＭＳ３４２では、ＵＰＤＡＴＥ文処理を実行する。まず、ステップ５７０１で、更新の対象にファイル抽象データ型が含まれているかどうか判別する。ファイル抽象データ型が含まれていない場合、通常のレコード更新と見なしてステップ５７０８へ行く。ファイル抽象データ型が含まれている場合、続くステップ５７０２で編集更新かどうかを判別する。編集更新パラメータ設定関数ｕｐｄａｔｅ（）が指定されていない場合、編集更新ではないので、ステップ５７０３へ行き、通常のリンク情報だけの更新処理を行なう。
【０１２８】
編集更新の場合、ステップ５７０４以降で、ＦＡＥ３４３でファイル抽象データ型に関する処理を行なう。まず、ＦＡＥ３４３の編集更新パラメータ設定関数ｕｐｄａｔｅ（）を呼び出す。このとき、パラメータとして、編集更新ハンドルが渡される。ｕｐｄａｔｅ（）では、編集更新ハンドルを元にしてファイル抽象データ型値が生成される。
【０１２９】
続いて、ステップ５７０５で、ＵＰＤＡＴＥ文の処理時に呼び出すように関連付けられたＦＡＥ３４３のコンテンツ編集更新処理を呼び出す。このとき、パラメータとして、トランザクション識別子と、編集更新ハンドルが渡される。ＦＡＥ３４３では、編集更新ハンドルから、ＦＭＳ識別子、ディレクトリパス、及びコンテンツ形式を抽出する。コンテンツ形式がディレクトリの場合、ディレクトリパスの末尾にディレクトリ区切り文字‘／’を付加する。そして、コンテンツの確認と編集更新を仮登録状態にするため、ＦＭＳ２４２のリンク先編集更新機能を呼び出す。この際、呼び出すＦＭＳ２４２はファイル抽象データ型値のＦＭＳ識別子で示されるＦＭＳである。このときの入力パラメータとして、ＤＢＭＳ３４２の現行トランザクションの識別子と、編集更新ハンドルを指定する。ＦＭＳ２４２では、編集更新管理テーブル４７００を参照し、入力パラメータで指定された編集更新ハンドル４５００中の通番４５１３から、更新情報が登録されていることを確認し、トランザクション管理テーブル４８００に、更新種別４８１２をｕｐｄａｔｅとして、トランザクション識別子、ディレクトリパス、及び通番とともにエントリを追加する。なお、ディレクトリパスと通番は、編集更新ハンドルから取得したものである。
【０１３０】
ステップ５７０６で、ＤＢＭＳ３４２のログ記録機能を利用して外部ファイルログ４９００に新規ログレコードを作成し、トランザクション識別子とＦＭＳ識別子を記録する。
【０１３１】
続くステップ５７０７で、ＤＢＭＳ３４２は、ＦＡＥ３４３のコンテンツ編集更新処理が正常終了しなかった場合、ＵＰＤＡＴＥ文の処理もステップ５７１０へ行って、異常終了する。正常終了した場合は、ステップ５７０８で、ステップ５７０４において作成されたファイル抽象データ型値を更新対象のレコードに書き込み、ステップ５７０９でＵＰＤＡＴＥ文の処理を正常終了させる。
【０１３２】
図１６に戻り、ステップ５６０８でコミット処理またはロールバック処理が行なわれる。これらの処理については後述する。
【０１３３】
最後にステップ５６０９で、ＤＢＭＳ処理終了後に、編集更新処理の終了を行なうため、ＦＭＬ１４３経由でＦＭＳ２４２の編集更新終了機能を呼び出す。入力パラメータとして、前記編集更新開始機能の呼び出しで取得した更新識別子を渡す。ＦＭＳ２４２では、入力パラメータで渡された更新識別子中の通番４５１３を元に、アクセス管理テーブル４６００及び編集更新管理テーブル４７００から関係するレコードを削除する。
【０１３４】
以上で、外部コンテンツの更新処理は終了する。
【０１３５】
図１８に示すフローチャートに基づいてトランザクションコミット処理について説明する。
【０１３６】
ＤＢＭＳ３４２のＣＯＭＭＩＴ文処理では、まずＦＡＥ３４３のコミット処理を呼び出す。このとき、入力パラメータとしてコミットするトランザクションのトランザクション識別子が渡される。
【０１３７】
まず、ステップ５８０１で、外部ファイルログ４９００から、入力パラメータで渡されたトランザクション識別子と一致するトランザクション識別子４９１１を持つレコードを検索する。ステップ５８０２で、これが見つからなかった場合には、ＦＡＥ３４３のコミット処理は終了する。
【０１３８】
見つかった場合、ステップ５８０３で、外部ファイルログ４９００のレコードから、ＦＭＳ識別子４９１２を取得し、ＦＭＳ２４２のトランザクション確定機能を呼び出す。このとき、入力パラメータとして前記トランザクション識別子を指定する。ＦＭＳ２４２では、トランザクション管理テーブル４８００を検索し、入力パラメータで指定されたトランザクション識別子を持つレコードがあるかどうかを調べ、一致するものがあった場合、更新種別４８１２の種類で順序付けて確定処理を行なう。
【０１３９】
まず、更新種別がｉｎｓｅｒｔのトランザクションを確定させる。確定処理に伴い、コンテンツ情報ファイル２４４のリファレンス数４１２１を１つ増やす。続いて、更新種別がｕｐｄａｔｅのトランザクションを確定させる。確定処理の際、元のコンテンツ情報ファイル２４４のリファレンス数４１２１が１だった場合、そのまま上書きで確定処理を行なう。具体的には、トランザクション管理テーブル４８００の通番４８１４をキーにして編集更新管理テーブル４７００を検索し、通番が一致するものの編集更新の結果を反映させる。元のコンテンツ情報ファイル２４４のリファレンス数４１２１が２以上だった場合、他のリンク元のファイル抽象データ型値に対してはリンク先のコンテンツを保証するため、元ののコンテンツはそのままで、該コンテンツの情報ファイル２４４からはリファレンス数を１つ減らす。更新されたファイル抽象データ型値に対してはリンク先のコンテンツに編集更新の結果を反映させるため、ＤＢ管理下コンテンツ２４３を別途複製した上で、編集更新の結果を反映させる。複製されたコンテンツに対するコンテンツ情報ファイル２４４のリファレンス数４１２１は１になる。最後に、更新種別がｄｅｌｅｔｅのトランザクションを確定させる。確定処理に伴い、コンテンツ情報ファイル２４４のリファレンス数４１２１を１つ減らす。リファレンス数が０になった場合、データベースのリンク元がなくなったことになるので、コンテンツに対応するＤＢ管理下コンテンツ２４３及びコンテンツ情報ファイル２４４を削除する。ただし、その時点でアクセス管理テーブル４６００に同一コンテンツのエントリがあり利用者プログラム１４２からのアクセスが継続していた場合、すべての利用者プログラム１４２からのアクセスがなくなるまで、コンテンツの削除は遅延させる。
【０１４０】
確定処理が終わった後、トランザクション管理テーブル４８００及び編集更新管理テーブル４７００の処理済みのレコードを削除する。
【０１４１】
続いて、ステップ５８０４で、外部ファイルログ４９００の処理済みのレコードを削除する。
【０１４２】
以上で、ＦＡＥ３４３におけるコミット処理は終了する。
【０１４３】
ステップ５８０５で、ＤＢＭＳ３４２は、データベースのレコードに関する通常のコミット処理を行なう。
【０１４４】
以上が、コミット処理の流れである。
【０１４５】
なお、ＦＭＳ２４２のトランザクション確定機能の処理中で、同一のコンテンツに対して複数のファイル抽象データ型フィールドからリンクが設定されている場合に、リファレンス数４１２１はそのままでリンク先のコンテンツを直接更新する実装としても、参照整合性を保つことができることから、本発明の実施には差し支えない。
【０１４６】
図１９に示すフローチャートに基づいて、トランザクションロールバック処理について説明する。
【０１４７】
ＤＢＭＳ３４２のＲＯＬＬＢＡＣＫ文処理では、まずＦＡＥ３４３のロールバック処理を呼び出す。このとき、入力パラメータとしてロールバックするトランザクションのトランザクション識別子が渡される。
【０１４８】
まずステップ５９０１で、外部ファイルログ４９００から、入力パラメータで渡されたトランザクション識別子と一致するトランザクション識別子４９１１を持つレコードを検索する。ステップ５９０２で、これが見つからなかった場合には、ＦＡＥ３４３のロールバック処理は終了する。
【０１４９】
見つかった場合、ステップ５９０３で、外部ファイルログ４９００のレコードから、ＦＭＳ識別子４９１２を取得し、ＦＭＳ２４２のトランザクション無効化機能を呼び出す。このとき、入力パラメータとして前記トランザクション識別子を指定する。ＦＭＳ２４２では、トランザクション管理テーブル４８００を検索し、入力パラメータで指定されたトランザクション識別子を持つレコードがあるかどうかを調べ、一致するものがあった場合、無効化処理を行なう。トランザクション管理テーブル４８００中で、トランザクション識別子４８１１が入力パラメータのトランザクション識別子と合致するレコードを削除する。
【０１５０】
続いて、ステップ５９０４で、外部ファイルログ４９００の処理済みのレコードを削除する。
【０１５１】
以上で、ＦＡＥ３４３におけるロールバック処理は終了する。
【０１５２】
ステップ５９０５で、ＤＢＭＳ３４２は、データベースのレコードに関する通常のロールバック処理を行なう。
【０１５３】
以上が、ロールバック処理の流れである。
【０１５４】
【発明の効果】
以上述べたように、本発明によれば、ＤＢＭＳにファイル抽象データ型と外部ファイル連携機能を導入し、ＤＢＭＳ管理下のファイルを管理するためにＤＢＭＳ外部ファイル管理システムを導入し、外部ファイル連携機能とＤＢＭＳ外部ファイル管理システムとが適切に連携するよう設定することにより、ＤＢＭＳ利用者が行なうデータベースレコードの操作に対応して、当該レコードと関連付けられた外部ファイルに対する適切な操作が行なわれることが保証されるため、前記データベースレコードと外部ファイルとの整合性が保証され、また、ＤＢＭＳ管理下のファイルに対する不当なアクセスを排除することが出来る。
【０１５５】
利用者は、データベース検索後に、登録されたファイルに関する更新差分情報をＤＢＭＳ外部ファイル管理システムに登録してから、データベーストランザクションによってリンク先のファイルに対して内容更新を反映させるため、ファイルの内容の整合性までデータベースを用いて管理することが出来る。リファレンス数と組み合わせたリンク管理により、外部ファイルをデータベースによって版管理することも実現される。
【図面の簡単な説明】
【図１】本発明に係る一実施形態のデータベースシステムの概略構成を示すブロック構成図である。
【図２】本実施形態において、外部ファイルを管理するテーブルの構成例を示す図である。
【図３】外部ファイル連携機能拡張の処理の一覧表を示す図である。
【図４】ＤＢ操作文である。
【図５】コンテンツ情報ファイルのデータ構造の一例を示す図である。
【図６】コンテンツリンク登録処理に使用する登録ハンドルのデータ構造、コンテンツアクセス処理及びコンテンツ編集更新処理に使用するアクセスハンドルのデータ構造、並びにコンテンツ編集更新処理に使用する編集更新ハンドルのデータ構造の一例を示す図である。
【図７】ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）が使用するメモリ上のデータ構造の一例を示す図である。
【図８】ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）が使用するメモリ上のデータ構造の一例を示す図である。
【図９】外部ファイル連携機能拡張（ＦＡＥ）が取得する外部ファイルログのデータ構造の一例を示す図である。
【図１０】利用者プログラムにおけるコンテンツリンク登録処理のフローチャート図である。
【図１１】ＤＢＭＳにおけるＩＮＳＥＲＴ文処理のフローチャート図である。
【図１２】利用者プログラムにおけるコンテンツリンク削除処理のフローチャート図である。
【図１３】ＤＢＭＳにおけるＤＥＬＥＴＥ文処理のフローチャート図である。
【図１４】利用者プログラムにおけるコンテンツ参照処理のフローチャート図である。
【図１５】ＤＢＭＳにおけるＦＥＴＣＨ文処理のフローチャート図である。
【図１６】利用者プログラムにおけるコンテンツ編集更新処理のフローチャート図である。
【図１７】ＤＢＭＳにおけるＵＰＤＡＴＥ文処理のフローチャート図である。
【図１８】ＤＢＭＳにおけるＣＯＭＭＩＴ文処理のフローチャート図である。
【図１９】ＤＢＭＳにおけるＲＯＬＬＢＡＣＫ文処理のフローチャート図である。
【符号の説明】
１０  利用者クライアント
１１  ＣＰＵ
１２  メモリ
１３  ネットワークインタフェース
１４  二次記憶装置
１４１  オペレーティングシステム（ＯＳ）
１４２  利用者プログラム
１４３  ＤＢＭＳ外部ファイル連携ライブラリ（ＦＭＬ）
１４４  登録対象ファイル
１９  バス
２０  ファイルサーバ
２１  ＣＰＵ
２２  メモリ
２２１  ＦＭＳ用領域
２３  ネットワークインタフェース
２４  二次記憶装置
２４１  オペレーティングシステム（ＯＳ）
２４２  ＤＢＭＳ外部ファイル管理システム（ＦＭＳ）
２４３  ＤＢ管理下ファイル
２４４  コンテンツ情報ファイル
２４５  ＯＳファイルアクセス制御情報
２９  バス
３０  ＤＢサーバ
３１  ＣＰＵ
３２  メモリ
３３  ネットワークインタフェース
３４  二次記憶装置
３４１  オペレーティングシステム（ＯＳ）
３４２  データベース管理システム（ＤＢＭＳ）
３４３  外部ファイル連携機能拡張（ＦＡＥ）
３４４  テーブル情報
３４５  ログ
３９  バス
【図１】
0003992263.tif 000002
【図２】
0003992263.tif 000003
【図３】
0003992263.tif 000004
【図４】
0003992263.tif 000005
【図５】
0003992263.tif 000006
【図６】
0003992263.tif 000007
【図７】
0003992263.tif 000008
【図８】
0003992263.tif 000009
【図９】
0003992263.tif 000010
【図１０】
0003992263.tif 000011
【図１１】
0003992263.tif 000012
【図１２】
0003992263.tif 000013
【図１３】
0003992263.tif 000014
【図１４】
0003992263.tif 000015
【図１５】
0003992263.tif 000016
【図１６】
0003992263.tif 000017
【図１７】
0003992263.tif 000018
【図１８】
0003992263.tif 000019
【図１９】
0003992263.tif 000020