(57)【要約】【課題】結合可能かつ結合してもデータが０件にならないクエリを導出する。【解決手段】データベースからデータを抽出するクエリの生成を支援するクエリ生成支援方法であって、前記計算機が、前記データベースから取得するデータの抽出条件をデータ抽出条件として受け付ける第１のステップと、前記計算機が、前記データベースのデータのうち、結合可能なデータをグラフデータとして抽出する第２のステップと、前記計算機が、前記データ抽出条件に基づいて前記グラフデータからサブグラフを抽出して、当該サブグラフをクエリ候補として取得する第３のステップと、前記計算機が、前記クエリ候補のランク値を算出し、当該ランク値で順位付けを行った前記クエリ候補を出力する第４のステップと、を含む。【選択図】図２
2019125283.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを有する計算機で、データベースからデータを抽出するクエリの生成を支援するクエリ生成支援方法であって、
前記計算機が、前記データベースから取得するデータの抽出条件をデータ抽出条件として受け付ける第１のステップと、
前記計算機が、前記データベースのデータのうち、結合可能なデータをグラフデータとして抽出する第２のステップと、
前記計算機が、前記データ抽出条件に基づいて前記グラフデータからサブグラフを抽出して、当該サブグラフをクエリ候補として取得する第３のステップと、
前記計算機が、前記クエリ候補のランク値を算出し、当該ランク値で順位付けを行った前記クエリ候補を出力する第４のステップと、
を含むことを特徴とするクエリ生成支援方法。
【請求項２】
請求項１に記載のクエリ生成支援方法であって、
前記計算機が、変換対象のクエリ候補を受け付けて、当該クエリ候補と前記サブグラフの対応関係に基づいてクエリを生成する第５のステップを、さらに含むことを特徴とするクエリ生成支援方法。
【請求項３】
請求項１に記載のクエリ生成支援方法であって、
前記第１のステップは、
テーブル数と、データの結合数、テーブルを結合する経路数の少なくとも一つを含む候補導出条件を受け付けて、
前記第３のステップは、
前記候補導出条件を満たす前記サブグラフを絞り込み結果として出力することを特徴とするクエリ生成支援方法。
【請求項４】
請求項１に記載のクエリ生成支援方法であって、
前記第１のステップは、
テーブル数と、データの結合数、テーブルを結合する経路数の少なくとも一つを含む候補導出条件を受け付けて、
前記第４のステップは、
前記テーブル数と、前記データの結合数と、前記テーブルを結合する経路数の少なくとも一つから前記ランク値を算出することを特徴とするクエリ生成支援方法。
【請求項５】
請求項４に記載のクエリ生成支援方法であって、
前記第４のステップは、
前記クエリ候補に対する評価値を受け付けて、当該評価値を含めて前記ランク値を算出することを特徴とするクエリ生成支援方法。
【請求項６】
請求項２に記載のクエリ生成支援方法であって、
前記第５のステップは、
前記クエリ候補とサブグラフの対応関係からＳＱＬ形式のクエリを生成することを特徴とするクエリ生成支援方法。
【請求項７】
プロセッサとメモリを有して、データベースからデータを抽出するクエリの生成を支援するクエリ生成支援装置であって、
前記プロセッサが、前記データベースから取得するデータの抽出条件をデータ抽出条件として受け付けて、
前記プロセッサが、前記データベースのデータのうち、結合可能なデータをグラフデータとして抽出し、
前記プロセッサが、前記データ抽出条件に基づいて前記グラフデータからサブグラフを抽出して、当該サブグラフをクエリ候補として取得し、
前記プロセッサが、前記クエリ候補のランク値を算出して、当該ランク値で順位付けを行った前記クエリ候補を出力することを特徴とするクエリ生成支援装置。
【請求項８】
請求項７に記載のクエリ生成支援装置であって、
前記プロセッサが、変換対象のクエリ候補を受け付けて、当該クエリ候補と前記サブグラフの対応関係に基づいてクエリを生成することを特徴とするクエリ生成支援装置。
【請求項９】
請求項７に記載のクエリ生成支援装置であって、
前記プロセッサが、前記データ抽出条件に加えて、テーブル数と、データの結合数、テーブルを結合する経路数の少なくとも一つを含む候補導出条件を受け付け、
前記候補導出条件を満たすサブグラフを絞り込み結果として出力することを特徴とするクエリ生成支援装置。
【請求項１０】
請求項７に記載のクエリ生成支援装置であって、
前記プロセッサが、前記データ抽出条件に加えて、テーブル数と、データの結合数、テーブルを結合する経路数の少なくとも一つを含む候補導出条件を受け付け、
前記プロセッサが、前記テーブル数と、前記データの結合数と、前記テーブルを結合する経路数の少なくとも一つから前記ランク値を算出することを特徴とするクエリ生成支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの収集、蓄積、分析を目的として、データベースシステムを具備した計算機システムに関するものである。
【背景技術】
【０００２】
近年、業務システムで利用している業務データを分析し、その分析結果を利用したデータの利活用への取り組みがなされるようになってきている。データ分析結果を利用することで、現行業務における課題解決ならびに新サービスや新事業創生につなげることが期待されている。ここで、業務システムで利用している業務データは、業務システムの一構成要素となっている業務用データベースに格納され管理されることが多い。
【０００３】
業務用データベースには、各業務を遂行する上で必要なデータ（業務用データと時系列データ）を格納する。業務用データのデータモデルすなわちデータを格納するテーブルのスキーマ構造や属性定義などは、各業務に応じてデータ設計者が設計する。
【０００４】
時系列データは、適宜現場で発生するデータである。例えば、業務機器やセンサ装置で計測した値、センサ識別情報および計測日時が該当する。各業務の担当者は、業務用データベースから業務用アプリケーションを介して対象のデータを取得し、業務に利用する。ここで取得するデータは、データ設計者が事前に定義した形式に基づいている。
【０００５】
また、通常の業務におけるデータ利用とは別に、非定型なデータ分析やこれまで蓄積したデータを対象にして中長期的なデータ分析を行う場合がある。非定型分析や中長期的なデータ分析等を目的にして、業務用データベースの各データを定期的に情報系データベース（例えば、ＤＷＨ：Ｄａｔａ  Ｗａｒｅ  Ｈｏｕｓｅ）に移すことがある。
【０００６】
情報系データベースを利用することにより、業務用データベースを利用する業務システムに性能面や運用面で影響を与えることなく、分析作業に特化した使い方が可能になる。情報系データベースのデータモデルは、分析用途に応じて別途設計すべきであるものの、非定型分析を想定するので、業務用データのデータモデルを活用することが多い。情報系データベースでは、時系列データだけだと抽出データの絞込みは困難である。
【０００７】
分析者は、業務用データと時系列データを関連付けて対象データを絞り込む必要がある。すなわち、所望の条件に合致したデータを抽出（または選択）するためのテーブル結合条件を含むクエリ（リレーショナルデータベースを利用する場合はＳＱＬ：Structured Query Language）を生成する必要がある。
【０００８】
ただし、分析者は、業務用データのデータモデルを熟知しているとは限らない。このため、分析者は、データモデルのエンティティリレーションマップ（ＥＲ図）などを参考にして、業務用データ間の結合を試みることになる。
【０００９】
しかし、分析者が検知した最短結合パスが必ずしも最適とは限らなかったり、複数の結合パスが候補となったり、結合結果で得られるデータが要件にあわなかったりする。このため、所望のデータを抽出するためのＳＱＬクエリを簡単に生成することは難しい。データ抽出用ＳＱＬのＦＲＯＭ部分と結合条件を試行錯誤的に生成することは大変なので、これを支援できるようにすることがデータ分析を進めていく上で重要なポイントになる。
【００１０】
データベースに格納されているデータのスキーマ定義をもとにして、データベースにおける結合グラフを列挙する方法として、特許文献１で開示されている技術がある。特許文献１の技術では、リレーショナルデータベースに登録されているスキーマ定義をもとに、テーブル間の結合可能性を示す結合グラフを生成し、テーブル結合時における最適結合パスの導出に利用できる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第６９９６５６７号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１の技術では、結合グラフの生成時に実際のリレーションデータを参照していない。このため、実際のテーブルを結合しても、データの抽出結果が０件となる場合がありえる。
【００１３】
また、上記特許文献１では、テーブル間で複数の結合経路の候補が存在する場合、複数の候補の中から利用者が判断する材料を提供しておらず、さらに利用者による評価結果（当該候補が利用者にとって好適なものであったか否かを示す情報）を当該候補の導出に反映していない。このため、利用者が複数の結合経路の候補の中から選択することが困難である。また、当該結合経路の候補が複数存在する場合、利用者からの評価結果に基づいて当該候補を整列し直して提供することが困難であった。
【００１４】
これらにより、従来の技術では、テーブル間に複数の結合経路の候補が存在して、かつその結合結果で得られるデータが必ずしも利用者の要件に合致したものであるとは限らないような場合において、利用者が当該結合経路の候補の中からより最適なものを選択することが困難であった。
【００１５】
そこで本発明は、上記問題点に鑑みてなされたもので、結合可能かつ結合してもデータが０件にならないクエリを導出することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、プロセッサとメモリを有する計算機で、データベースからデータを抽出するクエリの生成を支援するクエリ生成支援方法であって、前記計算機が、前記データベースから取得するデータの抽出条件をデータ抽出条件として受け付ける第１のステップと、前記計算機が、前記データベースのデータのうち、結合可能なデータをグラフデータとして抽出する第２のステップと、前記計算機が、前記データ抽出条件に基づいて前記グラフデータからサブグラフを抽出して、当該サブグラフをクエリ候補として取得する第３のステップと、前記計算機が、前記クエリ候補のランク値を算出し、当該ランク値で順位付けを行った前記クエリ候補を出力する第４のステップと、を含む。
【発明の効果】
【００１７】
したがって、データベースシステムにおいて、スキーマ定義上結合可能であって、かつレコードレベルでリレーションデータが存在するグラフデータを対象に絞り込んだサブグラフデータをもとにクエリ候補を導出するので、結合可能かつ結合しても０件にならないクエリを導出できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施例１を示し、計算機システムの構成の一例を示すブロック図である。
【図２】本発明の実施例１を示し、データ抽出クエリ生成に関する一連の処理の流れを示すシーケンス図である。
【図３】本発明の実施例１を示し、データベースサーバに登録されるデータの一例を示すＥＲ（Ｅｎｔｉｔｙ  ｒｅｌａｔｉｏｎｓｈｉｐ）図である。
【図４Ａ】本発明の実施例１を示し、データベースサーバに登録される地域テーブルの一例を示す図である。
【図４Ｂ】本発明の実施例１を示し、データベースサーバに登録される工場テーブルの一例を示す図である。
【図４Ｃ】本発明の実施例１を示し、データベースサーバに登録される製造装置テーブルの一例を示す図である。
【図４Ｄ】本発明の実施例１を示し、データベースサーバに登録されるセンサテーブルの一例を示す図である。
【図４Ｅ】本発明の実施例１を示し、データベースサーバに登録される工場−センサテーブルの一例を示す図である。
【図４Ｆ】本発明の実施例１を示し、データベースサーバに登録される計測値テーブルの一例を示す図である。
【図４Ｇ】本発明の実施例１を示し、データベースサーバに登録される地域−工場テーブルの一例を示す図である。
【図４Ｈ】本発明の実施例１を示し、データベースサーバに登録される工場−製造装置テーブルの一例を示す図である。
【図４Ｉ】本発明の実施例１を示し、データベースサーバに登録される地域−センサテーブルの一例を示す図である。
【図４Ｊ】本発明の実施例１を示し、データベースサーバに登録される製造装置−センサテーブルの一例を示す図である。
【図５】本発明の実施例１を示し、データベースクエリ導出サーバのグラフデータベースに登録するデータの一例を説明するエンティティ／リレーションのインスタンス図である。
【図６】本発明の実施例１を示し、データベースクエリ導出サーバにおいて、データベースサーバからデータを取得する契機と取得元に関する情報の入力画面の一例を示す図である。
【図７】本発明の実施例１を示し、データベースクエリ導出サーバにて管理するエンティティ変換表の一例を示す図である。
【図８】本発明の実施例１を示し、データベースクエリ導出サーバにて管理するリレーション変換表の一例を示す図である。
【図９】本発明の実施例１を示し、データ抽出クエリ導出条件の入力画面の一例を示す図である。
【図１０】本発明の実施例１を示し、データ抽出クエリ候補導出結果の出力画面の一例を示す図である。
【図１１】本発明の実施例１を示し、データ抽出クエリ候補をリスト形式で示す出力画面の一例を示す図である。
【図１２】本発明の実施例１を示し、データ抽出クエリ候補をグラフ形式で示す出力画面の一例を示す図である。
【図１３】本発明の実施例１を示し、データ抽出クエリ候補に対するＳＱＬクエリ変換結果を示す出力画面の一例を示す図である。
【図１４】本発明の実施例１を示し、評価値表の一例を示す図である。
【図１５】本発明の実施例１を示し、データベースクエリ導出サーバにおけるデータ登録処理の一例を示すフローチャートである。
【図１６】本発明の実施例１を示し、データ抽出クエリ候補の導出処理の一例を示すフローチャートである。
【図１７】本発明の実施例１を示し、データ抽出クエリ候補の導出処理において参照されるランク値表の一例を示す図である。
【図１８】本発明の実施例１を示し、データ抽出クエリ候補に対する利用者からの評価値登録処理の一例を示すフローチャートである。
【図１９】本発明の実施例１を示し、データ抽出クエリ候補に対するＳＱＬクエリ変換処理の一例を示すフローチャートである。
【図２０】本発明の実施例２を示し、データ抽出クエリ生成に関する一連の処理を示すシーケンス図である。
【図２１】本発明の実施例２を示し、データ抽出クエリ候補の導出結果の出力画面の一例を示す図である。
【図２２】本発明の実施例２を示し、ＳＱＬクエリ変換処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態を添付図面に基づいて説明する。
【実施例１】
【００２０】
図１は、本発明の実施例１を示し、計算機システム１の一例を示すブロック図である。概要を説明する。
【００２１】
計算機システム１は、データベースサーバ１１と、データベースクエリ導出サーバ１２と、管理サーバ１３およびクライアントマシン１４を含み、相互にネットワーク１０を介してデータ通信が可能なように接続されている。各サーバならびにクライアントマシン１４は、それぞれ複数台の装置で構成するようにしてもよい。また、一つの装置で複数の役割を担うように構成するようにしてもよい。例えば、データベースサーバとデータベースクエリ導出サーバを一台の装置で実現してもよいし、データベースクエリ導出サーバ１２とクライアントマシン１４を一台の装置で実現してもよい。
【００２２】
データベースサーバ１１は、各種データを蓄積、格納し、利用者が操作するクライアントマシン１４からの要求に応じて該当するデータを提供するデータベース機能を有する。データベースサーバ１１は、主に汎用のサーバ装置が適用され、ＣＰＵ１１１０と、メモリ１１２０と、ネットワーク１０とのデータ通信を制御するネットワークＩ／Ｆ１１３０および外部記憶装置１１４０を含み、お互いがバス１１５０で接続されている。メモリ１１２０には、データベース制御プログラム１１２１がロードされてＣＰＵ１１１０によって実行される。
【００２３】
データベース制御プログラム１１２１は、外部記憶装置１１４０のデータの登録、更新、読み出しおよび削除といった一連のデータ処理制御と、データベースにおけるデータ管理用のテーブル生成や削除、スキーマ定義生成や変更といったデータ管理制御を提供する。
【００２４】
本実施例１では、このデータベース制御プログラム１１２１に、ＳＱＬに対応したデータベースを利用した例で説明するが、この限りではない。ＮｏＳＱＬに対応したデータベース、複数のデータベースサーバと連携して稼働する並列データベースや分散データベースなどを利用してもよい。
【００２５】
外部記憶装置１１４０には、エンティティ管理テーブル３００と、リレーション管理テーブル４００及びＦＡＣＴ表５００が格納される。なお、各テーブルの内容については、図３で後述する。
【００２６】
データベースクエリ導出サーバ１２は、データベースサーバ１１が提供するデータベースの利用者が操作するクライアントマシン１４から、抽出対象データに関する情報を入力してもらい、その入力情報に基づいてデータベースサーバ１１にて利用可能なクエリを導出し、出力する機能を有する。
【００２７】
データベースクエリ導出サーバ１２は、主に汎用のサーバ装置が適用され、ＣＰＵ１２１０と、メモリ１２２０と、ネットワーク１０とのデータ通信を制御するネットワークＩ／Ｆ１２３０および外部記憶装置１２４０を含み、お互いがバス１２５０で接続されている。
【００２８】
メモリ１２２０には、クエリ導出用データベース制御プログラム１２２１と、データ登録プログラム１２２２と、クエリ候補導出プログラム１２２３と、クエリ候補評価値管理プログラム１２２４及びクエリ変換プログラム１２２５がロードされ、ＣＰＵ１２１０によって実行される。
【００２９】
また、メモリ１２２０には、エンティティ変換表２１００と、リレーション変換表２２００と、評価値表２３００およびランク値表２４００が保持される。なお、これら管理表の説明については後述する。
【００３０】
ＣＰＵ１２１０は、各プログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ１２１０は、クエリ導出用データベース制御プログラム１２２１に従って処理することでクエリ導出用データベース制御プログラム部として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１２１０は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００３１】
クエリ導出用データベース制御プログラム１２２１は、データベースサーバ１１における複数のデータ管理用のテーブル群の中から、利用者が操作するクライアントマシン１４で設定したデータ抽出条件等に基づいて、当該テーブル群を適宜選択、結合するクエリを導出する。
【００３２】
クエリ導出用データベース制御プログラム１２２１は、クエリを導出する処理に好適な形でデータを管理するデータベースを提供するために必要なデータ処理制御ならびデータ管理制御を実施する。
【００３３】
本実施例１では、クエリ導出用データベース制御プログラム１２２１に、ＯｐｅｎＣｙｐｈｅｒのクエリに対応したグラフデータベースを利用した例で説明するが、この限りではない。他のグラフデータベースを利用してもよいし、それ以外のデータベースを利用してもよい。
【００３４】
グラフデータベースを利用することで、データベースサーバ１１におけるデータ管理用のテーブル群に登録されてレコードと当該レコード間の関係を定義し、グラフ構造に基づく柔軟なクエリを利用することで当該関係を利用したテーブル間やレコード間の結合可能性を容易に可視化することができる。
【００３５】
データ登録プログラム１２２２では、データベースサーバ１１にて格納されているデータの中からデータベースクエリ導出サーバ１２にて利用するデータを取得し、クエリ導出用データベース（図示省略）に登録する処理を提供する。データ登録プログラム１２２２で行われる処理はデータベースサーバ１１が管理するデータベースに対するクローリング処理と、クローリング処理におけるデータベースからのデータ取得処理と、取得データをグラフデータベースに登録するデータ登録処理からなる。
【００３６】
クエリ候補導出プログラム１２２３では、クエリ導出用データベース制御プログラム１２２１が管理するデータを利用して、データベースサーバ１１上のデータベース制御プログラム１１２１が管理するデータを取得するためのクエリ候補を導出する処理を提供する。
【００３７】
クエリ候補導出プログラム１２２３は、利用者が操作するクライアントマシン１４からデータ抽出条件を入力として受け付けて、当該条件に基づいてクエリ導出用データベース向けのクエリを導出し、当該クエリの実行結果を提供する。
【００３８】
クエリ候補導出プログラム１２２３は、複数のクエリ候補が導出された場合は、所定のランク式に基づいてランク値をクエリ候補毎に算出し、算出したランク値に基づいてクエリ候補を整列（ソート）した結果を提供する。
【００３９】
クエリ候補評価値管理プログラム１２２４では、クエリ候補導出プログラム１２２３によって導出されたクエリ候補群に対して、利用者が操作するクライアントマシン１４でそれぞれのクエリ候補に対して評価値を設定可能にする。
【００４０】
クエリ候補導出プログラム１２２３では、クライアントマシン１４で設定された評価値をランク式によるランク値の計算にて利用し、その結果に基づいてクエリ候補群を提供する。これにより、利用者からの評価値に基づいて、評価値が高いクエリ候補を整列結果においてより上位にするといったことが可能になる。
【００４１】
クエリ変換プログラム１２２５では、クエリ候補導出プログラム１２２３が導出したクエリ候補群の中から利用者が操作するクライアントマシン１４で所望のクエリを選択し、当該クエリ内容に基づいて、データベースサーバ１１上のデータベース制御プログラム１１２１にて利用可能なクエリに変換する処理を提供する。
【００４２】
クエリ変換プログラム１２２５は、例えば、クエリ導出用データベース向けのＯｐｅｎＣｙｐｈｅｒ形式のクエリをリレーショナルデータベース向けのＳＱＬに変換することを実施する。
【００４３】
当該変換クエリをデータベースサーバ１１上のデータベース制御プログラム１１２１で利用することで、利用者が操作するクライアントマシン１４は、クエリ候補導出プログラム１２２３に対して入力したデータ抽出条件を満たすデータ群を取得することができる。
【００４４】
管理サーバ１３は、データベースサーバ１１ならびにデータベースクエリ導出サーバ１２が提供する各機能を運用管理する機能を有する。管理サーバ１３は、主に汎用のサーバ装置が適用され、ＣＰＵ１３１０と、メモリ１３２０と、ネットワーク１０とのデータ通信を制御するネットワークＩ／Ｆ１３３０と外部記憶装置１３４０及び入出力装置１３６０を含み、お互いがバス１３５０で接続されている。
【００４５】
メモリ１３２０には、データベース運用管理プログラム１３２１ならびにデータ登録処理運用管理プログラム１３２２がロードされて、ＣＰＵ１３１０によって実行される。
【００４６】
データベース運用管理プログラム１３２１は、各データベースの開始や停止、データ格納領域の拡大や縮小、利用者の追加や削除といったデータベースの運用管理に必要な処理を提供する。本実施例１では、データベース制御プログラム１１２１向けの運用管理処理とクエリ導出用データベース制御プログラム１２２１向けの運用管理処理を別々の機能として提供するようにしてもよいし、まとめて一つの機能として提供するようにしてもよい。
【００４７】
データ登録処理運用管理プログラム１３２２は、データベースクエリ導出サーバ１２上のデータ登録プログラム１２２２に対してデータ登録対象や登録契機などに関する情報を設定するための機能を提供する。
【００４８】
データ登録プログラム１２２２は、データ登録処理運用管理プログラム１３２２を介して設定された情報に基づいて、対象データの取得ならびに対象データベースへの取得データの登録を行う。
【００４９】
入出力装置１３６０は、マウスやキーボードやタッチパネル等の入力装置と、ディスプレイ等の出力装置を含む。
【００５０】
クライアントマシン１４は、データベースサーバ１１ならびにデータベースクエリ導出サーバ１２を利用するクライアント機能を有する。クライアントマシン１４は、主に汎用のパーソナルコンピュータ装置が提供され、サーバ装置と同様にＣＰＵ１４１０と、メモリ１４２０と、ネットワーク１０とのデータ通信を制御するネットワークＩ／Ｆ１４３０と外部記憶装置１４４０および入出力装置１４６０を含み、お互いがバス１４５０で接続されている。
【００５１】
メモリ１４２０には、データベースクライアントプログラム１４２１ならびにクエリ導出クライアントプログラム１４２２がロードされてＣＰＵ１４１０によって実行される。
【００５２】
データベースクライアントプログラム１４２１は、データベースサーバ１１上のデータベース制御プログラム１１２１を利用するためのクライアント機能を提供する。具体的には、ＳＱＬを利用して、当該データベースに対してデータの登録、更新、取得および削除といった操作を提供する。
【００５３】
なお、データベースクライアントプログラム１４２１では、データベースクエリ導出サーバ１２上のクエリ導出用データベース制御プログラム１２２１を利用するためのクライアント機能を提供するようにしてもよい。具体的には、ＯｐｅｎＣｙｐｈｅｒを利用して、当該データベースに対する操作を提供するようにしてもよい。
【００５４】
クエリ導出クライアントプログラム１４２２は、データベースクエリ導出サーバ１２上のクエリ候補導出プログラム１２２３を利用するためのクライアント機能を提供する。利用者は入出力装置１４６０及びクエリ導出クライアントプログラム１４２２を介して、データ抽出条件を入力する。クエリ候補導出プログラム１２２３は、当該データ抽出条件に基づいて、クエリ導出用データベース向けのクエリ候補を導出、実行し、その結果を入出力装置１４６０のディスプレイに提供する。
【００５５】
図２を用いて、本発明におけるデータ抽出クエリ生成に関する一連の処理の流れを説明する。
【００５６】
はじめに、管理サーバ１３のデータ登録処理運用管理プログラム１３２２が、データベースクエリ導出サーバ１２のデータ登録プログラム１２２２に対して、データ登録設定を行う（Ｓ１０１）。
【００５７】
データベースクエリ導出サーバ１２のデータ登録プログラム１２２２が、データベースサーバ１１のデータベース制御プログラム１１２１に対して、登録対象データ取得要求を行う（Ｓ１０２）。データベース制御プログラム１１２１は、登録対象データを取得し（Ｓ１０３）、要求元であるデータ登録プログラム１２２２に登録対象データを提供する（Ｓ１０４）。データ登録プログラム１２２２は、取得データをクエリ導出用データベースに登録する（Ｓ１０５）。
【００５８】
次に、利用者は入出力装置を介して、クライアントマシン１４のクエリ導出クライアントプログラム１４２２を利用し、クエリ候補導出プログラム１２２３に対して、データ抽出条件を指定してデータ抽出クエリ候補導出を依頼する（Ｓ１０６）。
【００５９】
データベースクエリ導出サーバ１２のクエリ候補導出プログラム１２２３は、指定されたデータ抽出条件に基づいてクエリ導出用データベースのクエリを生成し、対象データの検索を行い（Ｓ１０７）、データ抽出クエリ候補を導出する。そして、クエリ候補導出プログラム１２２３は、導出したデータ抽出クエリ候補をクエリ導出クライアントプログラム１４２２に提供する（Ｓ１０８）。
【００６０】
クライアントマシン１４の利用者は入出力装置１４６０を操作して、クエリ導出クライアントプログラム１４２２を利用し、提供されたデータ抽出クエリ候補の中から今後のクエリ導出時における結果表示時の出力順を変更するために評価値を設定する必要があるものを選択する。
【００６１】
クライアントマシン１４は、選択されたデータ抽出クエリ候補に対して評価値を設定するようデータベースクエリ導出サーバ１２のクエリ候補評価値管理プログラム１２２４に対して依頼をする（Ｓ１０９）。クエリ候補評価値管理プログラム１２２４は、指定されたデータ抽出クエリ候補に対して、指定された評価値を設定する処理を行う（Ｓ１１０）。
【００６２】
次に、クライアントマシン１４の利用者は入出力装置１４６０を操作して、クエリ導出クライアントプログラム１４２２を利用し、提供されたデータ抽出クエリ候補の中からデータベースサーバ１１で利用可能なデータ抽出クエリ候補を選択する。そして、クエリ導出クライアントプログラム１４２２は、選択されたデータ抽出クエリ候補に対して当該データベースサーバ１１にて利用可能なクエリに変換するように、データベースクエリ導出サーバ１２のクエリ変換プログラム１２２５に対して依頼する（Ｓ１１１）。
【００６３】
クエリ変換プログラム１２２５は、選択されたデータ抽出クエリ候補に対して、データベース制御プログラム１１２１で利用可能なクエリ（ＳＱＬ）に変換を行う（Ｓ１１２）。そして、クエリ変換プログラム１２２５は、要求元であるクエリ導出クライアントプログラム１４２２に変換したデータ抽出クエリを提供する（Ｓ１１３）。
【００６４】
これにより、利用者が操作するクライアントマシン１４は、データベースサーバ１１上のデータベース制御プログラム１１２１で利用可能なＳＱＬ形式のデータ抽出クエリを取得することができる。
【００６５】
最後に、利用者が操作するクライアントマシン１４は、データベースクライアントプログラム１４２１を利用し、データ抽出クエリを指定し、データベース制御プログラム１１２１に対してデータを抽出するよう要求する（Ｓ１１４）。
【００６６】
データベース制御プログラム１１２１は、指定されたデータ抽出クエリを実行して対象データを抽出し（Ｓ１１５）、抽出データを要求元であるデータベースクライアントプログラム１４２１に提供する（Ｓ１１６）。これにより、利用者が操作するクライアントマシン１４は所望の抽出データを取得することができる。
【００６７】
図３を用いて、本発明を適用した実施例１で利用するデータのＥＲ（Ｅｎｔｉｔｙ−ｒｅｌａｔｉｏｎｓｈｉｐ）図の一例について説明する。本実施例１では、複数の地域に設置された複数の工場において、製品を製造する製造装置が複数設置され、各工場ならびに各製造装置にセンサ装置が設置され、かかる工場ならびに製造装置に関する情報をデータベースサーバ１１が定期的に取得して記録する例を想定している。
【００６８】
データベースサーバ１１が、扱うデータは、地域テーブル３１００と、工場テーブル３２００と、製造装置テーブル３３００およびセンサテーブル３４００からなるエンティティ管理テーブル３００と、エンティティ管理テーブル３００同士の関連を管理するためのリレーション管理テーブル（地域―工場テーブル３５００、地域―センサテーブル３６００、工場―製造装置テーブル３７００、工場―センサテーブル３８００、製造装置―センサテーブル３９００）４００、およびＦＡＣＴ表５００としてセンサ装置が計測したデータを管理するための計測値テーブル４０００によって管理されるという構成例を用いて説明する。
【００６９】
地域テーブル３１００では、有効日時ならびに地域ＩＤが主キー属性となり、地域番号や地域名などを属性として管理する例を示している。ここで、有効日時属性では、当該レコードが有効になった日時を示す。この属性を利用することで、所定の日時において参照すべきレコードを特定することが可能になる。この有効日時属性は、他のテーブルでも同じ用途で利用する。
【００７０】
同様に、工場テーブル３２００では、有効日時ならびに工場ＩＤが主キー属性となり、工場名や住所などを属性として管理する例を示している。製造装置テーブル３３００では、有効日時ならびに製造装置ＩＤが主キー属性となり、製造装置名や装置種別などを属性として管理する例を示している。センサテーブル３４００では、有効日時ならびにセンサＩＤが主キー属性となり、センサ名やセンサ種別などを属性として管理する例を示している。
【００７１】
地域―工場テーブル３５００では、地域テーブル３１００のレコードと工場テーブル３２００のレコードとの関係を定義するレコードを管理するテーブルであり、有効日時と、地域ＩＤおよび工場ＩＤを主キー属性として管理する例を示している。
【００７２】
この地域―工場テーブル３５００では、地域テーブル３１００と工場テーブル３２００との間に多対多の関係が定義できることと、各々のテーブルのレコードによっては、他方のテーブルとの間に関係が定義されないレコードもありえることを示している。この特徴は、本実施例１において他のリレーション管理テーブル４００でも共通の特徴となる。
【００７３】
同様に、地域―センサテーブル３６００では、有効日時と、地域ＩＤおよびセンサＩＤを主キー属性として管理する例を示している。工場―製造装置テーブル３７００では、有効日時と、工場ＩＤおよび製造装置ＩＤを主キー属性として管理する例を示している。
【００７４】
工場―センサテーブル３８００では、有効日時と、工場ＩＤおよびセンサＩＤを主キー属性として管理する例を示している。製造装置―センサテーブル３９００では、有効日時と、製造装置ＩＤおよびセンサＩＤを主キー属性として管理する例を示している。
【００７５】
計測値テーブル４０００では、センサＩＤならびに日時が主キー属性となり、値などを属性として管理する例を示している。値属性には、センサが計測した値を格納する。ここで、センサテーブル３４００のレコードと計測値テーブル４０００のレコードの関係は、０または１対多の関係が定義できることを示している。この関係は、両テーブルの主キー属性であるセンサＩＤによって定義可能である。
【００７６】
図４Ａ〜図４Ｊを用いて、本発明を適用した実施例１で利用するデータのレコードの一例を説明する。データベースサーバ１１上のデータベース制御プログラム１１２１は、図３にて説明したエンティティ管理テーブル３００（地域テーブル３１００、工場テーブル３２００、製造装置テーブル３３００およびセンサテーブル３４００）、リレーション管理テーブル４００（地域―工場テーブル３５００、地域―センサテーブル３６００、工場―製造装置テーブル３７００、工場―センサテーブル３８００、製造装置―センサテーブル３９００）および計測値テーブル４０００を生成して、管理する。
【００７７】
図４Ａは、地域テーブル３１００の一例を示す図である。地域テーブル３１００は、有効日時３１０１と、地域ＩＤ３１０２と、地域番号３１０３と、地域名３１０４をひとつのレコードに含む。有効日時３１０１は上述の通りであり、地域ＩＤ３１０２と地域番号３１０３は、地域名３１０４毎に予め設定された値が格納される。
【００７８】
図４Ｂは、工場テーブル３２００の一例を示す図である。工場テーブル３２００は、有効日時３２０１と、工場ＩＤ３２０２と、工場名３２０３と、住所３２０４をひとつのレコードに含む。有効日時３２０１は上述の通りであり、工場ＩＤ３２０２は、工場名３２０３毎に予め設定された値が格納される。
【００７９】
図４Ｃは、製造装置テーブル３３００の一例を示す図である。製造装置テーブル３３００は、有効日時３３０１と、製造装置ＩＤ３３０２と、製造装置名３３０３と、装置種別３３０４をひとつのレコードに含む。有効日時３３０１は上述の通りであり、製造装置ＩＤ３３０２は、製造装置名３３０３毎に予め設定された値が格納される。装置種別３３０４には、当該装置の種別が格納される。
【００８０】
図４Ｄは、センサテーブル３４００の一例を示す図である。センサテーブル３４００は、有効日時３４０１と、センサＩＤ３４０２と、センサ名３４０３と、センサ種別３４０４をひとつのレコードに含む。有効日時３４０１は上述の通りであり、センサＩＤ３４０２は、センサ名３４０３毎に予め設定された値が格納される。センサ種別３４０４には、当該センサの種別が格納される。
【００８１】
図４Ｅは、工場−センサテーブル３８００の一例を示す図である。工場−センサテーブル３８００は、有効日時３８０１と、工場ＩＤ３８０２と、センサＩＤ３８０３をひとつのレコードに含む。有効日時３８０１は上述の通りである。工場ＩＤ３８０２とセンサＩＤ３８０３は、工場に配置されたセンサの識別子が格納される。
【００８２】
図４Ｆは、計測値テーブル４０００の一例を示す図である。計測値テーブル４０００は、日時４００１と、センサＩＤ４００２と、値４００３をひとつのレコードに含む。
日時４００１はセンサ装置が測定した日時が格納される。センサＩＤ４００２にはセンサ装置の識別子が格納される。値４００３には、センサ装置が測定したデータの値が格納される。
【００８３】
図４Ｇは、地域−工場テーブル３５００の一例を示す図である。地域−工場テーブル３５００は、有効日時３５０１と、地域ＩＤ３５０２と、工場ＩＤ３５０３をひとつのレコードに含む。有効日時３５０１は上述の通りである。地域ＩＤ３５０２と工場ＩＤ３５０３は、地域に配置された工場の識別子が格納される。
【００８４】
図４Ｈは、工場−製造装置テーブル３７００の一例を示す図である。工場−製造装置テーブル３７００は、有効日時３７０１と、工場ＩＤ３７０２と、製造装置ＩＤ３７０３をひとつのレコードに含む。有効日時３７０１は上述の通りである。工場ＩＤ３７０２と製造装置ＩＤ３７０３は、工場に配置された製造装置の識別子が格納される。
【００８５】
図４Ｉは、地域−センサテーブル３６００の一例を示す図である。地域−センサテーブル３６００は、有効日時３６０１と、地域ＩＤ３６０２と、センサＩＤ３６０３をひとつのレコードに含む。有効日時３６０１は上述の通りである。地域ＩＤ３６０２とセンサＩＤ３６０３は、地域に配置されたセンサの識別子が格納される。
【００８６】
図４Ｊは、製造装置−センサテーブル３９００の一例を示す図である。製造装置−センサテーブル３９００は、有効日時３９０１と、製造装置ＩＤ３９０２と、センサＩＤ３９０３をひとつのレコードに含む。有効日時３９０１は上述の通りである。製造装置ＩＤ３９０２とセンサＩＤ３９０３は、製造装置に配置されたセンサの識別子が格納される。
【００８７】
図５を用いて、本発明を適用した実施例１で利用するデータを、クエリ導出用データベース制御プログラム１２２１として利用するグラフデータベースにおいて取り扱う例を示す。
【００８８】
対象とするデータは、図３ならびに図４Ａ〜図４Ｊで説明したものと同じである。グラフデータベースでは、エンティティ管理テーブル３００に格納する各レコードを、当該テーブル名を属性として含んだグラフノードとして管理する。
【００８９】
また、リレーション管理テーブル４００に格納するレコードは、グラフノード同士を接続するグラフエッジとして管理する。計測値テーブル４０００に格納するレコードについては、グラフノードとして管理してもよいし、管理対象から外してもよい。
【００９０】
計測値テーブル４０００に登録されるレコード数は膨大になることが想定できるため、これらを管理対象から外すことで、当該グラフデータベースにおけるデータ容量を低減することができる。
【００９１】
図５では、地域テーブル３１００に登録されているレコードがそれぞれ地域属性５１００を含むグラフノードとして取り扱う様子を例示している。同様に、工場テーブル３２００、製造装置テーブル３３００およびセンサテーブル３４００に登録されているレコードがそれぞれ工場属性５２００、製造装置属性５３００およびセンサ属性５４００を含むグラフノードとして取り扱う様子を例示している。
【００９２】
また、地域―工場テーブル３５００に登録されているレコードが地域属性５１００を含むグラフノードと工場属性５２００を含むグラフノードとを接続するグラフエッジとして取り扱う様子を例示している。同様に、地域―センサテーブル３６００、工場―製造装置テーブル３７００、工場―センサテーブル３８００、製造装置―センサテーブル３９００に登録されているレコードが、それぞれ該当するグラフノード同士を接続するグラフエッジとして取り扱う様子を例示している。
【００９３】
前記従来例では、地域属性５１００＝「北海道」に所属するセンサを取得する場合、地域―センサテーブル３６００にリレーション定義が登録されているため、当該リレーションをたどることで地域属性５１００＝「北海道」に所属しているセンサを探索する。しかしながら、前記従来例では、実際のリレーションデータを参照していないため、地域―センサテーブル３６００をたどることで地域属性５１００＝「北海道」に所属しているセンサを取得できない、という点が課題であった。
【００９４】
本実施例１は、後述するように、このような課題を解決し、結合可能なグラフデータから確実にデータを取得するクエリを導出する。
【００９５】
図６は、データベースクエリ導出サーバ１２上のデータ登録プログラム１２２２が出力するデータ登録画面６１００の一例を模式的に示す図である。データ登録画面６１００は、データベースサーバ１１からデータを取得する契機と取得元に関する情報を受け付ける。データ登録画面６１００は、ネットワーク１０を介して、管理サーバ１３の入出力装置１３６０に表示され、管理サーバ１３の利用者（または管理者）によって操作される。
【００９６】
なお、本実施例１ではデータ登録画面６１００による入出力を例に説明するがこの限りではない。コマンドから同様の情報を扱えるようにしてもよいし、当該プログラムを実行するためのＡＰＩの引数やパラメータとして同様の情報を扱えるようにしてもよい。
【００９７】
データ登録画面６１００では、データ取得契機６２００に関する情報ならびにデータ取得対象６３００に関する情報を入力可能にする。入力された情報は、保存ボタン６１１０を押下することでデータベースクエリ導出サーバ１２に保存でき、中止ボタン６１２０を押下することで操作を中止できる。
【００９８】
データ取得契機６２００については、取得間隔６２１０ならびに開始時刻６２２０を入力可能にする。取得間隔６２１０では、毎週何曜日、毎日、毎時といったデータ取得を実行する間隔を特定する情報を入力する。開始時刻６２２０では、午前１０時００分といった当該契機における開始時刻を特定する情報が入力される。
【００９９】
なお、データ取得契機６２００は、＋ボタン６２３０を押下することで複数のデータ取得契機を入力可能にし、−ボタン６２４０を押下することで、所望のデータ取得契機を削除可能にする。
【０１００】
データ取得対象６３００については、サーバ情報６３１０、テーブル名６３２０、取得データ種別６３３０、参照元属性名６３４０、参照先テーブル名６３５０および参照先属性名６３６０を入力可能にする。
【０１０１】
サーバ情報６３１０では、取得対象データが保存されているサーバを特定する情報が入力される。サーバを特定する情報としては、サーバ名、ＩＰアドレスなどが該当する。テーブル名６３２０では、当該データベースサーバ１１上のデータベース制御プログラム１１２１にて管理されているテーブル群の中から、取得対象となるテーブルを特定する情報が入力される。
【０１０２】
取得データ種別６３３０では、当該テーブルがエンティティ管理テーブル３００なのかリレーション管理テーブル４００なのかを特定する情報が入力される。ここで、取得データ種別６３３０においてエンティティ管理テーブル３００が選択された場合、当該エンティティ管理テーブル３００に対応するテーブルの属性の中から、他テーブル上の所定の属性との関係定義を登録することを可能にする。
【０１０３】
本実施例１では、参照元属性名６３４０に、参照元テーブルにおいて関係を定義する参照元属性を特定する情報が入力される。また、参照先テーブル名６３５０に、関係定義する参照先テーブルを特定する情報が入力される。
【０１０４】
参照先属性名６３６０に、関係定義する参照先テーブルの属性を特定する情報が入力される。具体的には、前述したデータの例において、センサテーブル３４００をデータ取得対象として入力される場合、センサテーブル３４００と計測値テーブル４０００との関係を定義できるようにする。
【０１０５】
本実施例１では、参照元属性名６３４０にセンサＩＤ、参照先テーブル名６３５０に計測値テーブル４０００、参照先属性名６３６０にセンサＩＤが入力される。計測値テーブル４０００のレコード数が多い場合、当該テーブルの全レコードをクエリ導出用データベースに登録すると、そのデータ容量も大きくなる可能性がある。
【０１０６】
そこで、参照元属性名６３４０、参照先テーブル名６３５０および参照先属性名６３６０を入力ならびに管理できるようにすることにより、本データ例における計測値テーブル４０００のレコードをクエリ導出用データベースに登録しなくても、センサテーブル３４００と計測値テーブル４０００との関係を管理できるようになる。これにより、計測値テーブル４０００も含めたクエリ候補の導出が可能になる。
【０１０７】
取得データ種別６３３０において、エンティティ管理テーブル３００が選択された場合、入力された情報はエンティティ変換表２１００に格納される。また、リレーション管理テーブル４００が選択された場合、入力された情報はリレーション変換表２２００に格納される。
【０１０８】
なお、データ取得対象６３００は、＋ボタン６３７０を押下することで複数のデータ取得契機を入力可能にし、−ボタン６３８０を押下することで、所望のデータ取得契機を削除可能にする。
【０１０９】
図７に、エンティティ変換表２１００における構成情報を模式的に示す。エンティティ変換表２１００では、クエリ導出用データベースにおけるグラフノードと、データベース制御プログラム１１２１におけるテーブルとの対応関係を管理する。エンティティ変換表２１００には、エンティティの識別子を格納するＩＤ２１１０と、エンティティ名２１２０およびエンティティ名に対応するテーブル名２１３０の情報が格納される。
【０１１０】
本実施例１では、データ登録画面６１００から、取得データ種別６３３０としてエンティティ管理テーブル３００が選択された場合に、入力された情報がレコードとして登録される。データ取得対象として入力されたテーブル名６３２０が、エンティティ変換表２１００のテーブル名２１３０と対応付けられる。
【０１１１】
また、当該テーブルのレコード群をグラフデータベースにグラフノード群として生成する際、元テーブルを特定するために、当該グラフノードの属性として持たせる属性値が、エンティティ名２１２０と対応付けられる。
【０１１２】
図８に、リレーション変換表２２００における構成情報を模式的に示す。リレーション変換表２２００では、クエリ導出用データベースにおけるグラフエッジと、データベースサーバ１１で稼働するデータベース制御プログラム１１２１が利用するテーブルとの対応関係を管理する。
【０１１３】
リレーション変換表２２００には、ＩＤ２２１０と、第一エンティティ名２２２０と、第二エンティティ名２２３０と、第一テーブル名２２４０と、第二テーブル名２２５０および結合条件２２６０の情報がひとつのレコードに格納される。
【０１１４】
本実施例１では、データ登録画面６１００から、取得データ種別６３３０としてリレーション管理テーブルが選択された場合、または取得データ種別６３３０としてエンティティ管理テーブル３００が選択された上でかつ参照元属性名６３４０と、参照先テーブル名６３５０および参照先属性名６３６０が入力された場合に、入力された情報がレコードとしてリレーション変換表２２００に登録される。
【０１１５】
データ取得対象６３００として入力されたテーブル名６３２０に該当するテーブルのレコードによって関係が定義される二つのテーブルがそれぞれ第一テーブル名２２４０と、第二テーブル名２２５０と対応付けられる。
【０１１６】
また、当該テーブルのレコード群をグラフデータベースにグラフエッジ群として生成する際、元テーブルを特定するために、当該グラフエッジを挟んだそれぞれのグラフノードの属性として持たせる属性値が、それぞれ第一エンティティ名２２２０と、第二エンティティ名２２３０と対応付けられる。
【０１１７】
結合条件２２６０には、データベース制御プログラム１１２１によって、第一テーブル名２２４０と第二テーブル名２２５０の２つのテーブルを結合させる場合の条件が登録される。
【０１１８】
図９は、データベースクエリ導出サーバ１２上のクエリ候補導出プログラム１２２３が出力するデータ抽出条件入力画面７１００の一例を模式的に示す図である。データ抽出条件入力画面７１００は、ネットワーク１０を介して、クライアントマシン１４の入出力装置１４６０に表示され、クライアントマシン１４の利用者によって操作される。
【０１１９】
なお、本実施例では画面による入出力を例に説明するがこの限りではない。コマンドから同様の情報を扱えるようにしてもよいし、当該プログラムを実行するためのＡＰＩの引数やパラメータとして同様の情報を扱えるようにしてもよい。
【０１２０】
データ抽出条件入力画面７１００では、データの抽出対象７２００に関する情報と、検索条件７３００に関する情報と、抽出期間７４００に関する情報と、候補導出条件７５００に関する情報と、ランキング方法７６００に関する情報および要求元ＩＤ７７００に関する情報を入力可能にする。
【０１２１】
入力された情報は、実行ボタン７１１０を押下することで、クエリ候補導出プログラム１２２３に対して操作実行（クエリ候補の導出）を要求でき、中止ボタン７１２０を押下することで操作を中止できる。
【０１２２】
抽出対象７２００については、エンティティ名７２１０ならびに属性名７２２０を入力可能にする。ここで入力された情報は、最終的にＳＱＬにクエリ変換した際のＳＥＬＥＣＴ部分相当となる。なお、抽出対象７２００は、＋ボタン７２３０を押下することで複数のデータ取得契機を入力可能にし、−ボタン７２４０を押下することで、所望のデータ取得契機を削除可能にする。
【０１２３】
検索条件７３００については、検索で利用するエンティティ名７３１０と、属性名７３２０と、条件７３３０および属性値７３４０を入力可能にする。ここで入力された情報は、最終的にＳＱＬにクエリ変換した際のＷＨＥＲＥ部分相当となる。
【０１２４】
エンティティ名７３１０と属性名７３２０の入力値をもとに検索対象の属性が決定され、属性値７３４０で指定された値が条件７３３０で指定された条件を満たしているものが検索結果として提供される。
【０１２５】
条件７３３０には、値の一致不一致や部分一致、大なり小なり、といった条件を指定可能にする。なお、検索条件７３００は、＋ボタン７３５０を押下することで複数の検索条件を入力可能にし、−ボタン７３６０を押下することで、所望の検索条件を削除可能にする。
【０１２６】
抽出期間７４００については、期間開始日時を入力するｆｒｏｍ欄７４１０と、期間終了日時を入力するｔｏ欄７４２０を入力可能にする。ここで入力された情報は、最終的にＳＱＬにクエリ変換した際のＷＨＥＲＥ部分相当となる。なお、抽出期間７４００は、＋ボタン７４３０を押下することで複数の抽出期間を入力可能にし、−ボタン７４４０を押下することで、所望の抽出期間を削除可能にする。
【０１２７】
候補導出条件７５００については、テーブル数７５１０と、総結合数７５２０および総経路数７５３０を入力可能にする。テーブル数７５１０は、当該データ抽出条件に基づいてクエリを導出する際に、データベース制御プログラム１１２１が利用するテーブル数の上限を指定する。利用するテーブル数の上限を定めることで、クエリ実行時のＩ／Ｏ処理負荷が過大にならないように制御可能にする。
【０１２８】
総結合数７５２０には、当該データ抽出条件に基づいてクエリを導出する際に、データベース制御プログラム１２１１が利用するテーブル同士を結合する回数（ＪＯＩＮする回数）の上限を指定する。結合回数上限を定めることで、クエリ実行時のＣＰＵ処理負荷が過大にならないように制御可能にする。
【０１２９】
総経路数７５３０には、当該データ抽出条件に基づいてクエリを導出する際に、データベース制御プログラム１２１１が利用するテーブル同士を結合する経路のバリエーション数（ＵＮＩＯＮまたはＵＮＩＯＮ  ＡＬＬする回数）の上限を指定する。経路のバリエーション数の上限を定めることで、クエリ実行時の並列実行処理のプロセスまたはスレッドの数が過大にならないように制御可能にする。
【０１３０】
なお、候補導出条件７５００については、テーブル数７５１０と、総結合数７５２０および総経路数７５３０を入力可能にすると説明したが、この限りではない。導出クエリに対するＩ／Ｏ処理負荷、ＣＰＵ処理負荷および並列実行数に該当あるいは換算可能な別の指標に基づく値を入力するようにしてもよい。例えば、Ｉ／Ｏサイズの上限数を指定してもよいし、クエリ実行に要する処理時間の上限値を指定してもよいし、並列分散処理が可能なサーバ台数の上限数を指定してもよい。
【０１３１】
ランキング方法７６００には、当該データ抽出条件に合致するクエリ候補が複数存在する場合、当該結果を利用者に提示する際に何を基準にしてクエリ候補を整列するのかが指定される。例えば、該当するインスタンスの数が多いクエリ候補を上位ランクとするようにしてもよいし、必要な結合回数（ＪＯＩＮ回数）が少ないクエリ候補を上位ランクとするようにしてもよい。
【０１３２】
要求元ＩＤ７６００は、当該データ抽出条件を入力した要求者（クライアントマシン１４の利用者）を特定する情報を入力する。本実施例１では、要求者個人を特定する情報でもよいし、要求者が所属するグループを特定する情報でもよいし、要求者が実行する業務や作業を特定する情報でもよい。
【０１３３】
なお、本実施例１では、抽出対象７２００と検索条件７３００と抽出期間７４００をデータ抽出条件とし、候補導出条件を絞り込み条件とする。
【０１３４】
図１０は、データベースクエリ導出サーバ１２上のクエリ候補導出プログラム１２２３が出力するデータ抽出クエリ候補導出結果出力画面８１００の一例を模式的に示す。データ抽出クエリ候補導出結果出力画面８１００は、ネットワーク１０を介して、クライアントマシン１４の入出力装置１４６０に表示され、クライアントマシン１４の利用者によって操作される。
【０１３５】
なお、本実施例では画面による入出力を例に説明するがこの限りではない。コマンドから同様の情報を扱えるようにしてもよいし、当該プログラムを実行するためのＡＰＩの引数やパラメータとして同様の情報を扱えるようにしてもよい。
【０１３６】
データ抽出クエリ候補導出結果出力画面８１００では、データ抽出条件入力画面７１００の設定にて処理を実行した結果を当該画面（７１００）の下部に出力した例を示している。データ抽出クエリ候補導出結果出力画面８１００では、データ抽出クエリ候補件数８２００と、データ抽出クエリ候補一覧リスト８３００と、評価値登録ボタン８４００を出力可能にする。
【０１３７】
データ抽出クエリ候補件数８２００は、データ抽出条件入力画面７１００で入力されたデータ抽出条件に合致するクエリ候補の件数を出力する。データ抽出クエリ候補一覧リスト８３００では、導出したクエリ候補それぞれの情報を出力する。
【０１３８】
データ抽出クエリ候補一覧リスト８３００の具体的な出力情報としては、出力順位８３１０と、ランク値８３２０と、テーブル数８３３０と、抽出インスタンスリスト８３４０と、評価値入力８３５０と、クエリ変換８３６０およびクエリ結合経路表示８３７０の各欄を出力する。
【０１３９】
出力順位８３１０には、データ抽出クエリ候補一覧リストにおける当該エントリの順位が出力される。ランク値８３２０には、データ抽出クエリ候補一覧リストにおける出力順位を決定するために算出した値が出力される。このランク値８３２０は、予め設定されたランク値計算式にて算出される。ランク値計算式の説明については後述する。
【０１４０】
テーブル数８３３０には、当該エントリのクエリ候補が結合ならびに参照するテーブルの数を出力する。抽出インスタンスリスト８３４０には、当該エントリのクエリ候補によって、抽出対象７２００で指定された条件下で抽出されたインスタンスの一覧が出力される。
【０１４１】
評価値入力８３５０には、当該エントリのクエリ候補に対する利用者からの評価値を入力する欄が表示される。評価値入力８３５０については後述する。クエリ変換８３６０には、当該エントリのクエリ候補に対して、指定された形式でのクエリ変換を実行するためのボタンが表示される。本実施例１では、ＳＱＬ形式にクエリ変換するためのＳＱＬボタン８３６１〜８３６６を出力する例を示している。本欄の説明については後述する。
【０１４２】
クエリ結合経路表示８３７０には、当該エントリのクエリ候補に対して、指定された形式でのクエリの結合経路を表示するためのボタンが表示される。本実施例１では、グラフ形式で出力するためのグラフボタン８３８１〜８３８６、ならびにリスト形式で出力するためのリストボタン８３７１〜８３７６を出力する例を示している。なお、評価値登録ボタン８４００については後述する。
【０１４３】
図１１は、データ抽出クエリ候補導出結果出力画面８１００において、クエリ結合経路表示８３７０欄におけるリストボタン８３７１〜８３７６を押下した時に表示されるリスト形式出力画面８５７０を模式的に示す。なお、本実施例１では画面による入出力を例に説明するがこの限りではない。コマンドから同様の情報を扱えるようにしてもよいし、当該プログラムを実行するためのＡＰＩの引数やパラメータとして同様の情報を扱えるようにしてもよい。
【０１４４】
リスト形式出力画面８５７０では、該当するクエリ候補のエントリに対応するグラフノードならびにグラフエッジを示す情報をリスト形式で出力される。具体的には、データ抽出クエリ候補導出結果出力画面８１００のリストボタン８３７１を押下することで、リスト形式情報８５７１が出力される。同様に、リストボタン８３７２〜８３７６を押下することで、それぞれリスト形式情報８５７２〜８５７６が出力される。
【０１４５】
リスト形式情報８５７１では、当該クエリ候補によって導出されたグラフノードならびにグラフエッジを包含する情報が、グラフデータベースにおけるリスト表記に基づいて出力される。
【０１４６】
図示の例では、「（ｅ１１：’地域’）」は地域テーブル３１００上のレコードから生成されたグラフノードの所定のインスタンスを意味し、「−＞」（矢印）はグラフノードのインスタンス間の関係を定義したグラフエッジの所定のインスタンスを意味する。
【０１４７】
また、図示の「ＯＲ」は、グラフデータベースにおける複数のたどり方を列挙するために用いる。例えば、リスト形式情報８５７１では、二つの経路があることを示している。これらの表記によって、当該クエリ候補によって、どのグラフノードならびにグラフエッジをたどることで所望のグラフエッジをたどることができるのかを示すことが可能になる。
【０１４８】
図１２は、データ抽出クエリ候補導出結果出力画面８１００において、クエリ結合経路表示８３７０欄におけるグラフボタン８３８１〜８３８６を押下した時に出力されるグラフ形式出力画面８５８０の一例を模式的に示す。なお、本実施例１では画面による入出力を例に説明するがこの限りではない。コマンドから同様の情報を扱えるようにしてもよいし、当該プログラムを実行するためのＡＰＩの引数やパラメータとして同様の情報を扱えるようにしてもよい。
【０１４９】
グラフ形式出力画面８５８０では、該当するクエリ候補のエントリに対応するグラフノードならびにグラフエッジを示す情報をグラフ形式で出力される。具体的には、データ抽出クエリ候補導出結果出力画面８１００のグラフボタン８３８１を押下することで、グラフ形式情報８５８１が出力される。同様に、グラフボタン８３８２〜８３８６を押下することで、それぞれグラフ形式情報８５８２〜８５８６が出力される。
【０１５０】
グラフ形式情報８５８１では、当該クエリ候補によって導出されたグラフノードならびにグラフエッジを包含する情報をグラフデータベースにおけるリスト表記をグラフ形式に変換して出力される。
【０１５１】
図示の例では、前述したデータ例を対象に、「北海道地方にあるセンサ一覧」を抽出する場合の出力例を示している。グラフ形式情報８５８１では、リスト形式情報８５７１をもとに、当該リスト情報をグラフ表記に変換される。変換の結果出力をクライアントマシン１４の利用者が参照することで、地域属性を持ち名前属性が北海道であるグラフノードに対し、工場属性ならびに製造装置属性を含むグラフノードを経由して、センサ属性を有する名前属性がＳ１、Ｓ２、Ｓ４、Ｓ５である４つのグラフノードを対象ノードとして抽出される。
【０１５２】
図１３は、データ抽出クエリ候補導出結果出力画面８１００において、クエリ変換８３６０欄におけるＳＱＬボタン８３６１〜８３６６を押下した時に出力されるＳＱＬクエリ変換結果出力画面８５６０の一例を模式的に示す。なお、本実施例１では画面による入出力を例に説明するがこの限りではない。コマンドから同様の情報を扱えるようにしてもよいし、当該プログラムを実行するためのＡＰＩの引数やパラメータとして同様の情報を扱えるようにしてもよい。
【０１５３】
ＳＱＬクエリ変換結果出力画面８５６０では、該当するクエリ候補のエントリに対応する情報をもとに、データベースサーバ１１上のデータベース制御プログラム１１２１が対象データを抽出するためのＳＱＬクエリを出力する。具体的には、データ抽出クエリ候補導出結果出力画面８１００のＳＱＬボタン８３６１を押下することで、ＳＱＬクエリ８５６１が出力される。同様に、ＳＱＬボタン８３８２〜８３８６を押下することで、それぞれに対応するＳＱＬクエリが出力される（図は省略）。
【０１５４】
図１４は、評価値表２３００における構成情報の一例を模式的に示す。評価値表２３００では、クエリ候補に対してクライアントマシン１４の利用者が指定した評価値が対応付けられて管理される。評価値表２３００には、レコード通番２３１０と、要求元ＩＤ２３２０と、エンティティ／リレーション管理テーブルのエントリＩＤ２３３０および評価値２３４０の情報が格納される。
【０１５５】
レコード通番２３１０は、評価値表２３００におけるレコード識別番号に相当する。要求元ＩＤ２３２０は、クエリ導出の要求元であるクライアントマシン１４の利用者を特定する識別情報を格納する。
【０１５６】
エンティティ／リレーション管理テーブルのエントリＩＤ２３３０は、評価値を対応付ける対象の識別情報を格納する。評価値２３４０は、クライアントマシン１４の利用者が指定した評価値を格納する。最終的な評価値は、評価値表２３００における該当レコードをすべて検出し、該当する評価値を合算した結果を使うようにしてもよいし、評価値表２３００へのレコード登録の際に、登録の都度以前の登録エントリの情報を元に、合算評価値を算出し、それを新しい評価値として登録するようにしてもよい。
【０１５７】
評価値表２３００ではクエリ候補を導出する際に参照したエンティティ変換表２１００のレコードと、リレーション変換表２２００のレコードと、利用者を特定するためのＩＤ情報（ユーザＩＤ。グループＩＤ，ジョブＩＤなど）および利用者が指定した評価値２３４０が当該評価値表２３００において対応付けられる。この評価値は、以降におけるクエリ候補の導出の際に、複数のクエリ候補が導出されたときの結果整列（ソート）時に利用するランク値の計算の際に利用することができる。
【０１５８】
図１５は、データベースクエリ導出サーバ１２で行われるデータ登録処理の一例を示すフローチャートである。本処理は、データ登録画面６１００などを介して、データベースクエリ導出サーバ１２上のデータ登録プログラム１２２２に対して管理サーバ１３がデータ登録要求をした際に実行される。
【０１５９】
はじめに、ステップＳ２０１で、データ登録プログラム１２２２は、管理サーバ１３のデータ登録処理運用管理プログラム１３２２からデータ取得対象データベースと、データ取得対象テーブル情報を受け付ける。本実施例１では、データ登録画面６１００で入力された情報を受付情報とする。
【０１６０】
次に、ステップＳ２０２で、データ登録プログラム１２２２はデータ取得対象データベースを列挙して、以降に述べる処理を当該データ取得対象データベースの全てに対して実施したか否かを判定する。全て実施済の場合は本フローチャートを終了し、未実施の場合はステップＳ２０３に移る。
【０１６１】
ステップＳ２０３で、データ登録プログラム１２２２は対象データベースの中から一つを選択し、当該データベースに対するデータ取得対象テーブルを特定する。次に、ステップＳ２０４で、データ登録プログラム１２２２は、以降に述べる処理を当該データ取得対象テーブル全てに対して実施したか否かを判定する。全て実施済の場合はステップＳ２０２に移り、未実施の場合はステップＳ２０５に移る。
【０１６２】
ステップＳ２０５で、データ登録プログラム１２２２は対象テーブルの中から一つを選択し、当該テーブルに対する取得データ種別を特定する。次に、ステップＳ２０６で、データ登録プログラム１２２２は当該テーブルに対する取得データ種別６３３０に基づいて、処理を分岐する。取得データ種別がエンティティ管理テーブル３００の場合はステップＳ２０７に移り、リレーション管理テーブル４００の場合はステップＳ２０９に移る。
【０１６３】
ステップＳ２０７で、データ登録プログラム１２２２はデータベース制御プログラム１１２１の対象テーブルからレコードを取得し、クエリ導出用データベース制御プログラム１２１１のグラフデータベースにグラフノードのインスタンスとして登録する。また、データ登録プログラム１２２２は当該テーブルと当該グラフノードに関する情報をエンティティ変換表２１００に登録する。
【０１６４】
次に、ステップＳ２０８で、データ登録プログラム１２２２は、データ登録画面６１００において参照元属性名６３４０と、参照先テーブル名６３５０および参照先属性名６３６０が指定されていたら、それらの情報に基づいてクエリ導出用データベース制御プログラム１１２１のグラフデータベースにグラフエッジのインスタンスとして登録する。
【０１６５】
また、データ登録プログラム１２２２は、当該テーブル群と参照元属性名と参照先属性名に関する情報をリレーション変換表２２００に登録する。ステップＳ２０８の処理が完了したら、ステップＳ２０４に戻って上記処理を繰り返す。
【０１６６】
ステップＳ２０６の判定がリレーション管理テーブル４００のステップＳ２０９で、データ登録プログラム１２２２はデータベース制御プログラム１１２１の対象テーブルからレコードを取得し、クエリ導出用データベース制御プログラム１２１１のグラフデータベースにグラフエッジのインスタンスとして登録する。また、データ登録プログラム１２２２は、当該テーブルと当該グラフエッジに関する情報をリレーション変換表２２００に登録する。
【０１６７】
上記処理によって、データ登録画面６１００で入力された受付情報に基づいて、エンティティ変換表２１００とリレーション変換表２２００が設定される。
【０１６８】
図１６は、データベースクエリ導出サーバ１２で行われるデータ抽出クエリ候補導出処理の一例を示すフローチャートである。本処理は、図９に示したデータ抽出条件入力画面７１００などを介して、データベースクエリ導出サーバ１２上のクエリ候補導出プログラム１２２３に対してクライアントマシン１４がデータ抽出クエリ候補の導出要求（実行ボタン７１１０）をした際に実行される。
【０１６９】
はじめに、ステップＳ３０１で、クエリ候補導出プログラム１２２３は、クライアントマシン１４のクエリ導出クライアントプログラム１４２２からデータ抽出条件や候補導出条件などを受け付ける。本実施例１では、データ抽出条件入力画面７１００で入力された情報を受付情報とする。
【０１７０】
次に、ステップＳ３０２で、クエリ候補導出プログラム１２２３は結合総数の上限（総結合数７５２０）を判定するために利用する変数ｉの値を０に初期化し、本処理による生成物を一時的に管理するための候補リスト（図示省略）を初期化する。なお、候補リストは、メモリ１２２０または外部記憶装置１２４０に格納することができる。
【０１７１】
ステップＳ３０３で、クエリ候補導出プログラム１２２３は変数ｉの値が結合総数の上限の値に達したか否かを判定する。上限に達した場合はステップＳ３０７に移り、達していない場合はステップＳ３０４に移る。なお、結合総数の上限（総結合数７５２０）は絞り込み条件として機能する。
【０１７２】
ステップＳ３０４で、クエリ候補導出プログラム１２２３は変数ｉの値に１を加算する。次にステップＳ３０５で、クエリ候補導出プログラム１２２３はターゲットのエンティティ（エンティティ名７２１０）と検索条件指定のエンティティ（エンティティ名７３１０）をｉホップでつなぐサブグラフを検索するグラフデータベース向けクエリ（ＧＱＬ：Ｇｒａｐｈ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）を生成する。ここでｉホップとは、ターゲットエンティティとなるグラフノードと、検索条件指定エンティティとなるグラフノードとの間をｉ個のグラフエッジで接続されていることを意味する。
【０１７３】
次にステップＳ３０６で、クエリ候補導出プログラム１２２３は生成したＧＱＬをクエリ導出用データベース制御プログラム１２２１にて実行させ、サブグラフを候補リストに追加する。ここでサブグラフとは、当該ＧＱＬによって得られた結合パス（グラフノード間のグラフエッジの経路）と、絞込み結果で得られたターゲットエンティティの各インスタンスの識別情報とその数が該当する。ステップＳ３０６の処理が完了したら、ステップＳ３０３に戻って上記処理を繰り返す。
【０１７４】
一方、ステップＳ３０３の判定で変数ｉが結合総数の上限となったステップＳ３０７で、クエリ候補導出プログラム１２２３は経路総数の上限（総経路数７５３０）を判定するために利用する変数ｊの値を０に初期化し、本処理による生成物の組合せを一時的に管理するための組合せ候補リスト（図示省略）を初期化する。なお、組合せ候補リストは、メモリ１２２０または外部記憶装置１２４０に格納することができる。また、経路総数の上限（総経路数７５３０）は絞り込み条件として機能する。
【０１７５】
ステップＳ３０８で、クエリ候補導出プログラム１２２３は変数ｊの値が経路総数の上限の値に達したか否かを判定する。上限に達した場合はステップＳ３１１に移り、達していない場合はステップＳ３０９に移る。
【０１７６】
ステップＳ３０９で、クエリ候補導出プログラム１２２３は変数ｊの値に１を加算する。次にステップＳ３１０で、クエリ候補導出プログラム１２２３は候補リストの中からｊ個のサブグラフをピックアップし、サブグラフの組合せ情報（結合パス、絞込み結果で得られたターゲットエンティティの各インスタンスの識別情報とその数）を組合せ候補リストに追加する。
【０１７７】
クエリ候補導出プログラム１２２３は、この処理をｊ個からなる全ての組合せパターンを網羅するまで繰り返す。ステップＳ３１０の処理が完了したら、ステップＳ３０８に戻って上記処理を繰り返す。
【０１７８】
ステップＳ３１１で、クエリ候補導出プログラム１２２３は組合せ候補リストからテーブル数の上限（テーブル数７５１０）を超えるエントリが存在するか否かを判定し、もし存在すればそのエントリを削除する。なお、テーブル数の上限（テーブル数７５１０）は、絞り込み条件として機能する。
【０１７９】
次に、ステップＳ３１２で、クエリ候補導出プログラム１２２３は評価値表２３００から評価値を取得する。次に、ステップＳ３１３で、クエリ候補導出プログラム１２２３は組合せ候補リストの各エントリに対して、ランク値を算出する。ランク値の算出例については後述する。
【０１８０】
次に、ステップＳ３１４で、クエリ候補導出プログラム１２２３は算出されたランク値をもとに組合せ候補リストのエントリをランク付けし、絞込み結果のクエリ候補として出力する。
【０１８１】
上記処理によって、クエリ候補導出プログラム１２２３はデータ抽出条件入力画面７１００で設定された受付情報に基づいて検索したサブグラフを候補リストに追加し、候補リストの中から選択したサブグラフの組合を組合せ候補リストに追加する。その後で、クエリ候補導出プログラム１２２３は組合せ候補リストのエントリにランク付け結果を付与し、絞込み結果をクエリ候補として出力する。
【０１８２】
図１７は、データ抽出クエリ候補導出処理で利用するランク値表２４００の一例を模式的に示す。ランク値表２４００は、クエリ候補導出プログラム１２２３がデータ抽出クエリ候補導出処理を行う際に、上記ステップＳ３１３のランク値を算出する際に生成する表である。
【０１８３】
ランク値表２４００には、エントリの通番２４１０と、検索条件にヒットするターゲットエンティティ数２４２０と、検索条件ヒット率２４３０と、重み付け値２４４０と、評価値２４５０と、結合総数２４６０と、経路総数２４７０と、テーブル数２４８０と、ランク値２４９０および順位２４９５の情報が格納される。
【０１８４】
図１７では、前述したデータ例を対象に、「北海道地方のセンサ一覧」を抽出する条件でクエリ候補を導出したときの結果の一例を示している。この場合、ターゲットとなるエンティティ管理テーブル名はセンサテーブル３４００となり、検索条件としては地域テーブル３１００の名前属性の値が北海道（または地域テーブル３１００の地域番号属性の値が１）となる。
【０１８５】
検索条件にヒットするターゲットエンティティ数２４２０は、当該クエリ候補によって検索条件に合致することで導出されるターゲットエンティティとなるグラフノードのインスタンスの数となる。
【０１８６】
検索条件ヒット率２４３０は、当該クエリ候補群の中から検索条件にヒットするターゲットエンティティ数２４２０の最大値を出し、当該クエリ候補に対する検索条件にヒットするターゲットエンティティ数２４２０をその最大値で割ることで算出される。
【０１８７】
重み付け値２４４０は、当該クエリ候補に対して、当該クエリ候補の結合経路を評価する計算式をもとに算出した値を格納する。例えば、結合（ＪＯＩＮ）時における対象２テーブル間のレコードの関係定義が、双方テーブルのレコード全体のどれくらいをカバーしているかを示す指標（テーブル間関係定義カバー率）を導入する。
【０１８８】
そして、クエリ候補導出プログラム１２２３は、所定の結合を組み合わせて対象データを抽出する場合は、それらの結合に対応するテーブル間関係定義カバー率の積によって重み付け値を算出し、また所定の結合を組み合わせた複数の経路の総和（ＵＮＩＯＮ）によって対象データを抽出する場合はそれら複数経路それぞれの重み付け値の平均によって重み付け値を算出するようにしてもよい。
【０１８９】
評価値２４５０は、クエリ候補導出プログラム１２２３がステップＳ３１２で取得した値をもとに、対象クエリ候補に対して適用可能な評価値を抽出、算出したものを利用する。結合総数２４６０は、クエリ候補導出プログラム１２２３がステップＳ３１１までに生成した組合せ候補リストに登録されている各エントリをもとに、結合数（ＪＯＩＮ数）の総和を算出したものを格納する。
【０１９０】
経路総数２４７０は、クエリ候補導出プログラム１２２３がＳ３１１までに生成した組合せ候補リストに登録されている各エントリをもとに、経路数（ＵＮＩＯＮ数）の総和を算出したものを格納する。
【０１９１】
ランク値２４９０は、ランク値表２４００の上記の情報からクエリ候補導出プログラム１２２３がランク値式によって算出した値を格納する。このランク値式は、データ抽出条件入力画面７１００のランキング方法７６００で指定された条件に基づいて適宜変更するようにしてもよい。例えば、評価値２４５０のみを利用する場合は、この値をそのまま利用するようにしてもよい。
【０１９２】
本実施例１では、次に示す５つの値を対象に、次に示す優先度でランク値を算出する例を示す。ここでは、第一優先として重み付け値２４４０と評価値２４５０の二値の和を利用し、第二優先として検索条件ヒット率２４３０を利用し、第三優先として結合総数２４６０の逆数を利用し、第四優先として経路総数２４７０の逆数を利用し、第五優先としてテーブル数２４８０の逆数を利用する。この場合の算出式の例としては、（式１）のようにすることができる。
【０１９３】
ランク値＝ｐ１＊（重み付け値２４４０と評価値２４５０の二値の和）＋ｐ２＊（検索条件ヒット率２４３０）＋ｐ３＊（結合総数２４６０の逆数）＋ｐ４＊（経路総数２４７０の逆数）＋ｐ５（テーブル数２４８０の逆数）
ただし、ｐ１＝１００００，ｐ２＝１０００，ｐ３＝１００，ｐ４＝１０，ｐ５＝１        ・・・（式１）
【０１９４】
ランク値式は事前に想定するバリエーションに応じて事前に登録するようにしてもよいし、運用中に管理者などが追加登録するようにしてもよい。また、調整の一環として、設定する係数の値（（式１）の場合はｐ１〜ｐ５）についても、事前設定ならびに運用中の変更ができるようにしてもよい。
【０１９５】
最後に、順位２４９５は、ランク値２４９０の値を所定の順番で整列して付与した値とする。本実施例１では、ランク値を降順に整列したときの順序を順位の値として付与した例を示している。
【０１９６】
図１８は、データベースクエリ導出サーバ１２で行われるデータ抽出クエリ候補に対する利用者からの評価値登録処理の一例を示すフローチャートである。本処理は、図１０に示したデータ抽出クエリ候補導出結果出力画面８１００などを介して、データベースクエリ導出サーバ１２上のクエリ候補評価値管理プログラム１２２４に対してクライアントマシン１４が評価値登録要求をした際に実行される。
【０１９７】
はじめに、ステップＳ４０１で、クエリ候補評価値管理プログラム１２２４は評価値の設定対象となるクエリ候補の識別情報と、評価値と、当該評価値を関連付ける要求元ＩＤをクライアントマシン１４から受け付ける。ここでは、クライアントマシン１４のデータ抽出クエリ候補導出結果出力画面８１００で対象情報を入力し、評価値登録ボタン８４００を押下することを契機に実行される。
【０１９８】
次にステップＳ４０２で、クエリ候補評価値管理プログラム１２２４は当該クエリに対応するエントリ（クエリ候補に対応するサブグラフの情報）を、クエリ候補導出プログラム１２２３が生成した組合せ候補リストから取得する。
【０１９９】
具体的には、当該エントリと同じサブグラフを含むエントリを検索し、その組合せ数を取得する。次にステップＳ４０３で、クエリ候補評価値管理プログラム１２２４は組合せ候補リストの該当エントリに含まれるサブグラフの組合せ数の上限（総経路数７５３０）を判定するために利用する変数ｐの値を０に初期化する。
【０２００】
ステップＳ４０４で、クエリ候補評価値管理プログラム１２２４は組合せ候補リストの当該エントリに含まれるサブグラフの組合せ数の上限に変数ｐの値が達したか否かを判定する。上限に達した場合は、本処理を終了する。達していない場合は、ステップＳ４０５に移る。
【０２０１】
ステップＳ４０５で、クエリ候補評価値管理プログラム１２２４は当該エントリからサブグラフに対応する結合パスを取得する。次にステップＳ４０６で、クエリ候補評価値管理プログラム１２２４は当該結合パスとその評価値とのペアを評価値表２３００に登録する。
【０２０２】
ここで、該当エントリ（同じ要求元ＩＤと、結合パスに対応するエンティティ管理テーブル３００またはリレーション管理テーブル４００のエントリＩＤが同じであるエントリ）が評価値表２３００に既に登録済みであれば、クエリ候補評価値管理プログラム１２２４は当該エントリを上書き更新するか、または新エントリを追加する。クエリ候補評価値管理プログラム１２２４は、該当エントリが評価値表２３００に未登録であれば、新エントリを追加する。
【０２０３】
次にステップＳ４０７でクエリ候補評価値管理プログラム１２２４は変数ｐの値に１を加算する。ステップＳ４０７の処理が完了したら、ステップＳ４０４に戻って上記処理を繰り返す。
【０２０４】
上記処理によって、評価値の設定対象となるクエリ候補について、結合パスと評価値の組合せが評価値表２３００に登録される。
【０２０５】
図１９はデータベースクエリ導出サーバ１２で行われるデータ抽出クエリ候補に対するＳＱＬクエリ変換処理の一例を示すフローチャートである。本処理は、データ抽出クエリ候補導出結果出力画面８１００などを介して、データベースクエリ導出サーバ１２上のクエリ変換プログラム１２２５に対して、クライアントマシン１４がＳＱＬクエリへの変換要求をした際に実行される。
【０２０６】
はじめに、ステップＳ５０１で、クエリ変換プログラム１２２５は変換対象となるクエリ候補を受け付ける。本実施例１では、図１０のデータ抽出クエリ候補導出結果出力画面８１００で表示されているクエリ候補の中から、所望の一つを選択しＳＱＬボタン８３６１〜８３６６の中で該当するボタンを押下することを契機に実行される。
【０２０７】
次にステップＳ５０２で、クエリ変換プログラム１２２５は当該クエリ候補に対応するエントリ（クエリ候補に対応するサブグラフの情報）を組合せ候補リストから取得する。次にステップＳ５０３で、クエリ変換プログラム１２２５は組合せ候補リストの該当エントリに含まれるサブグラフの組合せ数の上限（総経路数７５３０）を判定するために利用する変数ｋの値を０に初期化する。
【０２０８】
Ｓ５０４で、クエリ変換プログラム１２２５は組合せ候補リストの当該エントリに含まれるサブグラフの組合せ数の上限に変数ｋの値が達したか否かを判定する。上限に達した場合はステップＳ５０８に移り、達していない場合はステップＳ５０５に移る。
【０２０９】
ステップＳ５０５で、クエリ変換プログラム１２２５は当該エントリから所定のサブグラフに対応する結合パスを取得する。
【０２１０】
次にステップＳ５０６で、クエリ変換プログラム１２２５は結合パスに対応するＳＱＬクエリのＦＲＯＭ部分を導出する。本実施例１では、エンティティ変換表２１００に登録されている該当エントリのテーブルを列挙し、それらのテーブルをリレーション変換表２２００に登録されている該当エントリの第一テーブル名２２４０、第二テーブル名２２５０および結合条件２２６０のデータに基づいて結合することで、ＦＲＯＭ部分を導出に対応する。次にステップＳ５０７でクエリ変換プログラム１２２５は変数ｋの値に１を加算する。ステップＳ５０７の処理が完了したら、ステップＳ５０４に戻って上記処理を繰り返す。
【０２１１】
ステップＳ５０８で、クエリ変換プログラム１２２５は前段の処理で導出したＳＱＬクエリのＦＲＯＭ部分について、複数の組合せ候補が列挙されていた場合には、それらをＵＮＩＯＮで結合する。
【０２１２】
次にステップＳ５０９で、クエリ変換プログラム１２２５はＳＱＬクエリのＳＥＬＥＣＴ部分とＷＨＥＲＥ部分をデータ抽出条件から生成する。具体的には、図１０の抽出対象７２００の各欄で指定された情報をもとにＳＥＬＥＣＴ部分を生成し、検索条件７３００ならびに抽出期間７４００で指定された情報をもとにＷＨＥＲＥ部分を生成する。
【０２１３】
次にステップＳ５１０で、クエリ変換プログラム１２２５は生成したＳＱＬクエリのパーツ群を統合し、一つのＳＱＬクエリにする。本実施例１では、クエリ変換プログラム１２２５が、上述したＳＥＬＥＣＴ部分と、ＦＲＯＭ部分と、ＷＨＥＲＥ部分のパーツを統合して、一つのＳＱＬクエリを生成する。最後に、クエリ変換プログラム１２２５は生成したＳＱＬクエリを出力する。
【０２１４】
以上のように、本実施例１では、データベースクエリ導出サーバ１２が、エンティティ管理テーブル３００とリレーション管理テーブル４００に基づいて、ＳＱＬで結合可能なデータをグラフデータとして抽出する機能と、データ抽出条件と候補導出条件を受け付けてグラフデータのサブグラフの候補（クエリ候補）を絞り込む機能と、絞り込んだ結果（クエリ候補）にランク値を付与して整列した情報をクライアントマシン１４へ出力する機能と、絞り込みの結果からクエリに変換するサブグラフの候補をクエリ候補として受け付ける機能と、クエリ候補に対応するサブグラフから結合パスに対応するＳＱＬのＦＲＯＭ部分を導出してＳＱＬを生成する機能を有する。なお、ＳＱＬを生成する機能は、さらに、ＳＱＬのＦＲＯＭ部分をＵＮＩＯＮで結合し、データ抽出条件と候補導出条件からＳＥＬＥＣＴ部分とＷＨＥＲＥ部分を生成する機能を含む。
【０２１５】
上記の構成によって、本実施例１では、結合可能なグラフデータに基づいて、結合可能かつ結合してもデータが０件にならないクエリを導出することが可能となる。
【０２１６】
また、絞込み結果であるクエリ候補に対して、それぞれランキング用のスコアに基づいて整列した結果を提供することにより、クライアントマシン１４の利用者は容易にクエリ候補を選択することが可能となる。さらに、絞込み結果であるクエリ導出候補に対して、利用者が指定した評価値をランキング用のスコアに反映することで、クエリ候補の絞込み結果をより洗練させることが可能となる。
【実施例２】
【０２１７】
前記実施例１の計算機システム１では、データベースクエリ導出サーバ１２がＳＱＬクエリを導出し、そのクエリをデータベースサーバ１１上で実行することで、対象データを取得する。
【０２１８】
しかしながら、前記実施例１の計算機システム１では、当該導出されたＳＱＬクエリによって取得するデータ量が多い場合、その取得に伴うＩ／Ｏ処理やネットワーク１０の転送処理のオーバヘッドが発生する可能性がある。この場合、対象データの取得までのレスポンスタイムやスループットが長大化し、利便性が低下する懸念がある。
【０２１９】
そこで、実施例２の計算機システム１では、データベースクエリ導出サーバ１２においてＳＱＬクエリを導出すると同期して、データベースサーバ１１に対して当該導出されたＳＱＬクエリを転送ならびに実行することでデータベースサーバ１１のメモリ１１２０上にキャッシュできるようにする。
【０２２０】
実施例２では、前記実施例１に対して、データ取得までの全体のシーケンスの中で対象データを先行して取得してキャッシュするステップを追加する点と、データ抽出クエリ候補導出結果出力画面８１００の中でＳＱＬ変換だけではなくキャッシュを行うためのボタンを追加する点と、ＳＱＬクエリ変換処理においてクエリ変換後にキャッシュ取得要求を新たに追加する点が異なる。なお、その他の構成は前期実施例１と同様である。
【０２２１】
以降、実施例２におけるデータ抽出クエリ生成に関する一連の処理を示すシーケンス図の変更所を図２０で説明し、データ抽出クエリ候補導出結果出力画面８１００の変更箇所を図２１で説明し、ＳＱＬクエリ変換処理の流れの変更箇所を図２２で説明する。
【０２２２】
図２０は、実施例２における、データ抽出クエリ生成に関する一連の処理を示すシーケンス図である。実施例１に示した図２との相違点は、ステップＳ１１２の後にステップＳ１２１〜Ｓ１２３を追加した点と、ステップＳ１１５の処理の内容が変更された点である。以降、これらの変更点を中心に説明する。
【０２２３】
ステップＳ１１２を実施した後、ステップＳ１２１で、クエリ変換プログラム１２２５は導出したＳＱＬクエリを、データベースサーバ１１上のデータベース制御プログラム１１２１に対して送信し、データベースサーバ１１のメモリ１２２０に予め設定されたキャッシュ（図示省略）上に対象データを抽出するように要求する。
【０２２４】
ステップＳ１２２で、データベース制御プログラム１１２１は受信したＳＱＬクエリを実行して、外部記憶装置１１４０から取得したデータをキャッシュメモリ上に格納する。なお、このキャッシュメモリはデータベースサーバ１１上にあってもよいし、別サーバやマシン上にあってもよい。
【０２２５】
次にステップＳ１２３でデータベース制御プログラム１１２１は当該処理の完了をデータベースクエリ導出サーバ１２へ通知する。データベースクエリ導出サーバ１２のクエリ変換プログラム１２２５は、ステップＳ１２３による完了通知を待って次のステップＳ１１３を実行するようにしてもよいし、完了通知を待たずに次のステップＳ１１３を実行するようにしてもよい。
【０２２６】
また、Ｓ１１５で、データベース制御プログラム１１２１は、データ抽出要求を受け付けたデータについて、当該クエリを実行してデータを取得するかわりに、前段でキャッシュメモリ上に取得したデータを提供するようにしてもよい。
【０２２７】
上記処理によって、データベースサーバ１１ではキャッシュメモリにキャッシュされたデータを読み込むことで、外部記憶装置１１４０からデータを読み込む場合には比してデータ転送処理のオーバヘッドを低減できる。
【０２２８】
図２１は、実施例２における、データ抽出クエリ候補導出結果出力画面８１００を模式的に示す図である。実施例１に示した図１０との違いは、クエリ変換欄８３６０に、ＳＱＬ＋キャッシュボタン８３９１〜８３９６を追加した点である。以降、この変更点を中心に説明する。なお、その他の構成については前期実施例１と同様である。
【０２２９】
ＳＱＬ＋キャッシュボタン８３９１〜８３９６は、当該エントリのクエリ候補を対象にＳＱＬクエリへの変換ならびにキャッシュメモリへの取得データの読み出しを実行する。ＳＱＬ＋キャッシュボタン８３９１〜８３９６を押下することで、図２０で説明したフローチャートが実行される。なお、本実施例２ではＳＱＬボタンとは別にＳＱＬ＋キャッシュボタンを提供することとしたがこの限りではない。元のＳＱＬボタンを押下した時に、キャッシュメモリへの取得データの読み出しを実行するようにしてもよい。
【０２３０】
図２２は、実施例２における、データベースクエリ導出サーバ１２で行われるデータ抽出クエリ候補に対するＳＱＬクエリ変換処理の一例を示すフローチャートである。実施例１に示した図１９の処理との違いは、Ｓ５１０の後にＳ５２１とＳ５２２を追加した点である。その他の構成については前記実施例１の図１９と同様である。以降、これらの変更点を中心に説明する。
【０２３１】
図１９と同様にステップＳ５１０を実施した後、ステップＳ５２１で、クエリ変換プログラム１１２５は導出したＳＱＬクエリをデータベースサーバ１１で実行するか否かを判定する。本実施例２では、データ抽出クエリ候補導出結果出力画面８１００にてＳＱＬ＋キャッシュボタン８３９１〜８３９６のいずれかが押下されたら実行するものと判定してステップＳ５２２に移る。一方、ＳＱＬボタンが押下されたら実行しないものと判定してステップＳ５１１に移る。
【０２３２】
ステップＳ５２２で、クエリ変換プログラム１１２５は当該ＳＱＬクエリ実行をデータベースサーバ１１上のデータベース制御プログラム１１２１に対して依頼し、依頼を受けたデータベース制御プログラム１１２１は指定されたＳＱＬクエリを実行して取得したデータをキャッシュメモリ上に格納する。ステップＳ５２２の処理が完了したら、データベース制御プログラム１１２１は完了した旨を要求元に通知する。要求元であるデータベースクエリ導出サーバ１２のクエリ変換プログラム１２２５は、当該完了通知を受けた後、次のステップＳ５１１を前期実施例１と同様に実行する。なお、クエリ変換プログラム１２２５は、当該完了通知を受ける前に次のＳ５１１を実行するようにしてもよい。
【０２３３】
以上の処理により、本実施例２では、データベースサーバ１１が指定されたクエリでデータをキャッシュメモリに格納しておき、クライアントマシン１４からデータ抽出要求を受け付けると、データベースサーバ１１はキャッシュメモリから該当するデータを読み込む。これにより、本実施例２によれば、前記実施例１に加えて、データの取得までのレスポンスタイムやスループットが悪化するのを抑制することが可能となる。
【０２３４】
なお、上記実施例１、２では、本発明をＳＱＬに適用する例を示したが、これに限定されるものではなく、例えば、ＮｏＳＱＬに適用しても良い。また、上記実施例１、２では、本発明をリレーショナルデータベースに適用する例を示したが、これに限定されるものではなく、例えば、ＨＤＦＳ（Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）上のＨｂａｓｅ等に適用しても良い。
【０２３５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０２３６】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０２３７】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０２３８】
１１  データベースサーバ
１２  データベースクエリ導出サーバ
１３  管理サーバ
１４  クライアントマシン
１１２１  データベース制御プログラム
１２２１  クエリ導出用データベース制御プログラム
１２２２  データ登録プログラム
１２２３  クエリ候補導出プログラム
１２２４  クエリ候補評価値管理プログラム
１２２５  クエリ変換プログラム
１３２１  データベース運用管理プログラム
１３２２  データ登録処置運用管理プログラム
１４２１  データベースクライアントプログラム
１４２２  クエリ導出クライアントプログラム
２１００  エンティティ変換表
２２００  リレーション変換表
２３００  評価値表
２４００  ランク値表
３１００  地域テーブル
３２００  工場テーブル
３３００  製造装置テーブル
３４００  センサテーブル
３５００  地域―工場テーブル
３６００  地域―センサテーブル
３７００  工場―製造装置テーブル
３８００  工場―センサテーブル
３９００  製造装置―センサテーブル
４０００  計測値テーブル
６１００  データ登録画面
７１００  データ抽出条件入力画面
８１００  データ抽出クエリ候補導出結果出力画面
【図１】
2019125283.tif 000003
【図２】
2019125283.tif 000004
【図３】
2019125283.tif 000005
【図４Ａ】
2019125283.tif 000006
【図４Ｂ】
2019125283.tif 000007
【図４Ｃ】
2019125283.tif 000008
【図４Ｄ】
2019125283.tif 000009
【図４Ｅ】
2019125283.tif 000010
【図４Ｆ】
2019125283.tif 000011
【図４Ｇ】
2019125283.tif 000012
【図４Ｈ】
2019125283.tif 000013
【図４Ｉ】
2019125283.tif 000014
【図４Ｊ】
2019125283.tif 000015
【図５】
2019125283.tif 000016
【図６】
2019125283.tif 000017
【図７】
2019125283.tif 000018
【図８】
2019125283.tif 000019
【図９】
2019125283.tif 000020
【図１０】
2019125283.tif 000021
【図１１】
2019125283.tif 000022
【図１２】
2019125283.tif 000023
【図１３】
2019125283.tif 000024
【図１４】
2019125283.tif 000025
【図１５】
2019125283.tif 000026
【図１６】
2019125283.tif 000027
【図１７】
2019125283.tif 000028
【図１８】
2019125283.tif 000029
【図１９】
2019125283.tif 000030
【図２０】
2019125283.tif 000031
【図２１】
2019125283.tif 000032
【図２２】
2019125283.tif 000033