図面 (/)

技術 データベース・システム

出願人 株式会社東芝
発明者 片山大河金松基孝落合信
出願日 2013年7月17日 (7年10ヶ月経過) 出願番号 2013-148148
公開日 2015年2月2日 (6年4ヶ月経過) 公開番号 2015-022388
状態 特許登録済
技術分野 検索装置 計算機におけるファイル管理
主要キーワード 一時結果 テンポラリテーブル DB側 側関数 リテラル値 物理的構成要素 所属データ 実行用プログラム
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2015年2月2日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (15)

課題

処理要求データベース統合装置で定義されていない関数が含まれていても、その関数の所属先データソースに関数の実行をさせて、処理要求に対する処理結果を端末装置に返す。

解決手段

データベース・システムは、所属先判定部と、プログラム生成部と、プログラム実行部とを有する。所属先判定部は、端末装置から送信された処理要求を受信し、この処理要求に含まれる関数の所属先データソースを判定し、その判定結果である所属先判定結果を出力する。プログラム生成部は、端末装置から送信された処理要求を解釈して、プログラムを生成し、これを出力する。プログラム実行部は、プログラム及び所属先判定結果に基づいて、プログラムに含まれる関数の実行を当該関数の所属先データソースに指示し、所属先データソースから関数の実行結果を取得し、関数の実行結果からプログラムの実行結果を生成し、プログラムの実行結果を端末装置に送信する。

概要

背景

ネットワークの普及発展に伴って多種多様のデータがネットワーク上に蓄積されるようになり、このようなデータを組み合わせて処理することによりデータマイニング等のデータ分析手法で、有用有益な分析が行われるようになってきている。

データ分析を行う場合には、複数のデータベースに格納された情報を組み合わせて処理する関数を計算する必要が生ずる場合がある。そのような必要に応じて、複数のデータベースを統合するデータベース統合サーバが提供される

概要

処理要求データベース統合装置で定義されていない関数が含まれていても、その関数の所属先データソースに関数の実行をさせて、処理要求に対する処理結果を端末装置に返す。データベース・システムは、所属先判定部と、プログラム生成部と、プログラム実行部とを有する。所属先判定部は、端末装置から送信された処理要求を受信し、この処理要求に含まれる関数の所属先データソースを判定し、その判定結果である所属先判定結果を出力する。プログラム生成部は、端末装置から送信された処理要求を解釈して、プログラムを生成し、これを出力する。プログラム実行部は、プログラム及び所属先判定結果に基づいて、プログラムに含まれる関数の実行を当該関数の所属先データソースに指示し、所属先データソースから関数の実行結果を取得し、関数の実行結果からプログラムの実行結果を生成し、プログラムの実行結果を端末装置に送信する。

目的

本発明の一の実施の形態は、端末装置から送信された処理要求に、データベース統合サーバで定義されていない関数が含まれていても、その関数の所属先データソースに関数の実行をさせて、処理要求に対する処理結果を端末装置に返すことが可能する技術を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

端末装置から送信された処理要求を受信し、この処理要求に含まれる関数所属先データソースを判定し、その判定結果である所属先判定結果を出力する判定手段と、前記端末装置から送信された処理要求を解釈して、プログラムを生成し、これを出力する生成手段と、前記プログラム及び前記所属先判定結果に基づいて、前記プログラムに含まれる関数の実行を当該関数の所属先データソースに指示し、所属先データソースから関数の実行結果を取得し、前記関数の実行結果からプログラムの実行結果を生成し、前記プログラムの実行結果を前記端末装置に送信する実行手段とを有するデータベース・システム

請求項2

前記判定手段は、関数の引数の全てが同一のデータソース所属する場合、当該データソースをその関数の所属先データソースと判定する、請求項1に記載のデータベース・システム。

請求項3

前記判定手段は、関数の引数それぞれの所属先データソースを判定し、最も多く所属先データソースとして判定されたデータソースを当該関数の所属先データソースと判定し、関数の所属先データソースが記憶していない引数である外部引数に対応するデータを記憶しているデータソースから当該外部引数に対応するデータを前記所属先データソースに送信して記憶させ、前記前記所属先データソースに当該関数の計算を実行させる、請求項1に記載のデータベース・システム。

技術分野

0001

本明細書に記載の実施の形態は、データベース・システムに関する。

背景技術

0002

ネットワークの普及発展に伴って多種多様のデータがネットワーク上に蓄積されるようになり、このようなデータを組み合わせて処理することによりデータマイニング等のデータ分析手法で、有用有益な分析が行われるようになってきている。

0003

データ分析を行う場合には、複数のデータベースに格納された情報を組み合わせて処理する関数を計算する必要が生ずる場合がある。そのような必要に応じて、複数のデータベースを統合するデータベース統合サーバが提供される

先行技術

0004

IBM、″フェデレーテッド・システムでの関数マッピング″、[online]、2009年3月30日、[平成25年7月12日検索]、インターネット〈URL:http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.swg.im.iis.db.fed.sysconfig.doc%2Ftopics%2Fcfpfun01.html&lang%3Dja〉

発明が解決しようとする課題

0005

しかし、ユーザから送信された処理要求に、データベース統合サーバ上で定義されていない関数(SQL関数など)が含まれている場合には、たとえ各データベースにその関数の引数に相当するデータが存在していても、データベース統合サーバは、関数の所属不明のためエラーを出力してしまうという問題があった。

0006

本発明の一の実施の形態は、端末装置から送信された処理要求に、データベース統合サーバで定義されていない関数が含まれていても、その関数の所属先データソースに関数の実行をさせて、処理要求に対する処理結果を端末装置に返すことが可能する技術を提供することを目的とする。

課題を解決するための手段

0007

本発明の一の実施の形態はデータベース・システムとして提案される。データベース・システムは、判定手段と、生成手段と、実行手段とを有する。

0008

判定手段は、端末装置から送信された処理要求を受信し、この処理要求に含まれる関数の所属先データソースを判定し、その判定結果である所属先判定結果を出力する。生成手段は、端末装置から送信された処理要求を解釈して、プログラムを生成し、これを出力する。実行手段は、プログラム及び所属先判定結果に基づいて、プログラムに含まれる関数の実行を当該関数の所属先データソースに指示し、所属先データソースから関数の実行結果を取得し、関数の実行結果からプログラムの実行結果を生成し、プログラムの実行結果を端末装置に送信する。

図面の簡単な説明

0009

第1の実施の形態に係るデータベース・システムの構成例を示す機能ブロック
カラム所属先テーブルのデータ構成例を示す図
所属先判定結果のデータ構成例を示す図
データベース・システムの主要動作の例を示したフローチャート
プログラム生成処理の一例を示すフローチャート
関数所属先判定処理の一例を示すフローチャート
引数所属先判定処理の一例を示すフローチャート
データベース、テーブル、カラムの関係を示す図
プログラム実行処理の一例を示すフローチャート
第2の実施の形態のプログラム生成処理の一例を示すフローチャート
第2の実施の形態の関数所属先判定処理の一例を示すフローチャート
第2の実施の形態のプログラム実行処理の一例を示すフローチャート
第2の実施の形態における関数f(a1, b1, b2)の処理例を示す図
第2の実施の形態における関数g(a1, a2,f(a1, b1, b2))の処理例を示す図

実施例

0010

以下、図面を参照して本発明の実施の形態に係るデータベース・システムを説明する。 [0.用語の定義]
本明細書で使用する用語の定義を述べる。
(1)関数
「関数」とは、引数と呼ばれるデータを受け取り、定められた通りの処理を実行して結果を返す一連命令若しくは命令群をいう。
(2)テーブル
「テーブル」とは、データベースに格納される情報のまとめであって、データ要素(値)の集合を垂直な列と水平の行のモデルで構成したものをいう。

0011

[1.第1の実施の形態]
本発明の第1の実施の形態について説明する。本発明の第1の実施の形態は、データベース・システムとして提案される。
[1.1.第1の実施の形態の構成例]

0012

図1に第1の実施の形態に係るデータベース・システムの構成例を示す機能ブロック図を掲げる。なお、機能ブロック図中に示す構成要素は、各装置の機能を機能ごとにまとめてブロックとして捉えたものであり、各装置が各構成要素に対応する基板、装置、回路部品などの物理的構成要素を備えていなければならないことを意味するわけではない。また、「接続されている」とは、データ、情報、命令などの送受信、受け取り、受け渡しなどが可能な状態になっていることをいい、互いに配線で連結されているような物理的な接続に限られる意味ではない。本明細書中の他の機能ブロック図の説明についても同様である。

0013

データベース(DB)・システム1は、端末装置10と、端末装置10に接続されたデータベース統合装置20と、データベース統合装置20に接続された複数のデータソース30とを有している。

0014

[1.1.1.端末装置]
端末装置10は、データの操作や定義を行うためのデータベース言語(例えばSQL)をデータベース統合装置20に送信し、データベース統合装置20からデータベース言語の実行結果を受信して、その実行結果をユーザに提示するアプリケーション10Aを有する装置である。この端末装置10は、コンピュータワークステーション携帯電話器スマートフォン含む)、タブレットPC、ゲーム機などの情報処理装置であって、この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読み出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置具備している装置である。

0015

[1.1.2.データベース統合装置]
データベース統合装置20は、端末装置10からデータベース言語で記述された処理要求を受信すると、そのデータベース言語を解釈して、実行可能なプログラムを生成するとともに、そのプログラムに含まれている関数及び引数の所属先データソース(データベース、以下単に「所属先データソース」)を判定し、関数及び引数の所属先データソースと判定されたデータソース30にその関数の実行を指示し、その関数を実行結果をデータソース30から受信し、受信した実行結果に基づいて前記処理要求に対する結果を端末装置10に送信する機能を有する。

0016

このデータベース統合装置20は、コンピュータ、ワークステーション、サーバなどの情報処理装置であって、この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読み出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。

0017

データベース統合装置20は、所属先判定部21と、所属先判定部21に接続されたプログラム生成部22と、プログラム生成部22に接続されたプログラム実行部24と、所属先判定部21及びプログラム実行部24に接続された所属先判定結果格納部23と、プログラム実行部24に接続された一時結果格納部25とを有する。所属先判定部21は実施の形態の判定手段に相当する。プログラム生成部22は実施の形態の生成手段に相当する。プログラム実行部24は実施の形態の実行手段に相当する。
所属先判定部21は端末装置10と接続可能である。プログラム実行部24は端末装置10と接続可能であり、かつ各データソース30と接続可能である。

0018

所属先判定部21は、カラム所属先テーブル格納部21Aと関数所属先判定部21Bを有している。関数所属先判定部21Bは引数所属先判定部21Cを有している。
プログラム実行部24は関数実行制御部24Aを有している。関数実行制御部24Aは関数実行指示部24Bと、関数実行部24Cを有している。

0019

[1.1.2.1.所属先判定部]
所属先判定部21は、端末装置10から送信された処理要求を受信し、この処理要求に含まれる関数の所属先データソース30を判定し、その判定結果を出力する機能を有する。

0020

所属先判定部21はカラム所属先テーブル格納部21Aを有している。カラム所属先テーブル格納部21Aはカラム所属先テーブルを記憶している。カラム所属先テーブルは、データソース30が有しているテーブルのカラムと、そのテーブルを有しているデータソース30とを対応付けたデータである。図2にカラム所属先テーブルのデータ構成例を示す。図2において、「a1」「a2」「b1」「b2」「b3」のそれぞれはカラムを特定する情報(例えば、カラム名、属性名、属性IDなど)を示す。「A」「B」は、データソース30を特定する情報である。カラム所属先テーブルを参照することにより、そのカラムはどのデータソース30に所属するのかを判定できる。

0021

関数所属先判定部21Bは、プログラムに含まれる関数の所属先データソース30を判定し、関数とその関数の所属先データソースを対応付けた情報である所属先判定結果を出力する。図3に所属先判定結果のデータ構成例を示す。所属先判定結果は、関数と、その関数の所属先データソース30とを対にして記憶しているデータである。図3において「f(123)」「g(a1,a2)」「h(a1,a2,b1)」「i(b1,b2,h(a1,a2,a3))」は関数であり、「A」「B」はデータソース30を特定する情報である。また「所属無し」とは、その関数の所属先データソース30がないことを示す。

0022

引数所属先判定部21Cは、プログラムに含まれる関数の引数の所属先データソース30を判定し、その結果を出力する機能を有する。引数は、リテラル値、カラム、関数のいずれかである。引数がリテラル値である場合、引数所属先判定部21Cは所属無しと判定する。引数がカラムである場合、引数所属先判定部21Cはカラム所属先テーブルから当該カラムに対応付けられた所属先データソース30を取得する。引数が関数である場合、引数所属先判定部21Cは関数所属先判定部21Bによって判定された結果を当該引数の所属先データソース30と判定する。
なお、関数所属先判定部21Bは、その関数の引数の所属先データソース30に基づいて、その関数の所属先データソースを決定する。

0023

[1.1.2.2.プログラム生成部]
プログラム生成部22は、端末装置10から送信された処理要求を解釈して、プログラム実行部24によって実行可能なプログラム(コード)を生成し、これを出力する機能を有する。

0024

[1.1.2.3.所属先判定結果格納部]
所属先判定結果格納部23は、所属先判定部21が出力した所属先判定結果を記憶する機能を有する。所属先判定結果はプログラム実行部24、より詳しくは関数実行制御部24Aによって読みだされる。

0025

[1.1.2.4.プログラム実行部]
プログラム実行部24は、プログラム生成部22によって生成されたプログラム及び所属先判定結果格納部23に記憶された所属先判定結果に基づいて、プログラムに含まれる関数の実行を当該関数の所属先データソース30に指示し、所属先データソース30から関数の実行結果を取得し、プログラムに含まれる関数を実行し、関数の実行結果からプログラムの実行結果を生成し、実行結果を端末装置10に送信する機能を有する。

0026

プログラム実行部24は、関数実行制御部24Aを有している。関数実行制御部24Aは、プログラム中の関数を、その関数の所属先データソース30に基づいて、関数実行指示部24Bに処理させるか、関数実行部24Cに処理させるかを判定し、判定結果に基づいて関数実行指示部24B若しくは関数実行部24Cに関数の実行をさせる機能を有する。

0027

関数実行制御部24Aは関数実行指示部24B及び関数実行部24Cを有する。関数実行指示部24Bは、所属先判定結果に基づいて、プログラムに含まれている関数の実行を、その関数の所属先データソース30に指示し、所属先データソース30から返される関数の実行結果を取得する機能を有する。関数実行部24Cは、プログラムに含まれている関数を実行し、その関数の実行結果を出力する機能を有する。

0028

[1.1.2.5.一時結果格納部]
一時結果格納部25はデータソース30から返された関数の実行結果を一時的に格納する機能を有する。

0029

[1.1.3.データソース]
データソース30は、データベースとして機能する装置又はプログラム、アプリケーションであって、DB側関数実行部30Aとデータベース部30Bとを有する。DB側関数実行部30Aは、データベース統合装置20からの関数実行指示に応じて、データベース部30Bに記憶されたデータの処理を実行する。データベース部30Bは、少なくとも一つのカラムを有するテーブルを用いて、データを記憶する機能を有する。

0030

[1.2.データベース・システムの動作例]
次に第1の実施の形態に係るデータベース・システム1の動作例を説明する。
[1.2.1.データベース・システムの主要動作]
まず、データベース・システム1の主要動作を説明する。図4はデータベース・システム1の主要動作の例を示したフローチャートである。端末装置10から処理要求(例えばSQL)を受信する(S10)と、データベース統合装置20は処理要求から、実行可能な実行用プログラムを生成する(プログラム生成処理:S20)。次にデータベース統合装置20はステップS20で実行用プログラムの生成が成功したか否かを判定する(S30)。実行用プログラムの生成が成功しなかったと判定した場合(S30, No)、データベース統合装置20は処理エラーメッセージを端末装置10に送信する。一方、実行用プログラムの生成が成功したと判定した場合(S30, Yes)、データベース統合装置20はその実行用プログラムを実行し(プログラム実行処理:S40)、その実行結果を端末装置10に返して(S50)、処理を終了する。

0031

[2.2.プログラム生成処理]
次に前述のプログラム生成処理(図5、S20)の内容を詳述する。図5はステップS20における処理であるプログラム生成処理の一例を示すフローチャートである。プログラム生成処理において、データベース統合装置20、より詳しくは所属先判定部21は、処理要求に関数(例えば、SQL関数)が含まれているか否かを判定する(S110)。ステップS110において、処理要求に関数は含まれていないと判定した場合(S110, No)、所属先判定部21は、プログラム生成部22に処理要求に応じた実行用プログラムを生成させ(S120)、プログラム生成処理が終了する。一方、ステップS110において、関数が含まれていると判定した場合(S110, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは関数の所属先判定を行う(関数所属先判定処理:S130)。「関数の所属先判定」とは、関数の所属先データソースがどのデータソース30であるかを決定する処理をいう。

0032

次に所属先判定部21、より詳しくは関数所属先判定部21Bは関数の所属先判定ができたか否かを判定する(S140)。関数の所属先判定ができない若しくは失敗したと判定した場合(S140, No)、プログラム生成処理はエラーとなり、実行用プログラムの生成は行われない(図4、S30, No参照)。一方、ステップS130における関数の所属先判定ができた若しくは成功したと判定した場合(S140, Yes)、所属先判定部21は、処理要求に応じた実行用プログラムであって、関数の所属先データソース30でその関数を実行させる実行用プログラムをプログラム生成部22に生成させて(S150)、プログラム生成処理を終了する。

0033

[1.2.3.関数所属先判定処理]
前述の関数所属先判定処理(図5、S130)の内容を詳述する。図6に関数所属先判定処理の一例を示すフローチャートを掲げる。関数所属先判定処理において、所属先判定部21、より詳しくは引数所属先判定部21Cは、所属先判定対象の関数の引数を読み取る(S210)。次に所属先判定部21、より詳しくは関数所属先判定部21Bは、所属先判定対象となる関数の全部の引数の判定が完了したか否かを判定する(S220)。ステップS220において所属先判定対象となる関数の全部の引数の判定が完了していないと判定した場合(S220, No)、所属先判定部21、より詳しくは関数所属先判定部21Bは、引数所属先判定部21Cにこの引数の所属先データソースを判定させる(引数所属先判定処理:S230)。次に所属先判定部21、より詳しくは関数所属先判定部21Bは、引数所属先判定部21Cから出力される所属先判定結果を所属先判定結果格納部23に格納する(S240)。その後所属先判定部21、より詳しくは関数所属先判定部21Bは、ステップS210に戻り未判定の引数の所属先判定を続行する。

0034

一方、ステップS220において所属先判定対象となる関数の全部の引数の判定が完了していると判定した場合(S220, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは、所属先判定結果を参照し、その関数の全引数の所属先データソース数は一つか否かを判定する(S250)。所属先判定結果格納部に記録された各引数の所属先データソースを参照し、全引数の所属先データソースが一致する場合には、当該関数の所属先データソースを引数の所属先データソースと判定する。なお、関数の引数に所属無しの引数(例えばリテラル値)が含まれていたら、その引数は無視して関数の所属先判定を行う。

0035

ステップS250において所属先データソース数は一つであると判定した場合(S250, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは、その関数の所属先データソース30を所属先判定結果に記述されているデータソース30であると判定し、関数所属先判定処理を終了する。一方、所属先データソース数は一つでないと判定した場合(S250, No)、所属先判定部21、より詳しくは関数所属先判定部21Bは、関数所属先判定処理の結果としてエラーを返して、関数所属先判定処理を終了する。

0036

上記関数所属先判定処理の具体例を以下に示す。
(1)関数f(a1, a2)
関数f(a1, a2)は2つの引数a1, a2を有する関数である。引数a1、引数a2は共に所属先データソースをデータソースXとする。所属先判定部21、より詳しくは関数所属先判定部21Bは、この関数の所属先データソース個数は、データソースXの一つであるので、関数f(a1, a2)の所属先データソースをデータソースXと判定する。

0037

(2)関数g(a1, 123)
関数g(a1, 123)は2つの引数a1, 123を有する関数である。引数a1の所属先データソースをデータソースXであり、引数123は所属先のないリテラル値であるものとする。所属先判定部21、より詳しくは関数所属先判定部21Bは、引数123は所属先データソースは無視されるため、この関数の所属先データソース個数は、データソースXの一つであるので、関数g(a1, 123)の所属先データソースをデータソースXと判定する。

0038

(3)関数h(a1, b1, b2)
関数h(a1, b1, b2)は3つの引数a1、b1、b2を有する関数である。引数a1の所属先データソースはデータソースXであり、引数b1、引数b2は共に所属先データソースを、データソースXとは異なるデータソースYであるものとする。所属先判定部21、より詳しくは関数所属先判定部21Bは、この関数の所属先データソース個数は、データソースXと、データソースYの二つであるので、関数h(a1, b1, b2)の所属先データソースは定まらず、エラーを返すことになる。

0039

[1.2.4.引数所属先判定処理]
前述の引数所属先判定処理(図6、S230)の内容を詳述する。図7に引数所属先判定処理の一例を示すフローチャートを掲げる。引数所属先判定処理において、所属先判定部21、より詳しくは引数所属先判定部21Cは、所属先判定の対象となる引数がリテラル値か、関数か、引数かを判定する(S310)。

0040

ステップS310において、引数がリテラル値であると判定した場合(S310、リテラル)、所属先判定部21、より詳しくは引数所属先判定部21Cは当該引数の所属先データソースを「所属無し」として出力する。

0041

また、ステップS310において、引数が関数であると判定した場合(S310、関数)、所属先判定部21、より詳しくは引数所属先判定部21Cはその関数について、関数所属先判定部21Bに所属先データソースを判定させる。関数所属先判定部21Bは個の引数である関数について関数所属先判定処理(図5、S130)を実行し、引数としての関数の所属先データソースを決定し、出力する(S320)。

0042

また、ステップS310において、引数がカラムであると判定した場合(S310、引数)、所属先判定部21、より詳しくは引数所属先判定部21Cはカラム所属先テーブルからこのカラムの所属先データソースを判定し、出力する(S330)。

0043

ここでデータソース(データベース)、テーブル、カラムの関係について説明する。図8にデータベース、テーブル、カラムの関係を示す図を掲げる。図8には、二つの異なるデータベース、データソースX及びデータソースYが示されている。データソースXはテーブルAを有している。テーブルAは、4つのカラムa1, a2, a3, a4を有している。一方、データソースYはテーブルBを有している。テーブルBは、3つのカラムb1, b2, b3を有している。

0044

[1.2.5.プログラム実行処理]
次に、前述のプログラム実行処理(図1、S40)の内容を詳述する。図9はプログラム実行処理の一例を示すフローチャートである。プログラム実行処理において、プログラム実行部24は、実行用プログラムを実行し終えたか否かを判定する(S410)。実行用プログラムを実行し終えたと判定した場合(S410, Yes)、プログラム実行部24はプログラム実行処理を終了する。一方、実行用プログラムを実行し終えていないと判定した場合(S410, No)、プログラム実行部24は実行用プログラムから1ステップ読み込む(S420)。

0045

次にプログラム実行部24は、直近のステップS420で読み込んだステップが関数を処理するステップか否かを判定する(S430)。そのステップが関数を処理するステップでないと判定した場合(S430, No)、プログラム実行部24は、既存手法で実行用プログラムを1ステップ実行し(S460)、その後ステップS410に戻りプログラム実行処理を続行する。一方、そのステップが関数を処理するステップであると判定した場合(S430, Yes)、プログラム実行部24、より詳しくは関数実行制御部24Aは、所属先判定結果格納部23からこの関数の所属先データソース30を取得する(S440)。

0046

次にプログラム実行部24、より詳しくは関数実行制御部24Aは、関数実行指示部24BにステップS440で取得したデータソース30にこの関数を実行させて、このデータソース30から関数の実行結果を取得する(S450)。このデータソース30には、関数の実行に必要なデータ(引数、カラム)がそろっているので、データソースはこの関数を問題なく実行できる。その後ステップS410に戻りプログラム実行処理を続行する。
以上で第1の実施の形態の説明を終了する。

0047

[3.第2の実施の形態]
本発明の第2の実施の形態を説明する。本発明の第2の実施の形態は、データベース・システムとして提案される。本発明の第2の実施の形態に係るデータベース・システムは、第1の実施の形態に係るデータベース・システムと基本的には同様の構成及び動作であるが、処理要求に含まれる関数の引数が複数のデータソース30に所属する場合であっても、処理結果を生成できる点で、異なっている。

0048

[3.1.データベース・システム等の構成例]
本発明の第2の実施の形態に係るデータベース・システム及びその構成要素である端末装置、データベース統合装置、データベース装置の構成は、第1の実施の形態に係るデータベース・システム及びそのその構成要素である端末装置10、データベース統合装置20、データソース30の構成と同様であるので、これらの詳細な説明は省略する。

0049

[3.2.データベース・システムの動作例]
次に第2の実施の形態に係るデータベース・システム1の動作例を説明する。
[3.2.1.データベース・システムの主要動作]
まず、第2の実施の形態に係るデータベース・システムの主要動作を説明する。第2の実施の形態に係るデータベース・システムの主要動作は図4に示した第1の実施の形態に係るデータベース・システム1の主要動作と同様である。

0050

[3.2.2.プログラム生成処理]
次に第2の実施の形態におけるプログラム生成処理(図5、S20)の内容を詳述する。図10は第2の実施の形態のステップS20における処理であるプログラム生成処理の一例を示すフローチャートである。プログラム生成処理において、データベース統合装置20、より詳しくは所属先判定部21は、処理要求に関数が含まれているか否かを判定する(S510)。ステップS510において、処理要求に関数は含まれていないと判定した場合(S510, No)、所属先判定部21は、プログラム生成部22に処理要求に応じた実行用プログラムを生成させ(S520)、プログラム生成処理を終了する。一方、ステップS510において、関数が含まれていると判定した場合(S510, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは関数の所属先判定を行う(関数所属先判定処理:S530)。

0051

次に所属先判定部21は、処理要求に応じた実行用プログラムであって、関数の所属先データソース30でその関数を実行させるプログラムである実行用プログラムをプログラム生成部22に生成させて(S540)、プログラム生成処理を終了する。なお、第2の実施の形態では、一つのデータソース30上に全ての引数に対応するデータを転送してから、そのデータソース30に関数を計算させるための実行用プログラムを生成する。

0052

[3.2.3.関数所属先判定処理]
前述の関数所属先判定処理(図10、S530)の内容を詳述する。図11に関数所属先判定処理の一例を示すフローチャートを掲げる。
関数所属先判定処理において、所属先判定部21、より詳しくは引数所属先判定部21Cは、所属先判定対象の関数の引数を読み取る(S610)。次に所属先判定部21、より詳しくは関数所属先判定部21Bは、所属先判定対象である関数の、全部の引数の判定が完了したか否かを判定する(S620)。ステップS620において所属先判定対象となる関数の全部の引数の判定が完了していないと判定した場合(S620, No)、所属先判定部21、より詳しくは関数所属先判定部21Bは、引数所属先判定部21Cにこの引数の所属先データソースを判定させる(引数所属先判定処理:S630)。

0053

次に所属先判定部21、より詳しくは関数所属先判定部21Bは、引数所属先判定部21Cから出力される所属先判定結果を所属先判定結果格納部23に格納する(S640)。その後所属先判定部21、より詳しくは関数所属先判定部21Bは、ステップS620に戻り未判定の引数の所属先判定を続行する。

0054

一方、ステップS620において所属先判定対象となる関数の全部の引数の判定が完了していると判定した場合(S620, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは、所属先判定結果を参照し、その関数の所属先を判定し、判定結果を出力し、その後関数所属先判定処理を終了する。第2の実施の形態では、所属先判定結果格納部23に記録された各引数の所属データを参照し、所属が一番多いデータソースをその関数の所属先データソースと判定する。なお、第1の実施の形態と同じく、関数の引数に所属無しの引数(例えばリテラル値)が含まれていたら、その引数は無視して関数の所属先判定を行う。

0055

第2の実施の形態における関数所属先判定処理の具体例を示す。
(1)関数f(a1, a2)
関数f(a1, a2)は2つの引数a1, a2を有する関数である。引数a1、引数a2は共に所属先データソースをデータソースXとする。この関数の引数の所属先データソースは、データソースXが二つ(のみ)となる。よって、関数所属先判定部21Bは関数f(a1, a2)の所属先データソースを、所属先データソースとして最も多く記録されているデータソースXであると判定する。

0056

(2)関数g(a1, 123)
関数g(a1, 123)は2つの引数a1, 123を有する関数である。引数a1の所属先データソースをデータソースXであり、引数123は所属先のないリテラル値であるものとする。引数123の所属先データソースは「所属無し」であり、無視されるため、所属先判定結果に記録されるこの関数の引数の所属先データソースは、データソースX一つのみである。よって、関数所属先判定部21Bは関数g(a1, 123)の所属先データソースを、所属先判定結果に所属先データソースとして最も多く記録されているデータソースXであると判定する。

0057

(3)関数h(a1, b1, b2)
関数h(a1, b1, b2)は3つの引数a1, b1, b2を有する関数である。引数a1の所属先データソースはデータソースXであり、引数b1、引数b2は共に所属先データソースを、データソースXとは異なるデータソースYであるものとする。所属先判定部21、より詳しくは関数所属先判定部21Bは、この関数の所属先データソースとして、データソースXが一つ、データソースYが二つである。よって関数所属先判定部21Bは関数h(a1, b1, b2)の所属先データソースを、所属先判定結果に所属先データソースとして最も多く記録されているデータソースYであると判定する。

0058

[3.2.4.引数所属先判定処理]
第2の実施の形態における引数所属先判定処理(図11、S630)を述べる。第2の実施の形態における引数所属先判定処理は、第1の実施の形態の処理内容図7参照)と同一であるので、詳しい説明は省略する。

0059

[3.2.5.プログラム実行処理]
次に、第2の実施の形態におけるプログラム実行処理(図1、S40参照)の内容を詳述する。図12はプログラム実行処理の一例を示すフローチャートである。プログラム実行処理において、プログラム実行部24は、プログラム生成部22から実行用プログラムを取得すると、実行用プログラムに含まれる関数のそれぞれについて、所属先判定結果格納部23から関数の所属先データソースを取得する(S710)。

0060

次にプログラム実行部24は、関数の所属先データソース30上にテンポラリテーブルを作成する(S720)。テンポラリテーブルは、一時的にデータを格納させるためのテーブルである。

0061

次にプログラム実行部24は、その関数の所属先データソースがカラムとして有していない引数(「外部引数」と呼ぶ)について、その外部引数に対応するカラムを有するデータベースから当該カラムのデータ(「外部引数カラムデータ」と呼ぶ)を取得し、この外部引数カラムデータを一時結果格納部25に格納する(S730)。

0062

次にプログラム実行部24は、外部引数カラムデータを上記所属先データソース30に作成されたテンポラリテーブルに格納させる(S740)。この処理によって、所属先データソース30にその関数の引数全てのデータが用意されたことになる。

0063

次に、プログラム実行部24、より詳しくは関数実行指示部24Bは、関数の所属先データソース30にその関数の計算を実行させる(S750)。関数の計算を実行した所属先データソース30は計算結果をデータベース統合装置20、より詳しくは関数実行指示部24Bに返す(S760)。

0064

なお、いずれのデータソース30にも所属せず、データベース統合装置20において計算可能な関数については、関数実行部24Cがその関数の計算を実行し、計算結果を出力する。

0065

プログラム実行部24は実行用プログラムに含まれる全ての関数の計算結果を取得すると、それらに基づいて処理結果を生成し、この処理結果を端末装置10に送信する。

0066

第2の実施の形態では、データベース統合装置20に接続されたいずれかのデータソース30がカラムとして有しているデータを引数とする関数であれば、引数が複数のデータソースに分散している関数であっても、自動的に関数の計算結果を取得できることになる。

0067

[3.2.5.1.プログラム実行処理の例1]
第2の実施の形態におけるプログラム実行処理の例を示す。図13に、関数f(a1, b1, b2)の処理例を示す図を掲げる。

0068

図13に示す例では、関数f(a1, b1, b2)を計算するものとする。関数f(a1, b1, b2)は3つの引数a1、b1、b2を有する関数である。引数a1の所属先データソースはデータソースXであり、引数b1、引数b2の所属先データソースは、データソースXとは異なるデータソースYであるものとする。

0069

データベース統合装置20、より詳しくはプログラム実行部24は、所属先判定結果から関数f(a1, b1, b2)の所属先データソースをデータソースYと判定する(図12、S710参照)。3つの引数a1、b1、b2の所属先データソースの個数は、データソースXが1個、データソースYが2個で、最も多い個数のデータベースはデータソースYだからである。

0070

次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースYにテンポラリテーブルを生成させる(S810:図12、S720参照)。

0071

次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースXから引数a1に相当するカラムのデータを取得する(S820:図12、S730参照)。

0072

次にデータベース統合装置20、より詳しくはプログラム実行部24は、ステップS820で取得した引数a1に相当するカラムのデータをデータソースYに送信し、ステップS810において生成させたテンポラリテーブルに引数a1に相当するカラムのデータを格納させる(S830:図12、S740参照)。

0073

データベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bは、データソースYに関数f(a1, b1, b2)の計算を指示する。関数実行指示部24Bからの指示に応じてデータソースYのDB側関数実行部30Aは、関数f(a1, b1, b2)の計算を実行する(S840:図12、S750参照)。引数b1、b2のデータはもともとデータソースYが有するテーブルBのカラムのデータとして存在しており、外部引数である引数a1のデータは、テンポラリテーブルに格納されてデータソースYに保有された。よって、データソースYのDB側関数実行部30Aは、関数f(a1, b1, b2)の計算を実行することができる。

0074

関数f(a1, b1, b2)の計算が完了すると、データソースYのDB側関数実行部30Aは関数f(a1, b1, b2)の計算結果をデータベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bに返し、データベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bは関数f(a1, b1, b2)の計算結果を取得する(S850:図12、S760参照)。
以上で、関数関数f(a1, b1, b2)の計算結果の取得が完了する。

0075

[3.2.5.2.プログラム実行処理の例2]
第2の実施の形態におけるプログラム実行処理の別の例を示す。図14に、関数g(a1,a2,f(a1, b1, b2))の処理例を示す図を掲げる。関数g(a1, a2, f(a1, b1, b2))は、引数の一つに関数f(a1, b1, b2)を有しており、関数が入れ子になっている。

0076

関数g(a1, a2,f(a1, b1, b2))は、三つの引数a1、a2、f(a1, b1, b2)を有する関数である。引数a1、a2の所属先データソースはデータソースXである。引数の一つである関数f(a1, b1, b2)は3つの引数a1、b1、b2を有する関数である。引数a1の所属先データソースはデータソースXであり、引数b1、引数b2の所属先データソースは、データソースXとは異なるデータソースYであるものとする。

0077

データベース統合装置20は、関数g(a1, a2,f(a1, b1, b2))を計算する場合、まずその引数であるf(a1, b1, b2)の計算を行う。データベース統合装置20、より詳しくはプログラム実行部24は、所属先判定結果から関数f(a1, b1, b2)の所属先データソースをデータソースYと判定する(S910:図12、S710参照)。3つの引数a1、b1、b2の所属先データソースの個数は、データソースXが1個、データソースYが2個で、最も多い個数のデータベースはデータソースYだからである。

0078

次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースYにテンポラリテーブルを生成させる(S920:図12、S720参照)。

0079

次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースXから引数a1に相当するカラムのデータを取得する(S920:図12、S730参照)。

0080

次にデータベース統合装置20、より詳しくはプログラム実行部24は、ステップS920で取得した引数a1に相当するカラムのデータをデータソースYに送信し、ステップS910において生成させたテンポラリテーブルに引数a1に相当するカラムのデータを格納させる(S930:図12、S740参照)。

0081

データベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bは、データソースYに関数f(a1, b1, b2)の計算を指示する。関数実行指示部24Bからの指示に応じてデータソースYのDB側関数実行部30Aは、関数f(a1, b1, b2)の計算を実行する(S940:図12、S750参照)。引数b1、b2のデータはもともとデータソースYが有するテーブルBのカラムのデータとして存在しており、外部引数である引数a1のデータは、テンポラリテーブルに格納されてデータソースYに保有された。よって、データソースYのDB側関数実行部30Aは、関数f(a1, b1, b2)の計算を実行することができる。

0082

関数f(a1, b1, b2)の計算が完了すると、データソースYは関数f(a1, b1, b2)の計算結果をデータベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bに返し、データベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bは関数f(a1, b1, b2)の計算結果を取得する(S950:図12、S760参照)。

0083

以上のように関数f(a1, b1, b2)の計算が完了すると、データベース統合装置20、より詳しくは関数実行制御部24Aは、関数g(a1, a2,f(a1, b1, b2))の計算を実行する。

0084

データベース統合装置20、より詳しくはプログラム実行部24は、所属先判定結果から関数g(a1, a2,f(a1, b1, b2))の所属先データソースをデータソースXと判定する(図12、S710参照)。2つの引数a1、a2の所属先データソースはデータソースXであり、残りの一つの引数である関数f(a1, b1, b2)の所属先データソースはデータソースYであるので、最も多い個数のデータソースXが関数g(a1, a2,f(a1, b1, b2))の所属先データソースと判定される。

0085

次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースXにテンポラリテーブルを生成させる(S960:図12、S720参照)。

0086

次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースYから取得済みである関数f(a1, b1, b2)の計算結果をデータソースXに送信し、データソースX上に生成させたテンポラリテーブルに関数f(a1, b1, b2)の計算結果を格納させる(S970:図12、S740参照)。

0087

データベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bは、データソースXに関数g(a1, a2,f(a1, b1, b2))の計算を指示する。関数実行指示部24Bからの指示に応じてデータソースXのDB側関数実行部30Aは、関数g(a1, a2,f(a1, b1, b2))の計算を実行する(S980:図12、S750参照)。引数a1、a2のデータはもともとデータソースXが有するテーブルAのカラムのデータとして存在しており、外部引数である関数f(a1, b1, b2)のデータは、テンポラリテーブルに格納されてデータソースXに保有されている。よって、データソースXのDB側関数実行部30Aは、関数g(a1, a2,f(a1, b1, b2))の計算を実行することができる。

0088

関数g(a1, a2,f(a1, b1, b2))の計算が完了すると、データソースXは関数g(a1, a2,f(a1, b1, b2))の計算結果をデータベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bに返し、データベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bは関数g(a1, a2,f(a1, b1, b2))の計算結果を取得する(S990:図12、S760参照)。
以上で、関数g(a1, a2, f(a1, b1, b2))の計算結果の取得が完了する。

0089

[4.本実施の形態の利点]
本発明の実施形態に係るデータベース・システムによれば、端末装置から送信された処理要求に、データベース統合装置で定義されていない関数が含まれていても、その関数の所属先データソースに関数の実行をさせて、処理要求に対する処理結果を端末装置に返すことが可能となる。

0090

[5.まとめ、その他]
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。

0091

1…データベース・システム; 10…端末装置; 20…データベース統合装置; 21…所属先判定部; 21A…カラム所属先テーブル格納部 21B…関数所属先判定部21BC…引数所属先判定部; 22…プログラム生成部; 23…所属先判定結果格納部; 24…プログラム実行部; 24A…関数実行制御部; 24B…関数実行指示部; 24C…関数実行部; 25…一時結果格納部; 30…データソース; 30A…データベース側関数実行部; 30B…データベース部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ