[実施の形態1]
図1に、データベースシステムの構成例を示す。リレーショナルデータベース装置101は、リレーショナルデータベース103を有している。ここでは、リレーショナルデータベース103を用いる例を示すが、他のデータベースを用いるようにしてもよい。
アプリケーション装置105は、アプリケーション部107を有している。アプリケーション部107は、リレーショナルデータベース103に格納されているデータを利用する。
本実施の形態では、アプリケーション装置105とリレーショナルデータベース装置101との間に、仲介装置109を設けている。アプリケーション装置105と仲介装置109は、例えばLAN(Local Area Network)あるいはインターネットなどのネットワークを介して接続している。仲介装置109とリレーショナルデータベース装置101は、例えばLANあるいはインターネットなどのネットワークを介して接続している。アプリケーション装置105と仲介装置109とリレーショナルデータベース装置101とが共通のネットワークに接続されるようにしてもよい。
仲介装置109は、仲介部111を有している。仲介部111は、アプリケーション部107によるリレーショナルデータベース103の利用を仲介する。つまり、仲介部111は、アプリケーション部107からの要求を受けて、その要求に応じてリレーショナルデータベース103に命令を出す。また、仲介部111は、リレーショナルデータベース103から結果を受けて、その結果に応じてアプリケーション部107に応答を返す。
仲介部111は、データ抽出要求に応じてSQL(Structured Query Language)文を生成し、そのSQL文をリレーショナルデータベース103に送信する。本実施の形態では、このSQL文をデータ抽出命令と呼ぶ。仲介部111は、リレーショナルデータベース103から結果セットを受信し、仲介部111は、所定形式に従った抽出結果データを生成し、その抽出結果データをアプリケーション部107に送信する。このとき用いられる形式は、例えば、CSV(Comma Separated Values)、XML(Extensible Markup Language)あるいはHTML(HyperText Markup Language)などである。
このとき仲介部111が生成するSQL文は、具体的にはSELECT文である。SELECT文に従って、あるテーブルにおけるレコードが特定され、そのレコードからデータが抽出される。そのため、SELECT文は、抽出条件と出力項目とを含んでいる。
抽出条件は、レコードを特定するための条件である。抽出条件は、SELECT文中のWHERE句に設定される。抽出条件には、例えば任意の項目に対する任意の値あるいは任意の値域が指定される。
出力項目は、出力されるデータの項目である。出力項目は、SELECT文中のSELECT句に設定される。出力項目には、例えば任意の項目が指定される。指定される項目は、1つであってもよいし、複数であってもよい。
ここでは、仲介部111を仲介装置109に設ける例を示したが、仲介部111をリレーショナルデータベース装置101に設けるようにしてもよい。また、仲介部111をアプリケーション装置105に設けるようにしてもよい。アプリケーション部107と仲介部111とリレーショナルデータベース装置101とが同じ装置に設けられるようにしてもよい。
図2に、仲介部のモジュール構成例を示す。仲介部111は、記憶部201、送信部203、受信部205、生成指示部207、追加指示部209、更新指示部211及び抽出指示部213を有する。
記憶部201は、メタデータを記憶する。メタデータは、テーブルの構造に関する情報を含んでいる。詳しくは、後に図5を用いて説明する。
送信部203は、アプリケーション装置105のアプリケーション部107へ各種のデータを送信する。送信部203は、更に、リレーショナルデータベース装置101のリレーショナルデータベース103へ各種のデータを送信する。
受信部205は、アプリケーション装置105のアプリケーション部107から各種のデータを受信する。受信部205は、更に、リレーショナルデータベース装置101のリレーショナルデータベース103から各種のデータを受信する。
生成指示部207は、アプリケーション部107からの要求に応じて、リレーショナルデータベース103にテーブル生成を指示する。
追加指示部209は、アプリケーション部107からの要求に応じて、リレーショナルデータベース103にデータの追加を指示する。
更新指示部211は、アプリケーション部107からの要求に応じて、リレーショナルデータベース103にデータの更新を指示する。
抽出指示部213は、アプリケーション部107からの要求に応じて、抽出結果データのサイズを算出する。更に、アプリケーション部107からの要求に応じて、リレーショナルデータベース103にデータの抽出を指示する。
抽出指示部213は、第1取得部215、算出部217及び第2取得部219を有する。第1取得部215は、リレーショナルデータベース103からデータのサイズを取得する。算出部217は、抽出結果データのサイズを算出する。第2取得部219は、リレーショナルデータベース103から抽出されるデータを取得する。
上述の記憶部201、送信部203、受信部205、生成指示部207、追加指示部209、更新指示部211及び抽出指示部213は、例えば図21に示すハードウエア資源によって実現される。また送信部203、受信部205、生成指示部207、追加指示部209、更新指示部211及び抽出指示部213は、当該モジュールの処理の一部又は全部を、メモリ2501(図21)にロードされたプログラムをCPU2503(図21)で順次実行することにより実現するようにしてもよい。
以下に示す各フェーズの順に従って、データベースシステムの動作について詳述する。
(1)テーブル生成フェーズでは、アプリケーション部107の要求に従って、リレーショナルデータベース103に新しいテーブルが生成される。(2)データ追加又は更新フェーズでは、アプリケーション部107の要求に従って、リレーショナルデータベース103のテーブルにデータが追加され、又は更新される。(3)サイズ算出フェーズでは、アプリケーション部107の要求に従って、抽出すべきデータのサイズが算出される。(4)実データ取得フェーズでは、アプリケーション部107の要求に従って、リレーショナルデータベース103から抽出されたデータがアプリケーション部107に渡される。
図3を用いて、実施の形態1に係るテーブル生成の概要について説明する。アプリケーション部107は、テーブル生成要求を仲介部111に送信する(S301)。テーブル生成要求は、テーブル名を含んでいる。また、テーブル生成要求は、カラム毎に、カラム名とデータタイプとの組を指定している。この例におけるテーブル生成要求は、テーブル名「T」、カラム名「A」とデータタイプ「char(5)」との組、カラム名「B」とデータタイプ「datetime」との組及びカラム名「C」とデータタイプ「blob(8G)」との組を含んでいる。データタイプに含まれる括弧内は、データサイズを示している。
テーブル生成要求において、カラムパターンを指定するようにしてもよい。カラムパターンは、同時にデータが抽出されるカラムの組み合わせである。
カラムの組み合わせは、1つであってもよいし、複数であってもよい。この例では、「,」で区切ったカラム同士が1つの組み合わせとなる。また、カラムの組み合わせを複数指定する場合には、「/」でカラムの組み合わせ同士を区切るようにする。例えば、カラムパターンが「A/A,B/A,C」と指定された場合には、カラム名「A」のカラム(以下、カラムAという。)からデータを抽出し、あるいはカラムAからのデータとカラム名「B」のカラム(以下、カラムBという。)からのデータとを組み合わせて抽出し、あるいはカラムAからのデータとカラム名「C」のカラム(以下、カラムCという。)からのデータとを組み合わせて抽出することが想定される。
また、例えば、カラムパターン「A,B,C」が指定された場合には、カラムAからのデータと、カラムBからのデータと、カラムCからのデータとを組み合わせて抽出することが想定される。
カラムパターンが指定されない場合には、カラムAからデータを抽出し、あるいはカラムBからデータを抽出し、あるいはカラムCからデータを抽出することが想定される。
仲介部111は、その要求に応じてテーブル生成命令(CREATE TABLE)を生成し、リレーショナルデータベース103に送信する(S303)。例えば、カラムパターンを指定しない場合は、「create table T (A char(5), B datetime, C blob(8G), AS int, BS int, CS int)」というテーブル生成命令が生成される。
このテーブル生成命令は、以下の内容を含んでいる。テーブル名「T」のテーブルを生成する。カラム名が「A」であり、データタイプが「char(5)」であるカラムを生成する。カラム名が「B」であり、データタイプが「datetime」であるカラムを生成する。カラム名が「C」であり、データタイプが「blob(8G)」であるカラムを生成する。カラム名が「AS」であり、データタイプが「int」であるカラムを生成する。カラム名が「BS」であり、データタイプが「int」であるカラムを生成する。カラム名が「CS」であり、データタイプが「int」であるカラムを生成する。
以下、カラム名が「AS」であるカラムをカラムASという。カラム名が「BS」であるカラムをカラムBSという。また、カラム名が「CS」であるカラムをカラムCSという。
上述のテーブル生成命令に従って、図示するようにリレーショナルデータベース103にテーブルTが生成される。上述のカラムのうち、カラムA、カラムB及びカラムCは、実データを格納させるためのカラムである。一方、カラムAS、カラムBS及びカラムCSは、サイズデータを格納させるためのカラムである。カラムASには、カラムAに格納される実データのサイズを示す値が格納される。カラムBSには、カラムBに格納される実データのサイズを示す値が格納される。カラムCSには、カラムCに格納される実データのサイズを示す値が格納される。カラムAS、カラムBS及びカラムCSは、仲介部111が追加したカラムである。尚、実データは、アプリケーション部107がリレーショナルデータベース103に格納させ、あるいはアプリケーション部107がリレーショナルデータベース103から取得して用いる各種のデータである。
例えば、カラムパターン「A,B」が指定された場合は、「create table T (A char(5), B datetime, C blob(8G), ABS int)」というテーブル生成命令が生成される。カラムABSには、カラムAに格納される実データのサイズとカラムBに格納される実データのサイズとの合計サイズを示す値が格納される。
続いて、テーブル生成における仲介部111の処理について説明する。図4に、テーブル生成処理フローを示す。受信部205が、図3のS301に示したようにテーブル生成要求を受信すると(S401)、生成指示部207は、テーブル生成要求に応じてテーブル生成命令を生成する(S403)。
このとき、生成指示部207は、テーブル生成要求に含まれるテーブル名(例えば「T」)を、そのままテーブル生成命令に含める。また、生成指示部207は、テーブル生成要求に含まれるカラム名(例えば「A」)とデータタイプ(例えば「char(5)」)とを、そのままテーブル生成命令に含める。更に、生成指示部207は、テーブル生成要求に含まれるカラム名(例えば「A」)に対応するサイズカラム名(例えば「AS」)を生成し、サイズカラム名とデータタイプ「int」とをテーブル生成命令に加える。この例では、実データを格納させるためのカラムのカラム名に「S」を加えることによって、当該カラムに格納されるデータのサイズ値を格納させるためのカラム(サイズカラムという。)のカラム名(サイズカラム名という。)を定める。
受信部205は、このときメタデータも生成する。図5に、メタデータの例を示す。メタデータは、各カラムに対応するレコードを有している。レコードには、カラム名を設定するためのフィールド、データタイプを設定するためのフィールド及び関連カラム名を設定するためのフィールドを含んでいる。関連カラム名は、当該レコードがサイズカラムに関する場合に使用される。関連カラム名は、そのサイズの元となる実データが格納されているカラムの名である。
図5は、テーブルTのメタデータを示している。第1レコードは、テーブルTにおける1番目のカラムのカラム名は「A」であり、同じく1番目のカラムのデータタイプは「char(5)」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
第2レコードは、テーブルTにおける2番目のカラムのカラム名は「B」であり、同じく2番目のカラムのデータタイプは「datetime」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
第3レコードは、テーブルTにおける3番目のカラムのカラム名は「C」であり、同じく3番目のカラムのデータタイプは「blob(8G)」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
第4レコードは、テーブルTにおける4番目のカラムのカラム名は「AS」であり、同じく4番目のカラムのデータタイプは「int」であることを示している。また、4番目のカラムは、関連カラム名「A」によって特定されるカラムAに格納されているデータのサイズ値を格納することを示している。
第5レコードは、テーブルTにおける5番目のカラムのカラム名は「BS」であり、同じく5番目のカラムのデータタイプは「int」であることを示している。また、5番目のカラムは、関連カラム名「B」によって特定されるカラムBに格納されているデータのサイズ値を格納することを示している。
第6レコードは、テーブルTにおける6番目のカラムのカラム名は「CS」であり、同じく6番目のカラムのデータタイプは「int」であることを示している。また、6番目のカラムは、関連カラム名「C」によって特定されるカラムCに格納されているデータのサイズ値を格納することを示している。
送信部203は、図3のS303に示したようにテーブル生成命令をリレーショナルデータベース103へ送信する(S405)。
続いて、図6に、実施の形態1に係るデータ追加及びデータ更新の概要を示す。アプリケーション部107は、データ追加要求又はデータ更新要求を仲介部111に送信する(S601)。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「A」と実データ’id001’の組と、カラム名「B」と実データ’2013−05−24’の組と、カラム名「C」と動画データの識別情報との組とを含んでいる。動画データは、データ追加要求に添付される。
データ更新要求も、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
仲介部111は、データ追加要求に応じてレコード追加命令(INSERT)を生成し、リレーショナルデータベース103に送信する(S603)。あるいは、仲介部111は、データ更新要求に応じてレコード更新命令(UPDATE)を生成し、リレーショナルデータベース103に送信する(S603)。
仲介部111は、このとき当該テーブルについてのメタデータを参照して、登録される実データのサイズ値を、対応するサイズカラムに格納する。但し、登録先のカラムに対してサイズカラムが設定されていない場合には、サイズ値の格納は行わない。
この例では、カラムA、カラムB及びカラムCは、いずれもサイズカラムが設定されているので、実データを格納するとともに、サイズ値も格納する。そのため、「insert into T (A,B,C,AS,BS,CS) values (‘id001’,‘2013−05−24’,?,5,10,4321783217)」というデータ追加命令が生成される。パラメータ中の上記?部分には、動画データの入力ストリームが設定される。
このデータ追加命令は、以下の内容を含んでいる。テーブル名「T」のテーブルに、レコードを追加する。カラムAに、実データ’id001’を設定する。カラムBに、実データ’2013−05−24’を設定する。カラムCに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムCには動画データへ至るための情報が格納される。カラムASに、サイズ値の5を設定する。カラムBSに、サイズ値の10を設定する。カラムCSに、サイズ値の4321783217を設定する。
図示するように、リレーショナルデータベース103のテーブルTに新たなレコードが追加される。第1レコードは、上記データ追加命令によって追加された例である。第2レコードは、「insert into T (A,B,C,AS,BS,CS) values (‘id002’,‘2013−05−24’,?,5,10,1384793471)」というデータ追加命令に動画データを添付して送信した結果、生成された例を示している。
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
図7に、データ追加処理フローを示す。受信部205が、図6のS601に示したようにデータ追加要求を受信すると(S701)、追加指示部209は、追加する実データのサイズを算出する(S703)。例えば、実データが’id001’であれば、サイズ値は5バイトである。また、実データが’2013−05−24’であれば、サイズ値は10バイトである。動画データのサイズ値は、元となる動画データから計測される。
追加指示部209は、上述したデータ追加命令を生成する(S705)。このとき、追加指示部209は、データ追加要求に含まれるカラム名(例えば「A」)と実データ(例えば‘id001’)とを、そのままデータ追加命令に含める。更に、追加指示部209は、データ追加要求に含まれるカラムに対応するサイズカラム(例えば「AS」)と、S703で算出したサイズ値(例えば「5」)とを、データ追加命令に含める。
送信部203は、図6のS603に示したようにデータ追加命令をリレーショナルデータベース103に送信する(S707)。
図8に、データ更新処理フローを示す。受信部205が、図6のS601に示したようにデータ更新要求を受信すると(S801)、更新指示部211は、新たに書き込む実データのサイズ値を算出する(S803)。実データ値のサイズは、図7のS703の場合と同様に算出される。
更新指示部211は、データ更新命令を生成する(S805)。このとき、更新指示部211は、データ更新要求に含まれるカラム名と実データとを、そのままデータ更新命令に含める。更に、更新指示部211は、データ更新要求に含まれるカラムに対応するサイズカラムと、S803で算出したサイズ値とを、データ更新命令に含める。
送信部203は、図6のS603に示したようにデータ更新命令をリレーショナルデータベース103に送信する(S807)。
続いて、アプリケーション部107がリレーショナルデータベース103からデータを抽出する手順について説明する。この手順は、サイズ算出フェーズと実データ取得フェーズとからなる。そのため、図9に示すように、データ抽出処理(A)では、抽出指示部213の算出部217がサイズ算出処理(A)を実行した後に(S901)、抽出指示部213の第2取得部219が実データ取得処理(A)を実行する(S903)。
まず、サイズ算出フェーズについて説明する。図10に、実施の形態1に係るサイズ算出の概要を示す。アプリケーション部107は、データ抽出要求を仲介部111に送信する(S1001)。データ抽出要求は、上述の通り、抽出条件と出力項目とを含んでいる。
以下、出力項目にカラム名「A」と「C」とを含む第1例と、出力項目にカラム名「A」と「B」とを含む第2例について説明する。また、第1例と第2例と共に、抽出条件が「A=id001」である。つまり、カラムAの値が’id001’であるレコードをデータ抽出の対象とする。
仲介部111は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、仲介部111は、リレーショナルデータベース103に送信する(S1003)。実データに対応するサイズカラムが設定されていないと判定した場合には、データ値を取得するための処理は行われない。
第1例の場合には、関連カラム名に「A」を含むサイズカラムASが設定され、更に関連カラム名に「C」を含むサイズカラムCSが設定されているか否かを判定する。サイズカラムASとサイズカラムCSとの両方が設定されている場合には、それぞれのサイズカラムからサイズ値を抽出する。このとき、「SELECT AS,CS FROM T WHERE A=id001」というデータ抽出命令が生成される。
第2例の場合には、関連カラム名に「A」を含むサイズカラムASが設定され、更に関連カラム名に「B」を含むサイズカラムBSが設定されているか否かを判定する。サイズカラムASとサイズカラムBSとの両方が設定されている場合には、それぞれのサイズカラムからサイズデータを抽出する。「SELECT AS,BS FROM T WHERE A=id001」というデータ抽出命令が生成される。
尚、例えばデータ抽出要求にカラム名「A」と「C」が含まれる場合には、更に、関連カラム名に「A,C」を含むサイズカラムACSが設定されているか否かを判定するようにしてもよい。サイズカラムACSが設定されている場合には、それぞれのサイズカラムからサイズ値を抽出する。「SELECT ACS FROM T WHERE A=id001」というデータ抽出命令が生成される。このとき、得られたサイズ値を、カラムAから抽出されるデータのサイズ値とカラムCから抽出されるデータのサイズ値との合計として扱う。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S1005)。仲介部111は、データサイズの合計を算出し、その結果をアプリケーション部107に送信する(S1007)。
例えば、第1例の場合には、サイズカラムASから取得されるサイズ値が5となり、サイズカラムCSから取得されるサイズ値が4321783217となるので、データサイズの合計は、4321783222となる。
例えば、第2例の場合には、サイズカラムASから取得されるサイズ値が5となり、サイズカラムBSから取得されるサイズ値が10となるので、データサイズの合計は、15となる。
図11に、サイズ算出処理(A)フローを示す。受信部205が、図10のS1001に示したようにデータ抽出要求を受信すると(S1101)、第1取得部215は、データ抽出命令を生成する(S1103)。このとき、第1取得部215は、データ抽出要求に含まれるカラム名に基づいて、サイズカラム名を特定する。この例では、第1取得部215は、カラム名に「S」を加えることによって、サイズカラム名を特定する。あるいは、第1取得部215は、メタデータにおいて、実データのカラム名と一致する関連カラム名を検索し、サイズカラム名を特定する。
第1取得部215は、図10のS1003に示したように送信部203を介して、データ抽出命令をリレーショナルデータベース103へ送信する(S1105)。第1取得部215が、図10のS1005に示したように受信部205を介して、サイズの結果セットをリレーショナルデータベース103から受信すると(S1107)、算出部217は、各カラムについてのサイズ値を合計して全体サイズを算出する(S1109)。複数のレコードについてサイズ値を取得した場合には、第1取得部215は、各レコードに係るサイズ値を合計する。送信部203は、図10のS1007に示したように全体サイズを送信する(S1111)。以上で、データ算出フェーズについての説明を終える。
次に、実データ取得フェーズについて説明する。図12に、実施の形態1に係る実データ取得の概要を示す。アプリケーション部107が全体サイズを受信すると、アプリケーション装置105側で処理を継続させるか否かを判定する。
例えば、アプリケーション部107がアプリケーション装置105の表示装置に全体サイズを表示させ、ユーザに処理を継続させるか否かの判断を促す。そして、アプリケーション装置105の入力装置を介して受け付けたユーザの指示に従って、アプリケーション部107は処理を継続させるか否かを特定する。
あるいは、アプリケーション装置105は、受信した合計サイズが所定の閾値を越えている場合に、処理を継続させないと判定するようにしてもよい。また、受信した合計サイズが所定の閾値を越えていない場合に、アプリケーション装置105は、処理を継続させると判定するようにしてもよい。アプリケーション装置105において処理の継続を判定する例については、後述する実施の形態で詳しく述べる。
処理を継続させると判定した場合には、アプリケーション部107は、出力要求を仲介部111へ送信する(S1201)。処理を継続させないと判定した場合には、その時点で処理を終える。
仲介部111は、出力要求を受信すると、データ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S1203)。例えば、「SELECT A,B FROM T WHERE A=id001」というデータ抽出命令が生成される。
リレーショナルデータベース103は、実データの結果セットを仲介部111に送信する(S1205)。実データの結果セットは、例えば「A,id001/B,2013−05−24」のようなデータを含んでいる。
仲介部111は、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部107に送信する(S1207)。このとき、実データの結果セットをそのままアプリケーション部107に送信するようにしてもよい。
図13に、実データ取得処理(A)フローを示す。抽出指示部213は、受信部205が出力要求を受信したか否かによって処理を分岐させる。(S1301)。
所定期間内に受信部205が出力要求を受信しなかった場合には、図13の処理を終え、図9の処理に戻り、データ抽出処理(A)を終える。
受信部205が出力要求を受信した場合には、第2取得部219は、図10のS1001で受信したデータ抽出要求に基づいて、データ抽出命令を生成する(S1303)。
送信部203は、データ抽出命令をリレーショナルデータベース103へ送信する(S1305)。受信部205は、リレーショナルデータベース103から実データの結果セットを受信する(S1307)。
送信部203は、アプリケーション部107へ抽出結果データを送信する(S1309)。抽出結果データは、結果セットから抽出した実データを所定の形式に改めたものであってもよいし、結果セットそのものであってもよい。
本実施の形態によれば、クエリに基づきリレーショナルデータベース103から抽出されるデータ量を予め特定できる。従って、検索結果データの送信にかかる時間を予測しやすい。また、データ送信の中断も予見しやすい。
また、多様なクエリに対してデータサイズを特定することができる。CPUやメモリなどの資源を無駄に使用することもなくなるという面もある。
また、選択的に実データの送信を行えるようになる。例えば、全体サイズが大きい場合は、データ送信を行わないようにできる。
[実施の形態2]
前述した実施の形態では、実データカラムとサイズカラムとを同じテーブルに持つ例について述べたが、本実施の形態では、実データカラムを持つテーブルと異なるテーブルにサイズカラムを設ける例について述べる。
本実施の形態では、既に存在するテーブルの実データに対して、サイズ値を設定する方法を提供する。
図14に、実施の形態2に係るテーブルの例を示す。図示するようにリレーショナルデータベース103にテーブルTが保持されている。カラムA、カラムB及びカラムCは、実データを格納させるためのカラムである。前述した実施の形態と同様に、実データは、アプリケーション部107がリレーショナルデータベース103に格納させ、あるいはアプリケーション部107がリレーショナルデータベース103から取得して用いる各種のデータである。この例では、カラムAがプライマリキーである。
次に、図15を用いて、実施の形態2に係るテーブル生成の概要について説明する。アプリケーション部107は、カラムパターンを仲介部111に送る(S1501)。カラムパターンは、実施の形態1と同様に、同時にデータが抽出されるカラムの組み合わせである。
前述した実施の形態と同様に、カラムの組み合わせは、1つであってもよいし、複数であってもよい。この例では、「,」で区切ったカラム同士が1つの組み合わせとなる。また、カラムの組み合わせを複数指定する場合には、「/」でカラムの組み合わせ同士を区切るようにする。例えば、カラムパターンが「T−A/T−B/T−C」と指定された場合には、テーブルTのカラム名「A」のカラム(以下、カラムAという。)からデータを抽出し、あるいはテーブルTのカラム名「B」のカラム(以下、カラムBという。)からデータを抽出し、あるいはテーブルTのカラム名「C」のカラム(以下、カラムCという。)からデータを抽出することが想定される。また、カラムパターンが「T」と指定された場合には、カラムパターンが「T−A/T−B/T−C」と指定されたとみなす。
仲介部111は、その要求に応じてテーブル生成命令(CREATE TABLE)を生成し、リレーショナルデータベース103に送信する(S1503)。例えば、カラムパターンが「T−A/T−B/T−C」と指定された場合には、「create table TS (A char(5),AS int,BS int, CS int)というテーブル生成命令が生成される。
このテーブル生成命令は、以下の内容を含んでいる。テーブル名「TS」のテーブルを生成する。カラム名が「A」であり、データタイプが「char(5)」であるカラムを生成する。カラム名が「AS」であり、データタイプが「int」であるカラムを生成する。カラム名が「BS」であり、データタイプが「int」であるカラムを生成する。カラム名が「CS」であり、データタイプが「int」であるカラムを生成する。
以下、カラム名が「AS」であるカラムをカラムASという。カラム名が「BS」であるカラムをカラムBSという。また、カラム名が「CS」であるカラムをカラムCSという。
上述のテーブル生成命令に従って、図示するようにリレーショナルデータベース103にテーブルTSが生成される。上述のカラムのうち、カラムAは、実データを格納させるためのカラムである。一方、カラムAS、カラムBS及びカラムCSは、サイズデータを格納させるためのカラムである。カラムAには、テーブルTSにおけるカラムAと同じデータが格納される。カラムAは、テーブルTSにおけるプライマリキーである。
カラムASには、カラムAに格納される実データのサイズを示す値が格納される。カラムBSには、カラムBに格納される実データのサイズを示す値が格納される。カラムCSには、カラムCに格納される実データのサイズを示す値が格納される。
続いて、図4を用いて、テーブル生成における仲介部111の処理について説明する。受信部205が、図15のS1501に示したようにテーブル生成要求を受信すると(S401)、生成指示部207は、テーブル生成要求に応じてテーブル生成命令を生成する(S403)。
このとき、生成指示部207は、新たに加えるテーブル名を特定する。この例では、生成指示部207は、既存のテーブル名(例えば「T」)に「S」を加えて、新たに加えるテーブル名を特定する。生成指示部207は、そのテーブル名をテーブル生成命令に含める。
更に、生成指示部207は、まず、プライマリキーとなるカラム名とそのデータタイプをテーブル生成命令に加える。続いて、生成指示部207は、既存のテーブルに含まれるカラム名(例えば「A」)に対応するサイズカラム名(例えば「AS」)を生成し、サイズカラム名とデータタイプ「int」とをテーブル生成命令に加える。この例では、既存のテーブルに含まれるカラムのカラム名に「S」を加えることによって、当該カラムに格納されるデータのサイズ値を格納させるためのカラム(サイズカラムという。)のカラム名(サイズカラム名という。)を定める。
生成指示部207は、このときメタデータも生成する。図16と図17とに、メタデータの例を示す。前述した実施の形態と同様に、メタデータは、各カラムに対応するレコードを有している。レコードには、カラム名を設定するためのフィールド、データタイプを設定するためのフィールド及び関連カラム名を設定するためのフィールドを含んでいる。関連カラム名は、当該レコードがサイズカラムに関する場合に使用される。関連カラム名は、そのサイズの元となる実データが格納されているカラムの名である。
図16は、既存のテーブルTについてのメタデータを示している。第1レコードは、テーブルTにおける1番目のカラムのカラム名は「A」であり、同じく1番目のカラムのデータタイプは「char(5)」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
第2レコードは、テーブルTにおける2番目のカラムのカラム名は「B」であり、同じく2番目のカラムのデータタイプは「datetime」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
第3レコードは、テーブルTにおける3番目のカラムのカラム名は「C」であり、同じく3番目のカラムのデータタイプは「blob(8G)」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
図17は、追加されたテーブルTSについてのメタデータの例を示す。第1レコードは、テーブルTSにおける1番目のカラムのカラム名は「A」であり、同じく1番目のカラムのデータタイプは「char(5)」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
第2レコードは、テーブルTSにおける2番目のカラムのカラム名は「AS」であり、同じく2番目のカラムのデータタイプは「int」であることを示している。また、2番目のカラムは、関連カラム名「T−A」によって特定されるテーブルTのカラムAに格納されているデータのサイズ値を格納することを示している。
第3レコードは、テーブルTSにおける3番目のカラムのカラム名は「BS」であり、同じく3番目のカラムのデータタイプは「int」であることを示している。また、3番目のカラムは、関連カラム名「T−B」によって特定されるテーブルTのカラムBに格納されているデータのサイズ値を格納することを示している。
第4レコードは、テーブルTSにおける4番目のカラムのカラム名は「CS」であり、同じく4番目のカラムのデータタイプは「int」であることを示している。また、4番目のカラムは、関連カラム名「T−C」によって特定されるテーブルTのカラムCに格納されているデータのサイズ値を格納することを示している。
送信部203は、図15のS1503に示したようにテーブル生成命令をリレーショナルデータベース103へ送信する(S405)。
続いて、図18に、実施の形態2に係るデータ追加及びデータ更新の概要を示す。アプリケーション部107は、データ追加要求又はデータ更新要求を仲介部111に送信する(S1801)。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「A」と実データ’id001’の組と、カラム名「B」と実データ’2013−05−24’の組と、カラム名「C」と動画データの識別情報との組とを含んでいる。動画データは、データ追加要求に添付される。
前述した実施の形態と同様に、データ更新要求も、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
前述した実施の形態と同様に、仲介部111は、データ追加要求に応じてレコード追加命令(INSERT)を生成し、リレーショナルデータベース103に送信する(S1803)。あるいは、仲介部111は、データ更新要求に応じてレコード更新命令(UPDATE)を生成し、リレーショナルデータベース103に送信する(S1803)。
前述した実施の形態と同様に、仲介部111は、このとき当該テーブルについてのメタデータを参照して、登録される実データのサイズ値を、対応するサイズカラムに格納する。但し、実データが登録されるカラムに対してサイズカラムが設定されていない場合には、サイズ値の格納は行わない。
前述した実施の形態と同様に、カラムA、カラムB及びカラムCは、いずれもサイズカラムが設定されているので、実データを格納するとともに、サイズ値も格納する。そのため、2つのデータ追加命令が生成される。まず、「insert into T (A,B,C) values (‘id001’,‘2013−05−024’,?)」というデータ追加命令が生成される。パラメータ中の上記?部分には、動画データの入力ストリームが設定される。
このデータ追加命令は、以下の内容を含んでいる。テーブル名「T」のテーブルに、レコードを追加する。カラムAに、実データ’id001’を設定する。カラムBに、実データ’2013−05−24’を設定する。カラムCに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムCには動画データへ至るための情報が格納される。
更に、「insert into TS (A,AS,BS,CS) values (‘id001’,5,10,4321783217)」というデータ追加命令が生成される。
このデータ追加命令は、以下の内容を含んでいる。テーブル名「TS」のテーブルに、レコードを追加する。カラムAに、実データ’id001’を設定する。カラムASに、サイズ値の5を設定する。カラムBSに、サイズ値の10を設定する。カラムCSに、サイズ値の4321783217を設定する。
図示するように、リレーショナルデータベース103のテーブルTに新たなレコードが追加される。第1レコードは、上記の1つ目のデータ追加命令によって追加される。更に、リレーショナルデータベース103のテーブルTSに新たなレコードが追加される。第1レコードは、上記の2つ目のデータ追加命令によって追加される。
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
図7に示したデータ追加処理フローのうち、S705において、追加指示部209は、上述したように2つのデータ追加命令を生成する。このとき、追加指示部209は、データ追加要求に含まれるカラム名と実データとを、そのまま1つ目のデータ追加命令に含める。更に、追加指示部209は、データ追加要求に含まれるカラムに対応するサイズカラムと、S703で算出したサイズ値とを、2つ目のデータ追加命令に含める。尚、データ追加要求に含まれるカラム名が「A」である場合には、2つ目のデータ追加命令にも、カラム名と実データとを含める。テーブルTとテーブルTSとの関連を保つためである。
送信部203は、2つのデータ追加命令をリレーショナルデータベース103に送信する(S707)。
また、図8に示したデータ更新処理フローのうち、S805において、更新指示部211は、上述したように2つのデータ更新命令を生成する。このとき、更新指示部211は、データ更新要求に含まれるカラム名と実データとを、そのまま1つ目のデータ更新命令に含める。更に、更新指示部211は、データ更新要求に含まれるカラムに対応するサイズカラムと、S803で算出したサイズ値とを、2つ目のデータ更新命令に含める。尚、データ更新要求に含まれるカラム名が「A」である場合には、2つ目のデータ追加命令にも、カラム名と実データとを含める。
送信部203は、2つのデータ更新命令をリレーショナルデータベース103に送信する(S807)。
続いて、図19に、実施の形態2に係るサイズ算出の概要を示す。アプリケーション部107は、図10のS1001と同様に、データ抽出要求を仲介部111に送信する(S1901)。データ抽出要求は、上述の通り、抽出条件と出力項目とを含んでいる。
前述した実施の形態と同様に、仲介部111は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、図10のS1001と同様に、仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S1903)。
前述した実施の形態と同様に、リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S1905)。仲介部111は、データサイズの合計を算出し、その結果をアプリケーション部107に送信する(S1907)。
図11に示したサイズ算出処理(A)フローのうち、S1103において、テーブルTSのサイズカラムからサイズ値を取得するためのデータ抽出命令を生成する。例えば、前述した実施の形態で示した第1例の場合には「SELECT AS,CS FROM TS WHERE A=id001」というデータ抽出命令が生成される。前述した実施の形態で示した第2例の場合には「SELECT AS,BS FROM TS WHERE A=id001」というデータ抽出命令が生成される。その他の処理は、前述した実施の形態の場合と同様である。
図20に、実施の形態2に係る実データ取得の概要を示す。前述した実施の形態と同様に、アプリケーション部107は、データ抽出要求を仲介部111に送信する(S2001)。
前述した実施の形態と同様に、実データを取得するためのデータ抽出命令(SELECT)を生成して、仲介部111は、リレーショナルデータベース103に送信する(S2003)。
前述した実施の形態と同様に、リレーショナルデータベース103は、実データの結果セットを仲介部111に送信する(S2005)。仲介部111は、抽出結果データを生成して、アプリケーション部107に送信する(S2007)。
実データ取得処理(A)は、前述した実施の形態の場合(図13)と同様である。
本実施の形態によれば、実データのカラムを含むテーブルを改変することなく、サイズカラムを設けることができる。例えば、運用中のデータベースに対してサイズデータを付加させることができるようになる。
[実施の形態3]
本実施の形態では、アプリケーション装置105のアプリケーション部107で、合計サイズに基づいて処理継続の要否を判定する例について述べる。
図21に、アプリケーション部107のモジュール構成例を示す。アプリケーション部107は、送信部2101、判定部2103及び受信部2105を有する。送信部2101は、仲介装置109の仲介部111へ各種のデータを送信する。判定部2103は、全体サイズに基づいて処理継続の要否を判定する。受信部2105は、仲介装置109の仲介部111から各種のデータを受信する。
図22に、アプリケーション部107による処理フローを示す。送信部2101は、図10のS1001あるいは図19のS1901に示したように、データ抽出要求を仲介装置109の仲介部111へ送信する(S2201)。受信部2105は、図10のS1007あるいは図19のS1907に示したように、全体サイズを仲介装置109の仲介部111から受信する(S2203)。
判定部2103は、受信した全体サイズが閾値を越えているか否かを判定する(S2205)。受信した全体サイズが閾値を越えていないと判定した場合には、判定部2103は、処理を継続させる。
送信部2101は、図12のS1201あるいは図20のS2001に示したように、出力要求を仲介装置109の仲介部111へ送信する(S2207)。受信部2105は、図12のS1207あるいは図20のS2007に示したように、抽出結果データを仲介装置109の仲介部111から受信する(S2209)。
一方、S2205で、受信した全体サイズが閾値を越えていると判定した場合には、アプリケーション部107は、処理を中断させる。つまり、送信部2101による出力要求の送信処理(S2207)と、受信部2105による抽出結果データの受信処理(S2209)とを行わずに、処理を終了する。
閾値は、例えばリレーショナルデータベース103から出力可能なデータ量を示す。あるいは、閾値は、リレーショナルデータベース103から出力可能なデータ量に基づいて定められるようにしてもよい。つまり、判定部2103は、リレーショナルデータベース103からのデータ出力の可否を判定する。
閾値は、アプリケーション部107が要求される性能に応じて定められるようにしてもよい。例えば、アプリケーション部107の処理を速く行う場合には、閾値を小さく設定し、アプリケーション部107の処理が遅くても構わない場合には、閾値を大きく設定するようにしてもよい。
閾値は、アプリケーション部107が扱うデータの特性に応じて定められるようにしてもよい。例えば、全体データサイズが大きいときに的確なデータが含まれていない可能性が高いという特性がある場合には、閾値を小さく設定し、全体データサイズが大きくても的確なデータが含まれている可能性が高いという特性がある場合には、閾値を大きく設定するようにしてもよい。
閾値は、ネットワークの特性に応じて定められるようにしてもよい。例えば、アプリケーション装置105と仲介装置109とを繋ぐネットワークの伝送レートが大きい場合には、閾値を大きく設定し、アプリケーション装置105と仲介装置109とを繋ぐネットワークの伝送レートが小さい場合には、閾値を小さく設定するようにしてもよい。
このように、仲介装置109を利用するアプリケーション装置105によって、あるいはアプリケーション部107によって異なる閾値を用いるようにしてもよい。
このようにすれば、リレーショナルデータベース103から出力可能なデータ量、アプリケーション装置105の特性あるいはアプリケーション部107の特性などに応じて抽出結果データを要求するか否かを自動的に判断できるようになる。
[実施の形態4]
実施の形態3では、アプリケーション装置105側で処理継続の判定を行う例について述べたが、本実施の形態では、仲介装置109側で処理継続の判定を行う例について述べる。
図23に、実施の形態4に係る仲介部111のモジュール構成例を示す。仲介部111は、図2と同様に、記憶部201、送信部203、受信部205、生成指示部207、追加指示部209、更新指示部211及び抽出指示部213を有する。
抽出指示部213は、第1取得部215、算出部217及び第2取得部219の他に、判定部2301を有している。第1取得部215、算出部217及び第2取得部219は、図2と同様である。判定部2301は、結果データについての出力可否を判定する。
図24に、実施の形態4に係る出力可否判定の概要を示す。図24は、上述した図10の例を基にしている。アプリケーション部107は、データ抽出要求を仲介部111に送信する(S1001)。この処理は、図10の場合と同様である。
仲介部111は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、仲介部111は、リレーショナルデータベース103に送信する(S1003)。実データに対応するサイズカラムが設定されていないと判定した場合には、データ値を取得するための処理は行われない。この処理も、図10の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S1005)。この処理も、図10の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、仲介部111は、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合には、仲介部111は、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合には、仲介部111は、結果データの出力が可能であると判定する。
仲介部111は、その判定結果をアプリケーション部107に送信する(S2401)。
仲介部111が結果データの出力が可能であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付ける。一方、仲介部111が結果データの出力は不可であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付けないようにしてもよい。以上で、図10の例を基にした出力可否判定の概要の説明を終える。
続けて、図25を用いて、図19の例を基にした出力可否判定の概要について説明する。アプリケーション部107は、データ抽出要求を仲介部111に送信する(S1901)。この処理は、図19の場合と同様である。
仲介部111は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S1903)。この処理も、図19の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S1905)。この処理も、図19の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合には、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合には、結果データの出力が可能であると判定する。
仲介部111は、その判定結果をアプリケーション部107に送信する(S2501)。
仲介部111が結果データの出力が可能であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付ける。一方、仲介部111が結果データの出力は不可であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付けないようにしてもよい。以上で、図19の例を基にした出力可否判定の概要の説明を終える。
本実施の形態におけるデータ抽出について説明する。仲介部111は、データ抽出処理(B)を実行する。図26に示すように、データ抽出処理(B)では、抽出指示部213の算出部217がサイズ算出処理(A)又はサイズ算出処理(B)を実行し(S2601)、算出したデータサイズに基づいて抽出指示部213の判定部2301が出力可否判定処理(A)を実行する(S2603)。そして、抽出指示部213の第2取得部219が実データ取得処理(A)を実行する(S903)。
図27に、実施の形態4に係るサイズ算出処理(B)フローを示す。受信部205が、図24のS1001及び図25のS1901に示したようにデータ抽出要求を受信すると(S1101)、第1取得部215は、データ抽出命令を生成する(S1103)。第1取得部215は、図24のS1003及び図25のS1903に示したように送信部203を介して、データ抽出命令をリレーショナルデータベース103へ送信する(S1105)。第1取得部215が、図24のS1005及び図25のS1905に示したように受信部205を介して、サイズの結果セットをリレーショナルデータベース103から受信すると(S1107)、算出部217は、各カラムについてのサイズ値を合計して全体サイズを算出する(S1109)。S1101乃至S1109の処理は、図11の場合と同様である。
図11に示したサイズ算出処理(A)を実行する場合には、S1111において全体サイズが送信される。図27に示したサイズ算出処理(B)を実行する場合には、図11のS1111に示した全体サイズの送信処理は省かれる。
図28に、出力可否判定処理(A)フローを示す。判定部2301は、全体サイズが閾値を越えているか否かを判定する(S2801)。全体サイズの閾値を越えていないと判定した場合に、判定部2301は、判定結果を出力可と設定する(S2803)。全体サイズの閾値を越えていると判定した場合に、判定部2301は、判定結果を出力不可と設定する(S2805)。送信部203は、図24のS2401あるいは図25のS2501に示したように判定結果を送信する(S2807)。
S2807において、送信部203は判定結果と共に全体サイズを送信するようにしてもよい。
閾値は、例えばリレーショナルデータベース103から出力可能なデータ量を示す。あるいは、閾値は、リレーショナルデータベース103から出力可能なデータ量に基づいて定められるようにしてもよい。
閾値は、ネットワークの状態に応じて定められるようにしてもよい。例えば、仲介装置109とリレーショナルデータベース装置101とを繋ぐネットワークでエラーが生じていない場合には、閾値を大きく設定し、仲介装置109とリレーショナルデータベース装置101とを繋ぐネットワークでエラーが生じている場合には、閾値を小さく設定するようにしてもよい。
本実施の形態によれば、リレーショナルデータベース103から抽出されるデータの出力可否を予測できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部107によるデータサイズに関する判定を省くことができる。
一般的に、クエリに応じて出力されるべきデータ全体のサイズは、実際にデータを抽出し、抽出されたデータを取得するまで不明である。そして、読み出したデータが上限値を越えた段階で出力エラーと判定されるようになっている。そのため、上限値が大きく設定されている場合には、出力エラーと判定されるまでに長い時間がかかるという課題がある。
また、通常のデータベースの場合には、ファイルシステムのように取得データサイズを予め知る手段が設けられていない。クエリによって抽出されるデータサイズがどの程度であるかは事前にわからないので、データサイズに基づいて予め出力可否を判定することは従来行われていない。
[実施の形態5]
実施の形態4では、仲介装置109側で処理継続を判定し、判定結果をアプリケーション装置105に送信する例について述べたが、本実施の形態では、判定結果に基づいて仲介装置109で実データ取得処理を実行する例について述べる。
以下、実施の形態4に示した図24を基礎とする動作例と、実施の形態4に示した図25を基礎とする動作例とについて説明する。
まず、図29と図30とを用いて、実施の形態4に示した図24を基礎とする動作例について説明する。図29では、判定結果が出力不可となり、仲介部111からアプリケーション部107に出力エラーが通知される動作について説明する。図29は、図24と同様に、上述した図10の例を基にしている。
アプリケーション部107は、データ抽出要求を仲介部111に送信する(S1001)。この処理は、図10及び図24の場合と同様である。
仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S1003)。この処理も、図10及び図24の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S1005)。この処理も、図10及び図24の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理は、図24の場合と同様である。
結果データの出力は不可であると判定した場合に、仲介部111は出力エラーをアプリケーション部107に送信する(S2901)。
次に、図30を用いて、判定結果が出力可となり、仲介部111が実データを取得する動作について説明する。S1001乃至S1005については、上述の図29と同様である。また、仲介部111がデータサイズの合計を算出することも、上述の図29と同様である。
仲介部111が結果データの出力が可能であると判定した場合に、仲介部111は、図12の場合と同様に、データ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S1203)。
リレーショナルデータベース103は、図12の場合と同様に、実データの結果セットを仲介部111に送信する(S1205)。
仲介部111は、図12の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部107に送信する(S1207)。
次に、図31と図32とを用いて、実施の形態4に示した図25を基礎とする動作例について説明する。図31では、判定結果が出力不可となり、仲介部111からアプリケーション部107に出力エラーが通知される動作について説明する。図31は、図25と同様に、上述した図19の例を基にしている。
アプリケーション部107は、データ抽出要求を仲介部111に送信する(S1901)。この処理は、図19及び図25の場合と同様である。
仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S1903)。この処理も、図19及び図25の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S1905)。この処理も、図19及び図25の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理は、図25の場合と同様である。
結果データの出力は不可であると判定した場合に、仲介部111は出力エラーをアプリケーション部107に送信する(S3101)。
次に、図32を用いて、判定結果が出力可となり、仲介部111が実データを取得する動作について説明する。S1901乃至S1905については、上述の図31と同様である。また、仲介部111がデータサイズの合計を算出することも、上述の図31と同様である。
仲介部111が結果データの出力が可能であると判定した場合に、仲介部111は、図20の場合と同様に、データ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S2003)。
リレーショナルデータベース103は、図20の場合と同様に、実データの結果セットを仲介部111に送信する(S2005)。
仲介部111は、図20の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部107に送信する(S2007)。
続いて、本実施の形態におけるデータ抽出について説明する。仲介部111は、データ抽出処理(C)を実行する。図33に示すように、データ抽出処理(C)では、抽出指示部213の算出部217がサイズ算出処理(A)又はサイズ算出処理(B)を実行し(S2601)、算出したデータサイズに基づいて抽出指示部213の判定部2301が出力可否判定処理(B)を実行する(S3301)。サイズ算出処理(B)は、図26を用いて前述した通りである。
図34に、実施の形態5に係る出力可否判定処理(B)フローを示す。出力可否判定処理(B)では、図28に示した出力可否判定処理(A)フローのうち、S2807に示した判定結果の送信処理が省かれる。
図33の説明に戻って、抽出指示部213は、判定結果が出力可であるか否かによって処理を分岐させる(S3303)。判定結果が出力可でない場合、つまり判定結果が出力不可である場合には、送信部203は、出力エラーをアプリケーション部107へ送信する(S3305)。
一方、判定結果が出力可である場合には、抽出指示部213は実データ取得処理(B)を実行する(S3307)。
図35に、実施の形態5に係る実データ取得処理(B)フローを示す。図13に示した実データ取得処理(A)フローのうち、S1301の判定処理を省く。S1303乃至S1309の処理については、実データ取得処理(A)フローの場合と同様である。以上で、本実施の形態におけるデータ抽出についての説明を終える。
本実施の形態では、リレーショナルデータベース103からのデータ出力が成功すると予測されるデータ取得処理を実行できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部107によるデータサイズに関する判定を省くことができる。
実施の形態1乃至5では、項目毎のデータ(カラムに設定される実データ)を抽出することを前提として、項目単位の実データについてデータサイズを保持する例について説明した。これらの形態では、項目単位のデータサイズに基づいて、実際に抽出されるデータ全体のサイズを正確に求めることができる。
[実施の形態6]
本実施の形態以降では、項目単位のデータサイズを保持するのではなく、レコード単位のデータサイズ、つまり複数の項目に係るデータのサイズを保持する例について述べる。本実施の形態では、実施の形態1を基に改めた例について述べる。
図36に、実施の形態6に係るテーブル生成の概要を示す。アプリケーション部107は、テーブル生成要求を仲介部111に送信する(S3601)。テーブル生成要求は、テーブル名を含んでいる。また、テーブル生成要求は、カラム毎に、カラム名とデータタイプとの組を指定している。この例におけるテーブル生成要求は、テーブル名「T」、カラム名「A」とデータタイプ「char(5)」との組、カラム名「B」とデータタイプ「datetime」との組及びカラム名「C」とデータタイプ「blob(8G)」との組を含んでいる。データタイプに含まれる括弧内は、データサイズを示している。
仲介部111は、その要求に応じてテーブル生成命令(CREATE TABLE)を生成し、リレーショナルデータベース103に送信する(S3603)。例えば、「create table T (A char(5), B datetime, C blob(8G), RS int)」というテーブル生成命令が生成される。
このテーブル生成命令は、以下の内容を含んでいる。テーブル名「T」のテーブルを生成する。カラム名が「A」であり、データタイプが「char(5)」であるカラムを生成する。カラム名が「B」であり、データタイプが「datetime」であるカラムを生成する。カラム名が「C」であり、データタイプが「blob(8G)」であるカラムを生成する。カラム名が「RS」であり、データタイプが「int」であるカラムを生成する。以下、カラム名が「A」であるカラムをカラムAという。カラム名が「B」であるカラムをカラムBという。カラム名が「C」であるカラムをカラムCという。カラム名が「RS」であるカラムをカラムRSという。
上述のテーブル生成命令に従って、図示するようにリレーショナルデータベース103にテーブルTが生成される。上述のカラムのうち、カラムA、カラムB及びカラムCは、実データを格納させるためのカラムである。一方、カラムRSは、サイズデータを格納させるためのカラムである。カラムRSには、カラムAに格納される実データのサイズと、カラムBに格納される実データのサイズと、カラムCに格納される実データのサイズとの合計を示す値が格納される。
続いて、図4を用いて、テーブル生成における仲介部111の処理について説明する。受信部205が、図36のS3601に示したようにテーブル生成要求を受信すると(S401)、生成指示部207は、テーブル生成要求に応じてテーブル生成命令を生成する(S403)。
このとき、生成指示部207は、テーブル生成要求に含まれるテーブル名(例えば「T」)を、そのままテーブル生成命令に含める。また、生成指示部207は、テーブル生成要求に含まれるカラム名(例えば「A」)とデータタイプ(例えば「char(5)」)とを、そのままテーブル生成命令に含める。更に、生成指示部207は、サイズカラム名「RS」とデータタイプ「int」とをテーブル生成命令に加える。
受信部205は、このときメタデータも生成する。図37は、テーブルTのメタデータを示している。第1レコードは、テーブルTにおける1番目のカラムのカラム名は「A」であり、同じく1番目のカラムのデータタイプは「char(5)」であることを示している。
第2レコードは、テーブルTにおける2番目のカラムのカラム名は「B」であり、同じく2番目のカラムのデータタイプは「datetime」であることを示している。
第3レコードは、テーブルTにおける3番目のカラムのカラム名は「C」であり、同じく3番目のカラムのデータタイプは「blob(8G)」であることを示している。
第4レコードは、テーブルTにおける4番目のカラムのカラム名は「RS」であり、同じく4番目のカラムのデータタイプは「int」であることを示している。
送信部203は、図36のS3603に示したようにテーブル生成命令をリレーショナルデータベース103へ送信する(S405)。
続いて、図38に、実施の形態6に係るデータ追加及びデータ更新の概要を示す。アプリケーション部107は、データ追加要求又はデータ更新要求を仲介部111に送信する(S3801)。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「A」と実データ’id001’の組と、カラム名「B」と実データ’2013−05−24’の組と、カラム名「C」と動画データの識別情報の組とを含んでいる。動画データは、データ追加要求に添付される。
データ更新要求も、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
仲介部111は、上述の実施の形態と同様に、データ追加要求に応じてレコード追加命令(INSERT)を生成し、リレーショナルデータベース103に送信する(S3803)。あるいは、仲介部111は、データ更新要求に応じてレコード更新命令(UPDATE)を生成し、リレーショナルデータベース103に送信する(S3803)。
仲介部111は、登録される実データのサイズ値を合計して、サイズ値の合計をサイズカラムに格納する。
この例では、カラムAの実データのサイズ値が5であり、カラムBの実データのサイズ値が10であり、カラムCの実データのサイズ値が4321783217であるので、これらを合計してサイズ値4321783232を求める。そして、「insert into T (A,B,C,RS) values (‘id001’,‘2013−05−24’,?,4321783232)」というデータ追加命令が生成される。パラメータ中の上記?部分には、動画データの入力ストリームが設定される。
このデータ追加命令は、以下の内容を含んでいる。テーブル名「T」のテーブルに、レコードを追加する。カラムAに、実データ’id001’を設定する。カラムBに、実データ’2013−05−24’を設定する。カラムCに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムCには動画データへ至るための情報が格納される。カラムRSに、サイズ値の4321783232を設定する。
図示するように、リレーショナルデータベース103のテーブルTに新たなレコードが追加される。第1レコードは、上記データ追加命令によって追加された例である。第2レコードは、「insert into T (A,B,C,RS) values (‘id002’,‘2013−05−24’,?,1384793486)」というデータ追加命令に動画データを添付して送信した結果、生成された例を示している。
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
図7に示したデータ追加処理フローに従って、受信部205が、図38のS3801に示したようにデータ追加要求を受信すると(S701)、追加指示部209は、追加する実データのサイズを算出し、それらの合計を算出する(S703)。例えば、実データが’id001’であれば、サイズ値は5バイトである。また、実データが’2013−05−24’であれば、サイズ値は10バイトである。動画データのサイズ値は、元となる動画データから計測される。そして、これらを合計したサイズ値を算出する。
追加指示部209は、上述したデータ追加命令を生成する(S705)。このとき、追加指示部209は、データ追加要求に含まれるカラム名(例えば「A」)と実データ(例えば‘id001’)とを、そのままデータ追加命令に含める。更に、追加指示部209は、サイズカラム「RS」と、S703で算出したサイズ値(例えば「4321783232」)とを、データ追加命令に含める。
送信部203は、図38のS3803に示したようにデータ追加命令をリレーショナルデータベース103に送信する(S707)。
図8に示したデータ更新処理フローに従って、受信部205が、図38のS3801に示したようにデータ更新要求を受信すると(S801)、更新指示部211は、新たに書き込む実データのサイズ値を算出する(S803)。実データ値のサイズは、図7のS703の場合と同様に算出される。
更新指示部211は、データ更新命令を生成する(S805)。このとき、更新指示部211は、データ更新要求に含まれるカラム名と実データとを、そのままデータ更新命令に含める。更に、更新指示部211は、サイズカラム「RS」と、S803で算出したサイズ値とを、データ更新命令に含める。
送信部203は、図38のS3803に示したようにデータ更新命令をリレーショナルデータベース103に送信する(S807)。
続いて、アプリケーション部107がリレーショナルデータベース103からデータを抽出する手順について説明する。この手順は、実施の形態1と同様に、サイズ算出フェーズと実データ取得フェーズとからなる。そのため、図9に示すように、データ抽出処理(A)では、抽出指示部213の算出部217がサイズ算出処理(A)を実行した後に(S901)、抽出指示部213の第2取得部219が実データ取得処理(A)を実行する(S903)。
まず、サイズ算出フェーズについて説明する。図39に、実施の形態6に係るサイズ算出の概要を示す。アプリケーション部107は、データ抽出要求を仲介部111に送信する(S3901)。データ抽出要求は、抽出条件と出力テーブルの指定とを含んでいる。つまり、実施の形態6では、上述の実施の形態における出力項目に代えて出力テーブルを指定する。出力テーブルを指定した場合には、テーブルに含まれる実データをすべて取得することを意味する。
以下、出力テーブルが「T」である例について説明する。また、抽出条件は、「A=id001」である。つまり、カラムAの値が’id001’であるレコードが抽出の対象となる。
仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S3903)。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S3905)。仲介部111は、データサイズの合計を算出し、その結果をアプリケーション部107に送信する(S3907)。
図11に示したサイズ算出処理(A)フローに従って、受信部205が、図39のS3901に示したようにデータ抽出要求を受信すると(S1101)、第1取得部215は、データ抽出命令を生成する(S1103)。このとき、サイズカラム名には「RS」が設定される。例えば、「SELECT RS FROM T WHERE A=id001」というデータ抽出命令が生成される。
第1取得部215は、図39のS3903に示したように送信部203を介して、データ抽出命令をリレーショナルデータベース103へ送信する(S1105)。第1取得部215が、図39のS3905に示したように受信部205を介して、サイズの結果セットをリレーショナルデータベース103から受信すると(S1107)、算出部217は、各レコードのサイズ値を合計して全体サイズを算出する(S1109)。送信部203は、図39のS3907に示したように全体サイズを送信する(S1111)。以上で、データ算出フェーズについての説明を終える。
次に、実データ取得フェーズについて説明する。図40に、実施の形態6に係る実データ取得の概要を示す。アプリケーション部107が全体サイズを受信すると、前述の実施の形態と同様に、アプリケーション装置105側で処理を継続させるか否かを判定する。
アプリケーション装置105のアプリケーション部107で、実施の形態3に示した処理を行うようにしてもよい。
処理を継続させると判定した場合には、アプリケーション部107は、出力要求を仲介部111へ送信する(S4001)。処理を継続させないと判定した場合には、その時点で処理を終える。
仲介部111は、出力要求を受信すると、データ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S4003)。このとき、仲介部111は、レコードに含まれるすべての実データを抽出させるデータ抽出命令を生成する。
リレーショナルデータベース103は、実データの結果セットを仲介部111に送信する(S4005)。実データの結果セットは、レコードにカラムAの実データ、カラムBの実データ及びカラムCの実データを含んでいる。
仲介部111は、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部107に送信する(S4007)。このとき、仲介部111は、実データの結果セットをそのままアプリケーション部107に送信するようにしてもよい。
図13に示した実データ取得処理(A)フローに従って、抽出指示部213は、受信部205が出力要求を受信したか否かによって処理を分岐させる。(S1301)。
所定期間内に受信部205が出力要求を受信しなかった場合には、図13の処理を終え、図9の処理に戻り、データ抽出処理(A)を終える。
受信部205が出力要求を受信した場合には、第2取得部219は、図39のS3901で受信したデータ抽出要求に基づいて、データ抽出命令を生成する(S1303)。
送信部203は、データ抽出命令をリレーショナルデータベース103へ送信する(S1305)。受信部205は、リレーショナルデータベース103から実データの結果セットを受信する(S1307)。
送信部203は、アプリケーション部107へ抽出結果データを送信する(S1309)。抽出結果データは、結果セットから抽出した実データを所定の形式に改めたものであってもよいし、結果セットそのものであってもよい。
本実施の形態によれば、レコード単位のサイズ値を設定しておくので、リレーショナルデータベース103からレコード単位で抽出されるデータサイズを求める処理が速い。
[実施の形態7]
本実施の形態では、実施の形態6を基に、仲介装置109側で処理継続の判定を行うように改めた例について述べる。
仲介部111のモジュール構成は、図23に示した通りである。
図41に、実施の形態7に係る出力可否判定の概要を示す。図41は、上述した図39の例を基にしている。アプリケーション部107は、データ抽出要求を仲介部111に送信する(S3901)。この処理は、図39の場合と同様である。
仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S3903)。この処理も、図39の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S3905)。この処理も、図39の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、仲介部111は、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合に、仲介部111は、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合に、仲介部111は、結果データの出力が可能であると判定する。
その判定結果をアプリケーション部107に送信する(S4101)。
結果データの出力が可能であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付ける。一方、結果データの出力は不可であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付けないようにしてもよい。以上で、図39の例を基にした出力可否判定の概要の説明を終える。
本実施の形態におけるデータ抽出について説明する。図26に示すように、データ抽出処理(B)では、抽出指示部213の算出部217がサイズ算出処理(A)又はサイズ算出処理(B)を実行し(S2601)、算出したデータサイズに基づいて抽出指示部213の判定部2301が出力可否判定処理(A)を実行する(S2603)。そして、抽出指示部213の第2取得部219が実データ取得処理(A)を実行する(S903)。
図11に示したサイズ算出処理(A)を実行する場合には、S1111において全体サイズが送信される。図27に示したサイズ算出処理(B)を実行する場合には、図11のS1111に示した全体サイズの送信処理は省かれる。
出力可否判定処理(A)は、図28を用いて説明した実施の形態4の例と同様である。
実データ取得処理(A)は、実施の形態6の場合と同様である。
このようにすれば、実施の形態6のようにレコード単位でデータサイズを設定するようにした場合にも、実施の形態4のように仲介部111でデータ出力の可否を判定することができる。
[実施の形態8]
本実施の形態では、実施の形態6を基に、判定結果に基づいて仲介装置109で実データ取得処理を実行するように改めた例について説明する。
図42と図43とを用いて、実施の形態6に示した図39を基礎とする動作例について説明する。図42では、判定結果が出力不可となり、仲介部111からアプリケーション部107に出力エラーが通知される動作について説明する。
アプリケーション部107は、データ抽出要求を仲介部111に送信する(S3901)。この処理は、図39の場合と同様である。
仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S3903)。この処理も、図39の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S3905)。この処理も、図39の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理も、図39の場合と同様である。
結果データの出力は不可であると判定した場合に、仲介部111は出力エラーをアプリケーション部107に送信する(S4201)。
次に、図43を用いて、判定結果が出力可となり、仲介部111が実データを取得する動作について説明する。S3901乃至S3905については、上述の図42と同様である。また、仲介部111がデータサイズの合計を算出することも、上述の図42と同様である。
結果データの出力が可能であると判定した場合に、仲介部111は、図40の場合と同様に、データ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S4003)。
リレーショナルデータベース103は、図40の場合と同様に、実データの結果セットを仲介部111に送信する(S4005)。
仲介部111は、図40の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部107に送信する(S4007)。
本実施の形態に係る処理フローは、図33乃至図35を用いて説明した実施の形態5の場合と同様である。但し、図27のサイズ算出処理(B)フローにおけるS1101乃至S1109については、実施の形態6と同様である。また、図35の実データ取得処理(B)フローにおけるS1303乃至S1309についても、実施の形態6と同様である。
本実施の形態では、リレーショナルデータベース103からのデータ出力が成功すると予測されるデータ取得処理を実行できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部107によるデータサイズに関する判定を省くことができる。
[実施の形態9]
本実施の形態では、実施の形態2を基に、複数のカラムを含むレコード全体のデータサイズを保持するように改めた例について説明する。
本実施の形態では、レコード単位のデータサイズを別のテーブルに設定する。従って、本実施の形態は、既に存在するテーブルのレコードに対して、サイズ値を設定しようとする場合に役立つ。
図14に示したように、リレーショナルデータベース103にテーブルTが保持されている状態を想定する。カラムA、カラムB及びカラムCは、実データを格納させるためのカラムである。
次に、図44を用いて、実施の形態9に係るテーブル生成の概要について説明する。アプリケーション部107は、テーブル追加要求を仲介部111に送る(S4401)。テーブル追加要求は、対象となるテーブルを指定するテーブル名(この例では、「T」)を含む。
続いて、図4を用いて、テーブル生成における仲介部111の処理について説明する。受信部205が、図44のS4401に示したようにテーブル生成要求を受信すると(S401)、生成指示部207は、テーブル生成要求に応じてテーブル生成命令を生成する(S403)。
このとき、生成指示部207は、新たに加えるテーブル名を特定する。この例では、生成指示部207は、指定されたテーブル名(例えば「T」)に「S」を加えて、新たに加えるテーブル名を特定する。生成指示部207は、そのテーブル名をテーブル生成命令に含める。
更に、生成指示部207は、プライマリキーとなるカラム名とそのデータタイプをテーブル生成命令に加える。また、生成指示部207は、サイズカラム名(この例では、「RS」である。)とデータタイプ「int」とをテーブル生成命令に加える。
この例で前提となる既存のテーブルTのメタデータは、図16に示した通りである。但し、この例では関連カラム名を設定するためのフィールドは用いられないので、このフィールドは省いてもよい。
図45に、追加されたテーブルTSについてのメタデータの例を示す。第1レコードは、テーブルTSにおける1番目のカラムのカラム名は「A」であり、同じく1番目のカラムのデータタイプは「char(5)」であることを示している。
第2レコードは、テーブルTSにおける2番目のカラムのカラム名は「RS」であり、同じく2番目のカラムのデータタイプは「int」であることを示している。このカラムは、プライマリキーであるカラムAで特定されるレコードの全体サイズを格納する。
送信部203は、図44のS4403に示したようにテーブル生成命令をリレーショナルデータベース103へ送信する(S405)。
続いて、図46に、実施の形態9に係るデータ追加及びデータ更新の概要を示す。アプリケーション部107は、データ追加要求又はデータ更新要求を仲介部111に送信する(S4601)。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「A」と実データ’id001’の組と、カラム名「B」と実データ’2013−05−24’の組と、カラム名「C」と動画データの識別情報との組とを含んでいる。動画データは、データ追加要求に添付される。
データ更新要求は、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
仲介部111は、データ追加要求に応じてレコード追加命令(INSERT)を生成し、リレーショナルデータベース103に送信する(S4603)。あるいは、仲介部111は、データ更新要求に応じてレコード更新命令(UPDATE)を生成し、リレーショナルデータベース103に送信する(S4603)。
仲介部111は、レコードに含まれるすべての実データのサイズ値の合計を、サイズカラムに格納する。
このとき、2つのデータ追加命令が生成される。まず、「insert into T (A,B,C) values (‘id001’,‘2013−05−024’,?)」というデータ追加命令が生成される。パラメータ中の上記?部分には、動画データの入力ストリームが設定される。
このデータ追加命令は、以下の内容を含んでいる。テーブル名「T」のテーブルに、レコードを追加する。カラムAに、実データ’id001’を設定する。カラムBに、実データ’2013−05−24’を設定する。カラムCに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムCには動画データへ至るための情報が格納される。
更に、「insert into TS (A,RS) values (‘id001’,4321783232)」というデータ追加命令が生成される。
このデータ追加命令は、以下の内容を含んでいる。テーブル名「TS」のテーブルに、レコードを追加する。カラムAに、実データ’id001’を設定する。カラムRSに、サイズ値の4321783232を設定する。
図46に示したように、リレーショナルデータベース103のテーブルTに新たなレコードが追加される。テーブルTの第1レコードは、上記の1つ目のデータ追加命令によって追加される。更に、リレーショナルデータベース103のテーブルTSに新たなレコードが追加される。テーブルTSの第1レコードは、上記の2つ目のデータ追加命令によって追加される。
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
図7に示したデータ追加処理フローのS703において、追加指示部209は、追加する実データのサイズを算出し、それらの合計を算出する。例えば、実データが’id001’であれば、サイズ値は5バイトである。また、実データが’2013−05−24’であれば、サイズ値は10バイトである。動画データのサイズ値は、元となる動画データから計測される。そして、これらを合計したサイズ値を算出する。
S705において、追加指示部209は、上述したように2つのデータ追加命令を生成する。このとき、追加指示部209は、データ追加要求に含まれるカラム名と実データとを、そのまま1つ目のデータ追加命令に含める。更に、追加指示部209は、サイズカラムRSと、S703で算出したサイズ値とを、2つ目のデータ追加命令に含める。
送信部203は、2つのデータ追加命令をリレーショナルデータベース103に送信する(S707)。
また、図8に示したデータ更新処理フローのS803において、更新指示部211は、更新するレコードに含まれる実データのサイズを算出し、それらの合計を算出する。算出の手順は、図7のS703の場合と同様である。
S805において、更新指示部211は、2つのデータ更新命令を生成する。このとき、更新指示部211は、データ更新要求に含まれるカラム名と実データとを、そのまま1つ目のデータ更新命令に含める。更に、更新指示部211は、サイズカラムRSと、S803で算出したサイズ値とを、2つ目のデータ更新命令に含める。
送信部203は、2つのデータ更新命令をリレーショナルデータベース103に送信する(S807)。
続いて、図47に、実施の形態9に係るサイズ算出の概要を示す。アプリケーション部107は、図19のS1901と同様に、データ抽出要求を仲介部111に送信する(S4701)。データ抽出要求は、実施の形態6と同様に、抽出条件と出力テーブルとを含んでいる。出力テーブルを指定した場合には、テーブルに含まれる実データをすべて取得することを意味する。
仲介部111は、サイズカラムRSからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S4703)。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S4705)。仲介部111は、データサイズの合計を算出し、その結果をアプリケーション部107に送信する(S4707)。
図11に示したサイズ算出処理(A)フローのS1103において、テーブルTSのサイズカラムRSからサイズ値を取得するためのデータ抽出命令を生成する。例えば、「SELECT RS FROM TS WHERE A=id001」というデータ抽出命令が生成される。
図48に、実施の形態9に係る実データ取得の概要を示す。アプリケーション部107は、出力要求を仲介部111に送信する(S4801)。
仲介部111は、実データを取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S4803)。
リレーショナルデータベース103は、実データの結果セットを仲介部111に送信する(S4805)。仲介部111は、抽出結果データを生成して、アプリケーション部107に送信する(S4807)。
実データ取得処理(A)は、図13に示した通りである。
本実施の形態によれば、レコード単位のサイズ値を設定しておくので、リレーショナルデータベース103からレコード単位で抽出されるデータサイズを求める処理が速い。また、実データを格納しているテーブルを書き改めなくてもよいので、既に存在するテーブルを変更することなく、サイズ値を設定することができる。
[実施の形態10]
本実施の形態では、実施の形態9を基に、仲介装置109側で処理継続の判定を行うように改めた例について述べる。
仲介部111のモジュール構成は、図23に示した通りである。
図49に、実施の形態10に係る出力可否判定の概要を示す。図49は、上述した図47の例を基にしている。アプリケーション部107は、データ抽出要求を仲介部111に送信する(S4701)。この処理は、図47の場合と同様である。
仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S4703)。この処理も、図47の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S4705)。この処理も、図47の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、仲介部111は、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合には、仲介部111は、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合には、仲介部111は、結果データの出力が可能であると判定する。
仲介部111は、その判定結果をアプリケーション部107に送信する(S4901)。
結果データの出力が可能であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付ける。一方、結果データの出力は不可であると判定した場合には、仲介部111はアプリケーション部107からの出力要求を受け付けないようにしてもよい。以上で、本実施の形態に係る出力可否判定の概要の説明を終える。
本実施の形態におけるデータ抽出について説明する。図26に示すように、データ抽出処理(B)では、抽出指示部213の算出部217がサイズ算出処理(A)又はサイズ算出処理(B)を実行し(S2601)、算出したデータサイズに基づいて抽出指示部213の判定部2301が出力可否判定処理(A)を実行する(S2603)。そして、抽出指示部213の第2取得部219が実データ取得処理(A)を実行する(S903)。
図11に示したサイズ算出処理(A)を実行する場合には、S1111において全体サイズが送信される。図27に示したサイズ算出処理(B)を実行する場合には、図11のS1111に示した全体サイズの送信処理は省かれる。
出力可否判定処理(A)は、図28を用いて説明した実施の形態4の場合と同様である。
実データ取得処理(A)は、実施の形態9の場合と同様である。
このようにすれば、実施の形態9のようにレコード単位のデータサイズを別テーブルに設定するようにした場合にも、実施の形態4のように仲介部111でデータ出力の可否を判定することができる。
[実施の形態11]
本実施の形態では、実施の形態9を基に、判定結果に基づいて仲介装置109で実データ取得処理を実行するように改めた例について説明する。
図50と図51とを用いて、実施の形態9に示した図47を基礎とする動作例について説明する。図50では、判定結果が出力不可となり、仲介部111からアプリケーション部107に出力エラーが通知される動作について説明する。
アプリケーション部107は、データ抽出要求を仲介部111に送信する(S4701)。この処理は、図47の場合と同様である。
仲介部111は、サイズカラムからサイズ値を取得するためのデータ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S4703)。この処理も、図47の場合と同様である。
リレーショナルデータベース103は、データサイズの結果セットを仲介部111に送信する(S4705)。この処理も、図47の場合と同様である。
仲介部111は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理も、図47の場合と同様である。
仲介部111が結果データの出力は不可であると判定した場合に、出力エラーをアプリケーション部107に送信する(S5001)。
次に、図51を用いて、判定結果が出力可となり、仲介部111が実データを取得する動作について説明する。S4701乃至S4705については、上述の図50と同様である。また、仲介部111がデータサイズの合計を算出することも、上述の図50と同様である。
結果データの出力が可能であると判定した場合に、仲介部111は、図48の場合と同様に、データ抽出命令(SELECT)を生成して、リレーショナルデータベース103に送信する(S4803)。
リレーショナルデータベース103は、図48の場合と同様に、実データの結果セットを仲介部111に送信する(S4805)。
仲介部111は、図48の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部107に送信する(S4807)。
本実施の形態に係る処理フローは、図33乃至図35を用いて説明した実施の形態5の場合と同様である。但し、図27のサイズ算出処理(B)フローにおけるS1101乃至S1109については、実施の形態9と同様である。また、図35の実データ取得処理(B)フローにおけるS1303乃至S1309についても、実施の形態9と同様である。
本実施の形態では、リレーショナルデータベース103からのデータ出力が成功すると予測されるデータ取得処理を実行できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部107によるデータサイズに関する判定を省くことができる。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、上で述べた仲介装置109とアプリケーション装置105とは、コンピュータ装置であって、図52に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係る情報処理方法は、(A)データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する上記データに関連付けられたデータサイズ情報を参照して、参照したデータサイズ情報に基づいて、クエリの結果に対応する上記データのデータ量を算出する算出処理と、(B)算出したデータ量と、記憶部から出力可能なデータ量とに基づいて、クエリの結果に対応する上記データの出力可否を判定する処理とを含む。
このようにすれば、データを記憶する記憶部(例えばデータベース)から抽出されるデータの出力可否を予測できる。例えば、抽出されたデータの出力が中断される事態を未然に防ぐことができる。
また、上記情報処理方法は、クエリの結果に対応する上記データの出力が可能と判定された場合に、クエリの結果に対応する上記データを取得する処理を含むようにしてもよい。
このようにすれば、記憶部からのデータ出力が成功すると予測されるデータ取得処理を実行できる。
また、上記記憶部は、上記データに含まれる項目データの各々と、当該項目データのデータサイズを示す項目データサイズ情報とを対応付けて記憶するようにしてもよい。更に、上記算出処理において、項目データサイズ情報に基づいて、クエリの結果に対応する上記データのデータ量を算出するようにしてもよい。
このようにすれば、項目単位のデータサイズに基づいて、実際に抽出されるデータ量を正確に求めることができる。
また、上記情報処理方法は、算出したデータ量を送信する処理を含むようにしてもよい。
このようにすれば、記憶部から抽出されるデータ量を、外部において予知できる。例えば、ユーザ側においてデータ送信にかかる時間を予測しやすい。
また、上記情報処理方法は、出力要求を受信した場合に、クエリの結果に対応する上記データを取得する処理を含むようにしてもよい。更に、取得した上記データを送信する処理を含むようにしてもよい。
このようにすれば、ユーザ側の判断でデータ送信の実行を選択できる。例えば、全体サイズが大きい場合は、データ送信を行わないようにできる。
また、上記情報処理方法は、前記記憶部において、前記データを含むテーブルと異なるテーブルに当該データに係る前記データサイズ情報を格納するためのフィールドを設定する処理を含むようにしてもよい。
このようにすれば、上記データを含むテーブルを改変することなく、データサイズ情報を設けることができる。例えば、運用中のデータベースに対してサイズデータ情報を付加させることができるようになる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出処理と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する処理と
を、コンピュータに実行させるための情報処理プログラム。
(付記2)
前記コンピュータに、
前記クエリの結果に対応する前記データの出力が可能と判定された場合に、前記クエリの結果に対応する前記データを取得する処理
を実行させるための付記1記載の情報処理プログラム。
(付記3)
前記記憶部は、前記データに含まれる項目データの各々と、当該項目データのデータサイズを示す項目データサイズ情報とを対応付けて記憶し、
前記算出処理において、前記項目データサイズ情報に基づいて、前記クエリの結果に対応する前記データの前記データ量を算出する
付記1記載の情報処理プログラム。
(付記4)
前記コンピュータに、
算出した前記データ量を送信する処理
を実行させるための付記1記載の情報処理プログラム。
(付記5)
前記コンピュータに、
出力要求を受信した場合に、前記クエリの結果に対応する前記データを取得する処理と、
取得した前記データを送信する処理と
を実行させるための付記4記載の情報処理プログラム。
(付記6)
前記コンピュータに、
前記記憶部において、前記データを含むテーブルと異なるテーブルに当該データに係る前記データサイズ情報を格納するためのフィールドを設定する処理
を実行させるための付記1乃至5のいずれか1つ記載の情報処理プログラム。
(付記7)
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出部と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する判定部と
を有する情報処理装置。
(付記8)
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出処理と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する処理と
を、コンピュータが実行する情報処理方法。