(57)【要約】【課題】NDBに対するNDB以外の形式のデータベースのアクセスインタフェースにおいて動的かつ非同期的な動作を提供する。【解決手段】NDBに対してRDBの操作言語(SQL)でアクセスするためのアクセスインタフェース5を有するデータベースシステムにおいて、SQLで入力された設定情報に基づいて、NDB内の所定のデータに発生する所定のイベントを条件として所定の操作を指示するトリガを設定するトリガ管理部8と、NDBに対して入力された操作情報に基づいてトリガ設定部8によって対応するトリガが設定されているか否かを再帰的に探索し、探索されたトリガに応じた操作情報を入力された操作情報に追加する割り込み評価部3と、追加結果に基づく操作をNDBに対して行うアクセスモジュール実行部2とを備えている。【選択図】図１
2008257570.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク型データベースに対してネットワーク型データベース以外の型式のデータベースの操作言語でアクセスするためのインタフェースを提供するデータベースシステムにおいて、
ネットワーク型データベース以外の型式のデータベースの操作言語で入力された設定情報に基づいて、ネットワーク型データベース内の所定のデータに発生する所定のイベントを条件として所定の操作を指示するトリガを設定するトリガ設定手段と、
ネットワーク型データベースに対して入力された操作情報に基づいてトリガ設定手段に対応するトリガが設定されているか否かを再帰的に探索する探索手段と、
探索されたトリガに応じた操作情報を入力された操作情報に追加する追加手段と、
追加結果に基づく操作をネットワーク型データベースに対して行う操作手段と
を備えることを特徴とするデータベースシステム。
【請求項２】
さらに前記操作情報の由来元を記憶する由来情報記憶手段を備え、
前記操作手段による操作結果を由来情報記憶手段に記憶された由来元に返却する
ことを特徴とする請求項１記載のデータベースシステム。
【請求項３】
前記探索手段による探索結果が同一のトリガを複数回探索結果としているか否かを判定することで、同一のトリガを追加する回数を制限する
ことを特徴とする請求項１又は２記載のデータベースシステム。
【請求項４】
前記トリガ設定手段に設定されるトリガがネットワーク型データベースの操作言語で設定されている
ことを特徴とする請求項１から３のいずれか１項に記載のデータベースシステム。
【請求項５】
ネットワーク型データベースに対してネットワーク型データベース以外の型式のデータベースの操作言語でアクセスするためのインタフェースを提供するデータベースシステムを構成するコンピュータに、
ネットワーク型データベース以外の型式のデータベースの操作言語で入力された設定情報に基づいて、ネットワーク型データベース内の所定のデータに発生する所定のイベントを条件として所定の操作を指示するトリガを設定するトリガ設定手順、
ネットワーク型データベースに対して入力された操作情報に基づいて、それに対応するトリガが設定されているか否かを再帰的に探索する探索手順、
探索されたトリガに応じた操作情報を入力された操作情報に追加する追加手順、
追加結果に基づく操作をネットワーク型データベースに対して行う操作手順
を実行させるためのデータベースシステムのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク型データベースを構成する際に用いて好適なデータベースシステム及びデータベースシステムのプログラムに関する。
【背景技術】
【０００２】
主にメインフレームのデータベースとして普及してきたネットワーク型データベース（以下、NDB）は、簡素な構造に起因するデータ操作の高速性を大きなメリットとしている。しかし、アプリケーションプログラムにレコード単位での手続き的な操作を要求するなど、テーブル単位でのデータ操作を基本とするリレーショナル型データベース（以下、RDB）に比べると、データ操作が煩雑であった。NDBのデータ操作の利便性を高めるべく、NDBに格納されているデータの利用者に、RDBのアクセスインタフェースを提供する取り組みがこれまでにいくつかなされてきている。
【０００３】
特許文献１では、RDB問い合わせ言語であるSQLをNDB問い合わせ言語であるDML（Data Manipulation Language ）に変換する機構を用意することで、NDBのデータをSQLでアクセスできるようにしており、NDBにRDB操作の利便性をもたらしている（特許文献１の第１図及び第５図参照）。
【０００４】
特許文献２では、SQLをDMLに変換するためのNDBのレコードとリレーショナルスキーマの対応付け情報を作成する際に、レコードの一意性やレコードセットの定義情報を与えておくことで、SQLによる操作利便性を達成しながらNDB操作の高速性を維持する方法を説明している。特許文献２の図１にその構成が示されている。特許文献２の図１では、やはりSQL文7の入力からDMLオブジェクト8が生成され、ネットワーク型データベース10にアクセスできるようになっている。
【０００５】
特許文献３では、SQLからDML群を生成し、それらを逐次実行する際のDMLの並び方を工夫することで、NDBの高速操作を実現する機構について述べている。特許文献４では、RDB問い合わせをNDB問い合わせに変換する際の命令文の増加を防ぐモデルについて述べている。特許文献５では、SQLで操作するリレーショナルスキーマがNDBのレコード順序の情報を保持するようにしている。
【０００６】
これらの取り組みは、いずれも、NDBのデータの利用者にRDBのアクセスインタフェースを提供している。このアプローチの線上には、NDBアクセスのRDBアクセスインタフェースでのラッピングのほかにも、例えば、NDBアクセスのXML-DB（XML(Extensible Markup Language)データベース）アクセスインタフェースでのラッピングなども考えられる。これらの取り組みの基本構成は、図１９のようにとらえることができると考えられる。
【０００７】
図１９に示す構成では、NDBへのアクセス手段として、DMLオブジェクトをダイレクトに実行させるネイティブアクセスインタフェースに加え、SQLやXQueryといった利便性の高いアクセスインタフェースを利用者に提供している。インピーダンスミスマッチ解決部がSQLやXQueryでの操作要求をDMLオブジェクトに変換し、リポジトリが解決に必要な情報を提供している。
【特許文献１】特開平２−６７６８２号公報
【特許文献２】特開平６−２８２５７６号公報
【特許文献３】特開平４−２９９４５９号公報
【特許文献４】特開平５−２７４３４８号公報
【特許文献５】特開２００１−２７３１７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記従来技術では、NDBに格納されているデータへの参照、追加、更新、削除の機能提供において、利用者にRDBのアクセスインタフェース（SQLによるテーブル型データの参照、追加、更新、削除操作）を提供することで、NDBの利便性向上に一定の貢献をしている。しかし、上記の従来技術で提供しているラッピングアクセスインタフェースは、あくまでも問い合わせに対して受動的にデータの参照結果を返却する、あるいは更新要求に対して受動的にデータを更新するといった、受動的かつ同期的な動作提供にとどまる。
【０００９】
一方で、「NDBのある特定のデータレコードに対する追加、更新、削除操作がある条件を満たした」という事象を、アプリケーション動作の契機につなげることで、アプリケーションのデータに対する反応性を高めたいという要求がNDBデータの利用者側に存在する。このようなNDBデータへの操作要求を、RDBアクセスインタフェースなどのラッピングインタフェースの利便性を保ちつつ実現するためには、アクセスインタフェースがこうした動的かつ非同期的な動作を提供する必要がある。
【００１０】
ここで、NDBよりも利便性が高いとされるRDBの製品では、「RDBのある特定のテーブルに対する追加、更新、削除操作がある条件を満たした」という事象を利用できるように、トリガ機能が用意されていることが多い。RDBの代表的な製品の多くでは、特定のテーブルに対するINSERT（挿入）、UPDATE（更新）またはDELETE（削除）の操作開始前あるいは操作開始後の制約条件評価結果を利用者がトリガとして利用できるようにCREATE TRIGGERステートメント（新しいトリガの定義文）が用意されている。利用者は、CREATE TRIGGERステートメントを用いてRDBにトリガ設定を施すことで、トリガ結果をただちに指定したストアドプロシージャの実行につなげてくれるRDBの機能を享受できるようになっている。
【００１１】
しかし、上記の従来技術では、RDBのアクセスインタフェースにおけるCREATE TRIGGERステートメントと、NDB内のネットワーク型のデータ構造に対するトリガ機能はマッピングできなかったため、「NDBのある特定のデータレコードに対する追加、更新、削除操作がある条件を満たした」という事象を、アプリケーション動作の契機につなげ、アプリケーションのデータに対する反応性を高めたいというNDBデータの利用者の要求を満たせなかった。
【００１２】
本発明は上記の課題を解決する技術であって、NDBに対するNDB以外の型式のデータベースのアクセスインタフェースにおいて、動的かつ非同期的な動作を提供することができるデータベースシステム及びそのプログラムを実現することを目的とする。一例として具体的には、NDBに対するNDB以外の型式のデータベースのアクセスインタフェースにおいて、NDB内でイベントが発生した場合に特定の処理を自動的に行うトリガ機能をNDB以外の型式のデータベースの定義を用いて提供することができるデータベースシステム及びそのプログラムを実現する。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明は、ネットワーク型データベースに対してネットワーク型データベース以外の型式のデータベースの操作言語でアクセスするためのインタフェースを提供するデータベースシステムにおいて、ネットワーク型データベース以外の型式のデータベースの操作言語で入力された設定情報に基づいて、ネットワーク型データベース内の所定のデータに発生する所定のイベントを条件として所定の操作を指示するトリガを設定するトリガ設定手段と、ネットワーク型データベースに対して入力された操作情報に基づいてトリガ設定手段に対応するトリガが設定されているか否かを再帰的に探索する探索手段と、探索されたトリガに応じた操作情報を入力された操作情報に追加する追加手段と、追加結果に基づく操作をネットワーク型データベースに対して行う操作手段とを備えることを特徴とする。
【００１４】
本発明は、上記に記載の発明において、前記操作情報の由来元を記憶する由来情報記憶手段を備え、前記操作手段による操作結果を由来情報記憶手段に記憶された由来元に返却することを特徴とする。
【００１５】
本発明は、上記に記載の発明において、前記探索手段による探索結果が同一のトリガを複数回探索結果としているか否かを判定することで、同一のトリガを追加する回数を制限することを特徴とする。
【００１６】
本発明は、上記に記載の発明において、前記トリガ設定手段に設定されるトリガがネットワーク型データベースの操作言語で設定されていることを特徴とする。
【００１７】
また、本発明は、ネットワーク型データベースに対してネットワーク型データベース以外の型式のデータベースの操作言語でアクセスするためのインタフェースを提供するデータベースシステムを構成するコンピュータに、ネットワーク型データベース以外の型式のデータベースの操作言語で入力された設定情報に基づいて、ネットワーク型データベース内の所定のデータに発生する所定のイベントを条件として所定の操作を指示するトリガを設定するトリガ設定手順、ネットワーク型データベースに対して入力された操作情報に基づいて、それに対応するトリガが設定されているか否かを再帰的に探索する探索手順、探索されたトリガに応じた操作情報を入力された操作情報に追加する追加手順、追加結果に基づく操作をネットワーク型データベースに対して行う操作手順を実行させるためのデータベースシステムのプログラムである。
【発明の効果】
【００１８】
本発明によれば、例えばNDB内で所定のイベントが発生した場合に特定の処理を自動的に行うトリガ機能をNDB以外の型式のデータベースの定義を用いて入力して設定することができるので、NDBに対するNDB以外の型式のデータベースのアクセスインタフェースにおいて、動的かつ非同期的な動作を提供することができる。
【００１９】
また、本発明は、由来情報を記憶することで自動的に追加された操作情報による操作結果を適切な返却先に返すことができる。
【００２０】
また、本発明は、探索結果に応じてトリガの追加回数を制限することで自動的に追加する操作情報がループ状に繰り返されることがなくなる。また、トリガ設定手段によって設定されるトリガをDML等のネットワーク型データベースの操作言語とすることで操作情報の追加等の処理をその都度変換処理などを行う必要がなく効率的に行うことができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明によるデータベースシステムの実施形態について説明する。図１は、本発明の実施形態のシステムの全体像を示す図である。
【００２２】
図１に示すデータベースシステムは、NDBを有するNDBMS（Network DataBase Management System；ネットワーク型データベース管理システム）1、アクセスモジュール実行部2、割り込み評価部3、ネイティブアクセスインタフェース4、アクセスインタフェース5、インピーダンスミスマッチ解決部6、インピーダンスミスマッチ管理リポジトリ7、トリガ管理部8、トリガ管理リポジトリ9、由来情報10、トリガ管理リポジトリ9内で格納されるトリガ設定情報11及びトリガアクションDML12から構成されている。これらの各要素はプログラム、データ等のソフトウェアから構成されている。ただし、各構成要素は、さらにそれらのソフトウェアを処理するためのコンピュータや周辺装置等のハードウェアを含むものとしてとらえることもできる。
【００２３】
ここで、本発明に特徴的な構成要素は、割り込み評価部3、トリガ管理部8、トリガ管理リポジトリ9、アクセスインタフェース5である。アクセスインタフェース5は、NDBMS1内のNDBに格納されているデータへの参照、追加、更新、削除の機能提供において、利用者にRDBのアクセスインタフェース（SQLによるテーブル型データの参照、追加、更新、削除操作）を提供することに加えて、本発明が特徴とするトリガ設定を受け入れる機能を有するものである。システムの構成要素について以下に順次説明を加える。
【００２４】
NDBMS1は一般的なNDBの管理システムであり、内部にNDBを備えている。NDBMS1と直接やりとりするアクセスモジュール実行部2は、図２に示すように、NDBへのネイティブアクセス方法であるDML（DMLで記述されたオブジェクト）101を複数、実行順序つきで束ねたアクセスモジュール102を受け取る。
【００２５】
アクセスモジュール実行部2は、NDBMS1内のNDBのレコードを、受け取ったアクセスモジュール102の個々のDML101にしたがって順次操作し、その実行結果を返却する。返却する実行結果103は、図３に示すように、アクセスモジュール102の各DML101に対応した各NDB操作結果104を束ねたものとなる。
【００２６】
ネイティブアクセスインタフェース4は、NDBMS1に対してレコード単位での手続き的な操作を指示するためのNDB問い合わせ言語によるアクセスを提供するインタフェースである。すなわちネイティブアクセスインタフェース4は、利用者に対し、従来のNDBMSと同じ操作体系を提供する入出力インタフェースである。利用者は、ネイティブアクセスインタフェース4にDML101を入力する。入力されたDML101は、割り込み評価部3及びアクセスモジュール実行部2を介してNDBMS1に渡されて実行される。また、ネイティブアクセスインタフェース4は、NDBMS1から割り込み評価部3及びアクセスモジュール実行部2を介して受け取った実行結果104を利用者に出力する。
なお、ネイティブアクセスインタフェース4の利用者にとっては、前述した本発明が特徴とする構成要素の追加によってNDBMS1内のNDBの利用方法に変化は全く生じない。
【００２７】
アクセスインタフェース5は、利用者に対し、従来のRDBMS（Relational DataBase Management System）やXMLDBMS（Extensible Markup Language DataBase Management System）と同じ操作体系を提供する入出力インタフェースである。利用者は、アクセスインタフェース5にSQLやXQueryなどによる同期的な問い合わせを入力し、その実行結果を受け取るだけでなく、このインタフェースを介してトリガを設定管理できる。アクセスインタフェース5は、同期問い合わせについては、入力された問い合わせをインピーダンスミスマッチ解決部6に引渡し、その実行結果をインピーダンスミスマッチ解決部6から受け取り、問い合わせの発行者に出力する。トリガ設定については、アクセスインタフェース5は、入力された指示をトリガ管理部8に引渡す。非同期的にトリガ管理部8からもたらされるトリガ結果は、アクセスインタフェース5を介して利用者などに提供される。
【００２８】
インピーダンスミスマッチ解決部6は、アクセスインタフェース5からのSQLやXQueryその他のさまざまな同期問い合わせをNDB操作のDML（図２のDML101）に変換する。その際、インピーダンスミスマッチ管理リポジトリ7を参照して、例えばSQLの操作対象であるテーブルを実際のNDBのレコードにマッピングする。その手法については従来技術でさまざまな工夫がなされている。本実施形態においては、変換されたDML系列は割り込み評価部3に引き渡され、その実行結果104は、割り込み評価部3から得られることになる。
【００２９】
割り込み評価部3は、ネイティブアクセスインタフェース4あるいはインピーダンスミスマッチ解決部6からの一連のDML101による操作要求を入力とする。入力に際して、割り込み評価部3は、トリガ管理リポジトリ9を参照する。割り込み評価部3は、トリガ管理リポジトリ9内のトリガ設定情報11を参照し、入力されたDML101が操作する対象を監視対象として設定しているトリガ（＝発火すべきトリガ）が設定されていた場合に、当該トリガのトリガアクション（トリガアクションDML12）で規定されるDML101を、トリガの処理タイミングの規定に従って、逐次、一連のDML系列の前あるいは後に付け加え、アクセスモジュール102を作成する。
【００３０】
トリガ管理部8は、割り込み評価部3から随時もたらされるトリガ結果の到着に際して、トリガ管理リポジトリ9を参照しつつ、アクセスインタフェース5に応じてトリガ結果をテーブルやXML文書などの出力形式に変換し、トリガ設定情報11などに指示されている出力あて先とともにその変換結果をアクセスインタフェース5に引き渡す。
【００３１】
次に、アクセスインタフェース5を用いた利用者によるアクセスの際の動作を、図４のようにNDBMS1内のNDBのデータ構造201がRDBのデータ構造301にマッピングされている場合を例として説明する。図４に示す例では、NDBMS1のNDB内の商品レコード211と製造元レコード212がテーブル311（table1）にマッピングされ、商品レコード211と仕入レコード213がテーブル312（table2）にマッピングされ、そして、商品レコード211と製造元レコード214がテーブル313（table3）にマッピングされている。
【００３２】
利用者は、アクセスインタフェース5を介して、元のNDBのデータ構造（すなわちNDBMS1内のNDBの実データレコード構造201）を意識せずに、SQLに従い、例えば図５に示す「CREATE TRIGGER trigger01 AFTER UPDATE OF 売上数量 ON table3 FOR EACH ROW EXECUTE PROCEDURE proc1」という関数を定義することで、トリガを設定できる。図５に示す例は、SQL99（ISO(国際標準化機構)標準）のトリガ定義構文である。
【００３３】
「trigger01」はトリガの名前、「table3」と「売上数量」は、それぞれ監視対象のテーブルとそのカラム、「proc1」は、別途設定されるストアドプロシージャである。ここでは、proc1は、売上数量の変化分に応じて在庫数量を減らし、その結果を利用者に通知するというストアドプロシージャであるものとする。
【００３４】
トリガ管理部8は、利用者が設定したSQLによるトリガ定義をNDBMS1に対応するように変換し、変換結果をトリガ設定情報11及びトリガアクションDML12としてトリガ管理リポジトリ9に格納する。すなわち、トリガ管理部8は、アクセスインタフェース5を介して利用者から登録を指示されたトリガを、インピーダンスミスマッチ管理リポジトリ7を参照しつつ、NDBMS1内のNDBの実データレコード構造201を対象とするトリガ設定情報11とトリガアクションDML12に変換する。得られたトリガ設定情報11とトリガアクションDML12はトリガ管理リポジトリ9に格納される。本実施形態においては、トリガ管理部8が、リレーショナルデータベースの操作言語（SQL）で入力された設定情報に基づいて、ネットワーク型データベース内の所定のデータに発生するINSERT（挿入）、UPDATE（更新）、DELETE（削除）等の所定のイベントの発生を条件として所定のデータに対して所定の操作を指示するトリガをネットワーク型データベースの操作言語で設定することになる。
【００３５】
上述の例の場合だと、監視対象となる「table3（313）の売上数量（313a）」データが、NDBMS1のNDB内の「売上レコード（214）の売上数量（214a）」データに変換される。また、「proc1」は、「商品レコード（211）の在庫数量（211b）」を操作するDMLのオブジェクトに変換される（この得られたDMLを「dml_action1」とする）。この場合、「trigger01」と名付けられたトリガに対応するトリガ設定情報11は、図６に示すようにしてトリガ管理リポジトリ9内に格納される。また、トリガ設定情報11内で指定される「dml_action1」と名づけられたDMLオブジェクトも別途トリガ管理リポジトリ9内にトリガアクションDML12として格納される。このように登録されたトリガは、利用者の指示に従って、随時更新あるいは削除される。
【００３６】
図６に示すトリガ設定情報11は、利用者によって設定された各トリガを、「トリガID」、「監視対象」、「対象タイミング」、「対象操作」、「トリガアクション」、「作成者」、「作成日時」の各項目で定義している。「トリガID」は各トリガの識別情報である。「監視対象」は監視対象となるNDBMS1のNDB内のデータを指定する情報である。「対象タイミング」はトリガアクションの起動を監視対象のイベントの前（before）に行うか後（after）に行うかを指定する情報である。「対象操作」は監視対象に対して行われる操作の内容でありINSERT（挿入）、UPDATE（更新）、DELETE（削除）のいずれか、あるいはそれらの論理和（OR）を示す情報であり、これがトリガを起動するイベントとなる。「トリガアクション」は、トリガが起動したときに実行される手続き（関数）の名前を示す情報であり、このトリガアクションの内容を記述したDMLは、トリガアクションDML12として、項目「トリガアクション」に指定された名前に対応付けてトリガ管理リポジトリ9内に格納される。また、「作成者」はトリガの設定者の情報、「作成日時」はトリガ設定時の年月日時分の情報である。
【００３７】
図６に示すトリガ設定情報11には、上述した「トリガID」＝「trigger01」の設定情報として、「監視対象」が「売上レコード（214）、売上数量（214a）」、「対象タイミング」が「after」、「対象操作」が「update」、「トリガアクション」が「dml_action1」、「作成者」が「author1」、「作成日時」が「9999/99/99 99:99」の各情報が含まれている。
【００３８】
また、他のトリガとして、「仕入レコード（213）の仕入数量（213c）」の「upate（更新）」を監視対象としてイベント発生前（before）に「dml_action2」を起動するトリガ「trigger02」と、「売上レコード（214）の伝票番号（214d）」の「insert（追加）」を監視対象としてイベント発生前（before）に「dml_action3」を起動するトリガ「trigger03」とが格納されている。この場合、トリガ管理リポジトリ9内には、「dml_action2」及び「dml_action3」に対応するDMLオブジェクトの記述がトリガアクションDML12として格納されている。なお、この例では、トリガアクション「dml_action2」及び「dml_action3」は、「商品レコード（211）を更新する」アクションであるとする。
【００３９】
次に、割り込み評価部3が、トリガ設定情報11に設定されたトリガ由来のDML（トリガアクションDML12）を逐次付加してアクセスモジュール102を生成するフローを、図７及び図８を参照して説明する。図７及び図８は、トリガ由来のDMLを逐次付加して入力DML系列からアクセスモジュール102を得るフロー図であり、図７がメインフロー、図８が図７のステップS13で呼び出されるサブルーチン（check_trigger (DML)）のフローを示している。なお、図７においてステップS12〜S14間の各ステップは各入力DMLに対して繰り返し実行され、図８においてステップS23〜S28間の各ステップは各トリガアクションDMLに対して繰り返し実行される。
【００４０】
これらのフローでは、特に、トリガアクションDML12に対応するDML101の追加が、別のトリガをさらに発火することがあることを考慮するようにしている。つまり、トリガアクションDML12に対応するDML101の追加に際しては、追加するDML101が操作する対象を監視対象としているトリガがないか（あれば同様に追加する）という手順を再帰的に実行する。すなわち、図８のステップS27では、同じサブルーチン（check_trigger (DML)）を再帰的に呼び出すようにしている。
【００４１】
また、再帰的なDML追加においては、複数のトリガ発火がループすることがないように、トリガ発火のループ検出（ステップS24）とエラー処理（ステップS29）を行うようにしている。本実施形態では、入力された１つのDMLに対するトリガアクションDMLを探索の際に同一のトリガアクションDMLについてそれが初めて探索結果としてして得られた場合にのみ当該トリガアクションDMLを追加する処理を行うように、つまり複数回同一のトリガアクションDMLが得られた場合でもそのトリガアクションDMLを追加する回数を１回に制限するような処理を行うようにしている。
【００４２】
なお、アクセスモジュール102へのDML101付加の際は、アクセスモジュール102内の個々のDML101が、それぞれネイティブアクセスインタフェース4由来のものであるか、インピーダンスミスマッチ解決部6由来のものであるか、トリガ由来（トリガ管理部8由来）のものであるかを区別する由来情報10を内部的に作成保持する。由来情報10はアクセスモジュール102ごとに作成される。
【００４３】
以下に、割り込み評価部3の動作について、図４〜図６に示す例を用い、図９〜図１５の処理経過の説明図を参照して説明する。
【００４４】
いま、割り込み評価部3に、図９のように、DML101a〜101cからなるDMLの系列（アクセスモジュール102）がネイティブアクセスインタフェース4から入力されたとする（図７のステップS11）。このアクセスモジュール102の由来情報10は、図１０に示すようになる。すなわち、フロー開始時の由来情報10として、DML101a〜101cに対応するDMLシーケンス「1」〜「3」に対して、ネイティブアクセスインタフェース4の識別情報（由来元ID）を示す「native access interface」の情報がそれぞれ格納される。
【００４５】
まずDML1（101a）（「売上レコード（214）にレコードを追加する」アクション）について、「売上」レコード（214）への追加（insert）を監視対象としているトリガが設定されているかどうかをトリガ設定情報11内で探る（ステップS13→図８のステップS21）。今回の例では、売上レコード（214）にレコードを追加するアクションは、売上レコード（214）に新たな伝票番号（214d）を追加する処理となるので、図６の「trigger03」が相当するトリガとして探索されることになる（ステップS22→ステップS23以降）。次に「trigger03」のトリガアクションDML「dml_action3」を、このDML1（101a）から始まる評価プロセスにおいて「dml_action3」が初出であることを確認しつつ（ステップS24、ステップS29）、DML系列（アクセスモジュール102）に追加する（ステップS25）。これはトリガのループを防ぐためである。DML追加の際は、「trigger03」の対象タイミングは「before」なので、「dml_action3」（101d）はDML系列（アクセスモジュール102）の先頭に追加される（図１１）。
【００４６】
次に、由来情報10が更新され（ステップS26）、アクセスモジュール102の由来情報10は図１２のようになる。この場合、由来情報10のDMLシーケンスの「1」にはアクセスモジュール102の先頭に追加されたDML101dに対応するトリガID「trigger03」を示す情報が記録され、その由来元がトリガ由来であることが示される。また、DMLシーケンスの「2」〜「4」にはDML101a〜101cの由来元を示す「native access interface」が記録される。
【００４７】
次に、いま追加した「dml_action3」について、再帰的にトリガ設定を探る処理が行われる（ステップS27）。つまり、「dml_action3」のアクションの内容である「商品」レコード（211）への更新を監視対象としているトリガ設定の有無を探る。この再帰はトリガが得られなくなるまで継続される。得られるトリガがなくなれば、評価作業は次のDML（DML2（101b））を対象として再び開始する。最終的に今回の例では図１３のようなアクセスモジュール102と図１４のような由来情報10が得られる。
【００４８】
すなわち、図１３に示す例では、アクセスモジュール102が「dml_action2」のDML101eを先頭に、順に「dml_action3」のDML101d、DML１〜3のDML101a〜101cと、「dml_action1」のDML101fとから構成されている。また、図１４の由来情報10は、DMLシーケンス「1」の由来元IDが「trigger02」、DMLシーケンス「2」の由来元IDが「trigger03」、DMLシーケンスの「3」〜「5」の由来元IDが「native access interface」、そしてDMLシーケンス「6」の由来元IDが「trigger01」となるように作成されている。
【００４９】
なお、図１３のアクセスモジュール102において、先頭のDML101eは、入力（given）DML3（101c）による仕入レコード213の更新イベントをトリガとするトリガアクションDMLであり、最後尾のDML101fは、入力DML2（101b）による売上レコード214の更新イベントをトリガとするトリガアクションDMLである。
【００５０】
割り込み評価部3は、こうして得られたアクセスモジュール102をアクセスモジュール実行部2に出力する。また、その実行結果をアクセスモジュール実行部2から受け取り、その実行結果を、由来情報10を参照して分割し、ネイティブアクセスインタフェース4、インピーダンスミスマッチ解決部6、あるいはトリガ管理部8に返却する。
【００５１】
図１５に割り込み評価部3からの結果分割返却の例を示す。図１５に示す例では、図１４の由来情報10のDMLシーケンス「1」及び「2」に対応する「dml_action2」の実行結果104e及び「dml_action3」の実行結果104d並びにDMLシーケンス「6」に対応する「dml_action1」の実行結果104fがトリガ管理部8に返却される。また、由来情報10のDMLシーケンス「3」〜「5」に対応するDML1〜DML3の実行結果104a〜104cがネイティブアクセスインタフェース4に返却される。
【００５２】
なお、図１のNDBMS1内のNDBのデータレコード構造201のRDBのテーブル構造301へのマッピングを、図４を参照して説明したように行った場合、インピーダンスミスマッチ管理リポジトリ7のエントリは、例えば、図１６に示すようになる。
【００５３】
また、図１７に、同じNDBのデータレコード構造201をXMLの構造（XML Schema）にマッピングした例を示す。もちろん、このマッピングもマッピング方法はここに例示したものにとどまらない。この例示したマッピングにおけるインピーダンスミスマッチ管理リポジトリ7のエントリは、例えば図１８に示すようになる。
【００５４】
上記の実施形態の構成によれば、NDBに格納している実データレコードを、NDBとして参照更新操作できるだけでなく、RDBのアクセスインタフェースを介したテーブル操作やXML-DBのアクセスインタフェースを介したレコードアクセスなどによって、NDBアクセスの形態をとらずに参照更新操作できるようにしているシステムにおいて、あらかじめ利用者がシステムにトリガを設定しておくことで、ある特定のデータレコードに対する追加、更新、削除操作の発生に際して、その操作開始前の操作発生タイミングあるいは操作開始後の制約条件評価結果に起因するアクションを、アクセスインタフェースを介して利用者が設定したトリガ設定にもとづいて能動的におこし、その結果を利用者に非同期的に提供できるシステムを実現することができる。
【００５５】
すなわち、本実施形態の構成によれば、NDBの実データレコードを利用対象とする利用者に対し、利便性の高いRDBやXMLDBのアクセスインタフェースを提供するシステムにおいて、利用者によるトリガの設定をRDBやXMLDBのアクセスインタフェースを用いて行うことを可能にすることで、NDBのデータレコードに随時発生する操作を契機とする非同期的なデータ提供を容易に受けられるようになる。
【００５６】
上記の実施形態の構成によれば、「NDBのある特定のデータレコードに対する追加、更新、削除操作がある条件を満たした」という事象を、アプリケーション動作の契機につなげたい、あるいはアプリケーションのデータに対する反応性を高めたいというNDBデータの利用者の要求を満たせるようになる。
【００５７】
また、本実施形態の構成におけるトリガ設定においては、新設するアクセスインタフェースを介したNDB操作だけでなく、ネイティブアクセスインタフェースを介した従来のNDB操作もトリガ発火の契機として利用できる。
【００５８】
なお、本発明の実施形態は上記の形態に限定されず、例えば各構成要素を統合あるいは分散したり、例えば他のRDBMSと連携させるための構成要素を追加したりするなどの追加が適宜可能である。
【００５９】
また、本発明に記載された言語や情報等を表す構成要素は、上記の実施形態における次のような構成要素と対応している。「ネットワーク型データベース以外の型式のデータベースの操作言語」は、RDBやXMLDBに対応している。「ネットワーク型データベース以外の型式のデータベースの操作言語で入力された設定情報」は、利用者がアクセスインタフェース5を介して例えばSQLに従い図５に示すような「CREATE TRIGGER…」という関数を定義するために入力した情報に対応している。SQLで入力した情報そのものを意味するほか、例えばSQLに対応して所定のユーザインタフェースを用いて対話形式で断片的に入力した入力情報（部分情報）などが対応するものである。「トリガ」は、トリガ管理リポジトリ9内にトリガ設定情報11及びトリガアクションDML12として格納される情報に対応している。「ネットワーク型データベースに対して入力された操作情報」は、図９のDML101a〜101cのような情報に対応している。上記の説明では、これらのDMLの系列（アクセスモジュール102）がネイティブアクセスインタフェース4から入力されるとしているが、アクセスインタフェース5から入力されたもの（それが変換された情報）も含まれる。そして、「トリガ」を設定する「ネットワーク型データベースの操作言語」はトリガアクションDML12を記述するDMLに対応している。
【００６０】
また、図７、図８に示す各ステップを実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、また、本実施形態のデータベースシステムにおける処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００６１】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施形態のデータベースシステムの概略構成を示すシステム図である。
【図２】同実施形態で用いられるアクセスモジュールの一例を示す図である。
【図３】同実施形態におけるアクセス実行結果の一例を示す図である。
【図４】同実施形態におけるNDBデータレコード構造のRDBデータ構造へのマッピングの一例を示す図である。
【図５】同実施形態におけるトリガ定義構文の一例を示す図である。
【図６】同実施形態におけるトリガ設定情報の一例を示す図である。
【図７】同実施形態におけてトリガ由来のDMLを逐次付加して入力DML系列からアクセスモジュールを得る際の処理の流れを示すフロー図である。
【図８】同実施形態における図７のフローで呼び出されるサブルーチンのフロー図である。
【図９】同実施形態における割り込み評価部への入力DML系列の一例を示す図である。
【図１０】同実施形態における処理開始時の由来情報の一例を示す図である。
【図１１】同実施形態におけるDML系列を入力として作成されるアクセスモジュールの途中経過を説明するための図である。
【図１２】同実施形態における由来情報に対する処理の途中経過を説明するための図である。
【図１３】同実施形態における処理によって得られるアクセスモジュールの一例を示す図である。
【図１４】同実施形態における処理によって得られる由来情報の一例を示す図である。
【図１５】同実施形態における割り込み評価部からの実行結果返却の一例を説明するための図である。
【図１６】同実施形態におけるインピーダンスミスマッチ管理リポジトリのエントリの一例を示す図である。
【図１７】同実施形態におけるNDBデータレコード構造のXML構造へのマッピングの一例を示す図である。
【図１８】同実施形態におけるインピーダンスミスマッチ管理リポジトリのエントリの他の例を示す図である。
【図１９】従来技術におけるデータベースシステムの構成例を示す図である。
【符号の説明】
【００６３】
1  NDBMS
2  アクセスモジュール実行部（操作手段）
3  割り込み評価部（探索手段、追加手段）
4  ネイティブアクセスインタフェース
5  アクセスインタフェース
6  インピーダンスミスマッチ解決部
7  インピーダンスミスマッチ管理リポジトリ
8  トリガ管理部（トリガ設定手段）
9  トリガ管理リポジトリ
10  由来情報（由来情報記憶手段）
11  トリガ設定情報
12  トリガアクションDML
101  DML
102  アクセスモジュール
【図１】
2008257570.tif 000003
【図２】
2008257570.tif 000004
【図３】
2008257570.tif 000005
【図４】
2008257570.tif 000006
【図５】
2008257570.tif 000007
【図６】
2008257570.tif 000008
【図７】
2008257570.tif 000009
【図８】
2008257570.tif 000010
【図９】
2008257570.tif 000011
【図１０】
2008257570.tif 000012
【図１１】
2008257570.tif 000013
【図１２】
2008257570.tif 000014
【図１３】
2008257570.tif 000015
【図１４】
2008257570.tif 000016
【図１５】
2008257570.tif 000017
【図１６】
2008257570.tif 000018
【図１７】
2008257570.tif 000019
【図１８】
2008257570.tif 000020
【図１９】
2008257570.tif 000021