(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを備えた計算機で、グラフ型データベースと関係型データベースを管理するデータベースの管理方法であって、
前記計算機が、前記グラフ型データベースのノードの種別毎に参照頻度を取得する第１のステップと、
前記計算機が、前記参照頻度が閾値以上のノードの種別を抽出する第２のステップと、
前記計算機が、前記抽出したノードを表構造に変換し、中間表として保持する第３のステップと、
前記計算機が、前記関係型データベースの問合せを受け付けて、前記中間表を参照する第４のステップと、
を含むことを特徴とするデータベースの管理方法。
【請求項２】
請求項１に記載のデータベースの管理方法であって、
前記第３のステップは、
前記グラフ型データベースと関係型データベースの対応関係を取得するステップと、
前記対応関係に基づいて前記表構造に変換したノードと、前記関係型データベースを結合するステップと、
を含むことを特徴とするデータベースの管理方法。
【請求項３】
請求項２に記載のデータベースの管理方法であって、
前記第４のステップは、
前記関係型データベースの問合せを受け付けて、前記グラフ型データベースから抽出したノードと結合した関係型データベースを参照することを特徴とするデータベースの管理方法。
【請求項４】
請求項１に記載のデータベースの管理方法であって、
前記第４のステップは、
前記中間表に前記問合せに該当するデータが存在しないときには、前記関係型データベースの問合せを前記グラフ型データベースの問合せに変換するステップと、
前記変換されたグラフ型データベースの問合せで前記グラフ型データベースを参照するステップと、
を含むことを特徴とするデータベースの管理方法。
【請求項５】
請求項２に記載のデータベースの管理方法であって、
前記対応関係に基づいて前記表構造に変換したノードと、前記関係型データベースを結合するステップは、
前記関係型データベースをグラフ型データに変換してから前記抽出したノードと結合することを特徴とするデータベースの管理方法。
【請求項６】
プロセッサとメモリを備えて、グラフ型データベースと関係型データベースを参照する管理計算機であって、
前記グラフ型データベースのノードの種別毎に参照頻度を取得する統計情報管理部と、
前記参照頻度が閾値以上のノードの種別を抽出し、前記抽出したノードを表構造に変換して中間表として保持する高頻度参照範囲決定部と、
前記関係型データベースの問合せを受け付けて、前記中間表を参照する問合せ実行部、とを備えたことを特徴とする管理計算機。
【請求項７】
請求項６に記載の管理計算機であって、
前記高頻度参照範囲決定部は、
前記グラフ型データベースと関係型データベースの対応関係を取得し、前記対応関係に基づいて前記表構造に変換したノードと、前記関係型データベースを結合することを特徴とする管理計算機。
【請求項８】
請求項７に記載の管理計算機であって、
前記問合せ実行部は、
前記関係型データベースの問合せを受け付けて、前記グラフ型データベースから抽出したノードと結合した関係型データベースを参照することを特徴とする管理計算機。
【請求項９】
請求項６に記載の管理計算機であって、
前記問合せ実行部は、
前記中間表に前記問合せに該当するデータが存在しないときには、前記関係型データベースの問合せを前記グラフ型データベースの問合せに変換し、前記変換されたグラフ型データベースの問合せで前記グラフ型データベースを参照することを特徴とする管理計算機。
【請求項１０】
請求項７に記載の管理計算機であって、
前記高頻度参照範囲決定部は、
前記関係型データベースをグラフ型データに変換してから前記抽出したノードと結合することを特徴とする管理計算機。
【請求項１１】
プロセッサとメモリを備えた計算機を制御するプログラムを格納した記憶媒体であって、
グラフ型データベースのノードの種別毎に参照頻度を取得する第１の手順と、
前記計算機が、前記参照頻度が閾値以上のノードの種別を抽出する第２の手順と、
前記計算機が、前記抽出したノードを表構造に変換し、中間表として保持する第３の手順と、
前記計算機が、関係型データベースの問合せを受け付けて、前記中間表を参照する第４の手順と、
を前記計算機に実行させるプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【請求項１２】
請求項１１に記載の記憶媒体であって、
前記第３の手順は、
前記グラフ型データベースと関係型データベースの対応関係を取得する手順と、
前記対応関係に基づいて前記表構造に変換したノードと、前記関係型データベースを結合する手順と、
を含むことを特徴とするプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【請求項１３】
請求項１２に記載の記憶媒体であって、
前記第４の手順は、
前記関係型データベースの問合せを受け付けて、前記グラフ型データベースから抽出したノードと結合した関係型データベースを参照することを特徴とするプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【請求項１４】
請求項１１に記載の記憶媒体であって、
前記第４の手順は、
前記中間表に前記問合せに該当するデータが存在しないときには、前記関係型データベースの問合せを前記グラフ型データベースの問合せに変換する手順と、
前記変換されたグラフ型データベースの問合せで前記グラフ型データベースを参照する手順と、
を含むことを特徴とするプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【請求項１５】
請求項１２に記載の記憶媒体であって、
前記対応関係に基づいて前記表構造に変換したノードと、前記関係型データベースを結合する手順は、
前記関係型データベースをグラフ型データに変換してから前記抽出したノードと結合することを特徴とするプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフ型データベースに格納されたデータを、関係型データベースのインターフェースを用いて効率的にアクセスする技術に関する。
【背景技術】
【０００２】
グラフ型データベースは、ソーシャルネットワークにおける人間関係、あるいは物流網における配送状況などの複雑な関係を表現するためのデータを、そのままの形で格納する事が出来、関係型データベース（Relational Data Base）のように格納前にスキーマ設計を必要としない柔軟性が大きな利点である。【０００３】
関係型データベースでは、ＳＱＬ（Structured Query Language）と呼ばれる問合せ要求を用いてデータベースに格納されたデータに対する複雑な検索及び分析処理を行う事ができる（例えば、非特許文献１）。グラフ型データベースにおいても同等の処理機能を有するＳＰＡＲＱＬ（SPARQL Protocol and RDF Query Language）と呼ばれる問合せ要求を用いて複雑な処理を行う事が出来る（例えば、非特許文献２）。【０００４】
しかし、既存の業務システムの構築においては、関係型データベースを用いることがこれまで一般的であり、数多くの業務システムのデータが関係型データベースに格納されて利用されている。そのためグラフ型データベースに格納されたデータと関係型データベースに格納されたデータを組合せて検索及び分析処理を行うことが出来ないという問題があった。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「ＳＱＬスーパーテキスト」、山平耕作、土田正士、小寺孝著、技術評論社、2004年03月  発行
【非特許文献２】「セマンティックＷｅｂプログラミング」、Toby Segaran, Colin Evans, Jamie Taylor著、オライリージャパン/オーム社、2010年06月  発行
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の問題に対して、データベースにアクセスを行う上位プログラム側で、関係型データベース（ＲＤＢ）とグラフ型データベースの両者に格納されたデータの組合せを行う。あるいは、関係型データベース側にグラフ型データベースに格納されたデータを格納するためのテーブルを別途用意し、ＳＰＡＲＱＬを用いて用意したテーブルに合せてグラフ型データベースに格納されたデータを取り出し、関係型データベースに格納し直すことが考えられる。【０００７】
このとき、関係型データベースとグラフ型データベースの組合せ方法を変更する毎に上位プログラムの再開発が必要となる。あるいは、グラフ型データベースに格納されたデータを抽出するためのＳＰＡＱＬ文を用意すると共にデータの移動に時間とコストが必要となることが問題であった。【０００８】
そこで本発明は、上記問題点に鑑みてなされたもので、グラフ型データベースに格納されたデータと関係型データベースに格納されたデータとを組合せて効率的に検索及び分析処理を行うことを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、プロセッサとメモリを備えた計算機で、グラフ型データベースと関係型データベースを管理するデータベースの管理方法であって、前記計算機が、前記グラフ型データベースのノードの種別毎に参照頻度を取得する第１のステップと、前記計算機が、前記参照頻度が閾値以上のノードの種別を抽出する第２のステップと、前記計算機が、前記抽出したノードを表構造に変換し、中間表として保持する第３のステップと、前記計算機が、前記関係型データベースの問合せを受け付けて、前記中間表を参照する第４のステップと、を含む。
【発明の効果】
【００１０】
したがって、本発明によれば、グラフ型データベースに格納されたデータと関係型データベースに格納されたデータの対応関係を定義することで、両者のデータを組合せた検索及び分析処理を、関係型データベースのインターフェースを用いて実行することが可能となる。また、関係型データベースとグラフ型データベースのそれぞれのデータベースに格納されたデータに対する参照統計情報を参照して、中間表データを生成することで、関係型とグラフ型の両者のデータベースの効率的な検索が可能になる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例を示し、計算機システムの一例を示すブロック図である。
【図２】本発明の実施例を示し、計算機システムで行われる処理の概要を示すブロック図である。
【図３】本発明の実施例を示し、計算機システムで行われる処理の概要を示すフローチャートである。
【図４】本発明の実施例を示し、検索対象となるグラフ型データベースの一例（組織グラフ）を示す図である。
【図５】本発明の実施例を示し、検索対象となるグラフ型データベースの一例（課目グラフ）を示す図である。
【図６】本発明の実施例を示し、検索対象となる関係型データベースの一例を示した説明図である。
【図７】本発明の実施例を示し、グラフ型データベースと関係型データベースの対応関係を定義する処理の一例を示すフローチャートである。
【図８】本発明の実施例を示し、検索対象となるグラフ型データベースと関数型データベースのノード種別及びカラム種別の一覧を抽出したグラフ表現の一例である。
【図９Ａ】本発明の実施例を示し、グラフ型データベース（組織グラフ）と関係型データベースの対応関係を定義する画面の一例を示す説明図である。
【図９Ｂ】本発明の実施例を示し、グラフ型データベース（課目グラフ）と関係型データベースの対応関係を定義する画面の一例を示す説明図である。
【図９Ｃ】本発明の実施例を示し、関係型データベースを定義する画面の一例を示す説明図である。
【図９Ｄ】本発明の実施例を示し、グラフ型データベースと関係型データベースを対応付ける画面の一例を示す説明図である。
【図１０】本発明の実施例を示し、フロントエンド計算機で行われる参照統計情報の取得及び中間表の生成処理の一例を示すフローチャートである。
【図１１】本発明の実施例を示し、フロントエンド計算機で行われる問合せの受付と、参照統計情報を設定する処理の一例を示すフローチャートである。
【図１２Ａ】本発明の実施例を示し、グラフ型データベースに対する問合せの一例を示す説明図である。
【図１２Ｂ】本発明の実施例を示し、グラフ型データベースに対する問合せの一例を示す説明図である。
【図１２Ｃ】本発明の実施例を示し、関係型データベースに対する問合せの一例を示す説明図である。
【図１３】本発明の実施例を示し、グラフ表現に参照統計情報を加味した図である。
【図１４Ａ】本発明の実施例を示し、ノードの参照統計情報を示すテーブルである。
【図１４Ｂ】本発明の実施例を示し、エッジの参照統計情報を示すテーブルである。
【図１５】本発明の実施例を示し、高頻度参照範囲を決定する処理の一例を示すフローチャートである。
【図１６】本発明の実施例を示し、中間表を生成する処理の一例を示すフローチャートである。
【図１７】本発明の実施例を示し、全体グラフを示す説明図である。
【図１８】本発明の実施例を示し、高頻度参照範囲のエッジを含むグラフを示す説明図である。
【図１９Ａ】本発明の実施例を示し、高頻度参照範囲のノードとして特定されたグラフである。
【図１９Ｂ】本発明の実施例を示し、同じく、高頻度参照範囲のノードとして特定されたグラフである。
【図１９Ｃ】本発明の実施例を示し、同じく、高頻度参照範囲のノードとして特定されたグラフである。
【図１９Ｄ】本発明の実施例を示し、同じく、高頻度参照範囲のノードとして特定されたグラフである。
【図１９Ｅ】本発明の実施例を示し、同じく、高頻度参照範囲のノードとして特定されたグラフである。
【図２０】本発明の実施例を示し、中間表の一例を示す図である。
【図２１】本発明の実施例を示し、中間表生成後の問合せの受付と実行に関する処理の一例を示すフローチャートである。
【図２２】本発明の実施例を示し、中間表生成後の問合せの変換例を示した図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１３】
図１は、本発明の実施例を示し、複数のデータベースを管理する計算機システムの一例を示すブロック図である。
【００１４】
図１において、フロントエンド計算機１００は、ネットワーク４００を介してグラフ型データベースを管理するバックエンド計算機２００と、関係型データベース（Relational database）を管理するバックエンド計算機３００に接続される。フロントエンド計算機１００は、ネットワーク４００を介して図示しない計算機から問合せを受け付けると、関係型データベースへの問合せと、グラフ型データベースへの問合せを自動的に振り分けて、バックエンド計算機２００、３００に問合せを発行する。そして、フロントエンド計算機１００は、バックエンド計算機２００、３００からの問合せ結果を、図示しない問合せ元の計算機に応答する。フロントエンド計算機１００は、グラフ型データベース２２０と関係型データベース３２０を管理する管理計算機として機能する。
【００１５】
バックエンド計算機（＃１）２００は、プロセッサ２０１と、メモリ２０２と、記憶デバイス２０３と、ネットワークアダプタ２０４を備える。メモリ２０２には、グラフ型データベース処理部２１０がロードされプロセッサ２０１によって実行される。
【００１６】
記憶デバイス２０３には、グラフ型データベース２２０が格納される。グラフ型データベース２２０としては、ログデータ、動画や映像、文書などのメディアデータ、センサからのセンシングデータなどの非構造化データを含む。
【００１７】
グラフ型データベース処理部２１０は、フロントエンド計算機１００から問合せを受け付けるグラフ型問合せ要求受付部２１１と、受け付けた問合せ要求を実行し、問合せ結果をフロントエンド計算機１００へ出力するグラフ型問合せ処理実行部２１２を備える。グラフ型データベースへの問合せは、例えば、ＳＰＡＲＱＬ（SPARQL Protocol and RDF Query Language）を採用することができる。
【００１８】
ここで、プロセッサ２０１は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサ２０１は、グラフ型データベース処理プログラムに従って動作することで、グラフ型データベース処理部２１０として機能する。他のプログラムについても同様である。さらに、プロセッサ２０１は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００１９】
グラフ型データベース処理部２１０の各機能を実現するプログラム、テーブル等の情報は、記憶デバイス２０３や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００２０】
バックエンド計算機（＃２）３００は、プロセッサ３０１と、メモリ３０２と、記憶デバイス３０３と、ネットワークアダプタ３０４を備える。メモリ３０２には、関係型データベース処理部３１０がロードされプロセッサ３０１によって実行される。
【００２１】
記憶デバイス３０３には、関係型データベース３２０が格納される。関係型データベース３２０としては、表などの構造化データを含む。
【００２２】
関係型データベース処理部３１０は、フロントエンド計算機１００から問合せを受け付ける関係型問合せ要求受付部３１１と、受け付けた問合せを実行し、問合せ結果をフロントエンド計算機１００へ出力する関係型問合せ処理実行部３１２を備える。関係型データベースへの問合せは、例えば、ＳＱＬ（Structured Query Language）を採用することができる。
【００２３】
ここで、プロセッサ３０１は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサ３０１は、関係型データベース処理プログラムに従って動作することで、関係型データベース処理部３１０として機能する。他のプログラムについても同様である。さらに、プロセッサ３０１は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００２４】
関係型データベース処理部３１０の各機能を実現するプログラム、テーブル等の情報は、記憶デバイス３０３や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００２５】
フロントエンド計算機１００は、プロセッサ１０１と、メモリ１０２と、記憶デバイス１０３と、ネットワークアダプタ１０４を備える。メモリ１０２には、問合せ要求受付部１１０と問合せ処理実行部１２０がロードされプロセッサ１０１によって実行される。
【００２６】
記憶デバイス１０３には、後述するように、アクセス状況を格納する参照統計情報１３０と、グラフ型データベース処理部２１０の一部を抽出した中間表（中間データ）１４０が格納される。なお、中間表１４０は、メモリ１０２と記憶デバイス１０３の両者に格納されても良い。
【００２７】
問合せ要求受付部１１０は、ネットワーク４００を介して図示しない計算機や端末から問合せを受け付ける問合せ受付部１１１と、構造化データの定義を管理するスキーマ情報管理部１１２と、グラフ型データベース２２０のうちアクセス頻度の高いデータの範囲を保持する高頻度参照範囲決定部１１３と、関係型データベース３２０の問合せ（例えば、ＳＱＬ）をグラフ型データベース２２０の問合せ（例えば、ＳＰＡＱＬ等）へ変換する問合せ要求変換部１１４と、を含む。
【００２８】
問合せ要求受付部１１０は、関係型データベース３２０への問合せ（ＳＱＬ等）またはグラフ型データベース２２０への問合せ（ＳＰＡＱＬ等）を受信して、問合せ処理実行部１２０へ問合せの実行を指令する。また、問合せ要求受付部１１０は、受信した問合せがＳＱＬで記述され、グラフ型データベース２２０への問合せであれば、問合せ要求変換部１１４でＳＰＡＲＱＬ等のグラフ型データベース２２０の問合せに変換して、問合せ処理実行部１２０に問合せの実行を指令する。
【００２９】
問合せ処理実行部１２０は、問合せ要求受付部１１０からの指令に基づいて、バックエンド計算機２００のグラフ型データベース２２０とバックエンド計算機３００の関係型データベース３２０または中間表１４０への問合せを実行する。
【００３０】
問合せ処理実行部１２０は、問合せ処理を行ったデータの統計情報を参照統計情報１３０として生成し、問合せに関する値を更新する統計情報管理部１２１と、問合せを受け付けたデータの所在を管理する格納データ管理部１２２と、を含む。
【００３１】
問合せ処理実行部１２０は、問合せ要求受付部１１０からの問合せに応じて、後述するように、中間表１４０またはバックエンド計算機２００、３００に問合せを実行する。格納データ管理部１２２は、受け付けた問合せの対象となるデータが、関係型データベース３２０、グラフ型データベース２２０あるいは中間表１４０の何れに格納されているかを管理する。
【００３２】
ここで、プロセッサ１０１は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサ１０１は、問合せ要求受付プログラムに従って動作することで問合せ要求受付部１１０として機能する。他のプログラムについても同様である。さらに、プロセッサ１０１は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００３３】
問合せ要求受付部１１０及び問合せ処理実行部１２０の各機能を実現するプログラム、テーブル等の情報は、記憶デバイス１０３や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００３４】
参照統計情報１３０は、問合せ処理実行部１２０がバックエンド計算機２００、３００へ問合せを実施する度に、アクセス対象と頻度を記録する。そして、問合せ要求受付部１１０の高頻度参照範囲決定部１１３は、参照統計情報１３０を読み込んで、グラフ型データベース２２０のうちアクセス頻度の高い範囲（高頻度参照範囲）を特定し、高頻度参照範囲のノードを抽出する。そして、グラフ型データベース２２０と関係型データベース３２０の対応関係を取得してから、抽出したノードを関係型データベース３２０と結合して表構造に変換して中間表１４０を生成する。この中間表１４０は、表構造で構成されており、関係型データベースの問合せでアクセス可能となっている。
【００３５】
中間表１４０の生成は、例えば、高頻度参照範囲決定部１１３で行う。高頻度参照範囲決定部１１３は、グラフ型データベース２２０のうちアクセス頻度の高い範囲を特定する。そして、高頻度参照範囲決定部１１３は、アクセス頻度が高いと特定された範囲のグラフ型データベース２２０のノード（またはノードの種別）を抽出し、この範囲に対応する関係型データベース３２０を抽出し、これらを結合したデータを表構造に変換して中間表１４０として生成する。なお、参照頻度は、グラフ型データベース２２０のノードの種別毎に参照した回数（または参照頻度）と、グラフ型データベース２２０にアクセスした回数の総和の比から演算することができる。また、中間表１４０は、記憶デバイス１０３に加えてメモリ１０２の一部にも格納することができる。
【００３６】
ここで、高頻度参照範囲決定部１１３は、検索対象となる関係型データベース３２０とグラフ型データベース２２０の対応関係を取得して、表構造のスキーマ（ＲＤＢスキーマ１）を生成し、スキーマ情報管理部１１２に格納する。なお、表構造の関係型データベース３２０に対するスキーマ（ＲＤＢスキーマ２）は、スキーマ情報管理部１１２へ格納される。関係型データベース３２０に対するスキーマ（ＲＤＢスキーマ２）は、関係型データベース３２０を定義する際や、更新する際に設定される。
【００３７】
図２は、フロントエンド計算機１００で行われる処理の概要を示すブロック図である。フロントエンド計算機１００は、ネットワーク４００から表構造またはグラフ構造の問合せを受け付けて、参照されたデータについて参照統計情報１３０を生成する。
【００３８】
そして、フロントエンド計算機１００は、参照統計情報１３０に基づいてグラフ型データベース２２０の一部と関係型データベース３２０の一部を結合して表構造に変換した中間表１４０を生成する。
【００３９】
中間表１４０のアクセスについては、表構造であるので関係型データベース３２０の問合せを利用して、グラフ型データベース２２０の要素にアクセスすることが可能となる。また、中間表１４０は、グラフ型データベース２２０と関係型データベース３２０を結合した表であるので、グラフ型データベース２２０と関係型データベース３２０の参照を並列的に行うことも実現できる。
【００４０】
さらに、中間表１４０に存在しないデータについては、グラフ型データベース２２０と関係型データベース３２０への問合せに振り分けて、バックエンド計算機２００のグラフ型データベース２２０と、バックエンド計算機３００の関係型データベース３２０への問合せを並列的に実行する。
【００４１】
ここで、グラフ型データベース２２０への問合せについては、問合せ要求変換部１１４が、表構造の問合せをグラフ型データベース２２０の問合せに変換してバックエンド計算機２００に問い合わせることができる。例えば、問合せ要求変換部１１４は、関係型データベース（ＲＤＢスキーマ１）に対する問合せ（例えば、ＳＱＬ）を、ＳＰＡＲＱＬ等のグラフ型データベース２２０への問合せに変換して、バックエンド計算機２００に問合せを実行する。
【００４２】
このように、フロントエンド計算機１００では、参照頻度の高いグラフ型データベース２２０の一部を、関係型データベース３２０と対応付けて中間表１４０として抽出しておく。そして、ネットワーク４００から問合せを受け付けると、スキーマ１で中間表１４０をアクセスし、問合せたデータが中間表１４０に存在しない場合のみ、問合せ要求変換部１１４でＳＱＬをＳＰＡＲＱＬ等に変換しグラフ型データベース２２０にアクセスし、また、ＳＱＬによって関係型データベース３２０にも並列的にアクセスすることができる。
【００４３】
したがって、中間表１４０に問合せたデータがある場合には、バックエンド計算機２００、３００へのアクセスが発生しないため、高速に処理を実行することができる。
【００４４】
なお、図２において、ネットワーク４００からの問合せからＲＤＢスキーマ２を用いて関係型データベース３２０へアクセスを行っても良い。また、ネットワーク４００からの問合せからＲＤＢスキーマ１を用いてグラフ型データベース２２０へアクセスを行っても良い。また、ネットワーク４００からグラフ型データベース２２０の問合せを受け付けて、グラフ型データベース２２０にアクセスしてもよい。
【００４５】
次に、バックエンド計算機２００、３００のデータベースについて説明する。図４は、グラフ型データベース２２０のうち、大学の組織（Organization）のグラフを示す。図５は、グラフ型データベース２２０のうち、大学の課目（Syllabus）のグラフを示す。図６は、関係型データベース３２０のうち、生徒の評価（Evaluation）テーブル３２０Ａを示す。
【００４６】
図４の大学の組織グラフは、国（Country）Ｎ１をルートとして、場所（Location）Ｎ２、大学（University）Ｎ３、学部（Faculty）Ｎ４、教授（Professor）Ｎ５のノードまでを辿るグラフを構成している。
【００４７】
図５の課目グラフは、教授（Professor）Ｎ６をルートとして、講義（Lecture）Ｎ７、教室（Classroom）Ｎ８、生徒（Student）Ｎ９のノードまでを辿るグラフを構成している。
【００４８】
図６の評価テーブル３２０Ａは、生徒（Student）３２０１と、講義（Lecture）３２０２と、成績（Grade）３２０３から１つのレコードが構成される。なお、図６において、Ｎ１０、Ｎ１１、Ｎ１２の符号は、生徒（Student）３２０１と、講義（Lecture）３２０２と、成績（Grade）３２０３のフィールドをグラフ構造で表すときのノード名を示す。
【００４９】
図３は、フロントエンド計算機１００で行われる処理の概要を示すフローチャートである。この処理は、フロントエンド計算機１００の起動後から開始されて、問合せを受け付けて参照統計情報１３０を蓄積した後に中間表１４０を作成し、中間表１４０を利用して問合せを受け付けるまでの処理を示す。
【００５０】
まず、ステップＳ１において、フロントエンド計算機１００は、検索対象となるグラフ型データベース２２０と、関係型データベース３２０の対応関係を定義する。例えば、フロントエンド計算機１００のスキーマ情報管理部１１２は、グラフ型データベース２２０のノードに格納されている値と、関係型データベース３２０のフィールドに格納されている値を関連付けるキーを抽出してＲＤＢスキーマ１を定義する。
【００５１】
上記図３〜図５の例では、図４のグラフの講義（Lecture）と、図５の評価テーブル３２０Ａの講義（Lecture）３２０２のフィールドを対応付け、図４のグラフの生徒（student）と、図５の評価テーブル３２０Ａの生徒（student）３２０１のフィールドを対応付ける。
【００５２】
フロントエンド計算機１００のスキーマ情報管理部１１２は、この対応関係をＲＤＢスキーマ１として保持する。
【００５３】
このように、一例としては、ノードの種別と、フィールドの名称が一致するグラフ型データベース２２０のノードと、関係型データベース３２０のフィールドを対応関係にあると定義することができる。この他、ノードの種別と、フィールドの名称に共通する単語が含まれる場合に対応関係にあると定義するようにしてもよい。
【００５４】
次に、ステップＳ２において、フロントエンド計算機１００では、バックエンド計算機２００、３００に格納されているデータベースに対する問合せを受け付けて、データベースへのアクセスを実行する。
【００５５】
フロントエンド計算機１００は、ネットワーク４００に接続された計算機（クライアント等、図示省略）から問合せを受け付けると、バックエンド計算機２００または３００にアクセスして問合せを実行する。このとき、フロントエンド計算機１００の統計情報管理部１２１は、グラフ型データベース２２０のノードの問合せの履歴を参照統計情報１３０として蓄積する。
【００５６】
そして、フロントエンド計算機１００は、所定のタイミングでアクセス頻度の高いグラフ型データベース２２０のノードを抽出して中間表１４０を生成する。中間表１４０の生成については後述する。なお、所定のタイミングは、例えば、フロントエンド計算機１００が中間表１４０を作成するコマンドを受信したときや、所定の周期となったとき等である。
【００５７】
次に、ステップＳ３において、フロントエンド計算機１００では、図２で示したように、グラフ型データベース２２０へのアクセスを含む問合せを受け付けると、ＲＤＢスキーマ１を介して中間表１４０にアクセスする。そして、フロントエンド計算機１００は、中間表１４０に問合せ結果があれば、中間表１４０から問合せ結果をネットワーク４００の計算機（図示省略）へ応答する。一方、中間表１４０に問合せ結果がなければ、バックエンド計算機２００及び３００に問合せを実行し、グラフ型データベース２２０と関係型データベース３２０にアクセスする。
【００５８】
図７は、図３のステップＳ１で行われるサブルーチンを示すフローチャートである。この処理は、フロントエンド計算機１００のスキーマ情報管理部１１２で行うことができる。
【００５９】
まず、ステップＳ１１で、検索対象となるバックエンド計算機２００のグラフ型データベース２２０から、グラフを構成するノードの種別の一覧を取得する。
【００６０】
次に、ステップＳ１２で、検索対象となるバックエンド計算機３００の関係型データベース３２０から、カラムの種別（フィールドの名称）の一覧を取得する。
【００６１】
そして、ステップＳ１３では、上述のように、ノードの種別と、カラムの種別（フィールドの名称）が一致するグラフ型データベース２２０のノードと、関係型データベース３２０のフィールドを対応関係にあると定義する。
【００６２】
上記サブルーチンにより、グラフ型データベース２２０のノードと、関係型データベース３２０のフィールド（カラム）の対応関係が抽出され、ＲＤＢスキーマ１を構成する要素が生成される。
【００６３】
図８は、検索対象となるグラフ型データベースと関数型データベースのノード種別及びカラム種別の全体の関連をグラフで表現した例を示す説明図である。
【００６４】
図中Type:CountryＮ１〜ProfessorＮ５は、図４に示した大学の組織のグラフを構成するノードの種別を示す。また、図中Type:ProfessorＮ６〜StudentＮ９は、図５に示した大学の課目のグラフを構成するノードの種別を示す。そして、図中Type:LetureＮ１０〜GradeＮ１２は、図６に示した生徒の評価テーブル３２０Ａのカラムの種別を、StudentＮ１０、LectureＮ１１、GradeＮ１２のノードとしてグラフ型で示したものである。
【００６５】
そして、図８において、Ｃ１、Ｃ２は、後述する図９Ｄの設定画面２２０Ｄで設定される結合条件の一例を示す。ここで、結合条件Ｃ１は、図４のグラフのエンドポイント＃１のノードとなる種別＝ProfessorＮ５と、図５のグラフのルート（エンドポイント＃２）ノードとなる種別＝ProfessorＮ６の値が等しければ、図４のグラフと図５のグラフを結合する。
【００６６】
一方、結合条件Ｃ２は、図５のグラフのエンドポイント＃１のノードとなる種別＝ProfessorＮ５の値が、図６のノードのＮ１０と一致し、かつ、図５のグラフの図中Type:StudentＮ９の値が、図６のノードＮ１２の値と一致する場合、図５のグラフと図６のグラフ表現を結合することを示している。
【００６７】
以上のように、本発明では、関係型データベース３２０のカラムの種別を、一時的にグラフ表現にすることで、グラフ型データベース２２０と関係型データベース３２０の対応関係を抽出することができる。
【００６８】
図９Ａ〜図９Ｄは、グラフ型データベース２２０と関係型データベース３２０の対応関係を定義する画面の一例を示す説明図である。グラフ型データベース２２０と関係型データベース３２０の対応関係を定義する画面は、フロントエンド計算機１００に接続された図示しない端末の表示装置に出力される。管理者などは、これらの画面から対応関係を設定するノードを図示しない入力装置から入力する。
【００６９】
図９Ａは、グラフ型データベース２２０のうち大学の組織グラフのノードを設定する画面である。この設定画面２２０Ａは、例えば、表構造で構成され、ノード番号を格納する＃２２０１と、ノードの種別を格納するＴｙｐｅ２２０２と、抽出元のデータベース名を格納するＳｏｕｒｃｅ２２０３と、射影の有無を設定するＰｒｏｊｅｃｔｉｏｎ２２０４と、他のデータベースと結合するか否かを設定するＣｏｎｎｅｃｔｉｏｎ２２０５から一つのエントリが構成される。
【００７０】
設定画面２２０Ａを使用する管理者等は、入力装置を操作して射影が必要な場合にはＰｒｏｊｅｃｔｉｏｎ２２０４に「＋」を入力する。なお、射影は利用するノードまたはカラムに対して「＋」を設定すればよい。また、他のデータベースと結合するノードでは、Ｃｏｎｎｅｃｔｉｏｎ２２０５に「＋」を設定する。図示の例では、ノード番号２２０１＝Ｎ５が他のデータベースと結合するように「＋」が設定される。
【００７１】
図９Ｂは、グラフ型データベース２２０のうち課目グラフのノードを設定する画面である。この設定画面２２０Ｂも上記図９Ａと同様に、表構造で構成される。設定画面２２０Ｂも、図９Ａと同じく、ノード番号を格納する＃２２０１と、ノードの種別を格納するＴｙｐｅ２２０２と、抽出元のデータベース名を格納するＳｏｕｒｃｅ２２０３と、射影の有無を設定するＰｒｏｊｅｃｔｉｏｎ２２０４と、他のデータベースと結合するか否かを設定するＣｏｎｎｅｃｔｉｏｎ２２０５から一つのエントリが構成される。
【００７２】
設定画面２２０Ｂを使用する管理者等は、入力装置を操作して射影が有る場合にはＰｒｏｊｅｃｔｉｏｎ２２０４に「＋」を入力する。また、他のデータベースと結合するノードでは、Ｃｏｎｎｅｃｔｉｏｎ２２０５に「＋」を設定する。図示の例では、ノード番号２２０１＝Ｎ７，Ｎ９が他のデータベースと結合するように「＋」が設定される。
【００７３】
図９Ｃは、関係型データベース３２０のカラムを設定する画面である。この設定画面２２０Ｃも上記図９Ａと同様に、表構造で構成される。設定画面２２０Ｃは、カラムに対応するノード番号を格納する＃２２０１Ｃと、カラムの種別を格納するＴｙｐｅ２２０２Ｃと、抽出元のデータベース名を格納するＳｏｕｒｃｅ２２０３Ｃと、射影の有無を設定するＰｒｏｊｅｃｔｉｏｎ２２０４Ｃと、他のデータベースと結合するか否かを設定するＣｏｎｎｅｃｔｉｏｎ２２０５Ｃから一つのエントリが構成される。
【００７４】
設定画面２２０Ｃを使用する管理者等は、入力装置を操作して射影が有る場合にはＰｒｏｊｅｃｔｉｏｎ２２０４Ｃに「＋」を入力する。また、他のデータベースと結合するノードでは、Ｃｏｎｎｅｃｔｉｏｎ２２０５Ｃに「＋」を設定する。図示の例では、ノード番号２２０１＝Ｎ１０、Ｎ１１が他のデータベースと結合するように「＋」が設定される。
【００７５】
図９Ｄは、図９Ａ〜図９ＣのＣｏｎｎｅｃｔｉｏｎ２２０５、２２０５Ｃに「＋」を設定したノードの結合条件を設定する設定画面２２０Ｄの説明図である。
【００７６】
この設定画面２２０Ｃは、例えば、表構造で構成される。設定画面２２０Ｄは、結合条件の番号を格納する＃２２０１Ｄと、結合するノードの一方を格納するＥｎｄｐｏｉｎｔ１（２２０２Ｄ）と、結合するノードの他方を格納するＥｎｄｐｏｉｎｔ２（２２０３Ｄ）と、結合条件を格納するＪｏｉｎ  Ｃｏｎｎｅｃｔｉｏｎ２２０４Ｄから一つのエントリが構成される。
【００７７】
図中、結合条件番号＝Ｃ１では、ノードＮ５の値と、ノードＮ６の値が等しければ、大学の組織グラフと大学の課目グラフを結合する条件が設定されている。この設定は、管理者等が前記端末の図示しない入力装置より入力した情報である。
【００７８】
同様に、図中結合条件番号＝Ｃ２では、ノードＮ５の値と、ノードＮ１０の値が等しく、かつ、ノードＮ９の値と、ノードＮ１１の値が等しければ、大学の課目グラフと関係型データベース３２０のグラフ表現を結合する条件が設定されている。この設定も、上記と同様であり、管理者等が入力装置より入力した情報である。
【００７９】
以上のように、フロントエンド計算機１００では、グラフ型データベース２２０と関係型データベース３２０のノードの種別とカラムの種別が抽出され、結合するノード及びカラムのグラフ表現の条件を管理者が操作する端末等から設定することで、グラフ型データベース２２０と関係型データベース３２０の対応関係を定義することができる。
【００８０】
図１０は、フロントエンド計算機１００で行われる参照統計情報の取得及び中間表の生成処理の一例を示すフローチャートである。このフローチャートは、図３のステップＳ２で行われる処理のひとつを示すサブルーチンである。
【００８１】
まず、ステップＳ２１では、フロントエンド計算機１００の統計情報管理部１２１が、問合せの実行によって参照されたノードとエッジについて参照統計情報１３０を取得する。
【００８２】
次に、ステップＳ２２では、高頻度参照範囲決定部１１３が、ノードとエッジに関する統計情報に基づいて、高頻度で参照されたグラフ型データベース２２０の範囲を演算する。この処理については、図１５等で後述する。
【００８３】
ステップＳ２３では、格納データ管理部１２２が決定された高頻度参照範囲からデータを抽出して、中間表１４０を生成する。この処理については、図１５等で後述する。なお、フロントエンド計算機１００は、中間表１４０を作成する指令を受信したときに、当該ステップＳ２３を実行する。フロントエンド計算機１００は、中間表１４０を作成する指令を受信していない場合には、このステップ２３をスキップすることができる。
【００８４】
図１１は、フロントエンド計算機１００で行われる参照統計情報１３０を設定する処理の一例を示すフローチャートである。この処理は、フロントエンド計算機１００の起動後から実行され、終了要求を受け付けるまで繰り返して処理を実行する。
【００８５】
ステップＳ３１では、統計情報管理部１２１が、参照統計情報１３０に対して所定の初期化を行う。次に、ステップＳ３２では、問合せ要求受付部１１０が、ネットワーク４００から問合せや、その他の要求を受け付ける。
【００８６】
ステップＳ３３では、問合せ受付部１１１が、ネットワーク４００から終了要求を受け付けたか否かを判定する。終了要求を受け付けた場合には、当該処理を終了する。一方、問合せを受け付けた場合は、ステップＳ３４へ進む。
【００８７】
ステップＳ３４では、問合せ受付部１１１が受け付けた問合せが、グラフ型データベース２２０への問合せ（ＳＰＡＲＱＬ等）であるか否かを判定する。グラフ型データベース２２０への問合せであれば、ステップＳ３５へ進み、関係型データベース３２０への問合せであればステップＳ３７へ進む。ここで問合せ受付部１１１は、統計情報管理部１２１へ問合せを送信して、参照統計情報１３０の更新を指令する。
【００８８】
問合せ要求受付部１１０が受け付ける問合せの一例を図１２Ａ〜図１２Ｃに示す。図１２Ａ、図１２Ｂは、グラフ型データベース２２０への問合せをＳＰＡＱＬで記述した例である。図１２Ｃは、関係型データベース３２０への問合せをＳＱＬで記述した例である。
【００８９】
グラフ型データベース２２０への問合せがＳＰＡＱＬの場合、ステップＳ３５において統計情報管理部１２１は、ＳＰＡＱＬ文のＷＨＥＲＥ句で参照される各ノードの種別を参照統計情報１３０から特定し、このノードの種別の参照回数に１を加算する。なお、当該ノードの種別が参照統計情報１３０に存在しない場合には、統計情報管理部１２１が当該ノードの種別を参照統計情報１３０に加えて、参照回数に１を加える。
【００９０】
次に、ステップＳ３６において統計情報管理部１２１は、ＳＰＡＱＬ文のＷＨＥＲＥ節で参照される各エッジの種別を参照統計情報１３０から特定し、このエッジの種別の参照回数に１を加算する。なお、当該エッジの種別が参照統計情報１３０に存在しない場合には、統計情報管理部１２１が当該エッジの種別を参照統計情報１３０に加えて、参照回数に１を加える。その後、ステップＳ３２へ戻って次の問合せを受け付ける。
【００９１】
関係型データベース３２０への問合せがＳＱＬの場合、ステップＳ３７において統計情報管理部１２１は、ＳＱＬ文のＳＥＬＥＣＴ句、ＷＨＥＲＥ句及びＧＲＯＵＰ  ＢＹ句で参照される各カラムの種別を参照統計情報１３０から特定し、このカラムの種別の参照回数に１を加算する。なお、当該カラムの種別が参照統計情報１３０に存在しない場合には、統計情報管理部１２１が当該ノードの種別を参照統計情報１３０に加えて、参照回数に１を加える。
【００９２】
次に、ステップＳ３８において統計情報管理部１２１は、ＳＱＬ文のＦＲＯＭ句で参照される各表について参照統計情報１３０から特定し、この表の参照回数に１を加算する。なお、当該表が参照統計情報１３０に存在しない場合には、統計情報管理部１２１が当該表の種別を参照統計情報１３０に加えて、参照回数に１を加える。その後、ステップＳ３２へ戻って次の問合せを受け付ける。
【００９３】
ここで、参照回数を管理する参照統計情報１３０の一例を図１４Ａ、図１４Ｂに示す。図１４Ａは、ノードに関する統計情報を格納する参照統計情報１３０Ａを示す。図１４Ｂは、エッジに関する統計情報を格納する参照統計情報１３０Ｂを示す。なお、カラムと表に関する参照統計情報は図示を省略するが、参照統計情報１３０Ａ、１３０Ｂと同様に構成される。これらの参照統計情報１３０Ａ，１３０Ｂの総称を参照統計情報１３０とする。
【００９４】
図１４Ａに示す参照統計情報１３０Ａは、ノードの番号を格納する＃１３０１Ａと、ノードの種別の名称を格納するノード種別名１３０２Ａと、参照回数１３０３Ａと、参照回数を総数（Ｔｏｔａｌ）で除した参照頻度１３０４Ａからひとつのレコードが構成される。なお、参照頻度１３０４Ａの演算は、参照回数の設定時など所定のタイミングで統計情報管理部１２１が実行する。
【００９５】
図１４Ｂに示す参照統計情報１３０Ｂは、エッジの番号を格納する＃１３０１Ｂと、エッジの種別の名称を格納するエッジ種別名１３０２Ｂと、参照回数１３０３Ｂと、参照回数を総数（Ｔｏｔａｌ）で除した参照頻度１３０４Ｂからひとつのレコードが構成される。なお、参照頻度１３０４Ｂの演算は、参照回数の設定時など所定のタイミングで統計情報管理部１２１が実行する。
【００９６】
なお、参照統計情報１３０Ａ、１３０Ｂは、統計情報管理部１２１の初期化時に、統計情報管理部１２１がグラフ型データベース２２０からノードの種別などを取得して生成してもよい。また、エッジの参照統計情報１３０Ｂは、予めエッジ種別名を設定した参照統計情報１３０Ｂを用意しておいても良い。
【００９７】
上記図１１の処理を繰り返した結果、図１４Ａ、図１４Ｂで示すように参照統計情報１３０Ａ、１３０Ｂが更新され、ノードとエッジの参照回数及び参照頻度が更新される。また、図示はしないが、関係型データベース３２０のカラムと表の参照回数も更新される。そして、上記図８のグラフ表現に参照回数（または参照頻度）を加味すると、図１３に示すようになる。
【００９８】
図１３は、図８に示した全体関連図のグラフ表現に、図１４Ａ，図１４Ｂ等の参照統計情報１３０を加味したグラフ表現である。図１３は、グラフ表現のエッジの太さを、参照回数（または参照頻度）の値に応じて設定した図である。図１３において、参照回数が多いほどエッジの線は太く設定される。図１３では、エッジＥ５、Ｅ７、Ｅ８に対する参照頻度が高頻度であることが示される。
【００９９】
図１５は、高頻度参照範囲決定部１１３が高頻度参照範囲を決定する処理の一例を示すフローチャートである。この処理は、図１０のステップＳ２２で行われる処理のサブルーチンを示す。
【０１００】
ステップＳ４１では、高頻度参照範囲決定部１１３が、高頻度参照範囲を決定するための値として、参照頻度の総和の上限値Ｕを設定する。上限値Ｕは、予め設定した値である。
【０１０１】
ステップＳ４２では、高頻度参照範囲決定部１１３が、参照統計情報１３０から参照回数及び参照頻度を取得し、図１３に示したグラフ型データベース２２０と関係型データベース３２０の全体関連図であるグラフ表現のエッジに重み付けを実施する。この重み付けは、図１３で示したように、グラフ型データベース２２０と関係型データベース３２０を結合した全体関連図のグラフについて、図１４Ｂに示した参照統計情報１３０Ｂの参照頻度１３０４Ｂを各エッジ種別名１３０２Ｂの重みとする。
【０１０２】
次に、ステップＳ４３において、高頻度参照範囲決定部１１３は抽出対象のエッジを格納するエッジ集合Ｅを空集合にして初期化する。
【０１０３】
ステップＳ４４では、高頻度参照範囲決定部１１３は、図１３に示したグラフ型データベース２２０と関係型データベース３２０を結合したグラフＧを構成するエッジについて、重みの小さい順にソートし、このソートした結果をエッジ候補Ｃとする。すなわち、図１４Ｂに示した参照統計情報１３０Ｂを、参照頻度の小さい順に並べ替えたものをエッジ候補Ｃとする。
【０１０４】
次に、ステップＳ４５において、高頻度参照範囲決定部１１３は、エッジ候補Ｃから、重みが最小のエッジｅを選択する。
【０１０５】
ステップＳ４６では、高頻度参照範囲決定部１１３がエッジｅをエッジ集合Ｅへ加えた場合、閉路が形成されるか否かを判定する。閉路が形成されなければステップＳ４５に戻って、次のエッジｅを選択する。
【０１０６】
一方、エッジ集合Ｅ内で閉路が形成された場合は、ステップＳ４７に進み、高頻度参照範囲決定部１１３は、現在選択したエッジｅは選択対象外と判定して、エッジ候補Ｃから削除する。ここで、閉路は、グラフ上の経路で、同じノードから出発して同じノードに戻り、すべてのエッジを一回だけ通る経路を示す。
【０１０７】
ステップＳ４８において、高頻度参照範囲決定部１１３は、エッジ集合Ｅに含まれるエッジと、選択したエッジｅの参照頻度の総和Ｔを演算する。
【０１０８】
ステップＳ４９において、高頻度参照範囲決定部１１３は、総和Ｔが上限値Ｕを超えていないことを判定する。総和Ｔが上限値Ｕ以下であれば、ステップＳ５０へ進み、総和Ｔが上限値Ｕを超えていればステップＳ５１に進む。
【０１０９】
ステップＳ５０では、高頻度参照範囲決定部１１３が選択中のエッジｅをエッジ集合Ｅに追加した後、ステップＳ４５の処理に戻って次のエッジｅを処理する。
【０１１０】
一方、ステップＳ５１では、総和Ｔが上限値Ｕ以下のため、高頻度参照範囲決定部１１３は、エッジ集合Ｅに含まれるエッジｅに接続されるノードの集合を、高頻度参照範囲として特定する。すなわち、エッジ集合Ｅに含まれるエッジｅの両端に位置するノードの集合を高頻度参照範囲として特定する。
【０１１１】
上記の処理の結果、図１４Ｂに示す参照統計情報１３０Ｂを参照頻度１３０４Ｂの小さい順にソートして、エッジ候補Ｃとする。エッジ候補Ｃから重みの小さい順に順次エッジｅを選択し、閉路を形成するエッジｅの場合、エッジ集合Ｅとエッジｅの参照頻度の総和Ｔが上限値Ｕを超えるまで、エッジ集合Ｅにエッジｅを加えていく。そして、エッジ集合Ｅのエッジに接続するノードの集合が高頻度参照範囲として特定される。
【０１１２】
上記処理により、例えば、図１８に示したエッジＥ５、Ｅ７、Ｅ８が参照頻度の高いエッジとしてエッジ集合Ｅに保持され、これらのエッジに対応するノードＮ６，Ｎ７、Ｎ９、Ｎ１２が、高頻度参照範囲として特定される。
【０１１３】
なお、上記では、参照頻度の総和Ｔと上限値Ｕを比較したが、各ノードの種別毎の参照回数が閾値以上のデータを高頻度参照範囲としてもよい。あるいは、各ノードの種別毎の参照頻度が閾値以上のデータを高頻度参照範囲としてもよい。
【０１１４】
図１６は、高頻度参照範囲決定部１１３が中間表１４０を作成する処理の一例を示すフローチャートである。この処理は、図１０のステップＳ２３で行われる処理のサブルーチンである。
【０１１５】
まず、ステップＳ５１では、高頻度参照範囲決定部１１３が、参照統計情報１３０を参照して、データベースの全体関連図を表現する全体グラフＧ（図１７参照）から、高頻度参照範囲に含まれるノードを残して、他を削除する。さらに高頻度参照範囲決定部１１３は、エッジの両端のノードが共に高頻度参照範囲に含まれるエッジを残して、他を削除した抽出後グラフを生成する。
【０１１６】
図１７の例では、高頻度参照範囲のエッジＥ５、Ｅ７、Ｅ８に対応するノードＮ６，Ｎ７、Ｎ９、Ｎ１２を残す一方、ノードＮ１〜Ｎ４、Ｎ８が削除され、図１８で示すグラフとなる。この結果、図１９Ａ〜図１９Ｅで示すようなノードが高頻度参照範囲として抽出される。
【０１１７】
次に、ステップＳ５２では、高頻度参照範囲決定部１１３が、一つのノードから同じタイプを持つノードに対して複数本のエッジが接続されている場合、そのエッジ数分のノードの複製を行う。
【０１１８】
ステップＳ５３では、高頻度参照範囲決定部１１３が、高頻度参照範囲に含まれるノードの種別をカラム名とする表を中間表１４０として定義する。すなわち、図２０で示すように、高頻度参照範囲決定部１１３は、中間表１４０のカラムを教授（Ｐｒｏｆｅｓｓｏｒ）１４０１と、講義（Lecture）１４０２と、生徒（Student）１４０３と、成績（Grade）１０４４でひとつのレコードを構成する表を定義する。
【０１１９】
ステップＳ５３では、高頻度参照範囲決定部１１３が、高頻度参照範囲として特定した図１９Ａ〜図１９Ｅのグラフのノードの種別名と、中間表１４０のカラム名１４０１〜１４０３を対応させ、図１９Ａ〜図１９Ｅにおいて連結された一連のノードを、１レコードとして、各ノードの値を中間表１４０に設定する。
【０１２０】
これにより、表構造の中間表１４０が構成され、グラフ型データベース２２０の講義（Lecture）と生徒（Student）を、表構造の関係型データベース３２０の成績（Grade）とい結合し、グラフ型データベース２２０への問合せをＳＱＬ等の関係型データベース３２０の問合せでアクセスすることが可能となる。
【０１２１】
図２１は、中間表１４０の生成後にフロントエンド計算機１００で行われる参照統計情報１３０を設定する処理の一例を示すフローチャートである。この処理は、中間表１４０の生成後に、図１１の処理に代わって実行され、終了要求を受け付けるまで繰り返して処理を実行する。
【０１２２】
ステップＳ６１では、問合せ要求受付部１１０の問合せ受付部１１１が、ネットワーク４００から問合せや、その他の要求を受け付ける。
【０１２３】
ステップＳ６２では、問合せ受付部１１１が、ネットワーク４００から終了要求を受け付けたか否かを判定する。終了要求を受け付けた場合には、当該処理を終了する。一方、問合せを受け付けた場合は、ステップＳ６４へ進む。
【０１２４】
ステップＳ６３では、問合せ受付部１１１が受け付けた問合せが、中間表１４０を利用可能な問合せであるか否かを判定する。すなわち、受け付けた問合せとは異なる形式でのノードの種別を参照するか否かを判定することは、表構造のデータベースに対する問合せで、グラフ型データベース２２０へアクセスするか否かを判定することであり、グラフ型データベース２２０と関係型データベース３２０を結合した中間表１４０を参照するか否かを意味する。
【０１２５】
この判定は、例えば、受け付けた問合せの中に中間表１４０のカラムが含まれていれば、ステップＳ６４へ進む。すなわち、受け付けた問合せとは異なる形式でのノードの種別を参照する。一方、受け付けた問合せの中に中間表１４０のカラムが含まれていなけければステップＳ６５に進んで、図１１と同様に、グラフ型データベース２２０または関係型データベース３２０の問合せを実行する。
【０１２６】
ステップＳ６４では、問合せ要求変換部１１４が、中間表１４０に対する問合せをＳＱＬで、中間表１４０に含まれないグラフ型データベース２２０への問合せをＳＰＡＱＬに変換する。この変換は、例えば、図２２で示すように行われる。図２２の変換前の問合せはＳＱＬで記述され、大学（University）、学部（Faculty）、成績（Grade）の平均を問い合わせている。ここで、問合せ要求変換部１１４は、大学（University）と学部（Faculty）は中間表１４０に含まれないので、ＳＰＡＱＬに変換してグラフ型データベース２２０に問い合わせる。一方、成績（Grade）については中間表１４０に保持しているので、ＳＱＬのままアクセスする。図２２の変換後の問合せで、「CacheTable」が中間表１４０に相当する。
【０１２７】
そして、ステップＳ６５では、上記問合せ要求変換部１１４で変換した問合せを問合せ処理実行部１２０に指令して、中間表１４０とグラフ型データベース２２０にアクセスすることができる。問合せの実行が完了すると、ステップＳ６１の処理に戻って、次の問合せを受け付ける。
【０１２８】
上記処理により、グラフ型データベース２２０のうちアクセス頻度の高いデータを、関係型データベース３２０と結合した表構造のデータベースである中間表１４０として抽出しておくことで、頻繁にアクセスするグラフ型データベース２２０を関係型データベースの問合せで参照することが可能となる。
【０１２９】
以上のように、本発明では、グラフ型データベース２２０のうち、参照頻度の総和Ｔが上限値Ｕを超えないエッジ集合Ｅを、参照頻度の高いデータとして抽出し、表構造の中間表１４０に変換する。これにより、関係型データベース３２０の問合せを用いて、中間表１４０にアクセスすることでグラフ型データベース２２０を参照することが可能なる。なお、上記実施例では、参照頻度の総和を上限値Ｕと比較したが、ノードの種別毎の参照回数が所定値以上のデータを高頻度参照範囲としてもよい。
【０１３０】
そして、中間表１４０は、参照頻度が閾値以上の高頻度参照範囲のデータを抽出したので、関係型データベース３２０の問合せをグラフ型データベース２２０の問合せに変換する頻度を低減し、グラフ型データベース２２０を高速に利用することができる。
【０１３１】
また、中間表１４０は、グラフ型データベース２２０と関係型データベース３２０の対応関係に基づいて、中間表１４０に抽出したグラフ型データベース２２０の一部と、関係型データベース３２０を結合した。これにより、ひとつの表構造の問合せで、グラフ型データベース２２０と関係型データベース３２０へ同時にアクセスすることが可能となって、異なるデータベースを効率よく利用すること画家可能となる。
【０１３２】
また、中間表１４０を生成する際には、関係型データベース３２０のデータをグラフ型データに変換してから結合する。これにより、グラフ型データベース２２０のルートからリーフ（エンドポイント）までの関係を維持して、異種のデータベースを結語することが可能となる。
【０１３３】
上記実施例では、データベースを管理する問合せ要求受付部１１０及び問合せ処理実行部１２０をフロントエンド計算機１００で実行し、グラフ型データベース２２０と関係型データベース３２０をバックエンド計算機２００、３００で提供する例を示したが、図示はしないが、ひとつの計算機でこれらの機能を提供しても良い。
【０１３４】
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
【０１３５】
また、本実施例で例示した種々のソフトウェア（プログラム）は、電磁的、電子的及び光学式等の種々の記録媒体（例えば、非一時的な計算機読取り可能な記憶媒体）に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０１３６】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【図１】
0005873935.tif 000002
【図２】
0005873935.tif 000003
【図３】
0005873935.tif 000004
【図４】
0005873935.tif 000005
【図５】
0005873935.tif 000006
【図６】
0005873935.tif 000007
【図７】
0005873935.tif 000008
【図８】
0005873935.tif 000009
【図９Ａ】
0005873935.tif 000010
【図９Ｂ】
0005873935.tif 000011
【図９Ｃ】
0005873935.tif 000012
【図９Ｄ】
0005873935.tif 000013
【図１０】
0005873935.tif 000014
【図１１】
0005873935.tif 000015
【図１２Ａ】
0005873935.tif 000016
【図１２Ｂ】
0005873935.tif 000017
【図１２Ｃ】
0005873935.tif 000018
【図１３】
0005873935.tif 000019
【図１４Ａ】
0005873935.tif 000020
【図１４Ｂ】
0005873935.tif 000021
【図１５】
0005873935.tif 000022
【図１６】
0005873935.tif 000023
【図１７】
0005873935.tif 000024
【図１８】
0005873935.tif 000025
【図１９Ａ】
0005873935.tif 000026
【図１９Ｂ】
0005873935.tif 000027
【図１９Ｃ】
0005873935.tif 000028
【図１９Ｄ】
0005873935.tif 000029
【図１９Ｅ】
0005873935.tif 000030
【図２０】
0005873935.tif 000031
【図２１】
0005873935.tif 000032
【図２２】
0005873935.tif 000033