JP5056384B2 - 検索プログラム、方法及び装置 - Google Patents

検索プログラム、方法及び装置 Download PDF

Info

Publication number
JP5056384B2
JP5056384B2 JP2007313134A JP2007313134A JP5056384B2 JP 5056384 B2 JP5056384 B2 JP 5056384B2 JP 2007313134 A JP2007313134 A JP 2007313134A JP 2007313134 A JP2007313134 A JP 2007313134A JP 5056384 B2 JP5056384 B2 JP 5056384B2
Authority
JP
Japan
Prior art keywords
database
search
elements
upward
downward
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007313134A
Other languages
English (en)
Other versions
JP2008176771A (ja
Inventor
敦 久保田
晴康 上田
泰彦 金政
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007313134A priority Critical patent/JP5056384B2/ja
Priority to US12/075,373 priority patent/US20080183689A1/en
Publication of JP2008176771A publication Critical patent/JP2008176771A/ja
Application granted granted Critical
Publication of JP5056384B2 publication Critical patent/JP5056384B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数のデータベースに分散して保持されるデータを統合した形で検索するための技術に関する。
従来は、異なるマシン、異なる環境に置かれた複数の既存データベースに跨って関連するデータが分散している場合に、それらを統合された1つのデータとして参照する為には、新たにデータウェアハウスを構築し、そこに全てのデータを移してくるという方法が採られてきた。しかし、この方法では元のデータベースからデータウェアハウスへデータをコピーする為にタイムラグが生じ、元のデータベースのデータをリアルタイムに参照することはできなかった。また、データウェアハウスは構築にコストと時間がかかるので簡単には作り直せず、ビジネスが短周期で変化してデータベース統合の要求が変わった場合に迅速に対応できないという欠点もあった。
一方、これとは別の方法として、データは元のデータベースに格納したままにしておいて、ユーザから統合されたデータの要求があった時点で、リアルタイムに各データベースに問い合わせて必要なデータを獲得してきて、それを組み立てて返すという方法(以下、問い合わせ型データベース統合と呼ぶ)がある。この方法は、ネットワークを経由してデータを獲得してくるのでレスポンス時間は悪くなるが、近年のネットワークの高速化によって実用性が増してきた。この方法の場合、複数のデータベースに跨っていたデータは、性能問題を除けばあたかも全て1つのデータベース上にあるかのように利用できるようになる。この方法は、データウェアハウスにおけるデータのリアルタイム性の問題も解決するし、データベース自体には手を入れる必要が無いので、ビジネスの変化によるデータベース統合の要求変更にも迅速に対応できるようになる。
例えば図1に示すように、ホストAに注文伝票テーブル及び商品テーブルを含む受注DBが設けられ、ホストBに取扱商品テーブルを含む商品DBが設けられ、ホストCに在庫テーブル1を含む在庫DB1が設けられ、ホストDに在庫テーブル2を含む在庫DB2が設けられる例について検討する。なお、図1では、全てのデータベースがリレーショナルデータベース(RDB)であるものとする。また、図1の例では、order_idというデータ項目(カラムとも呼ぶ)が、注文伝票テーブルと商品テーブルとに登録されており、商品テーブルにおけるitem_codeというデータ項目が在庫DB2の在庫テーブル2に登録されており、さらに商品テーブルのitem_codeというデータ項目に関連するcodeというデータ項目が商品DBの取扱商品テーブル及び在庫DB1の在庫テーブル1に登録されている。
このように複数のデータベースに跨って登録された関連データを問い合わせ型データベース統合によって参照する技術は、様々なものがあるが、例えば特開2005−208757号公報に開示されている。この公報では、複数のデータベースに跨って一体に統合されたタグ付き文書形式のデータビューを提供し、その上で問い合わせ言語を利用した自由な問い合わせを可能とする技術が開示されている。本公報では、複数のデータベースを統合する際の生成ルールとして「DB統合用メタデータ」というものを用意する。
図2に図1に対応するDB統合用メタデータを模式的に示す。図2の例では、orderというノードの子ノードとして受注DBにおける注文伝票テーブルの各データ項目に対応するノードが配置されている。さらに、orderというノードの子ノードにはitemsという中間的なノードも設けられている。そして、itemsというノードの子ノードには、itemというノードが設けられており、itemというノードの子ノードとしては、受注DBの商品テーブルの各データ項目に対応するノードが配置されている。さらに、itemというノードの子ノードとして、商品DBの取扱商品テーブルの各データ項目に対応するノードの親ノードと、在庫DB1及び在庫DB2における在庫テーブル1及び在庫テーブル2の各データ項目に対応するノードの親ノードとが設けられている。なお、在庫テーブル1及び2については、ノードを共用している。また、上で述べたデータベース間の関連付けについても、DB統合用メタデータにおいて設定されている。図2に示したDB統合用メタデータは、図3乃至図6のように例えばXMLで記述される。
DB統合用メタデータには、「タグ付き文書形式のビューの構造定義」(図3参照)、「ビューの構造の各要素と、データベース項目との対応関係」(図4及び図5参照)、及び「データベース項目間の関連付け」(図6参照)の3つの内容が記述されている。この生成ルールに定義されているタグ付き文書があたかも実際に存在するかのように見せるために、このシステムがそのビューに対する問い合わせを受け付けると、その問い合わせ内容を解釈し、ビュー生成ルールに合うように各データベースに対する副問い合わせを発行し、そしてデータベースからの問い合わせ結果を合成して、あたかも実際のタグ付き文書が存在してそれに対して問い合わせが行われたかのような問い合わせ結果を返却する。具体的には、図7に示すように、DB統合用メタデータを用いてユーザには仮想的なビュー3があたかも存在するかのように意識させ、その仮想的なビュー3に対する問い合わせ1がシステムに入力される。問い合わせ1は、例えばXQuery(http://www.w3.org/XML/Queryを参照のこと)にて記述される。図7の例では、「FMV−6000CLを2個以上発注している注文」を参照する場合を示している。そして、システムでは、DB統合用メタデータに従って問い合わせ結果5を合成して出力する。
従来、複数のデータベースに分散したデータを利用するアプリケーションを作成する際に、各データベースからデータを取得するコードを記述するのに多量の時間を要していたのが、本公報記載の技術によれば、非常に簡単に、そして迅速に行えるようになり、アプリケーション全体を作成するのに要する時間が短縮される。
特開2005−208757号公報
しかし、上記公報開示の技術では、「データベース項目間の関連付け」を値の完全一致を条件としていたために、関連付けしたい各項目の値域又は形式が一致しない場合には関連付けを取ることができず、タグ付き文書形式のデータビューを提供することが出来なかった。例えば、図8に示すように、受注DBの商品テーブルのitem_codeというデータ項目の値が数字6桁のみの形式(例えば「034564」)で格納されているが、商品DBの取扱商品テーブルのcodeというデータ項目の値が数字6桁の先頭にfmvという3文字追加された形式(例えば「fmv034564」)で格納されているとすると、両者は関連付けを取ることができなかった。
また、上記公報開示の技術では、データの構造は仮想化することができるが、データの値域は仮想化できない。すなわち、仮想ビューの上のデータの値は、データベース内のデータの値がそのまま見える。これではアプリケーション開発者が想定しているデータの値域又は形式に合わせたビューを提供することができず、アプリケーション側でビューに合わせる必要が生じ、アプリケーションの開発が不自由になる。
従って、本発明の目的は、問い合わせ型データベース統合を行う際に異なる値域又は形式のデータ項目間を関連付けできるようにするための技術を提供することである。
また、本発明の他の目的は、問い合わせ型データベース統合を行う際にデータベースのデータの値域を仮想化できるようにするための技術を提供することである。
さらに、本発明の他の目的は、問い合わせ型データベース統合を行う際にデータベースのデータ項目間の関連付け又はデータ参照を柔軟に行えるようにするための技術を提供することである。
本発明の第1の態様に係る検索方法では、問い合わせ結果の出力構造を規定する構造データ(例えば実施の形態における仮想XMLスキーマ情報)、当該構造データ中の要素とデータベースの要素との対応関係、データベース間の要素の関連付け、及びデータベース間の要素の関連付け又はデータベースの特定の要素に適用する双方向変換関数が規定された統合用メタデータを新たに採用する。このような双方向変換関数によって値域又は形式が異なるデータ項目間を関連付けることが可能となる。さらに、データベースの値域を仮想化することも可能である。
なお、双方向変換関数は、変換の対称性を有する関数である。すなわち、最初にその双方向変換関数を用いて片方向に変換した値を、次に同じ双方向変換関数で逆方向に変換すると、元の値に完全に戻るものである。
そして、本発明の第1の態様に係る検索方法は、複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、統合用メタデータ格納部における統合用メタデータから特定される構造体を問い合わせに基づき上方に探索して、構造体中の最上位要素に対応するデータベースの要素の値を抽出する上方探索ステップと、上記構造体を構造体中の最上位要素に対応するデータベースの要素の値に基づき下方に探索して、各データベースの各要素の値を抽出する下方探索ステップと、抽出された各データベースの各要素の値を、統合用メタデータ格納部に格納されているデータに従って出力するステップとを含む。
また、上で述べた上方探索ステップは、上方探索経路上該当するデータベースに、問い合わせの条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する上方検索ステップと、上方探索経路上該当する双方向変換関数を、問い合わせの条件と直前の処理結果との少なくともいずれかに対して上向きに適用し、変換の処理結果を取得するステップとを含む。また、上で述べた下方探索ステップは、下方探索経路上該当するデータベースに、上位の処理結果に基づく個別問い合わせを出力し、検索の処理結果を取得する下方検索ステップと、下方探索経路上該当する双方向変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップとを含む。
このように、データベースに対する個別問い合わせと双方向変換関数の適切な向きの適用とを、統合用メタデータから特定される構造体の上方探索処理及び下方探索処理において適宜実施することによって、ユーザは、問い合わせに対する問い合わせ結果を、複数のデータベースを意識することなく得ることができるようになる。
また、上で述べた統合用メタデータにおいて、双方向変換関数が、データベースの要素と同列の要素として規定される場合もある。そして、データベース間の要素の関連付けが、第1のデータベースの要素と双方向変換関数の下向き要素との関連付けと、第2のデータベースの要素と双方向変換関数の上向き要素との関連付けとを含むようにしてもよい。双方向変換関数もデータベースの要素と同様に、統合用メタデータから特定される構造体(例えば木構造)におけるノードに相当し、データベースの要素を双方向で関連付けている。
さらに、上で述べた統合用メタデータにおいて、双方向変換関数が、データベースの要素と同列の要素として規定される場合もある。そして、データベースの特定の要素の値を変換する双方向変換関数の場合には、データベース間の要素の関連付けが、データベースの特定の要素と当該双方向変換関数の要素との関連付けを含むようにしてもよい。データベースのデータの値域を仮想化するような場合にはこのような構成を採用することによって実現される。
また、上で述べた統合用メタデータにおいて、上記構造データにおける、双方向変換関数に対応する要素に、データ参照の問い合わせにおける使用の可否に関する属性が含まれるようにしてもよい。ユーザに対する仮想的なビューを崩すこと無く、必要な構造を構造データ上規定できるようになる。
さらに、上で述べた統合用メタデータにおいて、双方向変換関数が、データベースの要素と同列の要素として規定される場合もある。そして、データベース間の要素の関連付けが、第1のデータベースのm個の要素と双方向変換関数のm個の下向き要素との関連付けと、第2のデータベースのn個の要素と双方向変換関数のn個の上向き要素との関連付けとを含むようにしてもよい。このようにすれば、双方向変換関数の変換方式を柔軟に決定することができる。
また、上で述べた統合用メタデータにおいて、双方向変換関数が、データベースの要素と同列の要素として規定される場合もある。そして、データベースの特定の要素に適用される双方向変換関数の場合には、データベース間の要素の関連付けが、データベースのm個の特定の要素と当該双方向変換関数のm個の要素との関連付けを含むようにしてもよい。データベースのデータの値域を仮想化する場合にも、柔軟な仮想化が可能となる。
また、上で述べた双方向変換関数として、関連付けされたデータベースの要素の値を制限する関数が規定されている場合、関連付けされたデータベースへの個別問い合わせが、双方向変換関数によって制限される値に関する条件を含むようにしてもよい。例えば、下位のデータベースの特定のデータ項目が特定の値でなければ上方探索時に変換を行わないような双方向変換関数が規定されている場合には、特定のデータ項目が特定の値のデータでなければ、双方向変換関数に対応する要素を上方に通過できない。すなわちデータが制限される。このような双方向変換関数の性質を考慮しない場合には、無駄な探索が行われることになるため、上で述べたような個別問い合わせとなるように変形することによって、データベースから返されるデータの量を少なくし、データ転送の負荷や、返されたデータを処理する負荷を軽減することが可能となる。
本発明の第1の態様は双方向変換関数を定義できる場合には有効に機能するが、必ず双方向変換関数が定義できるわけではない。例えば2つのデータベースに格納されているデータを商品コードで関連付けようとする場合、片方がアルファベット大文字小文字の混合形式で登録されていて(例えば”SymfoWARE”)、もう片方がアルファベット大文字のみの形式で登録されていると(例えば”SYMFOWARE”)、前者から後者への変換は一意に定義可能であるが、その逆は定義できず、両者を関連付けることはできない。しかし、このような関連付けを行うことが有用な場合もある。従って、本発明の第2の態様においては、双方向変換関数も片方向変換関数も両方取り扱えるようにする。
但し、片方向変換関数が存在する場合には、統合用メタデータから特定される構造体を単純に上方探索及び下方探索できるわけではない。従って、以下のような処理を実施する必要がある。なお、統合用メタデータには、問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素とデータベースの要素との対応関係、データベース間の要素の関連付け、及びデータベース間の要素の関連付け又はデータベースの特定の要素に適用する片方向又は双方向の変換関数が規定されている。
本発明の第2の態様に係る検索方法は、複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、上記統合用メタデータを格納する統合用メタデータ格納部における統合用メタデータから特定される構造体において片方向の変換関数に対応する要素及び当該要素より下位の要素に係る条件である下方探索条件を上記問い合わせの条件から除外した条件又は上記問い合わせの条件が下方探索条件のみの場合には上記構造体において片方向の変換関数に対応する要素の直上の要素について全件値を抽出するための条件である上方探索条件を特定するステップと、統合用メタデータから特定される構造体を上方検索条件に基づき上方に探索して、上記構造体中の最上位要素に対応するデータベースの要素の値を抽出する上方探索ステップと、上記構造体を上記構造体中の最上位要素に対応するデータベースの要素の値及び下方探索条件に基づき下方に探索して、各データベースの各要素の値を抽出する下方探索ステップと、抽出された各データベースの各要素の値を、統合用メタデータ格納部に格納されているデータに従って出力するステップとを含む。
そして、上方探索ステップが、上方探索経路上該当するデータベースに、上方探索条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得するステップと、上方探索経路上該当する双方向の変換関数を、上方探索条件又は直前の処理結果に対して上向きに適用し、変換の処理結果を取得するステップとを含む。さらに、下方探索ステップが、下方探索経路上該当するデータベースに、上位の処理結果と下方探索条件との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得するステップと、下方探索経路上該当する片方向又は双方向の変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップとを含む。
構造体において片方向の変換関数が規定されている場合当該片方向の変換関数より下位から上方に探索することはできないため、上方探索条件と下方探索条件とに分けて適用するものである。
なお、統合用メタデータにおける規定の仕方については、双方向変換関数も片方向変換関数もほぼ同じである。
なお、本方法をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
本発明によれば、問い合わせ型データベース統合を行う際に異なる値域又は形式のデータ項目間を関連付けできるようになる。
また、本発明の他の側面によれば、問い合わせ型データベース統合を行う際にデータベースのデータの値域を仮想化できるようになる。
さらに、本発明の他の側面によれば、問い合わせ型データベース統合を行う際にデータベースのデータ項目間の関連付け又はデータ参照を柔軟に行えるようになる。
[実施の形態1]
図9に、本発明の第1の実施の形態に係るシステム概要を示す。ユーザ端末11は、図示しないネットワークなどを介してデータベース統合参照システム13に接続されている。なお、ユーザ端末11ではなくデータベース統合参照システム13を利用する他のコンピュータであってもよい。また、データベース統合参照システム13は、図示しないネットワークを介して統合対象のデータベースを管理するホストA乃至Cなどに接続されている。図9の例では、ホストAはRDBのDB1を管理しており、ホストBはRDBのDB2を管理しており、DB3はXML−DBのDB3を管理している。なお、RDBのみを統合対象データベースとしてもよいし、XML−DBをも含めて統合対象データベースとしてもよい。
データベース統合参照システム13は、XQuery問い合わせ処理部131と、グリッドツール132と、DB統合用メタデータ格納部133とを含む。XQuery問い合わせ処理部131は、問い合わせパーザ部1311と、問い合わせ処理エンジン部1312と、データベースアクセス処理部1313とを含む。
DB統合用メタデータ格納部133に格納されているDB統合用メタデータは、ビュー生成のためのルールである。これは問い合わせ実行に先立って、予め作成してDB統合用メタデータ格納部133に格納しておく。DB統合用メタデータは、データベースの統合の仕方や見せたいビューの構造に応じて複数用意することができる。また、本実施の形態ではDB統合用メタデータの記述には、XMLを採用している。但し、SGMLなど他の言語を採用するようにしても良い。
XQuery問い合わせ処理部131の問い合わせパーザ部1311は、例えばW3Cで標準化作業を行っている問い合わせ言語であるXQueryによる問い合わせを受け付け、構文解析を行い、構文チェックを行った後に、問題がなければ問い合わせを内部形式(構文木)に変換する。ここでは、XQueryを用いるとしているが、XPath(http://www.w3.org/TR/xpath参照のこと)を採用するようにしても良い。ユーザは、ユーザ端末11から、統合された仮想データビューにアクセスするため、XQueryを用いた、仮想XMLデータに対する問い合わせをデータベース統合参照システム13に出力する。
問い合わせ処理エンジン部1312は、問い合わせパーザ部1311が構文解析したXQuery問い合わせを実際に処理し、各データベースへどのような順番でどのような問い合わせを行ってデータを獲得するか判断し、各データベースに対する個別の問い合わせ(副問い合わせとも呼ぶ)を実施する。また、問い合わせに応答して各データベースから獲得したデータを、最終的にユーザ端末11に返信するために、XMLデータへと組み立てる処理も行う。
データベースアクセス処理部1313は、問い合わせ処理エンジン部1312からデータベースへの問い合わせ要求が行われると、グリッドツール132を介してデータベースへアクセスを実施する。複数の異種のデータベースに対する問い合わせは、従来の技術をそのまま用いることができ、例えば、オープンソースのグリッドミドルウェアであるGlobus Toolkit 4 + OGSA-DAI WSRF 2.1の組み合わせを利用することができる。結果として、データベースアクセス処理部1313は、RDBに対してSQLに従った問い合わせを出力し、XML−DBに対しては例えばXPathに従った問い合わせを出力する。
また、図1における商品DBの取扱商品テーブルが図10における商品DBの取扱商品テーブルに置き換えられた場合に作成される統合用メタデータは、図11のように模式的に表すことができる。基本的な構造は図2と同じであるが、双方向変換関数としてフィルタ1が追加されている。すなわち、filterという名前のノードと、upper0というラベルの子ノードと、lower0というラベルの子ノードとが追加されている。そして、upper0というラベルのノードは、受注DBの商品テーブルにおけるcodeという名前のノードと関連付けがなされており、lower0とラベルのノードは、商品DBの取扱商品テーブルにおけるcodeという名前のノードとが関連付けられている。図11に示されたデータは、具体的には図12乃至図15に示すようなXMLデータとして記述される。
このDB統合用メタデータには、3つのデータ部分を含む。
(1)仮想XMLスキーマ情報(図12)
複数のデータベースに跨る関連データを、どのような構造のXMLデータとしてユーザに見せるかという情報である。
(2)データベース項目との対応関係(図13及び図14)
XMLの中の各ノードに、どのデータベースのどの項目が対応するのかという情報である。
(3)要素間の関連付け情報(図15)
異なるデータベースのXMLデータやタプルを関連付けて1つのエレメントとする場合に、各データベースのどの項目で対応付けするのかという情報である。
以下、それぞれについて詳細を説明する。
(1)仮想XMLスキーマ情報(図12)
仮想XMLスキーマ情報では、XML Schemaに似たフォーマットを使用して、統合データビューのXML構造を定義する。スキーマを構築するノードには以下の3種類がある。
(1−1)ComplexElement
配下に他のノードを持つ中間ノードである。図11の例では、orderという名前のノード(四角で囲った番号1)、itemという名前のノード(四角で囲った番号2及び3)、item_stockという名前のノード(四角で囲った番号4)、及びfilterという名前のノード(四角で囲った番号5)である。四角で囲った番号はIDを示す。
対応するデータベースがRDBの場合は、これと配下のSimpleElementの組み合わせでデータベースの1タプルに対応する。対応するデータベースがXML−DBの場合は、配下に他のノードを持つ中間ノードであって、これ自体は値を持たないことを意味する。このノードの配下には3種類いずれのノードも出現し得る。以下の属性を保有する。
名前(name):仮想データビュー上での、このノードのタグ名。
可視化の可否(visible):仮想データビュー上で表示するか否か。trueの場合には表示し、falseの場合には表示しない。表示しない場合には、問い合わせにも含ませることはできない。
最大出現数:このノードの反復して出現する回数の上限。
最小出現数:このノードの反復して出現する回数の下限。
(1−2)SimpleElement
配下に値を持つ末端ノード。図11の例では、受注DBの注文伝票テーブルに含まれるorder_idという名前のノード、purchaserという名前のノード及びorder_dateという名前のノード、受注DBの商品テーブルに含まれるorder_id2という名前のノード、codeという名前のノード、及びquantityという名前のノード、フィルタ1に含まれるupper0というラベルのノード及びlower0というラベルのノード、商品DBの取扱商品テーブルに含まれるcodeという名前のノード及びnameという名前のノード、在庫DB1の在庫テーブル1に含まれるitem_codeという名前のノード及びstock_quantityという名前のノードが該当する。それぞれ丸に含まれる番号がIDを示す。
対応するデータベースがRDBの場合は、タプル内の1カラムに対応し、その値だけを保持する。対応するデータベースがXML−DBの場合は、値を持つ末端ノードに対応する。このノードは末端ノードなので、この下には他のノードは出現できない。また、以下の属性を保有する。
名前(name):仮想データビュー上での、このノードのタグ名。
可視化の可否(visible):仮想データビュー上で表示するか否か。ComplexElementと同じである。例えば、filterという名前のComplexElementと、upper0というラベルのSimpleElementと、lower0というラベルのSimpleElementとのvisible属性をfalseに設定すれば、図16で二重線で消されているようにノードは、ユーザから見えなくなる。同様に、問い合わせでも指定できなくなる。
スキーマレス指定:該当するデータベースがXML−DBの場合に、このノードの配下に出現する全てのタグを単なる文字列として扱うことによって、配下に自由なスキーマの出現を許すか否か。
(1−3)TagElement
タグを挿入するためのダミーのノード。図11では、itemsという名前のノードが該当する。対応するデータベース要素を持たない。このノードの配下には3種類いずれのノードも出現し得る。また、以下の属性を保有する。
名前(name):仮想データビュー上での、このノードのタグ名。
また、ComplexElementとTagElementには、そのノードに対応するデータベース項目との対応関係を取るために、固有のIDが与えられる。それぞれをComplexElement-ID、SimpleElement-IDと呼ばれる。
対応するデータベースがRDBの場合は、1つのComplexElementと1つ以上のSimpleElementの組でRDBの1タプルに対応し、その組み合わせ同士を相互に連結して木構造を組み立てる。連結する際には、双方の間で関連付け(値のマッチング)を取ることができる項目が必要である。それらとは無関係に、ダミーのタグを加えたい場所にTagElementを挿入することができる。
対応するデータベースがXML−DBの場合は、XML−DBに格納されているXMLデータのスキーマに合わせて仮想XMLスキーマを構築する必要がある。元のXMLデータのスキーマに存在しないタグを加えたい場合はTagElementを使用し、元のXMLデータのスキーマに存在するタグを削りたいときは、そのタグの「可視化の可否」という属性をFalseに設定することで対応することができる。
(2)データベース項目との対応関係(図13及び図14)
データベース項目との対応関係では、仮想XMLスキーマ内の各要素(ComplexElement, SimpleElement)に、実際はどのデータベースのどの項目が対応するのかを記述する。対応するデータベースがRDBかXML−DBかによって、記述する内容は大きく異なる。
対応するデータベースがRDBの場合は、それぞれのComplexElementがどのRDBのどのテーブルに対応するかを記述し、そのComplexElementの配下の各SimpleElementがそれぞれそのテーブルの中のどのカラムに対応するのかを記述する。図13及び図14の例では、受注DB(ID=0)の注文伝票テーブル(ID=0)についてのデータと、受注DBの商品テーブル(ID=1)についてのデータと、商品DB(ID=1)の取扱商品テーブル(ID=0)についてのデータと、在庫DB1(ID=2)の在庫テーブル1(ID=0)についてのデータと、在庫DB2(ID=3)の在庫テーブル2(ID=0)についてのデータとを含む。在庫DB1の在庫テーブル1と在庫DB2の在庫テーブル2では、同じSimpleElementを使用していることもこの部分で記述される。
また、対応するデータベースがXML−DBの場合は、どのCompelxElementからなる部分木がどのXML−DBのデータに対応するかを記述する。さらには、ビュー上のタグ名とXML−DB上のタグ名が異なる場合は、その対応を記述する(記述が無かったCompelxElement, SimpleElementについては、ビュー上のタグ名とXML−DB上のタグ名が同じであるとみなす)。
本実施の形態では、双方向フィルタ(双方向変換関数)もデータベースと同列に取り扱われ、仮想XMLスキーマ内の要素(ComplexElement, SimpleElement)と双方向フィルタとの対応付けも記述される。RDBの場合と同様に、1つのComplexElementが双方向フィルタと対応することが記述され、以下の情報も記述される。
呼び出すべき双方向フィルタの名前(図14の例ではcodeConverter)
上位側の入出力に用いられるSimpleElementの一覧(図14の例ではID=12のSimpleElement)
下位側の入出力に用いられるSimpleElementの一覧(図14の例ではID=13のSimpleElement)
(3)要素間の関連付け情報(図15)
要素間の関連付け情報では、RDBに対応する「ComplexElement, SimpleElementの組み合わせ」同士や、それとXML−DBに対応するXML部分木を結びつけるための情報を記述する。具体的には、どのSimpleElementとどのSimpleElementで値のマッチングを取るかを記述する。基本は1つの項目と1つの項目同士の「値の完全一致」であるが、複数個同士の「値の完全一致」でも構わない。
図15の例では、受注DBの注文伝票テーブルと商品テーブルの関連付け、受注DBとフィルタ1の関連付け、フィルタ1と商品DBの関連付け、受注DBと在庫DB1及び在庫DB2の関連付けとが規定されている。フィルタ1は、受注DBと商品DBをブリッジするように関連付けている。
本実施の形態において導入された双方向フィルタは、図11乃至図15で示した例のように、データベース間の要素の関連付けに基本的には用いられる。図11の例では、値が完全一致しないため、受注DBの商品テーブルのcodeという名前のノードと商品DBの取扱商品テーブルのcodeという名前のノードとを直接関連付けられないので双方向フィルタを導入しているが、データベースにおけるデータの値域又は形式の仮想化にも使用することができる。すなわち、図17に示すように、あるデータベースの要素と、他のデータベースの要素とを連結するためにフィルタを導入するのではなく、あるデータベースの要素の配下にのみ双方向フィルタを導入する。例えば、RDBのofficeテーブルにはハイフンなしの電話番号(例えば「0312345678」)が格納されているが、双方向フィルタによって、ハイフン付きの電話番号(「例えば「03−1234−5678」)をデータビューとして見せることができるようになる。電話番号のvisible属性をfalseにすれば、ユーザにはハイフン付きの電話番号のみが見えるようになる。また、問い合わせの条件でハイフン付きの電話番号が指定された場合には、双方向フィルタでハイフンを除去する処理を行って、RDBのofficeテーブルをハイフンなしの電話番号で検索する。このような場合には、実際の統合用メタデータでは、データベース間をブリッジすることなく、データベースとフィルタとの関連付けのみとなる。
また、双方向フィルタの具体例は、以下のようなものである。但し、これに限定するものではない。双方向フィルタは、変換の対称性さえあれば、どのようなフィルタ関数でもよい。
(1)データ変換を行う双方向フィルタ
1対1又は複数対複数でデータ値の変換を行う。以下のような例が考えられる。
(a)大文字と小文字を双方向に変換
(b)全角と半角を双方向に変換
(c)ハイフン付き電話番号とハイフン無し電話番号を双方向に変換(例えば図17)
(d)日本人名のふりがなとローマ字表記を双方向に変換
(e)固有名詞をその別名に双方向に変換
(2)データ結合又は分解を行う双方向フィルタ
m対nの入出力を有する双方向フィルタを用いると、データの結合又は分解を行うことができる。具体的には、以下のような例が考えられる。
・日付データが「年」「月」「日」に分かれてデータベースに格納されている場合に、それらを1つに結合してハイフン結合された日付データに変換する。
・住所データが「都道府県名」「区・市/町・村(郡)」「町名・丁目・番地」「ビル*・マンション名」に分かれてデータベースに格納されている場合に、それらを1つに結合して1つの文字列データに変換する。但し、この変換は結合する方向は簡単であるが、逆向きの分解する方には工夫を要する。都道府県名の一覧やそれらの中の市町村名の一覧などのデータを用いて、分解する。
・図18に示すように、RDBのofficeテーブルにおいて電話番号の市外局番、市内局番1、市内局番2に分けて格納している場合、双方向フィルタによって、ハイフン結合された電話番号に変換する。また、ハイフン結合された電話番号を、市外局番、市内局番1、市内局番2に分割するように変換する。
(3)データ制限又は選択を行う双方向フィルタ
m対nの入出力を有する双方向フィルタで、片方の入出力の1つ以上が定数になっているものを用いると、そのフィルタを流れるデータを制限(又は選択)することができる。このタイプの双方向フィルタを用いると、データベースに入っているデータの内の特定のデータのみを仮想データビューに取り込むことが可能となる。このタイプの双方向フィルタについては後に詳述する。
なお、双方向フィルタの変換処理についての定義データは、DB統合用メタデータ格納部133に格納される。
次に、図9に示したシステムの処理フローについて図19乃至図32を用いて説明する。まず、XQuery問い合わせ処理部131の問い合わせパーザ部1311は、ユーザ端末11からXQueryの問い合わせの入力を待ち受け(ステップS1)、XQueryの入力があった場合には、受信したXQueryの問い合わせに対して、構文解析、構文チェック及び内部形式変換を実施する(ステップS3)。この処理は従来と同じであり、詳細な説明は省略する。
なお、XQueryの問い合わせの構文が正しくない場合(ステップS5:Noルート)、XQuery問い合わせ処理部131は、エラー・メッセージをユーザ端末11に出力する(ステップS7)。そしてステップS1に戻る。一方、XQueryの問い合わせの構文が正しい場合には(ステップS5:Yesルート)、問い合わせパーザ部1311は、構文木のデータを問い合わせ処理エンジン部1312に出力する。そして、問い合わせ処理エンジン部1312は、該当DB統合用メタデータをDB統合用メタデータ格納部133から読み込み、XML構造及び各ノードに対応するデータが格納されているデータベースを特定する(ステップS9)。
例えば、name=FMV−6000CL且つ数量(quantity)が2以上の注文を抽出するXQueryの問い合わせは、図20の右上のように記述される。ここで、該当DB統合用メタデータは、order−list.xmlとして指定される。そうすると、図20に示すようなデータ構造が特定されるものとする。基本的に図11と同じである。
次に、問い合わせ処理エンジン部1312は、AND結合された条件式を同時に問い合わせできる条件群にまとめる(ステップS11)。例えば、同じテーブルやデータベースに含まれるデータ項目についての条件群をひとまとめにする。図20の右上の例における2つの条件式は、異なるデータベースについての条件式なので、別々に取り扱われる。
その後、問い合わせ処理エンジン部1312は、最もデータが絞り込める可能性が高い条件式群を特定する(ステップS13)。数値よりは文字列、文字列もより長い文字列を優先する。図21に示すように、quantityについての「2」より、nameについての「FMV−6000CL」の方が絞り込める可能性が高い条件として特定される。
そして、問い合わせ処理エンジン部1312は、DB統合用メタデータから特定されるデータ構造においてステップS13で特定された条件群に対応するエレメントが双方向フィルタか判断する(ステップS15)。例えば図17のように、データベースのデータの値域又は形式を仮想化している場合もあるため、条件式群に対応するエレメントが最初から双方向フィルタである場合もある。ステップS13で特定された条件群に対応するエレメントが双方向フィルタである場合には、条件として指定されている値に対して、双方向フィルタの上向きの変換を適用する(ステップS21)。図17の例のような場合には、「03−1234−5678」が条件の値として指定されており、双方向フィルタの上向きの変換によって「0312345678」が得られる。そして処理は端子Aを介して図23の処理に移行する。
一方、ステップS13で特定された条件式群に対応するエレメントが双方向フィルタでない場合には、問い合わせ処理エンジン部1312は、特定された条件式群の各条件を利用して、最初のデータベースに問い合わせをするための問い合わせ文を生成して、データベースアクセス処理部1313に出力する(ステップS17)。例えば、図22の右上(A)に示すような商品DBに対するSQL問い合わせを生成する。なお、基本的には、条件式群に合致するレコードを特定するが、値を求めるのは、上位のエレメントと関連づけられているカラムの値のみでよい。図22に示すように、商品DBの取扱商品テーブルにおけるnameカラムに対してFMV−6000CLという条件で検索する場合、商品DBの取扱商品テーブルにおけるcodeカラムのみが上位のエレメントに関連付けられているので、codeカラムの値を特定すればよい。
そして、データベースアクセス処理部1313は、グリッドツール132を介して最初のデータベース(商品DBの取扱商品テーブル)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS19)。図22の右上(B)に示すように、codeカラムの値(fmv034564)が得られる。データベースアクセス処理部1313は、問い合わせ結果を問い合わせ処理エンジン部1312に出力する。処理は、端子Aを介して図23の処理に移行する。
図23の処理の説明に移行して、問い合わせ処理エンジン部1312は、最上位のエレメントに到達したか判断する(ステップS23)。最上位のエレメントに到達した場合にはステップS35に移行する。一方、最上位のエレメントに到達したわけではない場合には、問い合わせ処理エンジン部1312は、XML木構造上1つ上位のエレメントがフィルタであるか判断する(ステップS25)。XML木構造上1つ上位のエレメントがフィルタである場合には、問い合わせ処理エンジン部1312は、直前の問い合わせ結果又はフィルタの適用結果に対して、フィルタの上向きの変換を適用する(ステップS27)。
図24に示されているように、商品DBの取扱商品テーブルのcodeカラムの値がfmv034564であるから、lower0=”fmv034564”として双方向フィルタに入力され、図24の右上(A)に示すように双方向フィルタの上向きの変換filter1.up(”fmv034564”)を実施し、右上(B)に示すように(upper0)=((034564))を得る。すなわち、さらに上位の受注DBの商品テーブルにおけるitem_codeカラムの値が得られる。その後、問い合わせ処理エンジン部1312は、最上位のエレメントに到達したか判断する(ステップS33)。最上位のエレメントに到達していない場合にはステップS25に戻る。
一方、XML木構造上1つ上位のエレメントがフィルタではない場合には、問い合わせ処理エンジン部1312は、直前の問い合わせ結果又はフィルタの適用結果、並びに存在する場合には未使用の条件式群を用いて、上位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する(ステップS29)。図25に示すように、直前のフィルタの適用結果である受注DBの商品テーブルにおけるitem_codeカラムの値(034564)と、未使用の条件式群(quantityカラムの値が2以上)とを用いて、図25の右上(A)に示すような受注DBに対するSQL問い合わせを生成する。なお、受注DBには商品テーブル以外にも注文伝票テーブルが含まれており、商品テーブルと注文伝票テーブルとは関連付けがなされているので、order_idカラムでテーブルをジョインして検索を行う。このように可能であれば、ジョイン処理を併せて行うように指定して、データベースへの問い合わせの回数を減らす。
そして、データベースアクセス処理部1313は、グリッドツール132を介してデータベース(受注DB)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS31)。図25の右上(B)に示すように、受注DBの注文伝票テーブルにおけるorder_idカラムの値(121)、purchaserカラムの値(AsianTraders)及びorder_dateカラムの値(2003−07−25)が得られる。データベースアクセス処理部1313は、問い合わせ結果を問い合わせ処理エンジン部1312に出力する。処理は、ステップS33に移行する。
その後、問い合わせ処理エンジン部1312は、XML木構造上の最上位のエレメントまで到達したか判断する(ステップS33)。XML木構造上の最上位のエレメントまで到達していない場合には、ステップS25に移行する。このように繰り返し処理を実施してXML木構造上の最上位のエレメントの値を取得する。最上位のエレメントの値については、記憶装置に格納しておく。図25の例では、最上位のエレメントの値が取得できたことになる。上方探索はこれで終了となる。
ステップS33で最上位のエレメントに到達したと判断された場合には、問い合わせ処理エンジン部1312は、XML木構造上1つ下位のエレメントがフィルタであるか判断する(ステップS35)。XML木構造上1つ下位のエレメントがフィルタではない場合、問い合わせ処理エンジン部1312は、上位の問い合わせ結果又はフィルタの適用結果を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する(ステップS39)。図26に示すように、直前の問い合わせ結果である受注DBの注文伝票テーブルにおけるorder_idカラムの値(121)を用いて、図26の右上(A)に示すような受注DBの商品テーブルに対するSQL問い合わせを生成する。
そして、データベースアクセス処理部1313は、グリッドツール132を介して、データベース(受注DBの商品テーブル)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS41)。図26の右上(B)に示すように、受注DBの商品テーブルにおけるorder_idカラムの値(121,121)、item_codeカラムの値(034564,087245)及びquantityカラムの値(2,5)が得られる。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。そして、問い合わせ処理エンジン部1312は、最下位のエレメントに到達したか判断する(ステップS43)。最下位のエレメントに到達していなければ、ステップS35に戻る。一方、最下位のエレメントに到達した場合には、端子Bを介して図31の処理に移行する。
XML木構造上1つ下位のエレメントがフィルタである場合には、問い合わせ処理エンジン部1312は、上位の問い合わせ結果又はフィルタの適用結果に対して、双方向フィルタの下向きの変換を実施する(ステップS37)。図27に示したように、受注DBの商品テーブルにおけるitem_codeカラムには、フィルタ1が関連付けられているので、上位の問い合わせ結果であるitem_codeカラムの値(034564,087245)を入力として下向きに変換を実施する。すなわち、図27の右上(A)に示したように、双方向フィルタの下向きの変換filter1.down(”034564”)及びfilter.down(”087245”)を実施し、右上(B)に示すように(lower0)=((fmv034564),(fmv087425))を得る。すなわち、さらに下位の商品DBの取扱商品テーブルにおけるcodeカラムの値が得られる。その後、ステップS43に移行する。
図27の例ではまだ最下位のエレメントに到達していないので、ステップS35に戻って、XML木構造上1つ下位のエレメントがフィルタであるか判断し、フィルタでないのでステップS39に移行する。そして、上位の問い合わせ結果又はフィルタの適用結果を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する。図28に示すように、フィルタの適用結果である商品DBの取扱商品テーブルのcodeカラムの値(fmv034564,fmv087245)を用いて、図28の右上(A)に示すような商品DBの取扱商品テーブルに対するSQL問い合わせを生成する。2つの値があるので、条件はORで結合される。
そして、データベースアクセス処理部1313は、グリッドツール132を介して、データベース(商品DBの取扱商品テーブル)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する。図28の右上(B)に示すように、商品DBの取扱商品テーブルにおけるnameカラムの値(FMV−6000CL,FMV−6667CX5)が得られる。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。
そして、問い合わせ処理エンジン部1312は、最下位のエレメントに到達したか再度判断する。受注DBの商品テーブルにおけるitem_codeカラムは、在庫DB1及び在庫DB2におけるカラムについても関連付けされているため、最下位のエレメントには到達していないと判断される。そしてステップS35に戻り、ステップS39に移行する。
そして、問い合わせ処理エンジン部1312は、上位の問い合わせ結果を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する。図29に示すように、受注DBの商品テーブルのitem_codeカラムの値(034564,087245)を用いて、図29の右上(A)に示すような在庫DB1の在庫テーブル1に対するSQL問い合わせを生成する。2つの値があるので、条件はORで結合される。
その後、データベースアクセス処理部1313は、グリッドツール132を介して、データベース(在庫DB1の在庫テーブル1)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する。図29の右上(B)に示すように、在庫DB1の在庫テーブル1におけるcodeカラムの値(034564)及びquantityカラムの値(38)が得られる。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。
そして、問い合わせ処理エンジン部1312は、最下位のエレメントに到達したか再度判断する。在庫DB2の在庫テーブル2については未処理であるから、最下位のエレメントには到達していないと判断される。そしてステップS35に戻り、ステップS39に移行する。
そして、問い合わせ処理エンジン部1312は、上位の問い合わせ結果を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する。図30に示すように、受注DBの商品テーブルのitem_codeカラムの値(034564,087245)を用いて、図30の右上(A)に示すような在庫DB2の在庫テーブル2に対するSQL問い合わせを生成する。2つの値があるので、条件はORで結合される。
その後、データベースアクセス処理部1313は、グリッドツール132を介して、データベース(在庫DB2の在庫テーブル2)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する。図30の右上(B)に示すように、在庫DB2の在庫テーブル2におけるitem_codeカラムの値(087245)及びitem_quantityカラムの値(3)が得られる。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。
そして、問い合わせ処理エンジン部1312は、最下位のエレメントに到達したか再度判断する。ここで最下位のエレメントに達したと判断し、端子Bを介して図31の処理に移行する。
問い合わせ処理エンジン部1312は、DB統合用メタデータに従って、得られたデータ値から問い合わせ結果のXMLデータを構築する(ステップS45)。例えば図32に模式的に示したようなXMLデータが構築される。visible=trueとされるSimpleElementのノードに対応して、得られたデータ値が埋め込まれる。
その後、問い合わせ処理エンジン部1312は、問い合わせ結果のチェックを実施する(ステップS47)。まだXQueryの問い合わせで指定した問い合わせ条件の一部が反映されていない可能性が残っているので、問い合わせ条件を満たさない解はチェックして最終結果のXMLデータから除外する。最後に、問い合わせ処理エンジン部1312は、問い合わせ結果をユーザ端末11に出力する(ステップS49)。
このような処理を実施することによって、複数のデータベースに跨る関連データを一括して参照することができるようになる。
次に、データ制限又は選択を行う双方向フィルタについて説明する。このような双方向フィルタの一例を図33に示す。図33の例では、受注DBの商品テーブルのitem_codeカラムは、フィルタ2のupper0というラベルのノードに関連付けられている。また、商品DBの取扱商品テーブルのyearカラムは、フィルタ2のlower0というラベルのノードに関連付けられている。さらに、商品DBの取扱商品テーブルのcodeカラムは、フィルタ2のlower1というラベルのノードに関連付けられている。そしてフィルタ2の変換関数は、図33の右上(A)に示すように、下から上への変換関数についてはlower0の値が2006であればupper0の値をlower1の値に設定し、lower0の値が2006以外であればupper0の値をnullとする。一方、上から下への変換関数については、lower0には2006を設定し、lower1にはupper0の値を設定する。このような場合、商品DBの取扱商品テーブルで得られたデータは、このフィルタ2を通過する際に、yearカラムの値が2006であるデータだけに制限される。同様に、下から上の変換関数によって、商品DBの取扱商品テーブルのyearカラムの値が2006以外であればupper0の値がnullとなってしまうので、上側に遡ることができない。
そこで、商品DBの取扱商品テーブルへ問い合わせを行う際に、関連付け先が双方向フィルタであるかを予め確認し、もし双方向フィルタでそれがデータ制限又は選択を行うものであった場合は、その制限又は選択の条件を商品DBの取扱商品テーブルへの問い合わせに加える。図33の右上(B)に示すように、nameカラムの値をFMV−6000CLとする条件に加え、yearカラムの値を制限又は選択の条件「2006」をANDで組み合わせる。こうすることによって、データベースから返るデータの量を少なくし、データ転送の負荷や、返って来たデータを処理する負荷を軽減することが可能となる。
このようなデータ制限又は選択を行う双方向フィルタが用いられている場合には、図34乃至図37の処理を実施する。まず、XQuery問い合わせ処理部131の問い合わせパーザ部1311は、ユーザ端末11からXQueryの問い合わせの入力を待ち受け(ステップS51)、XQueryの入力があった場合には、受信したXQueryの問い合わせに対して、構文解析、構文チェック及び内部形式変換を実施する(ステップS53)。
なお、XQueryの問い合わせの構文が正しくない場合(ステップS55:Noルート)、エラー・メッセージをユーザ端末11に出力する(ステップS57)。そしてステップS51に戻る。一方、XQueryの問い合わせの構文が正しい場合には(ステップS55:Yesルート)、問い合わせパーザ部1311は、構文木のデータを問い合わせ処理エンジン部1312に出力する。そして、問い合わせ処理エンジン部1312は、該当DB統合用メタデータをDB統合用メタデータ格納部133から読み込み、XML構造及び各ノードに対応するデータが格納されているデータベースを特定する(ステップS59)。
次に、問い合わせ処理エンジン部1312は、AND結合された条件式を同時に問い合わせできる条件群にまとめる(ステップS61)。例えば、同じテーブルやデータベースに含まれるデータ項目についての条件群をひとまとめにする。
その後、問い合わせ処理エンジン部1312は、最もデータが絞り込める可能性が高い条件式群を特定する(ステップS63)。
そして、問い合わせ処理エンジン部1312は、ステップS63で特定された条件群に対応するエレメントが双方向フィルタか判断する(ステップS65)。例えば図17のように、データベースのデータの値域又は形式を仮想化している場合もあるため、条件式群に対応するエレメントが最初から双方向フィルタである場合もある。ステップS63で特定された条件群に対応するエレメントが双方向フィルタである場合には、条件として指定されている値に対して、双方向フィルタの上向きの変換を適用する(ステップS67)。そして処理は端子Cを介して図36の処理に移行する。
一方、ステップS63で特定された条件式群に対応するエレメントが双方向フィルタでない場合には、問い合わせ処理エンジン部1312は、第1検索処理を実施する(ステップS69)。そして端子Cを介して図36の処理に移行する。
第1検索処理については図35を用いて説明する。まず、問い合わせ処理エンジン部1312は、XML木構造上で、ステップS63で特定された条件式群に対応するエレメントの1つ上位に位置するのがフィルタであり且つ当該フィルタの関数が値を制限又は選択するタイプか判断する(ステップS71)。このような条件が満たされていない場合には、通常どおり、問い合わせ処理エンジン部1312は、特定された条件式群の各条件を利用して、最初のデータベースに問い合わせをするための問い合わせ文を生成して、データベースアクセス処理部1313に出力する(ステップS73)。
そして、データベースアクセス処理部1313は、グリッドツール132を介して最初のデータベースを管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS77)。データベースアクセス処理部1313は、問い合わせ結果を問い合わせ処理エンジン部1312に出力する。そして元の処理に戻る。
一方、ステップS71の条件が満たされた場合には、問い合わせ処理エンジン部1312は、ステップS63で特定された条件式群の各条件と、1つ上位に位置するフィルタの関数の制限条件(図33の例では、year=2006)とを用いて、最初のデータベースに問い合わせをするための問い合わせ文を生成し、データベースアクセス処理部1313に出力する(ステップS75)。図33の右上(B)に示すようなSQL問い合わせを生成する。そしてステップS77に移行する。
図36の処理の説明に移行して、問い合わせ処理エンジン部1312は、最上位のエレメントに到達したか判断する(ステップS81)。最上位のエレメントに到達した場合にはステップS91に移行する。一方、最上位のエレメントに到達したわけではない場合には、問い合わせ処理エンジン部1312は、XML木構造上1つ上位のエレメントがフィルタであるか判断する(ステップS83)。XML木構造上1つ上位のエレメントがフィルタである場合には、問い合わせ処理エンジン部1312は、直前の問い合わせ結果又はフィルタの適用結果に対して、フィルタの上向きの変換を適用する(ステップS87)。その後、問い合わせ処理エンジン部1312は、最上位のエレメントに到達したか判断する(ステップS89)。最上位のエレメントに到達していない場合にはステップS83に戻る。
一方、XML木構造上1つ上位のエレメントがフィルタではない場合には、問い合わせ処理エンジン部1312は、第2検索処理を実施する(ステップS85)。その後ステップS89に移行する。
第2検索処理については図37を用いて説明する。まず、問い合わせ処理エンジン部1312は、XML木構造上で、さらに1つ上位に位置するのがフィルタであり且つ当該フィルタの関数が値を制限又は選択するタイプか判断する(ステップS101)。このような条件が満たされていない場合には、通常どおり、問い合わせ処理エンジン部1312は、直前の問い合わせ結果又はフィルタの適用結果と、該当する条件群とを利用して、上位のデータベースに問い合わせをするための問い合わせ文を生成して、データベースアクセス処理部1313に出力する(ステップS103)。
そして、データベースアクセス処理部1313は、グリッドツール132を介して上位のデータベースを管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS107)。データベースアクセス処理部1313は、問い合わせ結果を問い合わせ処理エンジン部1312に出力する。そして元の処理に戻る。
一方、ステップS101の条件が満たされた場合には、問い合わせ処理エンジン部1312は、直前の問い合わせ結果又はフィルタの適用結果と、該当する条件群と、1つ上位に位置するフィルタの関数の制限条件とを用いて、上位のデータベースに問い合わせをするための問い合わせ文を生成し、データベースアクセス処理部1313に出力する(ステップS105)。そしてステップS107に移行する。
このように繰り返し処理を実施してXML木構造上の最上位のエレメントの値を取得する。最上位のエレメントの値については、記憶装置に格納しておく。
図36の処理の説明に戻って、ステップS89で最上位のエレメントに到達したと判断された場合には、問い合わせ処理エンジン部1312は、XML木構造上1つ下位のエレメントがフィルタであるか判断する(ステップS91)。XML木構造上1つ下位のエレメントがフィルタではない場合、問い合わせ処理エンジン部1312は、上位の問い合わせ結果又はフィルタの適用結果を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する(ステップS93)。
そして、データベースアクセス処理部1313は、グリッドツール132を介して、データベースを管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS95)。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。そして、問い合わせ処理エンジン部1312は、最下位のエレメントに到達したか判断する(ステップS99)。最下位のエレメントに到達していなければ、ステップS91に戻る。一方、最下位のエレメントに到達した場合には、端子Bを介して図31の処理に移行する。図31の処理は同じであるから説明は省略する。
XML木構造上1つ下位のエレメントがフィルタである場合には、問い合わせ処理エンジン部1312は、上位の問い合わせ結果又はフィルタの適用結果に対して、双方向フィルタの下向きの変換を実施する(ステップS97)。そしてステップS99に移行する。
このように上方探索の場合には、データの値を制限又は選択するタイプの双方向フィルタを考慮して問い合わせ文を生成するが、下方探索の場合にはXML木構造を探索する上で考慮する必要はない。
以上のような処理を実施することによって、双方向フィルタがデータの値を制限又は選択するタイプの双方向フィルタを用いる場合でも適切に対処することができるようになる。
以上本発明の第1の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、図12乃至図15に示した例では、フィルタはデータベースの要素と同列に記述されていた。しかし、必ずしもデータベースの要素と同列に記述する必要はない。例えば図38乃至図41のようなDB統合用メタデータを用いるようにしてもよい。図12と図38とを比較すれば、図38ではフィルタのノードが削除されている。また、図13及び図14と図39及び図40とを比較すれば、図39及び図40ではフィルタについての記述が削除されている。そして、図15と図41を比較すれば、ノードが削除されているので、図41では、双方向フィルタを導入すべき関連付け部分にフィルタが導入されている。このような記述法を用いても、値域又は形式が異なるデータベースの要素間を関連付けることができる。但し、データの値域又は形式の仮想化には使用することができなくなる。また、複数対複数の関連付けも難しくなる。
さらに、上でも述べたが、図42に示すようなXML−DB(受注DBの注文伝票XML)が混在するような環境に対しても本発明を適用することができる。DB統合用メタデータが作成されていれば、ユーザに対して好ましい仮想データビューを提示して、それに応じた問い合わせを処理して複数のデータベースに跨るデータを適切に抽出できる。
また、図9に示した機能ブロック図は一例であって実際のプログラムのモジュール構成とは異なる場合もある。
[実施の形態2]
本発明の第1の実施の形態において導入された双方向フィルタではなく片方向フィルタを導入することも可能である。図12乃至図15に、双方向フィルタを導入した際のDB統合用メタデータを例示しているが、片方向フィルタを導入する場合においても、同様の記述を行えばよい。すなわち、片方向フィルタ(片方向変換関数)もデータベースと同列に取り扱われ、仮想XMLスキーマ内の要素(ComplexElement, SimpleElement)と片方向フィルタとの対応付けも記述される。1つのComplexElementが片方向フィルタと対応することが記述され、以下の情報も記述される。
呼び出すべき片方向フィルタの名前(例えばcodeConverter)
上位側の入出力に用いられるSimpleElementの一覧
下位側の入出力に用いられるSimpleElementの一覧
片方向フィルタを導入する場合でも、双方向フィルタを導入した場合におけるDB統合用メタデータと同様に表されるので、DB統合用メタデータの模式図も、図11と同様に表される。但し、双方向フィルタの場合には、関連付けを表す太点線を矢印にしていなかったが、図43に示すように、片方向フィルタ(図43の場合にはフィルタ2)の場合には、フィルタの方向を表すために、関連付けを表す太点線を矢印で表すものとする。図43の例では、片方向フィルタであるフィルタ2のupper0という名前のノードは、上位ノードである、受注DBの商品テーブルにおけるitem_codeという名前のノードと関連付けられており、フィルタ2のlower0という名前のノードは、下位ノードである、商品DBの取扱商品テーブルにおけるcodeという名前のノードと関連付けられている。
なお、片方向フィルタであるか双方向フィルタであるかは、DB統合用メタデータではなくフィルタの実体によって特定される。すなわち、例えば起動時に、システムが、フィルタの定義を読み込み、当該フィルタが、双方向フィルタのクラスを継承しているか、又は片方向フィルタのクラスを継承しているかを特定することによって、判別する。
片方向フィルタは、例えば、以下のような変換関数である。
(a)大文字小文字混在の文字列を、大文字に変換する
(b)大文字小文字混在の文字列を、小文字に変換する
(c)全角文字半角文字混在の文字列を、半角文字列に変換する
(d)ハイフン又は括弧で区分された電話番号を、ハイフン又は括弧無しの電話番号に変換する
(e)誕生日を、年齢に変換する
(f)過去の住所表記を、最新の住所表記に変換する
(g)住所を、郵便番号に変換する(例えば図44)
その他、必要な片方向変換関数であれば、何でも良い。
(a)乃至(g)については、1対1の変換であるが、例えばデータベースのm個の要素からn個の出力を得るようなm対n変換も可能である。図45に一例を示す。図45の例では、住所が、県名、市名、県名及び市名以外という形で分けてRDBのofficeテーブルに登録されており、片方向フィルタによって郵便番号に変換する。
図45に示されているように、あるデータベースの要素と、他のデータベースの要素とを関連付けるために片方向フィルタを導入するのではなく、あるデータベースの要素の配下に片方向フィルタを導入するようにしても良い。すなわち、双方向フィルタの場合において説明した値域又は形式の仮想化と同様である。visible属性で、falseを指定して、データビューで郵便番号のみを見せるようにしても良い。
次に、図46乃至図64を用いて、片方向フィルタを導入した場合における処理フローを説明する。以下では、図46のようなDB統合用メタデータが定義されているものとする。図46において、RDB3のorder_itemテーブルのcodeという名前のノードと、片方向フィルタのupper0という名前のノードとが関連付けられており、片方向フィルタのlower0という名前のノードとRDB1のitemテーブルにおけるcodeという名前のノードとが関連付けられている。なお、処理フロー自体は、双方向フィルタと片方向フィルタが混在する場合をも想定したものとなっている。
また、図9に示した第1の実施の形態におけるシステム構成は、本実施の形態でも同様である。但し、問い合わせ処理エンジン部1312の処理内容は、以下のように変更されている。
まず、XQuery問い合わせ処理部131の問い合わせパーザ部1311は、ユーザ端末11からXQueryの問い合わせの入力を待ち受け(図47:ステップS201)、XQueryの入力があった場合には、受信したXQueryの問い合わせに対して、構文解析、構文チェック及び内部形式変換を実施する(ステップS203)。この処理は従来と同じであり、詳細な説明は省略する。
なお、XQueryの問い合わせの構文が正しくない場合(ステップS205:Noルート)、XQuery問い合わせ処理部131は、エラー・メッセージをユーザ端末11に出力する(ステップS207)。そしてステップS201に戻る。一方、XQueryの問い合わせの構文が正しい場合には(ステップS205:Yesルート)、問い合わせパーザ部1311は、構文木のデータを問い合わせ処理エンジン部1312に出力する。そして、問い合わせ処理エンジン部1312は、該当DB統合用メタデータをDB統合用メタデータ格納部133から読み込み、XML構造及び各ノードに対応するデータが格納されているデータベースを特定する(ステップS209)。上でも述べたが、システム起動時などに、フィルタの定義を読み込み、当該フィルタが、双方向フィルタのクラスを継承しているか、又は片方向フィルタのクラスを継承しているかを特定しておく。
例えば、code=FMV−6000CL且つ数量(quantity)が2以上の注文を抽出するXQueryの問い合わせは、図46の右上のように記述される。ここで、該当DB統合用メタデータは、order−list.xmlとして指定される。そうすると、図46に示すようなデータ構造が特定されるものとする。
次に、問い合わせ処理エンジン部1312は、AND結合された条件式を同時に問い合わせできる条件群にまとめる(ステップS211)。例えば、同じテーブルやデータベースに含まれるデータ項目についての条件群をひとまとめにする。図46の右上の例における2つの条件式は、異なるデータベースについての条件式なので、別々に取り扱われる。
その後、問い合わせ処理エンジン部1312は、上向き条件式群生成処理を実施する(ステップS213)。この上向き条件式群生成処理は、XML木構造において片方向フィルタが規定されており、且つ本片方向フィルタ以下の部分に問い合わせの条件式が規定されている場合に対処するために設けられている。片方向フィルタが存在していると、木構造の上向き探索を単純には行うことができないためである。上向き条件式群生成処理については、図48を用いて説明する。
まず、問い合わせ処理エンジン部1312は、問い合わせの各条件式について、当該条件式に対応する、DB統合用メタデータの木構造上のエレメント又は当該エレメントより上位のエレメントに片方向フィルタが定義されているか確認する(ステップS301)。条件式毎に上記条件に該当するか否かを確認し、例えば、問い合わせの構文木のデータに、該当するか否かを表すフラグのデータを追加する。
そして、問い合わせ処理エンジン部1312は、片方向フィルタに関係する(すなわち、上記条件に該当する)条件式が1つでも存在するか判断する(ステップS303)。片方向フィルタに関係する条件式が存在しない場合(すなわち、フィルタが1つもない場合、双方向フィルタしかDB統合用メタデータに定義されていない場合、片方向フィルタ及び片方向フィルタより下位のエレメントに対して1つも条件式が入力されていない場合)には、ステップS211で特定された条件式群を上向き条件式群に設定する(ステップS305)。
一方、片方向フィルタに関係する条件式が存在する場合には、問い合わせ処理エンジン部1312は、片方向フィルタに関係する条件式を、ステップS211で特定された条件式群から除外して、仮の条件式群を生成する(ステップS307)。図46の右上の例における2つの条件式のうち「code=FMV−6000CL」という条件式は、図46に示すように片方向フィルタより下位のエレメントに関係する条件式であるから、ステップS307で条件式群から除外され、仮の条件式群は、「quantity≧2」という条件群のみとなる。
そして、問い合わせ処理エンジン部1312は、1以上の仮の条件式群が生成できたか判断する(ステップS309)。後に具体的に述べるが、「code=FMV−6000CL」という条件式しか問い合わせに含まれない場合には、「code=FMV−6000CL」という条件式がステップS307で除外されると、仮の条件式群は、空になってしまう。本ステップでは、このような状態であるかを確認する。
1以上の仮の条件式群が生成された場合には、問い合わせ処理エンジン部1312は、仮の条件式群を、上向き条件式群に設定する(ステップS311)。一方、1つも仮の条件式群が生成されない場合には、問い合わせ処理エンジン部1312は、条件式に対応するエレメント又は当該エレメントより上位のエレメントに定義されている片方向フィルタの直上のエレメントの値を全件抽出するための条件式を生成する(ステップS313)。図46のようなXML木構造において「code=FMV−6000CL」という条件式のみを含む問い合わせを実行する場合には、片方向フィルタの直上のエレメントはRDB3のorder_itemテーブルにおける注文商品というエレメントであり、このエレメント(すなわち、RDBならばカラム)の値(具体的には、orderID、code及びquantityカラムの値)全件を抽出するような条件式を生成する。なお、片方向フィルタの直上のエレメントが最上位のエレメントでない場合には、さらに上位のエレメントに関連付けられているエレメント(この例ではorderIDカラム)の値のみを全件抽出するような条件式であってもよい。
そして、問い合わせ処理エンジン部1312は、生成された条件式を可能であればまとめて、上向き条件式群を生成する(ステップS315)。例えば、条件式に関係する片方向フィルタがDB統合用メタデータに複数存在しており且つ各片方向フィルタの直上のエレメントが同じであれば、抽出すべき値は同じであり同じ条件式が生成されるので、まとめることができる。
このように、XML木構造の上方探索を行うための準備がなされる。なお、ステップS307で除外された条件式(下方探索条件式又は下向き条件式とも呼ぶ)は、DB統合用メタデータの木構造の下方探索において用いられる。
図46の処理の説明に戻って、問い合わせ処理エンジン部1312は、最もデータが絞り込める可能性が高い上向き条件式群を特定する(ステップS215)。数値よりは文字列、文字列もより長い文字列を優先する。ステップS13と同様である。
そして、問い合わせ処理エンジン部1312は、XML木構造においてステップS215で特定された上向き条件群に対応するエレメントが双方向フィルタ(この場合には図48の処理を実施したので必ず双方向フィルタ)か否かを判断する(ステップS217)。上でも述べたが、データベースのデータの値域又は形式を仮想化している場合もあるため、条件式群に対応するエレメントが最初から双方向フィルタである場合もある。ステップS215で特定された上向き条件群に対応するエレメントが双方向フィルタである場合には、条件として指定されている値に対して、双方向フィルタの上向きの変換を適用する(ステップS223)。そして端子Dを介して図50の処理に移行する。
一方、ステップS215で特定された上向き条件式群に対応するエレメントが双方向フィルタでない場合には、問い合わせ処理エンジン部1312は、特定された上向き条件式群の各条件を利用して、最初のデータベースに問い合わせをするための問い合わせ文を生成して、データベースアクセス処理部1313に出力する(ステップS219)。例えば、図49の右上(A)に示すようなRDB2のstockテーブルに対するSQL問い合わせを生成する。なお、基本的には、条件式群に合致するレコードを特定するが、値を求めるのは、上位のエレメントと関連づけられているエレメント(カラム)の値のみでよい。図49に示すように、RDB2のstockテーブルにおけるquantityカラムに対して2以上という条件で検索する場合、RDB2のstockテーブルにおけるcodeカラムのみが上位のエレメントに関連付けられているので、codeカラムの値を特定すればよい。
そして、データベースアクセス処理部1313は、グリッドツール132を介して最初のデータベース(RDB2のstockテーブル)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS221)。図49の右上(B)に示すように、codeカラムの値(FMV034564,...,fmv6000Cl,...)が得られる。データベースアクセス処理部1313は、問い合わせ結果を問い合わせ処理エンジン部1312に出力する。処理は、端子Dを介して図50の処理に移行する。
図50の処理の説明に移行して、問い合わせ処理エンジン部1312は、最上位のエレメントに到達したか判断する(ステップS225)。最上位のエレメントに到達した場合にはステップS237に移行する。一方、最上位のエレメントに到達したわけではない場合には、問い合わせ処理エンジン部1312は、XML木構造上1つ上位のエレメントがフィルタ(ここでは双方向フィルタ)であるか判断する(ステップS227)。XML木構造上1つ上位のエレメントがフィルタである場合には、問い合わせ処理エンジン部1312は、直前の問い合わせ結果又はフィルタの適用結果に対して、フィルタの上向きの変換を適用する(ステップS229)。そして、ステップS235に移行する。
一方、XML木構造上1つ上位のエレメントがフィルタではない場合には、問い合わせ処理エンジン部1312は、直前の問い合わせ結果又はフィルタの適用結果、並びに存在する場合には未使用の上向き条件式群を用いて、上位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する(ステップS231)。図51に示すように、直前の問い合わせ結果(code=(FMV034564,...,fmv6000Cl,...))とを用いて、図51の右上(A)に示すようなRDB3のorder_itemテーブルに対するSQL問い合わせを生成する。この場合も、値を求めるのは、上位のエレメントと関連づけられているエレメント(カラム)の値のみでよい。
そして、データベースアクセス処理部1313は、グリッドツール132を介してデータベース(ここではRDB3)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS233)。図51の右上(B)に示すように、RDB3のorder_itemテーブルにおけるorderIDカラムの値(070304029,...,070306071,...)が得られる。データベースアクセス処理部1313は、問い合わせ結果を問い合わせ処理エンジン部1312に出力する。処理は、ステップS235に移行する。
その後、問い合わせ処理エンジン部1312は、XML木構造上の最上位のエレメントまで到達したか判断する(ステップS235)。XML木構造上の最上位のエレメントまで到達していない場合には、ステップS227に移行する。このように繰り返し処理を実施してXML木構造上の最上位のエレメントの値を取得する。最上位のエレメントの値については、記憶装置に格納しておく。
図51の段階ではまだXML木構造上の最上位のエレメントまで到達していないので、ステップS227に戻って、問い合わせ処理エンジン部1312は、XML木構造上1つ上位のエレメントがフィルタか判断する。図51の場合、フィルタではないので、直前の問い合わせ結果を用いて、上位のデータベースに対する問い合わせ文を生成する。図52の右上(A)に示すように、直前の問い合わせ結果(orderID=(070304029,...,070306071,...))を用いて、RDB3のorderテーブルに対するSQL問い合わせを生成する。そして、グリッドツール132を介してデータベース(ここではRDB3)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する。図52の右上(B)に示すように、RDB3のorderテーブルにおける各カラムの値(orderIDカラム、purchaserカラム、dateカラムの値。なお、多数の値が得られるので、図52の右上(B)では省略表示されている。)が得られる。データベースアクセス処理部1313は、問い合わせ結果を問い合わせ処理エンジン部1312に出力する。図52の例では、最上位のエレメントの値が取得できたことになる。上方探索はこれで終了となる。
ステップS235で最上位のエレメントに到達したと判断された場合には、問い合わせ処理エンジン部1312は、XML木構造上1つ下位のエレメントがフィルタであるか判断する(ステップS237)。XML木構造上1つ下位のエレメントがフィルタではない場合、問い合わせ処理エンジン部1312は、上位の問い合わせ結果又はフィルタの適用結果、並びに未使用の条件式(すなわち下方探索条件式)を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する(ステップS241)。図53に示すように、直前の問い合わせ結果のうち関連付けされているoderIDカラムの値を用いて、図53の右上(A)に示すようなRDB3のorder_itemテーブルに対するSQL問い合わせを生成する。
そして、データベースアクセス処理部1313は、グリッドツール132を介して、データベース(RDB3のorder_itemテーブル)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する(ステップS243)。図53の右上(B)に示すように、RDB3のorder_itemテーブルにおけるorderIDカラムの値、codeカラムの値及びquantityカラムの値が得られる。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。そして、問い合わせ処理エンジン部1312は、XML木構造における最下位のエレメントに到達したか判断する(ステップS245)。XML木構造における最下位のエレメントに到達していない場合には、ステップS237に戻る。一方、最下位のエレメントに到達した場合には、端子Eを介して図55の処理に移行する。
図53の例では、XML木構造上最下位のエレメントに到達したとは言えないのでステップS237に戻る。この場合、XML木構造は2方向に分岐しているので、全ての末端エレメントに到達するまでステップS237に戻って処理を繰り返す。そして、RDB2のstockテーブルの方に遷移して、問い合わせ処理エンジン部1312は、XML木構造上1つ下位のエレメントがフィルタであるか判断し、XML木構造上1つ下位のエレメントがフィルタではない場合、上位の問い合わせ結果を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する。図54に示すように、直前の問い合わせ結果のうち関連付けされているcodeカラムの値を用いて、図54の右上(A)に示すようなRDB2のstockテーブルに対するSQL問い合わせを生成する。そして、データベースアクセス処理部1313は、グリッドツール132を介して、データベース(RDB2のstockテーブル)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する。図54の右上(B)に示すように、RDB2のstockテーブルにおけるcodeカラムの値及びquantityカラムの値が得られる。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。
そして、問い合わせ処理エンジン部1312は、XML木構造における最下位のエレメントに到達したか判断する。XML木構造における最下位のエレメントに到達していないので、ステップS237に戻る。
XML木構造上1つ下位のエレメントがフィルタである場合には、問い合わせ処理エンジン部1312は、上位の問い合わせ結果又はフィルタの適用結果に対して、双方向フィルタ又は片方向フィルタの下向きの変換を実施する(ステップS239)。図55に示したように、RDB3のorder_itemテーブルにおけるcodeカラムには、フィルタが関連付けられているので、上位の問い合わせ結果であるcodeカラムの値(例えばFMV034564,...,fmv6000Cl,...)を入力として下向きに変換を実施する。すなわち、図55の右上(A)に示したように、片方向フィルタの下向きの変換Filter_1(FMV034564,...,fmv6000Cl,...)を実施し、右上(B)に示すように(lower0)=(FMV−034564,...,FMV−6000CL,...)を得る。すなわち、さらに下位のRDB1のitemテーブルにおけるcodeカラムの値が得られる。その後、ステップS245に移行する。
図55の例ではまだ最下位のエレメントに到達していないので、ステップS237に戻って、XML木構造上1つ下位のエレメントがフィルタであるか判断し、フィルタでないのでステップS241に移行する。そして、フィルタの適用結果及び未使用の条件式(code=FMV−6000CL)を用いて、下位のデータベースに対する問い合わせ文を生成し、データベースアクセス処理部1313に出力する。図56に示すように、フィルタの適用結果であるRDB1のitemテーブルのcodeカラムの値(FMV−034564,...,FMV−6000CL,...)及び未使用の条件式(code=FMV−6000CL)を用いて、図56の右上(A)に示すようなRDB1のitemテーブルに対するSQL問い合わせを生成する。条件はANDで結合される。
そして、データベースアクセス処理部1313は、グリッドツール132を介して、データベース(RDB1のitemテーブル)を管理するホストに問い合わせ文を出力し、問い合わせ結果を取得する。図56の右上(B)に示すように、RDB1のitemテーブルにおけるcodeカラムの値及びnameカラムの値が得られる。データベースアクセス処理部1313は、取得した問い合わせ結果を問い合わせ処理エンジン部1312に出力する。
そして、問い合わせ処理エンジン部1312は、最下位のエレメントに到達したか再度判断する。図56の例では、XML木構造上の2つの末端まで到達したので、最下位のエレメントに到達したと判断される。処理は、端子Eを介して図57の処理に移行する。
問い合わせ処理エンジン部1312は、DB統合用メタデータに従って、得られたデータ値から問い合わせ結果のXMLデータを構築する(ステップS247)。visible=trueとされるSimpleElementのノードに対応して、得られたデータ値が埋め込まれる。
その後、問い合わせ処理エンジン部1312は、問い合わせ結果のチェックを実施する(ステップS249)。まだXQueryの問い合わせで指定した問い合わせ条件の一部が反映されていない可能性が残っているので、問い合わせ条件を満たさない解はチェックして最終結果のXMLデータから除外する。
片方向フィルタがXML木構造中に用いられていると、問い合わせに含まれる一部の条件式(下方探索条件式)については上方探索において用いられないので、フィルタより上側の下方探索において問い合わせ条件を満たさないにもかかわらず抽出される値が多くなる。上で述べた例では、最後にフィルタによる変換結果及び条件式(code=FMV−6000CL)を適用した際に、値が抽出されないケースが頻出する。よって本ステップにおいて、問い合わせ条件を満たさないケースとして、RDB1のitemテーブルにおけるcodeカラム及びnameカラムについて値が抽出されないケースのデータを削除する。codeカラムの値が「FMV−034564」であれば、条件を満たさないので、結果としてRDB1のitemテーブルにおけるcodeカラム及びnameカラムの値が空となるので、RDB3のorder_itemテーブルのcodeカラムの値が「FMV034564」となるケースを削除する。
最後に、問い合わせ処理エンジン部1312は、問い合わせ結果をユーザ端末11に出力する(ステップS251)。
このような処理を実施することによって、複数のデータベースに跨る関連データを一括して参照することができるようになる。
次に、図58乃至図64を用いて、XML木構造中片方向フィルタが存在する場合の他の検索処理例を説明する。図58に示すように、上で述べたXML木構造と同じ構造を有する場合を想定する。また、図58の右上に示した問い合わせが行われるものとする。すなわち、コードがFMV−6000CLとなるデータを抽出するための問い合わせを実施する。なお、図58のXML木構造においては、片方向フィルタより下のノードに対応する条件式のみの問い合わせになっている。
このような場合には、上向き条件式群生成処理のステップS313で片方向フィルタの直上のエレメントの値を全件抽出するための条件式を生成する。これは、図59の右上(A)に示すように、RDB3(t3)のorder_itemテーブルから、orderIDカラムの値及びcodeカラムの値を抽出するような検索式を生成する。但し、XML木構造上より上位のノードに関連するorderIDカラムの値のみを抽出するようにしても良い。そうすると、図59の右上(B)では省略しているが、orderIDカラムの値及びcodeカラムの値が全て抽出される。
そして、1つ上位のエレメントに遷移して、図60の右上(A)に示すように、RDB3のorderテーブルから、RDB3のorder_itemテーブルから抽出されたorderIDカラムの値に対応するレコードを抽出するような検索式を生成して、出力する。この結果、図60の右上(B)では、省略しているが、orderIDカラムの値、purchaserカラムの値及びdateカラムの値のセットが、条件式に含まれるorderIDカラムの値の件数分抽出される。
これで最上位のエレメントまで到達したので、下方探索に移行する。まず、図61の右上(A)に示すように、RDB3のorder_itemテーブルから、RDB3のorderテーブルから抽出されたorderIDカラムの値を条件に、該当するレコードを抽出するような検索式を生成して、出力する。この結果、図61の右上(B)では省略しているが、orderIDカラムの値、codeカラムの値及びquantityカラムの値のセットが、条件式に含まれるorderIDカラムの値の件数分抽出される。
さらに、下位のエレメントとしてRDB2のstockテーブルに対応するエレメントに遷移する。そうすると、図62の右上(A)に示すように、RDB2のstockテーブルから、RDB3のorder_itemテーブルにおけるcodeカラムの値を条件に、該当するレコードを抽出するような検索式を生成して、出力する。この結果、図62の右上(B)では省略しているが、codeカラムの値及びquantityカラムの値が、条件式に含まれるcodeカラムの値の件数分抽出される。
次に、片方向フィルタに遷移する。そうすると、図63の右上(A)に示すように、RDB3のorder_itemテーブルから抽出されたcodeカラムの値(FMV034564,...,fmv6000Cl,...)を入力として、大文字化及びハイフン付与の変換を実行する。この結果、図63の右上(B)に示されるように、大文字化及びハイフン付与後のcodeカラムの値(FMV−034564,...,FMV−6000CL,...)が得られる。
さらに下位のエレメントとしてRDB1のitemテーブルに対応するエレメントに遷移する。そうすると、図64の右上(A)に示すように、片方向フィルタからの出力であるcodeカラムの値及び未使用の下方探索条件式(code=FMV−6000CL)を条件に、RDB1のitemテーブルから、該当するレコードを抽出するための検索式を生成して、出力する。この結果、図64の右上(B)では省略されているが、code=FMV−6000CLの条件を満たすnameカラムの値が抽出される。
上でも述べたが、本例の場合には、最後に、問い合わせの条件で絞り込むことになるので、RDB2及びRDB3から抽出されたレコードには、問い合わせの条件を満たさないデータが含まれる。最後に、code=FMV−6000CLの条件を満たさず、RDB1のitemテーブルからnameカラムの値が抽出されなかった既抽出データ・セットが削除される。
これによって、片方向フィルタであっても双方向フィルタであっても、上で述べたように上方探索及び下方探索によって、複数のデータベースから必要なデータを抽出して、予めDB統合用メタデータに定義されたデータビューにてユーザに提供することができるようになる。
なお、図9に示したデータベース統合参照システム13及びユーザ端末11は、コンピュータ装置であって、図65に示すように当該コンピュータ装置においては、メモリ2501(記憶部)とCPU2503(処理部)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS)及びWebブラウザを含むアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。このようなコンピュータは、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
(付記1)
複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、
問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する双方向変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部における前記統合用メタデータから特定される構造体を前記問い合わせに基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索ステップと、
前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索ステップと、
抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力するステップと、
をコンピュータに実行させ、
前記上方探索ステップが、
上方探索経路上該当する前記データベースに、前記問い合わせの条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する上方検索ステップと、
前記上方探索経路上該当する前記双方向変換関数を、前記問い合わせの条件と直前の処理結果との少なくともいずれかに対して上向きに適用し、変換の処理結果を取得するステップと、
を含み、
前記下方探索ステップが、
下方探索経路上該当する前記データベースに、上位の処理結果に基づく個別問い合わせを出力し、検索の処理結果を取得する下方検索ステップと、
前記下方探索経路上該当する前記双方向変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップと、
を含む
検索プログラム。
(付記2)
前記統合用メタデータにおいて、
前記双方向変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベース間の要素の関連付けが、第1のデータベースの要素と前記双方向変換関数の下向き要素との関連付けと、第2のデータベースの要素と前記双方向変換関数の上向き要素との関連付けとを含む
付記1記載の検索プログラム。
(付記3)
前記統合用メタデータにおいて、
前記双方向変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベースの特定の要素の値を変換する双方向変換関数の場合には、前記データベース間の要素の関連付けが、前記データベースの特定の要素と当該双方向変換関数の要素との関連付けを含む
付記1記載の検索プログラム。
(付記4)
前記統合用メタデータにおいて、
前記構造データにおける、前記双方向変換関数に対応する要素に、前記データ参照の問い合わせにおける使用の可否に関する属性が含まれる
付記2記載の検索プログラム。
(付記5)
前記統合用メタデータにおいて、
前記双方向変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベース間の要素の関連付けが、第1のデータベースのm個の要素と前記双方向変換関数のm個の下向き要素との関連付けと、第2のデータベースのn個の要素と前記双方向変換関数のn個の上向き要素との関連付けとを含む
付記1記載の検索プログラム。
(付記6)
前記統合用メタデータにおいて、
前記双方向変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベースの特定の要素に適用される双方向変換関数の場合には、前記データベース間の要素の関連付けが、前記データベースのm個の特定の要素と当該双方向変換関数のm個の要素との関連付けを含む
付記1記載の検索プログラム。
(付記7)
前記双方向変換関数として、関連付けされたデータベースの要素の値を制限する関数が規定されている場合、
前記関連付けされたデータベースへの個別問い合わせが、前記双方向変換関数によって制限される値に関する条件を含むようにする
付記5記載の検索プログラム。
(付記8)
複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、
問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する双方向変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部における前記統合用メタデータから特定される構造体を前記問い合わせに基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索ステップと、
前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索ステップと、
抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力するステップと、
を含み、
前記上方探索ステップが、
上方探索経路上該当する前記データベースに、前記問い合わせの条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する上方検索ステップと、
前記上方探索経路上該当する前記双方向変換関数を、前記問い合わせの条件と直前の処理結果との少なくともいずれかに対して上向きに適用し、変換の処理結果を取得するステップと、
を含み、
前記下方探索ステップが、
下方探索経路上該当する前記データベースに、上位の処理結果に基づく個別問い合わせを出力し、検索の処理結果を取得する下方検索ステップと、
前記下方探索経路上該当する前記双方向変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップと、
を含む
検索方法。
(付記9)
複数のデータベースに対する統合的なデータ参照の問い合わせを受け付ける手段と、
問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する双方向変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部と、
前記統合用メタデータ格納部に格納された前記統合用メタデータから特定される構造体を前記問い合わせに基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索手段と、
前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索手段と、
抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力する手段と、
を有し、
前記上方探索手段が、
上方探索経路上該当する前記データベースに、前記問い合わせの条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得し、
前記上方探索経路上該当する前記双方向変換関数を、前記問い合わせの条件と直前の処理結果との少なくともいずれかに対して上向きに適用し、変換の処理結果を取得し、
前記下方探索手段が、
下方探索経路上該当する前記データベースに、上位の処理結果に基づく個別問い合わせを出力し、検索の処理結果を取得し、
前記下方探索経路上該当する前記双方向変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得する、
検索装置。
(付記10)
問い合わせ結果の出力構造を規定する構造データと、
前記構造データ中の要素と前記データベースの要素との対応関係と、
前記データベース間の要素の関連付けと、
前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する双方向変換関数又は片方向変換関数と、
が規定されており、コンピュータ読み取り可能な統合用メタデータ。
(付記11)
複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、
問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する片方向又は双方向の変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部における前記統合用メタデータから特定される構造体において前記片方向の変換関数に対応する要素及び当該要素より下位の要素に係る条件である下方探索条件を前記問い合わせの条件から除外した条件又は前記問い合わせの条件が前記下方探索条件のみの場合には前記構造体において前記片方向の変換関数に対応する要素の直上の要素について全件値を抽出するための条件である上方探索条件を特定するステップと、
前記統合用メタデータから特定される構造体を前記上方検索条件に基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索ステップと、
前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値及び前記下方探索条件に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索ステップと、
抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力するステップと、
をコンピュータに実行させ、
前記上方探索ステップが、
上方探索経路上該当する前記データベースに、前記上方探索条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する上方検索ステップと、
前記上方探索経路上該当する前記双方向の変換関数を、前記上方探索条件又は直前の処理結果に対して上向きに適用し、変換の処理結果を取得するステップと、
を含み、
前記下方探索ステップが、
下方探索経路上該当する前記データベースに、上位の処理結果と前記下方探索条件との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する下方検索ステップと、
前記下方探索経路上該当する前記片方向又は双方向の変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップと、
を含む
検索プログラム。
(付記12)
前記統合用メタデータにおいて、
前記片方向又は双方向の変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベース間の要素の関連付けが、第1のデータベースの要素と前記片方向又は双方向の変換関数の第1の要素との関連付けと、第2のデータベースの要素と前記片方向又は双方向の変換関数の第2の要素との関連付けとを含む
付記11記載の検索プログラム。
(付記13)
前記統合用メタデータにおいて、
前記片方向又は双方向の変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベースの特定の要素の値を変換する片方向又は双方向の変換関数の場合には、前記データベース間の要素の関連付けが、前記データベースの特定の要素と前記片方向又は双方向の変換関数の要素との関連付けを含む
付記11記載の検索プログラム。
(付記14)
前記統合用メタデータにおいて、
前記構造データにおける、前記片方向又は双方向の変換関数に対応する要素に、前記データ参照の問い合わせにおける使用の可否に関する属性が含まれる
付記2記載の検索プログラム。
(付記15)
前記統合用メタデータにおいて、
前記片方向又は双方向の変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベース間の要素の関連付けが、第1のデータベースのm個の要素と前記片方向又は双方向の変換関数のm個の要素との関連付けと、第2のデータベースのn個の要素と前記片方向又は双方向の変換関数のn個の要素との関連付けとを含む
付記1記載の検索プログラム。
(付記16)
前記統合用メタデータにおいて、
前記片方向又は双方向の変換関数が、前記データベースの要素と同列の要素として規定され、
前記データベースの特定の要素に適用される片方向又は双方向の変換関数の場合には、前記データベース間の要素の関連付けが、前記データベースのm個の特定の要素と前記片方向又は双方向の変換関数のm個の要素との関連付けを含む
付記11記載の検索プログラム。
(付記17)
複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、
問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する片方向又は双方向の変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部における前記統合用メタデータから特定される構造体において前記片方向の変換関数に対応する要素及び当該要素より下位の要素に係る条件である下方探索条件を前記問い合わせの条件から除外した条件又は前記問い合わせの条件が前記下方探索条件のみの場合には前記構造体において前記片方向の変換関数に対応する要素の直上の要素について全件値を抽出するための条件である上方探索条件を特定するステップと、
前記統合用メタデータから特定される構造体を前記上方検索条件に基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索ステップと、
前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値及び前記下方探索条件に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索ステップと、
抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力するステップと、
を含み、
前記上方探索ステップが、
上方探索経路上該当する前記データベースに、前記上方探索条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する上方検索ステップと、
前記上方探索経路上該当する前記双方向の変換関数を、前記上方探索条件又は直前の処理結果に対して上向きに適用し、変換の処理結果を取得するステップと、
を含み、
前記下方探索ステップが、
下方探索経路上該当する前記データベースに、上位の処理結果と前記下方探索条件との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する下方検索ステップと、
前記下方探索経路上該当する前記片方向又は双方向の変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップと、
を含み、
コンピュータにより実行される検索方法。
(付記18)
複数のデータベースに対する統合的なデータ参照の問い合わせを受け付ける手段と、
問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する片方向又は双方向の変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部と、
前記統合用メタデータ格納部における前記統合用メタデータから特定される構造体において前記片方向の変換関数に対応する要素及び当該要素より下位の要素に係る条件である下方探索条件を前記問い合わせの条件から除外した条件又は前記問い合わせの条件が前記下方探索条件のみの場合には前記構造体において前記片方向の変換関数に対応する要素の直上の要素について全件値を抽出するための条件である上方探索条件を特定する手段と、
前記統合用メタデータから特定される構造体を前記上方検索条件に基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索手段と、
前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値及び前記下方探索条件に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索手段と、
抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力する手段と、
を有し、
前記上方探索手段が、
上方探索経路上該当する前記データベースに、前記上方探索条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する手段と、
前記上方探索経路上該当する前記双方向の変換関数を、前記上方探索条件又は直前の処理結果に対して上向きに適用し、変換の処理結果を取得する手段と、
を有し、
前記下方探索手段が、
下方探索経路上該当する前記データベースに、上位の処理結果と前記下方探索条件との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する手段と、
前記下方探索経路上該当する前記片方向又は双方向の変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得する手段と、
を有する
検索装置。
複数のデータベースの一例を示す図である。 従来のDB統合用メタデータの模式図である。 従来のDB統合用メタデータの第1の部分を示す図である。 従来のDB統合用メタデータの第2の部分を示す図である。 従来のDB統合用メタデータの第3の部分を示す図である。 従来のDB統合用メタデータの第4の部分を示す図である。 仮想データビューを説明するための図である。 従来技術の問題点を示す図である。 本発明の第1の実施の形態におけるシステム概要図である。 本発明の第1の実施の形態におけるホストBを示す図である。 本発明の第1の実施の形態におけるDB統合用メタデータの模式図である。 本発明の第1の実施の形態におけるDB統合用メタデータの第1の部分を示す図である。 本発明の第1の実施の形態におけるDB統合用メタデータの第2の部分を示す図である。 本発明の第1の実施の形態におけるDB統合用メタデータの第3の部分を示す図である。 本発明の第1の実施の形態におけるDB統合用メタデータの第4の部分を示す図である。 エレメントのvisible属性を説明するための図である。 データベースのデータの値域又は形式を仮想化する場合のDB統合用メタデータの模式図である。 データ結合又は分解を行う双方向フィルタの一例を示す図である。 本発明の第1の実施の形態における処理フローの第1の部分を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第1段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第2段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第3段階)を示す図である。 本発明の第1の実施の形態における処理フローの第2の部分を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第4段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第5段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第6段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第7段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第8段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第9段階)を示す図である。 本発明の第1の実施の形態における処理フローを説明するための具体例(第10段階)を示す図である。 本発明の第1の実施の形態における処理フローの第3の部分を示す図である。 問い合わせ結果の模式図を示す図である。 データの値を制限又は選択するための双方向フィルタの一例を示す図である。 データの値を制限又は選択するための双方向フィルタが記述された場合の処理フローの第1の部分を示す図である。 第1検索処理の処理フローを示す図である。 データの値を制限又は選択するための双方向フィルタが記述された場合の処理フローの第2の部分を示す図である。 第2検索処理の処理フローを示す図である。 DB統合用メタデータの第2の例を示す図である。 DB統合用メタデータの第2の例を示す図である。 DB統合用メタデータの第2の例を示す図である。 DB統合用メタデータの第2の例を示す図である。 XML−DBが混在するデータベースを示す図である。 片方向フィルタを説明するための図である。 片方向フィルタの一例を示す図である。 m対nの片方向フィルタの一例を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第1段階)を示す図である。 本発明の第2の実施の形態における処理フローの第1の部分を示す図である。 上向き条件式群生成処理の処理フローを示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第2段階)を示す図である。 本発明の第2の実施の形態における処理フローの第2の部分を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第3段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第4段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第5段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第6段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第7段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第8段階)を示す図である。 本発明の第2の実施の形態における処理フローの第3の部分を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第1段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第2段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第3段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第4段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第5段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第6段階)を示す図である。 本発明の第2の実施の形態における処理フローを説明するための具体例(第7段階)を示す図である。 コンピュータの機能ブロック図である。
符号の説明
11 ユーザ端末 13 データベース統合参照システム
131 XQuery問い合わせ処理部
132 グリッドツール
133 DB統合用メタデータ格納部
1311 問い合わせパーザ部
1312 問い合わせ処理エンジン部
1313 データベースアクセス処理部

Claims (10)

  1. 複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、
    問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する双方向変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部における前記統合用メタデータから特定される構造体を前記問い合わせに基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索ステップと、
    前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索ステップと、
    抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力するステップと、
    をコンピュータに実行させ、
    前記上方探索ステップが、
    上方探索経路上該当する前記データベースに、前記問い合わせの条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得するステップと、
    前記上方探索経路上該当する前記双方向変換関数を、前記問い合わせの条件と直前の処理結果との少なくともいずれかに対して上向きに適用し、変換の処理結果を取得するステップと、
    を含み、
    前記下方探索ステップが、
    下方探索経路上該当する前記データベースに、上位の処理結果に基づく個別問い合わせを出力し、検索の処理結果を取得するステップと、
    前記下方探索経路上該当する前記双方向変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップと、
    を含む
    検索プログラム。
  2. 前記統合用メタデータにおいて、
    前記双方向変換関数が、前記データベースの要素と同列の要素として規定され、
    前記データベース間の要素の関連付けが、第1のデータベースの要素と前記双方向変換関数の下向き要素との関連付けと、第2のデータベースの要素と前記双方向変換関数の上向き要素との関連付けとを含む
    請求項1記載の検索プログラム。
  3. 前記統合用メタデータにおいて、
    前記双方向変換関数が、前記データベースの要素と同列の要素として規定され、
    前記データベース間の要素の関連付けが、第1のデータベースのm個の要素と前記双方向変換関数のm個の下向き要素との関連付けと、第2のデータベースのn個の要素と前記双方向変換関数のn個の上向き要素との関連付けとを含む
    請求項1記載の検索プログラム。
  4. 複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、
    問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する片方向又は双方向の変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部における前記統合用メタデータから特定される構造体において前記片方向の変換関数に対応する要素及び当該要素より下位の要素に係る条件である下方探索条件を前記問い合わせの条件から除外した条件又は前記問い合わせの条件が前記下方探索条件のみの場合には前記構造体において前記片方向の変換関数に対応する要素の直上の要素について全件値を抽出するための条件である上方探索条件を特定するステップと、
    前記統合用メタデータから特定される構造体を前記上方検索条件に基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索ステップと、
    前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値及び前記下方探索条件に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索ステップと、
    抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力するステップと、
    をコンピュータに実行させ、
    前記上方探索ステップが、
    上方探索経路上該当する前記データベースに、前記上方探索条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得するステップと、
    前記上方探索経路上該当する前記双方向の変換関数を、前記上方探索条件又は直前の処理結果に対して上向きに適用し、変換の処理結果を取得するステップと、
    を含み、
    前記下方探索ステップが、
    下方探索経路上該当する前記データベースに、上位の処理結果と前記下方探索条件との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得するステップと、
    前記下方探索経路上該当する前記片方向又は双方向の変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップと、
    を含む
    検索プログラム。
  5. 前記統合用メタデータにおいて、
    前記片方向又は双方向の変換関数が、前記データベースの要素と同列の要素として規定され、
    前記データベース間の要素の関連付けが、第1のデータベースの要素と前記片方向又は双方向の変換関数の第1の要素との関連付けと、第2のデータベースの要素と前記片方向又は双方向の変換関数の第2の要素との関連付けとを含む
    請求項4記載の検索プログラム。
  6. 前記統合用メタデータにおいて、
    前記片方向又は双方向の変換関数が、前記データベースの要素と同列の要素として規定され、
    前記データベースの特定の要素の値を変換する片方向又は双方向の変換関数の場合には、前記データベース間の要素の関連付けが、前記データベースの特定の要素と前記片方向又は双方向の変換関数の要素との関連付けを含む
    請求項4記載の検索プログラム。
  7. 前記統合用メタデータにおいて、
    前記構造データにおける、前記片方向又は双方向の変換関数に対応する要素に、前記データ参照の問い合わせにおける使用の可否に関する属性が含まれる
    請求項5記載の検索プログラム。
  8. 前記統合用メタデータにおいて、
    前記片方向又は双方向の変換関数が、前記データベースの要素と同列の要素として規定され、
    前記データベース間の要素の関連付けが、第1のデータベースのm個の要素と前記片方向又は双方向の変換関数のm個の要素との関連付けと、第2のデータベースのn個の要素と前記片方向又は双方向の変換関数のn個の要素との関連付けとを含む
    請求項4記載の検索プログラム。
  9. 複数のデータベースに対する統合的なデータ参照の問い合わせを受け付けるステップと、
    問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する片方向又は双方向の変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部における前記統合用メタデータから特定される構造体において前記片方向の変換関数に対応する要素及び当該要素より下位の要素に係る条件である下方探索条件を前記問い合わせの条件から除外した条件又は前記問い合わせの条件が前記下方探索条件のみの場合には前記構造体において前記片方向の変換関数に対応する要素の直上の要素について全件値を抽出するための条件である上方探索条件を特定するステップと、
    前記統合用メタデータから特定される構造体を前記上方検索条件に基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索ステップと、
    前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値及び前記下方探索条件に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索ステップと、
    抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力するステップと、
    を含み、
    前記上方探索ステップが、
    上方探索経路上該当する前記データベースに、前記上方探索条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する上方検索ステップと、
    前記上方探索経路上該当する前記双方向の変換関数を、前記上方探索条件又は直前の処理結果に対して上向きに適用し、変換の処理結果を取得するステップと、
    を含み、
    前記下方探索ステップが、
    下方探索経路上該当する前記データベースに、上位の処理結果と前記下方探索条件との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する下方検索ステップと、
    前記下方探索経路上該当する前記片方向又は双方向の変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得するステップと、
    を含み、
    コンピュータにより実行される検索方法。
  10. 複数のデータベースに対する統合的なデータ参照の問い合わせを受け付ける手段と、
    問い合わせ結果の出力構造を規定する構造データ、当該構造データ中の要素と前記データベースの要素との対応関係、前記データベース間の要素の関連付け、及び前記データベース間の要素の関連付け又は前記データベースの特定の要素に適用する片方向又は双方向の変換関数が規定された統合用メタデータを格納する統合用メタデータ格納部と、
    前記統合用メタデータ格納部における前記統合用メタデータから特定される構造体において前記片方向の変換関数に対応する要素及び当該要素より下位の要素に係る条件である下方探索条件を前記問い合わせの条件から除外した条件又は前記問い合わせの条件が前記下方探索条件のみの場合には前記構造体において前記片方向の変換関数に対応する要素の直上の要素について全件値を抽出するための条件である上方探索条件を特定する手段と、
    前記統合用メタデータから特定される構造体を前記上方検索条件に基づき上方に探索して、前記構造体中の最上位要素に対応する前記データベースの要素の値を抽出する上方探索手段と、
    前記構造体を前記構造体中の最上位要素に対応する前記データベースの要素の値及び前記下方探索条件に基づき下方に探索して、各前記データベースの各要素の値を抽出する下方探索手段と、
    抽出された各前記データベースの各要素の値を、前記統合用メタデータ格納部に格納されているデータに従って出力する手段と、
    を有し、
    前記上方探索手段が、
    上方探索経路上該当する前記データベースに、前記上方探索条件と直前の処理結果との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する手段と、
    前記上方探索経路上該当する前記双方向の変換関数を、前記上方探索条件又は直前の処理結果に対して上向きに適用し、変換の処理結果を取得する手段と、
    を有し、
    前記下方探索手段が、
    下方探索経路上該当する前記データベースに、上位の処理結果と前記下方探索条件との少なくともいずれかに基づく個別問い合わせを出力し、検索の処理結果を取得する手段と、
    前記下方探索経路上該当する前記片方向又は双方向の変換関数を、上位の処理結果に対して下向きに適用し、変換の処理結果を取得する手段と、
    を有する
    検索装置。
JP2007313134A 2006-12-21 2007-12-04 検索プログラム、方法及び装置 Expired - Fee Related JP5056384B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007313134A JP5056384B2 (ja) 2006-12-21 2007-12-04 検索プログラム、方法及び装置
US12/075,373 US20080183689A1 (en) 2006-12-21 2008-03-11 Search method and apparatus for plural databases

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006343872 2006-12-21
JP2006343872 2006-12-21
JP2007313134A JP5056384B2 (ja) 2006-12-21 2007-12-04 検索プログラム、方法及び装置

Publications (2)

Publication Number Publication Date
JP2008176771A JP2008176771A (ja) 2008-07-31
JP5056384B2 true JP5056384B2 (ja) 2012-10-24

Family

ID=39703713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007313134A Expired - Fee Related JP5056384B2 (ja) 2006-12-21 2007-12-04 検索プログラム、方法及び装置

Country Status (1)

Country Link
JP (1) JP5056384B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010224958A (ja) * 2009-03-24 2010-10-07 Ntt Comware Corp リスト作成情報設定装置、方法、プログラム、および、データ構造
KR101133993B1 (ko) 2010-11-02 2012-04-09 한국과학기술정보연구원 추론 검증 및 점증적 추론을 위한 트리플 저장 방법 및 장치 그리고 이에 적합한 추론 의존성 색인 방법 및 장치
WO2014047681A1 (en) * 2012-09-25 2014-04-03 Vizdynamics Pty Ltd System and method for processing digital traffic metrics
WO2023188049A1 (ja) * 2022-03-30 2023-10-05 株式会社Robon メタデータ管理システム、メタデータ管理方法、プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3160265B2 (ja) * 1998-06-10 2001-04-25 日本電信電話株式会社 半構造化文書情報統合検索装置および半構造化文書情報抽出装置、その方法、ならびにそのプログラムを格納する記録媒体
JP2003316783A (ja) * 2002-04-24 2003-11-07 Nippon Telegr & Teleph Corp <Ntt> 異種半構造化情報源統合検索装置、方法、プログラム及び該プログラムを記録した記録媒体
JP4227033B2 (ja) * 2004-01-20 2009-02-18 富士通株式会社 データベース統合参照装置、データベース統合参照方法およびデータベース統合参照プログラム

Also Published As

Publication number Publication date
JP2008176771A (ja) 2008-07-31

Similar Documents

Publication Publication Date Title
US20080183689A1 (en) Search method and apparatus for plural databases
CN100468396C (zh) 用于任意数据模型的映射体系结构
JP3842573B2 (ja) 構造化文書検索方法、構造化文書管理装置及びプログラム
US7386567B2 (en) Techniques for changing XML content in a relational database
US7634498B2 (en) Indexing XML datatype content system and method
US7293018B2 (en) Apparatus, method, and program for retrieving structured documents
JP3492247B2 (ja) Xmlデータ検索システム
EP1122652A1 (en) Data Integration system
JP2001056810A (ja) データベースアクセスシステム
Shestakov et al. DEQUE: querying the deep web
JP5056384B2 (ja) 検索プログラム、方法及び装置
JP3914081B2 (ja) アクセス権限設定方法および構造化文書管理システム
JP3842576B2 (ja) 構造化文書編集方法及び構造化文書編集システム
Yu et al. Metadata management system: design and implementation
JP3842572B2 (ja) 構造化文書管理方法および構造化文書管理装置およびプログラム
Ramalho et al. Metamorphosis–a topic maps based environment to handle heterogeneous information resources
CN1326078C (zh) 包装器的生成方法
JP3842575B2 (ja) 構造化文書検索方法、構造化文書管理装置及びプログラム
Al-Wasil et al. Establishing an XML metadata klnowledge base to assist integration of structured and semi-structured databases
JP2003288365A (ja) 付加情報管理方法及び付加情報管理システム
Jagadish et al. Organic databases
US20160292187A1 (en) Defining a set of data across multiple databases using variables and functions
Telang et al. Information Integration across Heterogeneous Domains: Current Scenario, Challenges and the InfoMosaic Approach
Paik et al. Web Services–Data Services
Kellenberger et al. Working with XML and JSON

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100715

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120716

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees