(57)【要約】【課題】分割格納定義を変更しない場合のＤＭＬ実行性能を維持しながら、分割格納定義を変更した場合のＤＭＬオブジェクトの再作成を不要にする。【解決手段】ＤＤＬ１０１の解析結果はデータベース形式情報１１５として格納され、その中に分割格納定義情報１１６を含む。プログラムソース１０２はコンパイルされ手続きオブジェクト１２３に変換され、ＤＭＬ部分は解析され、ＤＭＬオブジェクト１２１として格納され、その中に分割格納定義情報１２２を含み、同時にＤＭＬオブジェクト１２１に関する情報を手続き管理情報１１７として格納する。手続き実行制御部１０７はオブジェクト１２３を実行するとき、オブジェクト１２３の手続きＩＤ１２４で手続き管理情報１１７を検索し、分割格納定義変更有無情報１２０が変更有りの場合には分割格納定義情報１２２を分割格納定義情報１１６で書き換え、ＤＭＬオブジェクト実行部１１２がＤＭＬオブジェクト１２１を実行する。【選択図】　　　　　　　　図１
2004054402.tif 000002
【特許請求の範囲】
【請求項１】
同一の論理構造を持つデータ群を一定の規則に応じて複数のファイルに振り分けて分割格納するデータベース管理システムにおけるデータベース管理方法であって、
ＤＤＬの解析結果である、分割格納定義情報を含むデータベース形式情報をディクショナリとしての記憶媒体に格納し、該ＤＤＬが変更されその解析結果により該分割格納定義情報が変更されたとき、ディクショナリに設定された分割格納定義変更有無情報を変更有りにし、
プログラムソースをコンパイルした結果の手続きオブジェクトを記憶媒体に格納し、
プログラムソース内のＤＭＬを解析し、その解析結果である、分割格納定義情報を含むＤＭＬオブジェクトを記憶媒体に格納し、
前記手続きオブジェクトの実行時に、該手続きオブジェクトの手続きＩＤに対応する前記分割格納定義変更有無情報が変更有りの場合、前記ＤＭＬオブジェクトに含まれる分割格納定義情報を前記ディクショナリに格納された分割格納定義情報で書き替え、該書き替えた分割格納定義情報を使用し、変更無しの場合、前記ＤＭＬオブジェクトに含まれる分割格納定義情報を使用することを特徴とするデータベース管理方法。
【請求項２】
同一の論理構造を持つデータ群を一定の規則に応じて複数のファイルに振り分けて分割格納するデータベース管理システムにおけるデータベース管理装置であって、
ＤＤＬを解析し、その解析結果である、分割格納定義情報を含むデータベース形式情報をディクショナリとしての記憶媒体に格納する手段と、
該ＤＤＬが変更されその解析結果により該分割格納定義情報が変更されたとき、ディクショナリに設定された分割格納定義変更有無情報を変更有りに設定する手段と、
プログラムソースをコンパイルし、その結果の手続きオブジェクトを記憶媒体に格納する手段と、
プログラムソース内のＤＭＬを解析し、その解析結果である、分割格納定義情報を含むＤＭＬオブジェクトを記憶媒体に格納する手段と、
前記手続きオブジェクト実行手段と、
手続きオブジェクトに実行時に、該手続きオブジェクトの手続きＩＤに対応する前記分割格納定義変更有無情報の変更の有無を判定する手段と、
該判定の結果が変更の有りの場合、前記ＤＭＬオブジェクトに含まれる分割格納定義情報を前記ディクショナリに格納された分割格納定義情報で書き替える手段を有し、
前記手続きオブジェクト実行手段は、前記判定の結果が変更の有りの場合は、書き替えた分割格納定義情報を使用し、変更無しの場合は、前記ＤＭＬオブジェクトに含まれる分割格納定義情報を使用することを特徴とするデータベース管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リレーショナルデータベース管理システムの手続き管理技術に係り、特に複数のファイルに分割格納したデータベースを操作するＤＭＬを含む手続きを管理する技術に関する。
【０００２】
【従来の技術】
リレーショナルデータベース管理システムにおいて問い合わせ手続き（以下手続きと呼ぶ）を実行する従来技術には以下の２つがある。
（１）手続きをあらかじめコンパイラにより解析し、手続き中に含まれるＤＭＬ（Ｄａｔａ　　Ｍａｎｉｐｕｌａｔｉｏｎ　　Ｌａｎｇａｇｅ）を実行形式のオブジェクト（以下ＤＭＬオブジェクトと呼ぶ）に変換して記憶媒体に格納する。また、このとき手続きとＤＭＬオブジェクトを管理するための手続き管理情報をディクショナリ中に格納し、手続き実行時は手続き管理情報からＤＭＬオブジェクトの格納位置を求め、メモリに展開して実行する。
（２）手続き実行時にＤＭＬを解析してメモリ上にＤＭＬオブジェクトを展開して実行する。
（１）の方式は手続きの実行性能の点では（２）の方式よりも優れているが、ＤＭＬオブジェクト中にデータベース形式情報を格納するため、データベースの定義変更時に、ＤＭＬオブジェクトを再作成しなければならないという短所がある。
【０００３】
（１）の従来技術による手続き実行の流れを図１の一部を用いて説明する。
従来技術を備える手続き管理方式は、ＤＤＬ（Ｄａｔａ　　Ｄｅｓｃｒｉｐｔｉｏｎ　　Ｌａｎｇａｇｅ）１０１と、手続きを実現するためのプログラムソース１０２と、コンパイラ１０３と、データベース管理システム１０４と、ディクショナリ１１４と、ＤＭＬオブジェクト１２１と分割格納定義情報１２２と手続きオブジェクト１２３と手続きＩＤ１２４から構成され、
上記データベース管理システム１０４は、ＤＤＬ解析実行部１０５と、ＤＭＬ解析部１０６と、手続き実行制御部１０７と、ＤＭＬオブジェクト取得部１０８と、ディクショナリ検索部１０９と、ＤＭＬオブジェクト実行部１１２と、ローダ１１３を備え、
上記ディクショナリ１１４は、データベース形式情報１１５と、分割格納定義情報１１６と、手続き管理情報１１７と、手続きＩＤ１１８と、ＤＭＬオブジェクト格納位置情報１１９を備える。
従来技術では、図に示されているＤＭＬオブジェクト修正部１１０と、ＤＭＬオブジェクト修正要否判定部１１１と、分割格納定義変更有無情報１２０は備えていない。
【０００４】
プログラムソース１０２は、コンパイラ１０３により解析され、ＤＭＬ部分がデータベース管理システム１０４に渡され、コンパイル結果は、手続きオブジェクト１２３と手続きＩＤ１２４として記憶される。
データベース管理システム１０４のＤＭＬ解析部１０６はディクショナリ１１４、主にデータベース形式情報１１５、を参照しながらＤＭＬを解析し、ＤＭＬオブジェクト１２１を記憶媒体に出力し、また、ディクショナリ１１４に手続き管理情報１１７を登録する。
手続き管理情報１１７は、手続きを一意に識別するための手続きＩＤ１１８とＤＭＬオブジェクト格納位置情報１１９からなる。
【０００５】
次に、手続き実行の流れであるが、手続き実行制御部１０７のローダ１１３が手続きオブジェクト１２３をメモリに読み出し、ＤＭＬオブジェクト取得部１０８が手続きオブジェクト１２３に埋め込まれている手続きＩＤ１２４を検索キーとして手続き管理情報１１７を検索してＤＭＬオブジェクト格納位置情報１１９を取り出し、ＤＭＬオブジェクト１２１をメモリに展開する。
最後にＤＭＬオブジェクト実行部１１２がメモリに展開されたＤＭＬオブジェクト１２１を実行する。
【０００６】
次に、一つのデータベースを複数のファイルに分割格納する機能について例を挙げて説明する。以下この機能を分割格納機能と呼ぶ。さらに分割格納機能により格納されたデータベースを分割格納データベースと呼ぶ。
分割格納機能の例を図２に示す。
ＤＤＬ２０１は、電話番号表と名付けられた２つの列から構成されるデータベースを３つの論理ファイルＲＤＡＲＥＡ１（２０２），ＲＤＡＲＥＡ２（２０３），ＲＤＡＲＥＡ３（２０４）に「電話番号」列の値によって行を分割して格納する表を定義する。
図１との対応関係は、ＤＤＬ２０１がデータベース形式情報１１５に対応し、ＰＡＲＴＩＴＩＯＮＥＤ　　ＢＹ　　以下の記述が分割格納定義情報に対応する。
ＲＤＡＲＥＡ１には電話番号列の値が最小から２０９９９９９９９９までのデータが、ＲＤＡＲＥＡ２には２１００００００００から２１９９９９９９９９までのデータが、ＲＤＡＲＥＡ３には２２００００００００以上のデータが格納される。
更に、分割格納機能において定義を変更することができる。
図４は前述の電話番号表の分割格納定義を変更するＤＤＬの例を示している。ＲＤＡＲＥＡ３に格納されるデータをさらにＲＤＡＲＥＡ３（４０１），ＲＤＡＲＥＡ４（４０２），ＲＤＡＲＥＡ５（４０３）の３つの論理ファイルに分割することを示している。
【０００７】
分割格納データベースを操作する手続きを前述の（１）の実行方式で実行する場合、分割格納定義情報はＤＭＬオブジェクト内に存在するため、コンパイル後に分割格納定義、例えば分割数を変更すると、ＤＭＬオブジェクトを再作成する必要があり、手続き数が多いシステムではシステムに多大な負荷がかかると共に、データベース管理が煩雑になるという問題があった。
この問題を解決するための公知例として、特開平９−３４７６１号公報に、分割格納定義情報をＤＭＬオブジェクト中に格納せず、ディクショナリ中に分割情報オブジェクトとして独立に格納し、手続き実行時にＤＭＬオブジェクトとマージするという方式が示されている。
【０００８】
【発明が解決しようとする課題】
上述の方式は定義変更に伴うＤＭＬオブジェクトの再作成は不要になるものの、手続き実行時にＤＭＬオブジェクトと分割情報オブジェクトのマージ処理のオーバヘッドが発生するため、手続きの実行性能が損なわれるという問題がある。本発明の目的は、分割格納定義が変更されない間はＤＭＬオブジェクト中に格納した情報を使用し、分割格納定義が変更された場合にのみディクショナリから情報を取得するようにすることにより、手続き実行性能を向上させることにある。
【０００９】
【課題を解決するための手段】
上記目的を達成するため、本発明は、ＤＤＬの解析結果である、分割格納定義情報を含むデータベース形式情報をディクショナリとしての記憶媒体に格納し、該ＤＤＬが変更されその解析結果により該分割格納定義情報が変更されたとき、ディクショナリに設定された分割格納定義変更有無情報を変更有りにし、
プログラムソースをコンパイルした結果の手続きオブジェクトを記憶媒体に格納し、
プログラムソース内のＤＭＬを解析し、その解析結果である、分割格納定義情報を含むＤＭＬオブジェクトを記憶媒体に格納し、
手続きオブジェクトの実行時に、該手続きオブジェクトの手続きＩＤに対応する分割格納定義変更有無情報が変更有りの場合、ＤＭＬオブジェクトに含まれる分割格納定義情報をディクショナリに格納された分割格納定義情報で書き替え、該書き替えた分割格納定義情報を使用し、変更無しの場合、ＤＭＬオブジェクトに含まれる分割格納定義情報を使用する。
【００１０】
【発明の実施の形態】
以下、本発明の実施例を図面に基づいて詳細に説明する。
図１は、本発明に関わる手続き管理方式を示したブロック図である。
本実施例は、ＤＤＬ１０１と、手続きを実現するためのプログラムソース１０２と、コンパイラ１０３と、データベース管理システム１０４と、ディクショナリ１１４と、ＤＭＬオブジェクト１２１と分割格納定義情報１２２と、手続きオブジェクト１２３と手続きＩＤ１２４から構成され、
前記データベース管理システム１０４は、ＤＤＬ解析実行部１０５と、ＤＭＬ解析部１０６と、手続き実行制御部１０７と、ＤＭＬオブジェクト取得部１０８と、ディクショナリ検索部１０９と、ＤＭＬオブジェクト修正部１１０と、ＤＭＬオブジェクト修正要否判定部１１１と、ＤＭＬオブジェクト実行部１１２と、ローダ１１３を備え、
また、前記ディクショナリ１１４は、データベース形式情報１１５と、分割格納定義情報１１６と、手続き管理情報１１７と、手続きＩＤ１１８と、ＤＭＬオブジェクト格納位置情報１１９と、分割格納定義変更有無情報１２０を備える。
【００１１】
図２は、データベースを定義するＤＤＬの例を示している。
ＤＤＬ２０１は、電話番号表と名付けられた２つの列から構成されるデータベースを３つの論理ファイルＲＤＡＲＥＡ１（２０２），ＲＤＡＲＥＡ２（２０３），ＲＤＡＲＥＡ３（２０４）に「電話番号」列の値によってデータを分割して格納する表を定義する。
【００１２】
図３は、手続きコンパイル後に分割格納定義情報が変更されていない状態で手続きを実行した場合の処理の流れを示したタイムチャートである。
図４は、図２に示した電話番号表の分割格納定義を変更するＤＤＬの例を示している。
電話番号列の値が２２００００００００以上のデータが格納される分割単位ＲＤＡＲＥＡ３を更に３つの格納単位ＲＤＡＲＥＡ３（４０２），ＲＤＡＲＥＡ４（４０３），ＲＤＡＲＥＡ５（４０４）に分割し、ＲＤＡＲＥＡ３には電話番号列の値が２２００００００００から２２９９９９９９９９までのデータを、ＲＤＡＲＥＡ４には電話番号列の値が２３００００００００から２３９９９９９９９９までのデータを、ＲＤＡＲＥＡ５には電話番号列の値が２４００００００００以上のデータを格納する。
図５は、手続きコンパイル後に分割格納定義情報を変更した場合の手続き実行の流れを示したタイムチャートである。
【００１３】
図６は分割格納定義情報の具体例を示す図である。
ＤＤＬ２０１を実行した結果、論理ファイル名称６０２と格納上限値情報６０３から構成される分割格納定義情報６０１が生成される。
論理ファイル名称６０２とその論理ファイルに格納される「電話番号」列の上限値が配列形式で対応付けられており、最後の格納上限値には、最大値であることを示す‘ＦＦＦＦＦＦＦＦＦＦ’が格納されている。
図７は手続き管理情報の具体例を示す図である。
手続き管理情報７０１は、手続き管理主情報７０２と、資源管理情報７０７から構成される。
手続き管理主情報７０２は、手続きの基本的な属性を管理するための情報であり、手続きＩＤ７０３とＤＭＬオブジェクト格納位置情報７０４と分割格納定義変更有無情報７０５と手続き属性情報７０６から構成される。
また、資源管理情報７０７は手続き中で使用されているデータベース資源を管理するための情報であり、手続きＩＤ７０８と使用資源ＩＤ７０９から構成される。
この図では、手続きＩＤとしてＩＤ１を持つ手続きが、資源ＩＤ１、資源ＩＤ２を持つデータベース資源を使用することを示している。同様に、手続きＩＤとしてＩＤ２を持つ手続きが、資源ＩＤ１を持つデータベース資源を、手続きＩＤとしてＩＤ３を持つ手続きが、資源ＩＤ１、資源ＩＤ３を持つデータベース資源を、手続きＩＤとしてＩＤｎを持つ手続きが、資源ＩＤ１を持つデータベース資源を使用することを示している。
【００１４】
次に図１のように構成された本実施例の手続き管理方式について説明する。
まず、ＤＤＬ実行時の流れを説明する。
ＤＤＬ解析実行部１０５はＤＤＬ１０１を受け付け、解析結果をディクショナリ１１４にデータベース形式情報１１５として格納する。
データベース形式情報１１５中には、分割格納定義情報１１６が含まれる。
次に、手続きのコンパイルの流れを説明する。
コンパイラ１０３はプログラムソース１０２からＤＭＬ部分をデータベース管理システム１０４に渡す。
データベース管理システム１０４のＤＭＬ解析部１０６はＤＭＬの解析結果としてＤＭＬオブジェクト１２１を記憶媒体に出力する。
また、同時にディクショナリ１１４の手続き管理情報１１７にＤＭＬオブジェクト１２１に関する情報を格納する。ＤＭＬオブジェクト１２１には、分割格納定義情報１２２が含まれる。
手続き管理情報１１７には手続きを一意に識別するためにつけられた手続きＩＤ１１８とＤＭＬオブジェクト格納位置情報１１９と、分割格納定義変更有無情報１２０が含まれる。
コンパイル直後は分割格納定義変更有無情報１２０には定義変更無しを示す情報が設定される。
また、プログラムソース１０２のＤＭＬ以外の部分はコンパイラ１０３により手続きオブジェクト１２３に変換され、ＤＭＬオブジェクト１２１との関連付けをとるための手続きＩＤ１２４が格納される。
【００１５】
次に図３に沿って手続き実行の流れを説明する。
手続き実行制御部１０７はローダ１１３により手続きオブジェクト１２３をメモリに展開する（３０１）。
次にディクショナリ検索部１０９は手続きオブジェクト１２３内の手続きＩＤ１２４を検索キーとして、ディクショナリ１１４の手続き管理情報１１７をメモリに展開する（３０２）。
次に、ＤＭＬオブジェクト取得部１０８はメモリに展開済みの手続き管理情報１１７内に存在するＤＭＬオブジェクト格納位置情報１１９を元に、ＤＭＬオブジェクト１２１を取り出し、メモリに展開する（３０３）。
ＤＭＬオブジェクト修正要否判定部１１１は、メモリに展開済みの手続き管理情報１１７内に存在する分割格納定義変更有無情報１２０を参照し、定義が変更されていないことを検知し、ＤＭＬオブジェクト修正部１１０には制御を渡さず、ＤＭＬオブジェクト実行部１１２に制御を渡す（３０４）。
ＤＭＬオブジェクト実行部１１２はＤＭＬオブジェクト１２１中に存在する分割格納定義情報１２２を参照して手続きを実行する（３０５）。
ディクショナリ中の分割格納定義情報１１６へのアクセス及び、ＤＭＬオブジェクト１２１の修正は行われない。
【００１６】
次に、図１、図４、図７を使用して分割格納定義情報変更処理の流れを説明する。
ＤＤＬ解析実行部１０５は、分割格納定義情報を変更するためのＤＤＬ４０１を受け付け、データベース形式情報１１５内の分割格納定義情報１１６を変更する。ＤＤＬ４０１の変更内容は前述の通りである。
また、データベース（電話番号表）のデータベース資源ＩＤで資源管理情報７０７を検索し、データベースを使用する手続きの手続きＩＤの集合を求める。その後、求めた各手続きＩＤについて手続き管理主情報７０２を検索し、対応する手続きの分割格納定義有無情報７０５を、分割格納定義情報１１６を変更したことを示す情報に書き換える。
【００１７】
次に、図５に沿って、分割格納定義変更後の手続き実行の流れを説明する。
手続き実行制御部１０７はローダ１１３により手続きオブジェクト１２３をメモリに展開する（５０１）。
次にディクショナリ検索部１０９は手続きオブジェクト１２３内の手続きＩＤ１２４を検索キーとして、ディクショナリ１１４内の手続き管理情報１１７をメモリに展開する（５０２）。
次に、ＤＭＬオブジェクト取得部１０８はメモリに展開済みの手続き管理情報１１７内に存在するＤＭＬオブジェクト格納位置情報１１９を元に、ＤＭＬオブジェクト１２１を取り出し、メモリに展開する（５０３）。
ＤＭＬオブジェクト修正要否判定部１１１は、メモリに展開済みの手続き管理情報１１４内に存在する分割格納定義変更有無情報１２０を参照し、定義が変更されていることを検知し、ＤＭＬオブジェクト修正部１１０に制御を渡す（５０４）。
ＤＭＬオブジェクト修正部１１０はディクショナリ１１１のデータベース形式情報１１５中に存在する分割格納定義情報１１６を取り出してメモリに展開し、ＤＭＬオブジェクト１２１の内部に存在する分割格納定義情報１２２を直接書き換える（５０５）。
または、情報の格納に必要な領域がＤＭＬオブジェクト内に不足した場合は、メモリ上に展開した分割格納定義情報へのポインタを設定する。
その後、ＤＭＬオブジェクト実行部１１２が、分割格納条件修正後のＤＭＬオブジェクト１２１を実行する（５０６）。
【００１８】
【発明の効果】
以上説明したように本発明によれば、ディクショナリ中の手続き管理情報に分割格納定義の変更有無情報と、手続き実行制御部にＤＭＬオブジェクト修正要否判定手段を持たせることにより、分割格納情報変更に伴うＤＭＬオブジェクトの再作成を不要にすると同時に、分割格納情報を変更しない間はＤＭＬオブジェクト中に格納した分割格納情報をそのまま使用して手続きを実行可能にできる。
これにより、分割格納情報を変更しない間は、ディクショナリ中に格納されている分割格納情報へのアクセス及びＤＭＬオブジェクト修正処理を省くことができ、手続き実行性能を向上させることができる。
【図面の簡単な説明】
【図１】本発明の手続き管理方法の一実施例の構成を示すブロック図である。
【図２】データベース定義のＤＤＬの例である。
【図３】手続き実行の流れを示したタイムチャートである。
【図４】分割格納定義変更のＤＤＬの例である。
【図５】手続き実行の流れを示したタイムチャートである。
【図６】分割格納定義情報の具体例を示す図である。
【図７】手続き管理情報の具体例を示す図である。
【符号の説明】
１０１　　ＤＤＬ
１０２　　プログラムソース
１０３　　コンパイラ
１０４　　データベース管理システム
１０５　　ＤＤＬ解析実行部
１０６　　ＤＭＬ解析部
１０７　　手続き実行制御部
１０８　　ＤＭＬオブジェクト取得部
１０９　　ディクショナリ検索部
１１０　　ＤＭＬオブジェクト修正部
１１１　　ＤＭＬオブジェクト修正要否判定部
１１２　　ＤＭＬオブジェクト実行部
１１３　　ローダ
１１４　　ディクショナリ
１１５　　データベース形式情報
１１６　　分割格納定義情報
１１７　　手続き管理情報
１１８　　手続きＩＤ
１１９　　ＤＭＬオブジェクト格納位置情報
１２０　　分割格納定義変更有無情報
１２１　　ＤＭＬオブジェクト
１２２　　分割格納定義情報
１２３　　手続きオブジェクト
１２４　　手続きＩＤ
【図１】
2004054402.tif 000003
【図２】
2004054402.tif 000004
【図３】
2004054402.tif 000005
【図４】
2004054402.tif 000006
【図５】
2004054402.tif 000007
【図６】
2004054402.tif 000008
【図７】
2004054402.tif 000009