JP6226599B2 - データベース・システム - Google Patents

データベース・システム Download PDF

Info

Publication number
JP6226599B2
JP6226599B2 JP2013148148A JP2013148148A JP6226599B2 JP 6226599 B2 JP6226599 B2 JP 6226599B2 JP 2013148148 A JP2013148148 A JP 2013148148A JP 2013148148 A JP2013148148 A JP 2013148148A JP 6226599 B2 JP6226599 B2 JP 6226599B2
Authority
JP
Japan
Prior art keywords
function
affiliation
data source
argument
program
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.)
Active
Application number
JP2013148148A
Other languages
English (en)
Other versions
JP2015022388A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013148148A priority Critical patent/JP6226599B2/ja
Publication of JP2015022388A publication Critical patent/JP2015022388A/ja
Application granted granted Critical
Publication of JP6226599B2 publication Critical patent/JP6226599B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本明細書に記載の実施の形態は、データベース・システムに関する。
ネットワークの普及発展に伴って多種多様のデータがネットワーク上に蓄積されるようになり、このようなデータを組み合わせて処理することによりデータマイニング等のデータ分析手法で、有用有益な分析が行われるようになってきている。
データ分析を行う場合には、複数のデータベースに格納された情報を組み合わせて処理する関数を計算する必要が生ずる場合がある。そのような必要に応じて、複数のデータベースを統合するデータベース統合サーバが提供される
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〉
しかし、ユーザから送信された処理要求に、データベース統合サーバ上で定義されていない関数(SQL関数など)が含まれている場合には、たとえ各データベースにその関数の引数に相当するデータが存在していても、データベース統合サーバは、関数の所属不明のためエラーを出力してしまうという問題があった。
本発明の一の実施の形態は、端末装置から送信された処理要求に、データベース統合サーバで定義されていない関数が含まれていても、その関数の所属先データソースに関数の実行をさせて、処理要求に対する処理結果を端末装置に返すことが可能する技術を提供することを目的とする。
本発明の一の実施の形態はデータベース・システムとして提案される。データベース・システムは、判定手段と、生成手段と、実行手段とを有する。
判定手段は、端末装置から送信された処理要求を受信し、この処理要求に含まれる関数の所属先データソースを判定し、その判定結果である所属先判定結果を出力する。生成手段は、端末装置から送信された処理要求を解釈して、プログラムを生成し、これを出力する。実行手段は、プログラム及び所属先判定結果に基づいて、プログラムに含まれる関数の実行を当該関数の所属先データソースに指示し、所属先データソースから関数の実行結果を取得し、関数の実行結果からプログラムの実行結果を生成し、プログラムの実行結果を端末装置に送信する。
第1の実施の形態に係るデータベース・システムの構成例を示す機能ブロック図 カラム所属先テーブルのデータ構成例を示す図 所属先判定結果のデータ構成例を示す図 データベース・システムの主要動作の例を示したフローチャート プログラム生成処理の一例を示すフローチャート 関数所属先判定処理の一例を示すフローチャート 引数所属先判定処理の一例を示すフローチャート データベース、テーブル、カラムの関係を示す図 プログラム実行処理の一例を示すフローチャート 第2の実施の形態のプログラム生成処理の一例を示すフローチャート 第2の実施の形態の関数所属先判定処理の一例を示すフローチャート 第2の実施の形態のプログラム実行処理の一例を示すフローチャート 第2の実施の形態における関数f(a1, b1, b2)の処理例を示す図 第2の実施の形態における関数g(a1, a2,f(a1, b1, b2))の処理例を示す図
以下、図面を参照して本発明の実施の形態に係るデータベース・システムを説明する。 [0.用語の定義]
本明細書で使用する用語の定義を述べる。
(1)関数
「関数」とは、引数と呼ばれるデータを受け取り、定められた通りの処理を実行して結果を返す一連の命令若しくは命令群をいう。
(2)テーブル
「テーブル」とは、データベースに格納される情報のまとめであって、データ要素(値)の集合を垂直な列と水平の行のモデルで構成したものをいう。
[1.第1の実施の形態]
本発明の第1の実施の形態について説明する。本発明の第1の実施の形態は、データベース・システムとして提案される。
[1.1.第1の実施の形態の構成例]
図1に第1の実施の形態に係るデータベース・システムの構成例を示す機能ブロック図を掲げる。なお、機能ブロック図中に示す構成要素は、各装置の機能を機能ごとにまとめてブロックとして捉えたものであり、各装置が各構成要素に対応する基板、装置、回路、部品などの物理的構成要素を備えていなければならないことを意味するわけではない。また、「接続されている」とは、データ、情報、命令などの送受信、受け取り、受け渡しなどが可能な状態になっていることをいい、互いに配線で連結されているような物理的な接続に限られる意味ではない。本明細書中の他の機能ブロック図の説明についても同様である。
データベース(DB)・システム1は、端末装置10と、端末装置10に接続されたデータベース統合装置20と、データベース統合装置20に接続された複数のデータソース30とを有している。
[1.1.1.端末装置]
端末装置10は、データの操作や定義を行うためのデータベース言語(例えばSQL)をデータベース統合装置20に送信し、データベース統合装置20からデータベース言語の実行結果を受信して、その実行結果をユーザに提示するアプリケーション10Aを有する装置である。この端末装置10は、コンピュータ、ワークステーション、携帯電話器(スマートフォン含む)、タブレットPC、ゲーム機などの情報処理装置であって、この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読み出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
[1.1.2.データベース統合装置]
データベース統合装置20は、端末装置10からデータベース言語で記述された処理要求を受信すると、そのデータベース言語を解釈して、実行可能なプログラムを生成するとともに、そのプログラムに含まれている関数及び引数の所属先データソース(データベース、以下単に「所属先データソース」)を判定し、関数及び引数の所属先データソースと判定されたデータソース30にその関数の実行を指示し、その関数を実行結果をデータソース30から受信し、受信した実行結果に基づいて前記処理要求に対する結果を端末装置10に送信する機能を有する。
このデータベース統合装置20は、コンピュータ、ワークステーション、サーバなどの情報処理装置であって、この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読み出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
データベース統合装置20は、所属先判定部21と、所属先判定部21に接続されたプログラム生成部22と、プログラム生成部22に接続されたプログラム実行部24と、所属先判定部21及びプログラム実行部24に接続された所属先判定結果格納部23と、プログラム実行部24に接続された一時結果格納部25とを有する。所属先判定部21は実施の形態の判定手段に相当する。プログラム生成部22は実施の形態の生成手段に相当する。プログラム実行部24は実施の形態の実行手段に相当する。
所属先判定部21は端末装置10と接続可能である。プログラム実行部24は端末装置10と接続可能であり、かつ各データソース30と接続可能である。
所属先判定部21は、カラム所属先テーブル格納部21Aと関数所属先判定部21Bを有している。関数所属先判定部21Bは引数所属先判定部21Cを有している。
プログラム実行部24は関数実行制御部24Aを有している。関数実行制御部24Aは関数実行指示部24Bと、関数実行部24Cを有している。
[1.1.2.1.所属先判定部]
所属先判定部21は、端末装置10から送信された処理要求を受信し、この処理要求に含まれる関数の所属先データソース30を判定し、その判定結果を出力する機能を有する。
所属先判定部21はカラム所属先テーブル格納部21Aを有している。カラム所属先テーブル格納部21Aはカラム所属先テーブルを記憶している。カラム所属先テーブルは、データソース30が有しているテーブルのカラムと、そのテーブルを有しているデータソース30とを対応付けたデータである。図2にカラム所属先テーブルのデータ構成例を示す。図2において、「a1」「a2」「b1」「b2」「b3」のそれぞれはカラムを特定する情報(例えば、カラム名、属性名、属性IDなど)を示す。「A」「B」は、データソース30を特定する情報である。カラム所属先テーブルを参照することにより、そのカラムはどのデータソース30に所属するのかを判定できる。
関数所属先判定部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がないことを示す。
引数所属先判定部21Cは、プログラムに含まれる関数の引数の所属先データソース30を判定し、その結果を出力する機能を有する。引数は、リテラル値、カラム、関数のいずれかである。引数がリテラル値である場合、引数所属先判定部21Cは所属無しと判定する。引数がカラムである場合、引数所属先判定部21Cはカラム所属先テーブルから当該カラムに対応付けられた所属先データソース30を取得する。引数が関数である場合、引数所属先判定部21Cは関数所属先判定部21Bによって判定された結果を当該引数の所属先データソース30と判定する。
なお、関数所属先判定部21Bは、その関数の引数の所属先データソース30に基づいて、その関数の所属先データソースを決定する。
[1.1.2.2.プログラム生成部]
プログラム生成部22は、端末装置10から送信された処理要求を解釈して、プログラム実行部24によって実行可能なプログラム(コード)を生成し、これを出力する機能を有する。
[1.1.2.3.所属先判定結果格納部]
所属先判定結果格納部23は、所属先判定部21が出力した所属先判定結果を記憶する機能を有する。所属先判定結果はプログラム実行部24、より詳しくは関数実行制御部24Aによって読みだされる。
[1.1.2.4.プログラム実行部]
プログラム実行部24は、プログラム生成部22によって生成されたプログラム及び所属先判定結果格納部23に記憶された所属先判定結果に基づいて、プログラムに含まれる関数の実行を当該関数の所属先データソース30に指示し、所属先データソース30から関数の実行結果を取得し、プログラムに含まれる関数を実行し、関数の実行結果からプログラムの実行結果を生成し、実行結果を端末装置10に送信する機能を有する。
プログラム実行部24は、関数実行制御部24Aを有している。関数実行制御部24Aは、プログラム中の関数を、その関数の所属先データソース30に基づいて、関数実行指示部24Bに処理させるか、関数実行部24Cに処理させるかを判定し、判定結果に基づいて関数実行指示部24B若しくは関数実行部24Cに関数の実行をさせる機能を有する。
関数実行制御部24Aは関数実行指示部24B及び関数実行部24Cを有する。関数実行指示部24Bは、所属先判定結果に基づいて、プログラムに含まれている関数の実行を、その関数の所属先データソース30に指示し、所属先データソース30から返される関数の実行結果を取得する機能を有する。関数実行部24Cは、プログラムに含まれている関数を実行し、その関数の実行結果を出力する機能を有する。
[1.1.2.5.一時結果格納部]
一時結果格納部25はデータソース30から返された関数の実行結果を一時的に格納する機能を有する。
[1.1.3.データソース]
データソース30は、データベースとして機能する装置又はプログラム、アプリケーションであって、DB側関数実行部30Aとデータベース部30Bとを有する。DB側関数実行部30Aは、データベース統合装置20からの関数実行指示に応じて、データベース部30Bに記憶されたデータの処理を実行する。データベース部30Bは、少なくとも一つのカラムを有するテーブルを用いて、データを記憶する機能を有する。
[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)、処理を終了する。
[2.2.プログラム生成処理]
次に前述のプログラム生成処理(図5、S20)の内容を詳述する。図5はステップS20における処理であるプログラム生成処理の一例を示すフローチャートである。プログラム生成処理において、データベース統合装置20、より詳しくは所属先判定部21は、処理要求に関数(例えば、SQL関数)が含まれているか否かを判定する(S110)。ステップS110において、処理要求に関数は含まれていないと判定した場合(S110, No)、所属先判定部21は、プログラム生成部22に処理要求に応じた実行用プログラムを生成させ(S120)、プログラム生成処理が終了する。一方、ステップS110において、関数が含まれていると判定した場合(S110, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは関数の所属先判定を行う(関数所属先判定処理:S130)。「関数の所属先判定」とは、関数の所属先データソースがどのデータソース30であるかを決定する処理をいう。
次に所属先判定部21、より詳しくは関数所属先判定部21Bは関数の所属先判定ができたか否かを判定する(S140)。関数の所属先判定ができない若しくは失敗したと判定した場合(S140, No)、プログラム生成処理はエラーとなり、実行用プログラムの生成は行われない(図4、S30, No参照)。一方、ステップS130における関数の所属先判定ができた若しくは成功したと判定した場合(S140, Yes)、所属先判定部21は、処理要求に応じた実行用プログラムであって、関数の所属先データソース30でその関数を実行させる実行用プログラムをプログラム生成部22に生成させて(S150)、プログラム生成処理を終了する。
[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に戻り未判定の引数の所属先判定を続行する。
一方、ステップS220において所属先判定対象となる関数の全部の引数の判定が完了していると判定した場合(S220, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは、所属先判定結果を参照し、その関数の全引数の所属先データソース数は一つか否かを判定する(S250)。所属先判定結果格納部に記録された各引数の所属先データソースを参照し、全引数の所属先データソースが一致する場合には、当該関数の所属先データソースを引数の所属先データソースと判定する。なお、関数の引数に所属無しの引数(例えばリテラル値)が含まれていたら、その引数は無視して関数の所属先判定を行う。
ステップS250において所属先データソース数は一つであると判定した場合(S250, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは、その関数の所属先データソース30を所属先判定結果に記述されているデータソース30であると判定し、関数所属先判定処理を終了する。一方、所属先データソース数は一つでないと判定した場合(S250, No)、所属先判定部21、より詳しくは関数所属先判定部21Bは、関数所属先判定処理の結果としてエラーを返して、関数所属先判定処理を終了する。
上記関数所属先判定処理の具体例を以下に示す。
(1)関数f(a1, a2)
関数f(a1, a2)は2つの引数a1, a2を有する関数である。引数a1、引数a2は共に所属先データソースをデータソースXとする。所属先判定部21、より詳しくは関数所属先判定部21Bは、この関数の所属先データソース個数は、データソースXの一つであるので、関数f(a1, a2)の所属先データソースをデータソースXと判定する。
(2)関数g(a1, 123)
関数g(a1, 123)は2つの引数a1, 123を有する関数である。引数a1の所属先データソースをデータソースXであり、引数123は所属先のないリテラル値であるものとする。所属先判定部21、より詳しくは関数所属先判定部21Bは、引数123は所属先データソースは無視されるため、この関数の所属先データソース個数は、データソースXの一つであるので、関数g(a1, 123)の所属先データソースをデータソースXと判定する。
(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)の所属先データソースは定まらず、エラーを返すことになる。
[1.2.4.引数所属先判定処理]
前述の引数所属先判定処理(図6、S230)の内容を詳述する。図7に引数所属先判定処理の一例を示すフローチャートを掲げる。引数所属先判定処理において、所属先判定部21、より詳しくは引数所属先判定部21Cは、所属先判定の対象となる引数がリテラル値か、関数か、引数かを判定する(S310)。
ステップS310において、引数がリテラル値であると判定した場合(S310、リテラル)、所属先判定部21、より詳しくは引数所属先判定部21Cは当該引数の所属先データソースを「所属無し」として出力する。
また、ステップS310において、引数が関数であると判定した場合(S310、関数)、所属先判定部21、より詳しくは引数所属先判定部21Cはその関数について、関数所属先判定部21Bに所属先データソースを判定させる。関数所属先判定部21Bは個の引数である関数について関数所属先判定処理(図5、S130)を実行し、引数としての関数の所属先データソースを決定し、出力する(S320)。
また、ステップS310において、引数がカラムであると判定した場合(S310、引数)、所属先判定部21、より詳しくは引数所属先判定部21Cはカラム所属先テーブルからこのカラムの所属先データソースを判定し、出力する(S330)。
ここでデータソース(データベース)、テーブル、カラムの関係について説明する。図8にデータベース、テーブル、カラムの関係を示す図を掲げる。図8には、二つの異なるデータベース、データソースX及びデータソースYが示されている。データソースXはテーブルAを有している。テーブルAは、4つのカラムa1, a2, a3, a4を有している。一方、データソースYはテーブルBを有している。テーブルBは、3つのカラムb1, b2, b3を有している。
[1.2.5.プログラム実行処理]
次に、前述のプログラム実行処理(図1、S40)の内容を詳述する。図9はプログラム実行処理の一例を示すフローチャートである。プログラム実行処理において、プログラム実行部24は、実行用プログラムを実行し終えたか否かを判定する(S410)。実行用プログラムを実行し終えたと判定した場合(S410, Yes)、プログラム実行部24はプログラム実行処理を終了する。一方、実行用プログラムを実行し終えていないと判定した場合(S410, No)、プログラム実行部24は実行用プログラムから1ステップ読み込む(S420)。
次にプログラム実行部24は、直近のステップS420で読み込んだステップが関数を処理するステップか否かを判定する(S430)。そのステップが関数を処理するステップでないと判定した場合(S430, No)、プログラム実行部24は、既存手法で実行用プログラムを1ステップ実行し(S460)、その後ステップS410に戻りプログラム実行処理を続行する。一方、そのステップが関数を処理するステップであると判定した場合(S430, Yes)、プログラム実行部24、より詳しくは関数実行制御部24Aは、所属先判定結果格納部23からこの関数の所属先データソース30を取得する(S440)。
次にプログラム実行部24、より詳しくは関数実行制御部24Aは、関数実行指示部24BにステップS440で取得したデータソース30にこの関数を実行させて、このデータソース30から関数の実行結果を取得する(S450)。このデータソース30には、関数の実行に必要なデータ(引数、カラム)がそろっているので、データソースはこの関数を問題なく実行できる。その後ステップS410に戻りプログラム実行処理を続行する。
以上で第1の実施の形態の説明を終了する。
[3.第2の実施の形態]
本発明の第2の実施の形態を説明する。本発明の第2の実施の形態は、データベース・システムとして提案される。本発明の第2の実施の形態に係るデータベース・システムは、第1の実施の形態に係るデータベース・システムと基本的には同様の構成及び動作であるが、処理要求に含まれる関数の引数が複数のデータソース30に所属する場合であっても、処理結果を生成できる点で、異なっている。
[3.1.データベース・システム等の構成例]
本発明の第2の実施の形態に係るデータベース・システム及びその構成要素である端末装置、データベース統合装置、データベース装置の構成は、第1の実施の形態に係るデータベース・システム及びそのその構成要素である端末装置10、データベース統合装置20、データソース30の構成と同様であるので、これらの詳細な説明は省略する。
[3.2.データベース・システムの動作例]
次に第2の実施の形態に係るデータベース・システム1の動作例を説明する。
[3.2.1.データベース・システムの主要動作]
まず、第2の実施の形態に係るデータベース・システムの主要動作を説明する。第2の実施の形態に係るデータベース・システムの主要動作は図4に示した第1の実施の形態に係るデータベース・システム1の主要動作と同様である。
[3.2.2.プログラム生成処理]
次に第2の実施の形態におけるプログラム生成処理(図5、S20)の内容を詳述する。図10は第2の実施の形態のステップS20における処理であるプログラム生成処理の一例を示すフローチャートである。プログラム生成処理において、データベース統合装置20、より詳しくは所属先判定部21は、処理要求に関数が含まれているか否かを判定する(S510)。ステップS510において、処理要求に関数は含まれていないと判定した場合(S510, No)、所属先判定部21は、プログラム生成部22に処理要求に応じた実行用プログラムを生成させ(S520)、プログラム生成処理を終了する。一方、ステップS510において、関数が含まれていると判定した場合(S510, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは関数の所属先判定を行う(関数所属先判定処理:S530)。
次に所属先判定部21は、処理要求に応じた実行用プログラムであって、関数の所属先データソース30でその関数を実行させるプログラムである実行用プログラムをプログラム生成部22に生成させて(S540)、プログラム生成処理を終了する。なお、第2の実施の形態では、一つのデータソース30上に全ての引数に対応するデータを転送してから、そのデータソース30に関数を計算させるための実行用プログラムを生成する。
[3.2.3.関数所属先判定処理]
前述の関数所属先判定処理(図10、S530)の内容を詳述する。図11に関数所属先判定処理の一例を示すフローチャートを掲げる。
関数所属先判定処理において、所属先判定部21、より詳しくは引数所属先判定部21Cは、所属先判定対象の関数の引数を読み取る(S610)。次に所属先判定部21、より詳しくは関数所属先判定部21Bは、所属先判定対象である関数の、全部の引数の判定が完了したか否かを判定する(S620)。ステップS620において所属先判定対象となる関数の全部の引数の判定が完了していないと判定した場合(S620, No)、所属先判定部21、より詳しくは関数所属先判定部21Bは、引数所属先判定部21Cにこの引数の所属先データソースを判定させる(引数所属先判定処理:S630)。
次に所属先判定部21、より詳しくは関数所属先判定部21Bは、引数所属先判定部21Cから出力される所属先判定結果を所属先判定結果格納部23に格納する(S640)。その後所属先判定部21、より詳しくは関数所属先判定部21Bは、ステップS620に戻り未判定の引数の所属先判定を続行する。
一方、ステップS620において所属先判定対象となる関数の全部の引数の判定が完了していると判定した場合(S620, Yes)、所属先判定部21、より詳しくは関数所属先判定部21Bは、所属先判定結果を参照し、その関数の所属先を判定し、判定結果を出力し、その後関数所属先判定処理を終了する。第2の実施の形態では、所属先判定結果格納部23に記録された各引数の所属データを参照し、所属が一番多いデータソースをその関数の所属先データソースと判定する。なお、第1の実施の形態と同じく、関数の引数に所属無しの引数(例えばリテラル値)が含まれていたら、その引数は無視して関数の所属先判定を行う。
第2の実施の形態における関数所属先判定処理の具体例を示す。
(1)関数f(a1, a2)
関数f(a1, a2)は2つの引数a1, a2を有する関数である。引数a1、引数a2は共に所属先データソースをデータソースXとする。この関数の引数の所属先データソースは、データソースXが二つ(のみ)となる。よって、関数所属先判定部21Bは関数f(a1, a2)の所属先データソースを、所属先データソースとして最も多く記録されているデータソースXであると判定する。
(2)関数g(a1, 123)
関数g(a1, 123)は2つの引数a1, 123を有する関数である。引数a1の所属先データソースをデータソースXであり、引数123は所属先のないリテラル値であるものとする。引数123の所属先データソースは「所属無し」であり、無視されるため、所属先判定結果に記録されるこの関数の引数の所属先データソースは、データソースX一つのみである。よって、関数所属先判定部21Bは関数g(a1, 123)の所属先データソースを、所属先判定結果に所属先データソースとして最も多く記録されているデータソースXであると判定する。
(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であると判定する。
[3.2.4.引数所属先判定処理]
第2の実施の形態における引数所属先判定処理(図11、S630)を述べる。第2の実施の形態における引数所属先判定処理は、第1の実施の形態の処理内容(図7参照)と同一であるので、詳しい説明は省略する。
[3.2.5.プログラム実行処理]
次に、第2の実施の形態におけるプログラム実行処理(図1、S40参照)の内容を詳述する。図12はプログラム実行処理の一例を示すフローチャートである。プログラム実行処理において、プログラム実行部24は、プログラム生成部22から実行用プログラムを取得すると、実行用プログラムに含まれる関数のそれぞれについて、所属先判定結果格納部23から関数の所属先データソースを取得する(S710)。
次にプログラム実行部24は、関数の所属先データソース30上にテンポラリテーブルを作成する(S720)。テンポラリテーブルは、一時的にデータを格納させるためのテーブルである。
次にプログラム実行部24は、その関数の所属先データソースがカラムとして有していない引数(「外部引数」と呼ぶ)について、その外部引数に対応するカラムを有するデータベースから当該カラムのデータ(「外部引数カラムデータ」と呼ぶ)を取得し、この外部引数カラムデータを一時結果格納部25に格納する(S730)。
次にプログラム実行部24は、外部引数カラムデータを上記所属先データソース30に作成されたテンポラリテーブルに格納させる(S740)。この処理によって、所属先データソース30にその関数の引数全てのデータが用意されたことになる。
次に、プログラム実行部24、より詳しくは関数実行指示部24Bは、関数の所属先データソース30にその関数の計算を実行させる(S750)。関数の計算を実行した所属先データソース30は計算結果をデータベース統合装置20、より詳しくは関数実行指示部24Bに返す(S760)。
なお、いずれのデータソース30にも所属せず、データベース統合装置20において計算可能な関数については、関数実行部24Cがその関数の計算を実行し、計算結果を出力する。
プログラム実行部24は実行用プログラムに含まれる全ての関数の計算結果を取得すると、それらに基づいて処理結果を生成し、この処理結果を端末装置10に送信する。
第2の実施の形態では、データベース統合装置20に接続されたいずれかのデータソース30がカラムとして有しているデータを引数とする関数であれば、引数が複数のデータソースに分散している関数であっても、自動的に関数の計算結果を取得できることになる。
[3.2.5.1.プログラム実行処理の例1]
第2の実施の形態におけるプログラム実行処理の例を示す。図13に、関数f(a1, b1, b2)の処理例を示す図を掲げる。
図13に示す例では、関数f(a1, b1, b2)を計算するものとする。関数f(a1, b1, b2)は3つの引数a1、b1、b2を有する関数である。引数a1の所属先データソースはデータソースXであり、引数b1、引数b2の所属先データソースは、データソースXとは異なるデータソースYであるものとする。
データベース統合装置20、より詳しくはプログラム実行部24は、所属先判定結果から関数f(a1, b1, b2)の所属先データソースをデータソースYと判定する(図12、S710参照)。3つの引数a1、b1、b2の所属先データソースの個数は、データソースXが1個、データソースYが2個で、最も多い個数のデータベースはデータソースYだからである。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースYにテンポラリテーブルを生成させる(S810:図12、S720参照)。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースXから引数a1に相当するカラムのデータを取得する(S820:図12、S730参照)。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、ステップS820で取得した引数a1に相当するカラムのデータをデータソースYに送信し、ステップS810において生成させたテンポラリテーブルに引数a1に相当するカラムのデータを格納させる(S830:図12、S740参照)。
データベース統合装置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)の計算を実行することができる。
関数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)の計算結果の取得が完了する。
[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)を有しており、関数が入れ子になっている。
関数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であるものとする。
データベース統合装置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だからである。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースYにテンポラリテーブルを生成させる(S920:図12、S720参照)。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースXから引数a1に相当するカラムのデータを取得する(S920:図12、S730参照)。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、ステップS920で取得した引数a1に相当するカラムのデータをデータソースYに送信し、ステップS910において生成させたテンポラリテーブルに引数a1に相当するカラムのデータを格納させる(S930:図12、S740参照)。
データベース統合装置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)の計算を実行することができる。
関数f(a1, b1, b2)の計算が完了すると、データソースYは関数f(a1, b1, b2)の計算結果をデータベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bに返し、データベース統合装置20、より詳しくはプログラム実行部24の関数実行指示部24Bは関数f(a1, b1, b2)の計算結果を取得する(S950:図12、S760参照)。
以上のように関数f(a1, b1, b2)の計算が完了すると、データベース統合装置20、より詳しくは関数実行制御部24Aは、関数g(a1, a2,f(a1, b1, b2))の計算を実行する。
データベース統合装置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))の所属先データソースと判定される。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースXにテンポラリテーブルを生成させる(S960:図12、S720参照)。
次にデータベース統合装置20、より詳しくはプログラム実行部24は、データソースYから取得済みである関数f(a1, b1, b2)の計算結果をデータソースXに送信し、データソースX上に生成させたテンポラリテーブルに関数f(a1, b1, b2)の計算結果を格納させる(S970:図12、S740参照)。
データベース統合装置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))の計算を実行することができる。
関数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))の計算結果の取得が完了する。
[4.本実施の形態の利点]
本発明の実施形態に係るデータベース・システムによれば、端末装置から送信された処理要求に、データベース統合装置で定義されていない関数が含まれていても、その関数の所属先データソースに関数の実行をさせて、処理要求に対する処理結果を端末装置に返すことが可能となる。
[5.まとめ、その他]
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。
1…データベース・システム; 10…端末装置; 20…データベース統合装置; 21…所属先判定部; 21A…カラム所属先テーブル格納部 21B…関数所属先判定部21BC…引数所属先判定部; 22…プログラム生成部; 23…所属先判定結果格納部; 24…プログラム実行部; 24A…関数実行制御部; 24B…関数実行指示部; 24C…関数実行部; 25…一時結果格納部; 30…データソース; 30A…データベース側関数実行部; 30B…データベース部

Claims (1)

  1. 端末装置から送信された処理要求を解釈して生成されたプログラムのうち、前記処理要求に含まれる関数に対応する関数コードを実行可能に構成された所定のデータソースを前記関数の所属先データソースとし、
    前記関数の引数が所定のデータソースに記憶されたデータを示す場合、前記所定のデータソースを前記引数の所属先データソースとし、
    前記関数の引数が所定の関数を示す場合、前記所定の関数の所属先データソースを前記引数の所属先データソースとする場合、
    端末装置から送信された処理要求を受信し、この処理要求に含まれる関数の引数それぞれの所属先データソースを判定し、最も多く所属先データソースとして判定されたデータソースを当該関数の所属先データソース判定し、その判定結果である所属先判定結果を出力する判定手段と、
    前記端末装置から送信された処理要求を解釈して、プログラムを生成し、これを出力する生成手段と、
    前記プログラムを実行可能に構成され、
    前記プログラム及び前記所属先判定結果に基づいて、
    前記要求処理に含まれる関数の所属先データソースが記憶していない引数である外部引数に対応するデータを記憶しているデータソースから当該外部引数に対応するデータを前記所属先データソースに送信して記憶させ、
    前記プログラムに含まれる関数コードの実行を当該関数の所属先データソースに指示し、所属先データソースから関数コードの実行結果を取得し、前記関数コードの実行結果からプログラムの実行結果を生成し、前記プログラムの実行結果を前記端末装置に送信する
    実行手段と
    を有するデータベース・システム。
JP2013148148A 2013-07-17 2013-07-17 データベース・システム Active JP6226599B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013148148A JP6226599B2 (ja) 2013-07-17 2013-07-17 データベース・システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013148148A JP6226599B2 (ja) 2013-07-17 2013-07-17 データベース・システム

Publications (2)

Publication Number Publication Date
JP2015022388A JP2015022388A (ja) 2015-02-02
JP6226599B2 true JP6226599B2 (ja) 2017-11-08

Family

ID=52486813

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013148148A Active JP6226599B2 (ja) 2013-07-17 2013-07-17 データベース・システム

Country Status (1)

Country Link
JP (1) JP6226599B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681227B1 (en) * 1997-11-19 2004-01-20 Ns Solutions Corporation Database system and a method of data retrieval from the system
JP2001243242A (ja) * 2000-02-25 2001-09-07 Hitachi Ltd 問合せ処理方法およびそれを実施するデータベース管理システムその処理プログラムを格納した記録媒体
US7047252B2 (en) * 2003-12-02 2006-05-16 Oracle International Corporation Complex computation across heterogenous computer systems
JP4573710B2 (ja) * 2005-06-16 2010-11-04 日本電信電話株式会社 データベース管理装置、データベース管理方法及びデータベース管理プログラム
JP5203733B2 (ja) * 2008-02-01 2013-06-05 株式会社東芝 コーディネータサーバ、データ割当方法及びプログラム

Also Published As

Publication number Publication date
JP2015022388A (ja) 2015-02-02

Similar Documents

Publication Publication Date Title
US10747505B1 (en) API specification generation
KR102133951B1 (ko) 짧은 링크 처리 방법, 디바이스, 및 서버
US10303591B1 (en) Web services comparison tool
US10904316B2 (en) Data processing method and apparatus in service-oriented architecture system, and the service-oriented architecture system
US9680719B2 (en) Communication system, client terminal, and server
JP6903755B2 (ja) データ統合ジョブ変換
JP6167187B2 (ja) クエリ生成方法及びクエリ生成装置
TW201344467A (zh) 手持設備中輸入內容自動補全的方法、裝置和伺服器
CN109324958B (zh) 一种rest统一校验方法、装置、设备及可读存储介质
CN110515631B (zh) 应用安装数据包的生成方法、服务器及计算机存储介质
JP6291041B2 (ja) 検索推奨方法及び装置
US20180267813A1 (en) System and Method for Navigating Web-Based Application Programs
CN108153896B (zh) 针对输入数据、输出数据的处理方法及装置
JP6532897B2 (ja) リソースに対するアクションへのインデックス付け
CN106919503B (zh) 应用程序的测试方法及装置
JP6226599B2 (ja) データベース・システム
US9471650B2 (en) System and method for contextual workflow automation
JP2013214159A (ja) ログ管理方法、ログ管理システムおよび情報処理装置
US20150277858A1 (en) Performance evaluation device, method, and medium for information system
CN108809687B (zh) 用于提供跨网络事件归因的系统和方法
JP2015184889A (ja) システム操作装置およびシステム操作方法
JPWO2018230352A1 (ja) 変更手順生成装置、変更手順生成方法および変更手順生成プログラム
KR102054303B1 (ko) 로그 데이터 처리 장치 및 방법
US20170005895A1 (en) Information processing apparatus, failure management method, and computer-readable recording medium
CN117555533B (zh) 代码生成方法、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160328

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170418

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170615

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: 20170912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171010

R151 Written notification of patent or utility model registration

Ref document number: 6226599

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151