(57)【特許請求の範囲】
【請求項１】
ユーザによるデータ型の定義とそのユーザ定義データ型のデータに対する操作を行うプラグイン関数とを組み込む機能を有し、表形式で表されるリレーショナルデータベースを管理するリレーショナルデータベース管理システムにおけるリレーショナルデータベース管理方法において、
前記プラグイン関数が使用するファイルを、前記リレーショナルデータベース管理システムの管理するデータを格納するデータベース領域に前記プラグイン関数に対して送られたデータ型の定義に基づいて作成し、
前記ファイルに対するアクセスは前記プラグイン関数が前記リレーショナルデータベース管理システムの提供するファイル操作マクロを発行して行い、
前記リレーショナルデータベース管理システムは前記発行されたファイル操作マクロを実行するとともに前記ファイルに対して前記リレーショナルデータベース管理システムによる排他制御を行うことを特徴とするリレーショナルデータベース管理方法。
【請求項２】
請求項１に記載のリレーショナルデータベース管理方法において、前記プラグイン関数が前記ファイルを更新した際に前記ファイルの更新情報を出力しておき、前記リレーショナルデータベースへのアクセスを行ったトランザクションがロールバックした場合には前記更新情報を用いて前記ファイルおよび前記リレーショナルデータベースについてトランザクション開始時点の状態に回復することを特徴とするリレーショナルデータベース管理方法。
【請求項３】
請求項１に記載のリレーショナルデータベース管理方法において、前記リレーショナルデータベース領域内に格納されている前記リレーショナルデータベース管理システムが管理するデータおよび前記ファイルを外部記憶装置に出力してバックアップを作成しておき、前記プラグイン関数が前記ファイルを更新した際に前記ファイルの更新情報をログファイルに出力しておき、前記バックアップと前記ログファイルから取り出した更新情報とにより前記リレーショナルデータデータと前記ファイルとを回復することを特徴とするリレーショナルデータベース管理方法。
【請求項４】
請求項１記載のリレーショナルデータベース管理方法において、前記リレーショナルデータベース領域内に格納されている前記リレーショナルデータベース管理システムが管理する前記リレーショナルデータベースおよび前記ファイルの内容を外部記憶装置に出力し、その出力した内容の再登録により前記リレーショナルデータベースおよび前記ファイルの内容を再編成することを特徴とするリレーショナルデータベース管理方法。
【請求項５】
表形式で表されるリレーショナルデータベースと、ユーザによるデータ型の定義とそのユーザ定義データ型のデータに対する操作を行うプラグイン関数とを組み込む機能を有し前記リレーショナルデータベースを管理するリレーショナルデータベース管理システムとを含むリレーショナルデータベースシステムにおいて、
前記データベース管理システムは、前記プラグイン関数が使用するファイルを自己の管理するデータを格納するデータベース領域に前記プラグイン関数に対して送られたデータ型の定義に基づいて作成し、自己の提供するファイル操作マクロを前記プラグイン関数が自己に対して発行すると、そのファイル操作マクロを実行して前記ファイルに対するアクセスを行うと共に前記ファイルに対して排他制御を行うことを特徴とするリレーショナルデータベースシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リレーショナルデータベース管理方法およびリレーショナルデータベースシステムに関し、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータとを共に管理することが出来るリレーショナルデータベース管理方法およびリレーショナルデータベースシステムに関する。
【０００２】
【従来の技術】
リレーショナルデータベースのデータベース操作言語であるＳＱＬ（Ｓtructured Ｑuery Ｌanguage）は、ＩＳＯ（International Ｏrganization for Ｓtandardization）によりＳＱＬ規格として規格化されている。
リレーショナルデータベースをサポートしているリレーショナルデータベース管理システムにおいては、前記ＳＱＬ規格に準拠した仕様でリレーショナルデータベースのサポートが図られている。
【０００３】
図１２に示すように、リレーショナルデータベースは、行と列からなる表形式で表現される。列には、ＳＱＬ規格で規定されている列属性を定義することができる。そして、その列に定義した列属性に合致したデータだけがその列に格納される。
図１２の例では、列１の列属性は整数型（ＩＮＴＥＧＥＲ型）であり、列２の列属性は小数点型（ＤＥＣＩＭＡＬ型）であり、列３の列属性は固定長文字型（ＣＨＡＲ型）であり、列４の列属性は可変長文字型（ＶＡＲＣＨＡＲ型）である。
【０００４】
さて、ＳＱＬ規格で規定されていない列属性のデータ（例えば画像，音声，文書，図形，マルチメディアデータ，それらを種々の形式で圧縮したデータなど）が出現したとき、その度にＳＱＬ規格で規格化することは煩雑であり、現実的ではない。このため、ＳＱＬ規格で規定されていない列属性のデータも、規定されている列属性のデータと同一のデータベース内に混在させられるように、ＳＱＬ３においてＳＱＬ規格の機能拡張が検討されている。すなわち、ＳＱＬ３によれば、ユーザが表の定義時に列属性として任意にデータ型を定義でき、その列に定義したデータ型のデータを格納し且つアクセスできるようになる。
図１３の表は、列２と列４とにユーザがデータ型を定義した例である。
【０００５】
図１３の表に対する行の追加は次のように行う。
(１)アプリケーションプログラムが、追加行の各列に相当するデータを設定し、行追加のＳＱＬコマンド（ＩＮＳＥＲＴ）を発行することにより、ＲＤＢＭＳが起動される。
(２)ＲＤＢＭＳは、列１と列３のデータについては、ＲＤＢＭＳ自身が表に格納するための形式であるデータに変換し、追加行（ｎ＋１）の列１と列３とに格納する。列２と列４のデータについては、ユーザによって指定された列２をアクセスするプラグイン関数と列４をアクセスするプラグイン関数とを起動する。
(３)起動された各プラグイン関数は、列２のデータ及び列４のデータを、表に格納するための形式のデータに変換し、ＲＤＢＭＳにリターンする。
(４)ＲＤＢＭＳは、列２と列４のデータを追加行（ｎ＋１）の列２と列４に格納する。
【０００６】
図１３の表に対する行の検索は次のように行う。
(１)アプリケーションプログラムが、例えば列１のデータに特定の値をもつ行を抽出するためのＳＱＬコマンド（ＳＥＬＥＣＴ）を発行することにより、ＲＤＢＭＳが起動される。
(２)ＲＤＢＭＳは、列１のデータに指定の値をもつ行の抽出を行うが、抽出した行には列２と列４とが存在するため、ユーザによって指定された列２をアクセスするプラグイン関数と列４をアクセスするプラグイン関数とを起動する。
(３)起動された各プラグイン関数は、列２のデータ及び列４のデータをアプリケーションプログラムが操作できるデータに変換し、ＲＤＢＭＳに戻す。
(４)ＲＤＢＭＳは、当該行をアプリケーションプログラムに渡す。
(５)上記の操作を抽出する各行について行う。
【０００７】
上記のように、ユーザ定義のデータ型の列を含む表のアクセスを実現するため、ＲＤＢＭＳは、プラグイン関数と連携する。すなわち、プラグイン関数とは、ユーザが定義したデータ型のデータを操作するためにデータベース管理システムに組み込むプログラムのことをいう。
プラグイン関数は、ユーザ定義のデータ型の列に格納したデータに効率よくアクセスするための情報たとえばインデクスを独自に作成してそれを利用することもできる。
次に、プラグイン関数によるインデクスの作成と利用を説明するが、説明の簡単化のために、図１３に示す表から列４を削除した表を操作対象に想定し、ユーザ定義のデータ型である文書データが列２に格納されており、その文書データに関するインデクスを作成し利用するものとする。
図１４は、ユーザ定義のデータ型の列のデータである文書データをＤＢ領域（データベース領域）２１の表の列２に文書データ７４として格納すると共にその文書データに関する情報をインデクス２４に追加する動作の説明図である。
インデクス２４は、インデクスの構造および性質上、表形式のデータとはできないデータ群である。換言すれば、インデクス２４は、データベース管理システム１０がサポートしていないデータベースすなわちデータベース管理システム管轄外のデータベースであり、ＯＳ提供のファイルアクセスメソドを利用してプラグイン関数１９が直接アクセスするＯＳ管理のファイルである。
(１)アプリケーションプログラム２８は、追加行の各列に相当するデータを設定し、行追加のＳＱＬコマンド（ＩＮＳＥＲＴ）を発行し、ＲＤＢＭＳ１０を起動する。
(２)ＲＤＢＭＳ１０は、列１と列３のデータについては、ＲＤＢＭＳ１０自身が表に格納するための形式であるデータに変換し、ＤＢ領域２１の表の列１と列３とに格納する。列２のデータについては、そのデータを構成する入力文書や文書番号をパラメタに指定して、列２のデータを処理するプラグイン関数１９を起動する。
(３)プラグイン関数１９は、指定されたパラメタに基づき、ＯＳ提供のファイルアクセスメソドを利用して、列２のデータに関する文書情報をインデクス２４に追加する。また、パラメタで指定された入力文書をＤＢ領域２１の表に格納するための形式に変換して文書データとし、その文書データをＤＢＭＳ１０への戻り値とする。
(４)ＤＢＭＳ１０は、戻り値である文書データを受け取り、それをＤＢ領域２１の表の列２に文書データ７４として格納する。
【０００８】
図１５は、インデクス２４を利用して、ユーザ定義のデータ型の列のデータである文書データをＤＢ領域２１の表から検索する動作の説明図である。
(１)アプリケーションプログラム２８は、列２を対象とした検索条件を指定したＳＱＬコマンド（ＳＥＬＥＣＴ）を発行し、ＤＢＭＳ１０を起動する。
(２)ＤＢＭＳ１０は、ユーザ定義のデータ型である列２を対象とした検索条件であるため、検索条件をパラメタに指定して、列２のデータを処理するプラグイン関数１９を起動する。
(３)プラグイン関数１９は、指定されたパラメタに基づいてインデクス２４を検索し、検索条件に合致する列２のデータの行番号や存在位置情報を得て、この行番号や存在位置情報を戻り値としてＤＢＭＳ１０に戻る。
(４)ＤＢＭＳ１０は、受取った行番号や存在位置情報を利用してＤＢ領域２１の表の中から検索条件を満たす列１，列３のデータおよび文書データ７４を取り出す。そして、文書データ７４は、プラグイン関数１９に戻す。
(５)プラグイン関数１９は、文書データ７４をアプリケーションプログラム２８が操作できるデータに変換して、それを戻り値としてＤＢＭＳ１０に戻る。
(６)ＤＢＭＳ１０は、列１，列３のデータおよびプラグイン関数１９から戻されたデータをアプリケーションプログラム２８に渡す。
【０００９】
【発明が解決しようとする課題】
上記のように、従来は、ユーザ定義のデータ型のデータに依存した特殊な構造をしたデータ（インデクス２４）は、データベース管理システム（ＤＢＭＳ１０）が管理するデータベース（ＤＢ領域２１）に格納することができないため、プラグイン関数（プラグイン関数１９）が独自に管理するファイルとしている。
【００１０】
しかし、このような管理方法では、次の問題が発生する。
・排他制御
データベース管理システムの管理外のファイルであっても、データベース管理システムが管理するデータベースと連動して更新され且つ複数ユーザ間で共用される情報が格納されるため、当該ファイルに対して排他制御を行ってシリアライズ（順序化）する必要がある。しかし、データベース管理システムと別個に排他制御を行うと、同時実行性が低下するという問題が発生する。なお、当該ファイルの全体でなく部分的に排他制御を行えば、同時実行性の低下を最小限に出来るが、そのようなロジックをプラグイン関数の中に組み入れることは簡単には出来ない。
・整合性
データベース管理システムが管理するデータベースとデータベース管理システムの管理外のファイルの両方を更新したトランザクションがロールバックした場合、前記データベースの内容はデータベース管理システムが自動的にトランザクション開始時点の状態に戻すが、前記ファイルについてはデータベース管理システムは何もしない。従って、整合性をとるために、別の手段で前記ファイルをトランザクション開始時点の状態に戻す必要がある。この手段としては、前記ファイルをトランザクション開始時点の状態へ戻す機能をプラグイン関数に設ければよいが、そのようなロジックをプラグイン関数の中に組み入れることは簡単ではない。また、別の手段として、手作業で前記ファイルをトランザクション開始時点の状態へ戻すことが考えられるが、これはユーザの負担が過大になる。
・障害回復
データベース管理システムが管理するデータベースあるいはデータベース管理システムの管理外のファイルに物理的な障害が発生した場合、それぞれのバックアップによる回復を図る。このとき、前記データベースについては、データベース管理システムが取得している更新情報を利用して障害発生直前の状態にまで回復できるが、前記ファイルについては、データベース管理システムが更新情報を取得していないため、バックアップを落とし込むことでバックアップ取得時の状態に戻すだけである。従って、データベースとファイルの整合性をとるために、別の手段で前記ファイルを障害発生直前の状態にまで回復する必要がある。この手段としては、前記ファイルを障害発生直前の状態にまで回復する機能をプラグイン関数に設ければよいが、そのようなロジックをプラグイン関数の中に組み入れることは簡単ではない。また、別の手段として、手作業で前記ファイルを障害発生直前の状態にまで回復することが考えられるが、これはユーザの負担が過大になる。
【００１１】
結局のところ、従来のリレーショナルデータベース管理方法では、システムとしての信頼性や運用性を損わないためには、ユーザの負担が重くなり、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータとを共に管理することが難しい問題点があった。
そこで、本発明の目的は、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータとを共に管理することが出来るリレーショナルデータベース管理方法およびリレーショナルデータベースシステムを提供することにある。
【００１２】
【課題を解決するための手段】
第１の観点では、本発明は、ユーザによるデータ型の定義とそのユーザ定義データ型のデータに対する操作を行うプラグイン関数とを組み込む機能を有し、表形式で表されるリレーショナルデータベースを管理するリレーショナルデータベース管理システムにおけるリレーショナルデータベース管理方法において、前記プラグイン関数が使用するファイルを、前記リレーショナルデータベース管理システムの管理するデータを格納するデータベース領域に前記プラグイン関数に対して送られたデータ型の定義に基づいて作成し、前記ファイルに対するアクセスは前記プラグイン関数が前記リレーショナルデータベース管理システムの提供するファイル操作マクロを発行して行い、前記リレーショナルデータベース管理システムは前記発行されたファイル操作マクロを実行するとともに前記ファイルに対して前記リレーショナルデータベース管理システムによる排他制御を行うことを特徴とするリレーショナルデータベース管理方法を提供する。
上記第１の観点によるリレーショナルデータベース管理方法では、ユーザ定義のデータ型のデータを操作するためにプラグイン関数が管理するファイルを、データベース管理システムが管理するデータベース領域に、プラグイン関数に対して送られたデータ型の定義に基づいて作成し、そのファイルをリレーショナルデータベースと同時にデータベース管理システムが排他制御を行うようにした。この結果、排他制御に関してはデータベース管理システムが管理するため、システムとしての信頼性や運用性が高くなり、ユーザの負担が軽くなり、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを共に管理することが容易になる。
【００１３】
第２の観点では、本発明は、上記第１の観点によるリレーショナルデータベース管理方法において、前記プラグイン関数が前記ファイルを更新した際に前記ファイルの更新情報を出力しておき、前記リレーショナルデータベースへのアクセスを行ったトランザクションがロールバックした場合には前記更新情報を用いて前記ファイルおよび前記リレーショナルデータベースについてトランザクション開始時点の状態に回復することを特徴とするリレーショナルデータベース管理方法を提供する。
上記第２の観点によるリレーショナルデータベース管理方法では、トランザクションがロールバックした場合に、ユーザ定義のデータ型のデータを操作するためにプラグイン関数が管理するファイルの更新情報から当該ファイルを回復しうるから、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを相互に整合性がとれている状態に回復できる。この結果、ロールバックに関して、システムとしての信頼性や運用性が高くなり、ユーザの負担が軽くなり、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを共に管理することが容易になる。
【００１４】
第３の観点では、本発明は、上記第１の観点によるリレーショナルデータベース管理方法において、前記リレーショナルデータベース領域内に格納されている前記リレーショナルデータベース管理システムが管理するデータおよび前記ファイルを外部記憶装置に出力してバックアップを作成しておき、前記プラグイン関数が前記ファイルを更新した際に前記ファイルの更新情報をログファイルに出力しておき、前記バックアップと前記ログファイルから取り出した更新情報とにより前記リレーショナルデータデータと前記ファイルとを回復することを特徴とするリレーショナルデータベース管理方法を提供する。
上記第３の観点によるリレーショナルデータベース管理方法では、障害が発生した場合に、データベース管理システムが提供するユティリティを使うことで、ユーザ定義のデータ型のデータを操作するためにプラグイン関数が管理するファイルのバックアップと更新情報から当該ファイルを回復しうるから、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを相互に整合性がとれている状態に回復できる。この結果、障害に関して、システムとしての信頼性や運用性が高くなり、ユーザの負担が軽くなり、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを共に管理することが容易になる。
【００１５】
第４の観点では、本発明は、上記第１の観点によるリレーショナルデータベース管理方法において、前記リレーショナルデータベース領域内に格納されている前記リレーショナルデータベース管理システムが管理する前記リレーショナルデータベースおよび前記ファイルの内容を外部記憶装置に出力し、その出力した内容の再登録により前記リレーショナルデータベースおよび前記ファイルの内容を再編成することを特徴とするリレーショナルデータベース管理方法を提供する。
上記第４の観点によるリレーショナルデータベース管理方法では、例えばフラグメンテーションが発生した場合に、データベース管理システムが提供するユティリティを使うことで、ユーザ定義のデータ型のデータを操作するためにプラグイン関数が管理するファイルの外部記憶装置に出力していた内容から当該ファイルの内容を再編成しうるから、前記フラグメンテーションを解消できる。この結果、システムとしての信頼性や運用性が高くなり、ユーザの負担が軽くなり、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを共に管理することが容易になる。
【００１６】
第５の観点では、本発明は、表形式で表されるリレーショナルデータベースと、ユーザによるデータ型の定義とそのユーザ定義データ型のデータに対する操作を行うプラグイン関数とを組み込む機能を有し前記リレーショナルデータベースを管理するリレーショナルデータベース管理システムとを含むリレーショナルデータベースシステムにおいて、前記データベース管理システムは、前記プラグイン関数が使用するファイルを自己の管理するデータを格納するデータベース領域に前記プラグイン関数に対して送られたデータ型の定義に基づいて作成し、自己の提供するファイル操作マクロを前記プラグイン関数が自己に対して発行すると、そのファイル操作マクロを実行して前記ファイルに対するアクセスを行うと共に前記ファイルに対して排他制御を行うことを特徴とするリレーショナルデータベースシステムを提供する。
上記第５の観点によるリレーショナルデータベースシステムでは、ユーザ定義のデータ型のデータを操作するためにプラグイン関数が管理するファイルを、データベース管理システムが管理するデータベース領域に、前記プラグイン関数に対して送られたデータ型の定義に基づいて作成し、そのファイルをリレーショナルデータベースと同時にデータベース管理システムが排他制御を行うようにした。この結果、排他制御に関してはデータベース管理システムが管理するため、システムとしての信頼性や運用性が高くなり、ユーザの負担が軽くなり、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを共に管理することが容易になる。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態を図面を用いて具体的に説明する。なお、これにより本発明が限定されるものではない。
図１は、本発明の一実施形態のリレーショナルデータベースシステムの構成図である。
このリレーショナルデータベースシステム１００は、磁気ディスク装置２０のＤＢ領域２１に表データ２２として構築されたリレーショナルデータベースと、リレーショナルデータベースを管理するリレーショナルデータベース管理システムであるＤＢＭＳ１０とプラグイン関数１９とを含むＤＢサーバ９と、アプリケーションプログラム２８が実行され前記ＤＢＭＳ１０にＳＱＬコマンド処理の実行を要求するクライアント２７と、ユーザがコマンド入力などの操作を行うコンソール３０と、それらを接続するネットワーク２９とを具備して構成されている。
【００１８】
前記ＤＢＭＳ１０に接続された磁気ディスク装置２０には、ＤＢＭＳ１０が管理するＤＢ領域２１が割り当てられている。そのＤＢ領域２１中には、ＤＢＭＳ１０が直接的に操作するリレーショナルデータベースである表データ２２と、ユーザ定義のデータ型のデータを操作するためのプラグイン関数１９が直接的に操作するデータのファイル２４とが格納されている。
前記ファイル２４は、ユーザがコンソール３０からファイル作成コマンド（図４）を入力することにより作成され、また、ファイル削除コマンド（図５）を入力することにより削除される。
【００１９】
また、前記ＤＢＭＳ１０に接続された磁気ディスク装置２５には、前記表データ２２および前記ファイル２４の更新情報であるログファイル２６を格納している。
【００２０】
前記ＤＢＭＳ１０は、トランザクションを制御するトランザクション制御１１と、そのトランザクション制御１１が受け付けたＳＱＬコマンドを解析しデータベース操作の実行を制御するＳＱＬ制御１２と、そのＳＱＬ制御１２からの要求を受けて表データ２２の操作を行うデータ操作１３と、プラグイン関数１９を制御するプラグイン関数制御１７と、プラグイン関数１９からのファイル操作要求を受け付けるファイル操作１８と、表データ２２およびファイル２４の整合性を維持するための排他管理を行う排他管理１４と、表データ２２およびファイル２４の更新時に更新情報をログファイル２６へ出力するログ管理１５と、前記データ操作１３が表データ２２を参照・更新したり前記ファイル操作１８がファイル２４を参照・更新するためにＤＢ領域２１の操作を行うＤＢ領域操作１６とを具備している。
【００２１】
図２は、プラグイン関数１９がファイル２４を参照する参照処理の流れ図である。
この参照処理は、ユーザ定義のデータ型の列が存在する表データ２２にアクセスするＳＱＬコマンドをデータアプリケーションプログラム２８から受け取ったＤＢＭＳ１０により、プラグイン関数制御１７を通して、起動される。
ステップ３１では、プラグイン関数１９は、ファイル２４を参照用としてオープンする。
ステップ３２では、位置と長さを指定してファイル２４の対象データをバッファ上に参照読み込みする。この参照読み込みの場合、ＤＢＭＳ１０の排他管理１４が、対象データの格納ページに対し、参照用の排他を確保する。
ステップ３３では、バッファ上の対象データを参照する。
ステップ３４では、対象データを全て参照したか否か判定し、まだ残っていれば前記ステップ３２に戻り、全て参照したならステップ３５へ進む。
ステップ３５では、ファイル２４をクローズする。そして、参照処理を終了する。
【００２２】
図３は、プラグイン関数１９がファイル２４を更新する更新処理の流れ図である。
この更新処理は、ユーザ定義のデータ型の列が存在する表データ２２にアクセスするＳＱＬコマンドをデータアプリケーションプログラム２８から受け取ったＤＢＭＳ１０により、プラグイン関数制御１７を通して、起動される。
ステップ４１では、プラグイン関数１９は、ファイル２４を更新用としてオープンする。
ステップ４２では、位置と長さを指定してファイル２４の対象データをバッファ上に更新読み込みする。この更新読み込みの場合、ＤＢＭＳ１０の排他管理１４が、対象データの格納ページに対し、更新用の排他を確保する。
ステップ４３では、バッファ上の対象データを参照する。
ステップ４４では、対象データを更新すべきか否かを判断し、更新すべきならステップ４５へ進み、更新が不要ならステップ４７へ進む。
ステップ４５では、バッファ上の対象データの内容を更新する。
ステップ４６では、バッファ上の更新した対象データをファイル２４に書き込む。この時、ＤＢＭＳ１０のログ管理１５が、ファイル２４の更新前後内容を更新情報としてログファイル２６へ出力する。
ステップ４７では、対象データを全て更新したか否か判定し、まだ残っていれば前記ステップ４２に戻り、全て更新したならステップ４８へ進む。
ステップ４８では、ファイル２４をクローズする。そして、更新処理を終了する。
【００２３】
上記参照処理および更新処理において、オープン／読み込み／書き込み／クローズ等のファイル２４に対して使用するマクロをプラグイン関数１９が発行すると、制御がＤＢＭＳ１０のファイル操作１８に移る。
ＤＢＭＳ１０のファイル操作１８は、ファイル２４に対するマクロの種類を調べ、マクロに応じた処理を実行した後、マクロ要求に相当する要求をＯＳ提供のファイルアクセスメソドに対して行う。
【００２４】
図４は、ファイル作成コマンドの説明図である。
ファイル作成コマンドは、コマンド部「ｄｂｆｍａｋｅ」とパラメタ部とからなり、パラメタ部には「作成するファイル２４を格納するＤＢ領域２１の名称／作成するファイル２４の名称」および「作成するファイル２４の容量」を指定する。
このファイル作成コマンドをコンソール３０からＤＢＭＳ１０に入力すると、ファイル操作１８が起動され、ＤＢ領域操作１６を介して、ＤＢ領域２１にファイル２４が作成される。
【００２５】
図５は、ファイル削除コマンドの説明図である。
ファイル削除コマンドは、コマンド部「ｄｂｆｒｅｍｏｖｅ」とパラメタ部からなり、パラメタ部には「削除するファイル２４が格納されているＤＢ領域２１の名称／削除するファイル２４の名称」を指定する。
このファイル削除コマンドをコンソール３０からＤＢＭＳ１０に入力すると、ファイル操作１８が起動され、ＤＢ領域操作１６を介して、ＤＢ領域２１のファイル２４が削除される。
【００２６】
図６は、ファイルオープンマクロの説明図である。
ファイルオープンマクロは、マクロ命令部「ｄｂｆｏｐｅｎ」とパラメタ部からなり、パラメタ部には「オープンするファイル２４が格納されているＤＢ領域２１の名称／オープンするファイル２４の名称」および「使用目的に合った排他制御を実現するめたのオープンタイプ」を指定する。
オープンタイプには、他ユーザの参照・更新を許すことなくファイル２４を参照・更新するための“ＥＸ”（独占更新）と、他ユーザの参照・更新を許してファイル２４を参照・更新するための“ＳＵ”（共用更新）と、他ユーザの参照のみを許してファイル２４を参照・更新するための“ＰＵ”（保護更新）と、他ユーザの参照・更新を許してファイル２４を参照するための“ＳＲ”（共用参照）と、他ユーザからの参照のみを許してファイル２４を参照するための“ＰＲ”（保護参照）の５種類がある。
例えば図２の参照処理のステップ３１ではオープンタイプ“ＳＲ”を指定し、図３の更新処理のステップ４１ではオープンタイプ“ＳＵ”を指定することになる。
オープンタイプと参照更新時の排他単位の関係を表１に示す。また、オープンタイプの同時実行可能性を表２に示す。
【００２７】
【表１】
0003709510.tif 000002
【００２８】
【表２】
0003709510.tif 000003
【００２９】
ファイルオープンマクロは、戻り値として、ファイルロケータを応答する。この後のファイル操作では、マクロのパラメタとして、ファイルロケータを指定する。
ＳＱＬ実行時にＤＢＭＳ１０のプラグイン関数制御１７より起動されたプラグイン関数１９がファイルオープンマクロを発行すると、ファイル操作１８が起動され、そのファイル操作１８は排他管理１４を起動し、オープンタイプに従った排他を確保する。
ファイルオープンマクロの戻り値は、オープン成功時はファイルロケータ（正値）であり、オープン失敗時は負値である。
オープンしたファイルは、ファイルクローズマクロ（図９）またはトランザクションの終了によりクローズ（未オープン）状態になる。
【００３０】
図７は、ファイル参照マクロの説明図である。
ファイル参照マクロは、マクロ命令部「ｄｂｆｒｅａｄ」とパラメタ部からなり、パラメタ部には「データを受け取るための入力バッファ領域のアドレス」「対象データのファイル２４上での位置」「データ長」「ＤＢＭＳ１０が参照目的別に適切な排他制御を行うための参照タイプ」および「ファイルオープン時に得たファイルロケータ」を指定する。
参照タイプには、参照だけを目的とする“Ｒ”と、そのデータを更新してファイルに反映する“Ｕ”の２種類がある。
例えば図２の参照処理のステップ３２では参照タイプ“Ｒ”を指定し、図３の更新処理のステップ４２では参照タイプ“Ｕ”を指定することになる。
オープンタイプと参照タイプと確保する排他の関係を表３に示す。
【００３１】
【表３】
0003709510.tif 000004
【００３２】
ファイルオープンを行ったプラグイン関数１９がファイル参照マクロを発行することでファイル操作１８が起動される。ファイル操作１８は、排他管理１４を起動して、オープンタイプと参照タイプにしたがって対象データが格納されているページに対して排他を確保するか又は排他を行わない。この後、ファイル操作１８は、ＤＢ領域操作１６を起動する。ＤＢ領域操作１６は、ＯＳ提供のファイルアクセスメソドを使用して、パラメタにより指定されたＤＢ領域２１中にあるファイル２４のデータ位置のページ（内容）を読み出して、データ受け取り用のバッファ領域に保持する。
ファイル参照マクロの戻り値は、参照成功時は“０”値であり、参照失敗時は負値である。
【００３３】
図８は、ファイル更新マクロの説明図である。
ファイル更新マクロは、マクロ命令部「ｄｂｆｗｒｉｔｅ」とパラメタ部からなり、パラメタ部には「ファイル２４に出力するデータを設定したバッファ領域のアドレス」「ファイル２４上での対象データの位置」「データ長」「ＤＢＭＳ１０がファイル更新に際して行う更新情報（ログ）の取得方法を指示する更新タイプ」および「ファイルオープン時に得たファイルロケータ」を指定する。
更新タイプには、ＤＢＭＳ１０が更新対象部分について更新前と更新後のログを取得する“ＬＡ”と、更新前のログだけを取得する“ＬＢ”と、更新後のログだけを取得する“ＬＦ”と、更新した部分のログを取得しない“ＮＬ”の４種類があり、障害発生時のファイル回復の運用方法やプラグイン関数１９の更新処理方式に合ったログ取得方法を更新タイプで指定することができる。
例えば図３の更新処理のステップ４６では、ロールバックとＤＢ回復ユティリティ５３による回復処理の両方を行うため、更新タイプには“ＬＡ”を指定することになる。
【００３４】
なお、図３の更新処理のステップ４２でのファイル参照マクロの参照タイプに“Ｒ”を指定した後、ステップ４２でファイル更新マクロを発行すると、ＤＢＭＳ１０は、参照タイプに“Ｕ”を指定したときと同様の排他を確保し直す。
ファイル参照マクロを行ったプラグイン関数１９がバッファ領域上のデータを更新し、ファイル更新マクロを発行することでファイル操作１８が起動される。
ファイル操作１８は、ファイル２４へのデータ出力を行うため、ＤＢ領域操作１６を起動する。ＤＢ領域操作１６は、ＯＳ提供のファイルアクセスメソドを使用して、パラメタにより指定されたバッファ領域の内容をパラメタにより指定されたＤＢ領域２１中にあるファイル２４のデータ位置に書き込む。
ファイル更新マクロの戻り値は、更新成功時は“０”値であり、更新失敗時は負値である。
【００３５】
図９は、ファイルクローズマクロの説明図である。
ファイルクローズマクロは、マクロ命令部「ｄｂｆｃｌｏｓｅ」とパラメタ部からなり、パラメタ部には「ファイルオープン時に得たファイルロケータ」を指定する。
ファイル２４に対する参照・更新が完了したプラグイン関数１９がファイルクローズマクロを発行することでファイル操作１８が起動される。ファイル操作１８は、ファイルオープン時に確保した資源を解放してファイル２４をクローズすることによってファイル２４をオープン前の状態に戻す。このとき、キャッシュ上にあるページでオープン中に更新したものはファイル２４に反映する。また、ファイルあるいはページに対して確保した排他は解放しない（トランザクションの終了時に解放する）。
ファイルクローズマクロの戻り値は、クローズ成功時は“０”値であり、クローズ失敗時は負値である。
【００３６】
図１０は、ＤＢ領域２１のバックアップの取得とログファイル２６（ＤＢ領域２１の更新情報）のアンロード処理とＤＢ領域２１の物理的障害に対する回復時のデータの流れを示す説明図である。
ＤＢバックアップユティリティ５１は、ＤＢ領域２１中の表データ２２およびファイル２４を含めたＤＢ領域２１全体の物理的なバックアップ５５を外部記憶媒体に作成する。
ログアンロードユティリティ５２は、ログファイル２６に格納されているＤＢ領域２１の更新情報をログアンロードファイル５７として外部記憶媒体に作成する。
ＤＢ回復ユティリティ５３は、ＤＢ領域２１に物理的障害が発生した場合、前記バックアップ５５とログアンロードファイル５７とを入力としてＤＢ領域２１の内容を障害発生前の状態にする回復処理を行う。
【００３７】
図１１は、ＤＢ領域２１の再編成処理時のデータの流れの説明図である。
ＤＢ再編成ユティリティ６１は、ＤＢ領域２１を入力として、それに含まれている表データ２２の１／２と２／２のデータおよびファイル２４の両方について論理的な内容をアンロードファイル６４として外部記憶媒体に作成するアンロード処理を行う。
ＤＢ再編成ユティリティ６２は、前記アンロードファイル６４を入力として、ＤＢ領域２１に表データ２２のデータおよびファイル２４のデータを格納し直すことによりＤＢ領域２１に格納されている全データについて物理的な格納位置を整えるリロード処理を行う。
【００３８】
以上のリレーショナルデータベースシステム１００によれば、プラグイン関数１９が管理するファイル２４をＤＢＭＳ１０が管理するＤＢ領域２１に作成し、ＤＢＭＳ１０が管理する表データ２２と同時にＤＢＭＳ１０が排他制御を行う。すなわち、ファイル２４についてもＤＢＭＳ１０が排他制御を管理するため、システムとしての信頼性や運用性が高くなり、ユーザの負担が軽くなる。また、ロールバックや回復や再編成に際しても、ファイル２４を特別に意識することなく運用できるため、システムとしての信頼性や運用性が高くなり、ユーザの負担が軽くなる。従って、リレーショナルデータベースと、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）とを共に管理することが容易になる。
【００３９】
【発明の効果】
本発明のリレーショナルデータベース管理方法およびリレーショナルデータベースシステムによれば、リレーショナルデータベース管理システムがサポートしていないユーザ定義のデータ型のデータ（のファイル）に対しても、排他制御やログ取得が実現できるため、ユーザは信頼性の高いプラグイン関数組込みのデータベースシステムを構築できる。また、既存のプラグイン関数の移植が簡単にできる。
【図面の簡単な説明】
【図１】  本発明の一実施形態にかかるリレーショナルデータベースシステムの構成図である。
【図２】  プラグイン関数がファイルを参照する参照処理の流れ図である。
【図３】  プラグイン関数がファイルを更新する更新処理の流れ図である。
【図４】  ファイル作成コマンドの説明図である。
【図５】  ファイル削除コマンドの説明図である。
【図６】  ファイルオープンマクロの説明図である。
【図７】  ファイル参照マクロの説明図である。
【図８】  ファイル更新マクロの説明図である。
【図９】  ファイルクローズマクロの説明図である。
【図１０】  ＤＢ領域のバックアップの取得とログファイルのアンロード処理とＤＢ領域の物理的障害に対する回復時のデータの流れを示す説明図である。
【図１１】  ＤＢ領域の再編成処理時のデータの流れの説明図である。
【図１２】  ユーザ定義のデータ型の列が存在しないリレーショナルデータベースの例示図である。
【図１３】  ユーザ定義のデータ型の列が存在するリレーショナルデータベースの例示図である。
【図１４】  ユーザ定義のデータ型の文書データをＤＢ領域に格納すると共にその文書データに関する情報をインデクスに追加する動作の説明図である。
【図１５】  インデクスを利用してユーザ定義のデータ型の文書データをＤＢ領域の表から検索する動作の説明図である。
【符号の説明】
９：ＤＢサーバ
１０：リレーショナルデータベース管理システム（ＤＢＭＳ）
１１：トランザクション制御部
１２：ＳＱＬ制御部
１３：データ操作制御部
１４：排他管理部
１５：ログ管理部
１６：ＤＢ領域操作部
１７：プラグイン関数制御部
１８：ファイル操作部
１９：プラグイン関数
２０：磁気ディスク装置
２１：ＤＢ領域
２２：表データ
２３：インデクス
２４：ファイル
２５：磁気ディスク装置
２６：ログファイル
２７：クライアント
２８：アプリケーションプログラム
１００：リレーショナルデータベースシステム
【図２】
0003709510.tif 000005
【図３】
0003709510.tif 000006
【図４】
0003709510.tif 000007
【図５】
0003709510.tif 000008
【図６】
0003709510.tif 000009
【図７】
0003709510.tif 000010
【図８】
0003709510.tif 000011
【図９】
0003709510.tif 000012
【図１０】
0003709510.tif 000013
【図１１】
0003709510.tif 000014
【図１２】
0003709510.tif 000015
【図１３】
0003709510.tif 000016
【図１】
0003709510.tif 000017
【図１４】
0003709510.tif 000018
【図１５】
0003709510.tif 000019