(57)【要約】      （修正有）【課題】データベースから抽出されるデータの出力可否を予測できるようにする。【解決手段】一態様に係る情報処理方法は、（Ａ）データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する上記データに関連付けられたデータサイズ情報を参照して、参照したデータサイズ情報に基づいて、クエリの結果に対応する上記データのデータ量を算出する算出処理と、（Ｂ）算出したデータ量と、記憶部から出力可能なデータ量とに基づいて、クエリの結果に対応する上記データの出力可否を判定する処理とを含む。【選択図】図３３
2015072537.tif 000002
【特許請求の範囲】
【請求項１】
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出処理と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する処理と
を、コンピュータに実行させるための情報処理プログラム。
【請求項２】
前記コンピュータに、
前記クエリの結果に対応する前記データの出力が可能と判定された場合に、前記クエリの結果に対応する前記データを取得する処理
を実行させるための請求項１記載の情報処理プログラム。
【請求項３】
前記記憶部は、前記データに含まれる項目データの各々と、当該項目データのデータサイズを示す項目データサイズ情報とを対応付けて記憶し、
前記算出処理において、前記項目データサイズ情報に基づいて、前記クエリの結果に対応する前記データの前記データ量を算出する
請求項１記載の情報処理プログラム。
【請求項４】
前記コンピュータに、
算出した前記データ量を送信する処理
を実行させるための請求項１記載の情報処理プログラム。
【請求項５】
前記コンピュータに、
出力要求を受信した場合に、前記クエリの結果に対応する前記データを取得する処理と、
取得した前記データを送信する処理と
を実行させるための請求項４記載の情報処理プログラム。
【請求項６】
前記コンピュータに、
前記記憶部において、前記データを含むテーブルと異なるテーブルに当該データに係る前記データサイズ情報を格納するためのフィールドを設定する処理
を実行させるための請求項１乃至５のいずれか１つ記載の情報処理プログラム。
【請求項７】
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出部と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する判定部と
を有する情報処理装置。
【請求項８】
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出処理と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する処理と
を、コンピュータが実行する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース技術に関する。
【背景技術】
【０００２】
情報処理装置がデータベースからデータを取得する場合、情報処理装置はデータベースに対してデータの取得要求（クエリという。）を送り、データベースは、クエリに基づいて抽出されたデータを情報処理装置に送信する。
【０００３】
しかし、抽出されたデータのサイズが大きいと、そのデータの送信に想定以上の時間がかかることがある。また、抽出されたデータのサイズが所定の上限を超える場合には、データの送信が中断されることがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１２２９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、いわゆるビッグデータを格納するデータベースを利用する場合には、抽出されるデータのサイズが大きく変動し、さらにそのサイズを予測することも困難である。そのため、このようなデータベースを扱うアプリケーションでは、処理が安定しにくいという問題があった。
【０００６】
本発明の目的は、一側面では、データベースから抽出されるデータの出力可否を予測できるようにすることである。
【課題を解決するための手段】
【０００７】
一態様に係る情報処理方法は、（Ａ）データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する上記データに関連付けられたデータサイズ情報を参照して、参照したデータサイズ情報に基づいて、クエリの結果に対応する上記データのデータ量を算出する算出処理と、（Ｂ）算出したデータ量と、記憶部から出力可能なデータ量とに基づいて、クエリの結果に対応する上記データの出力可否を判定する処理とを含む。
【発明の効果】
【０００８】
一側面としては、データベースから抽出されるデータの出力可否を予測できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、データベースシステムの構成例を示す図である。
【図２】図２は、仲介部のモジュール構成例を示す図である。
【図３】図３は、実施の形態１に係るテーブル生成の概要を示す図である。
【図４】図４は、テーブル生成処理フローを示す図である。
【図５】図５は、メタデータの例を示す図である。
【図６】図６は、実施の形態１に係るデータ追加及びデータ更新の概要を示す図である。
【図７】図７は、データ追加処理フローを示す図である。
【図８】図８は、データ更新処理フローを示す図である。
【図９】図９は、データ抽出処理（Ａ）フローを示す図である。
【図１０】図１０は、実施の形態１に係るサイズ算出の概要を示す図である。
【図１１】図１１は、サイズ算出処理（Ａ）フローを示す図である。
【図１２】図１２は、実施の形態１に係る実データ取得の概要を示す図である。
【図１３】図１３は、実データ取得処理（Ａ）フローを示す図である。
【図１４】図１４は、実施の形態２に係るテーブルの例を示す図である。
【図１５】図１５は、実施の形態２に係るテーブル生成の概要を示す図である。
【図１６】図１６は、メタデータの例を示す図である。
【図１７】図１７は、メタデータの例を示す図である。
【図１８】図１８は、実施の形態２に係るデータ追加及びデータ更新の概要を示す図である。
【図１９】図１９は、実施の形態２に係るサイズ算出の概要を示す図である。
【図２０】図２０は、実施の形態２に係る実データ取得の概要を示す図である。
【図２１】図２１は、アプリケーション部のモジュール構成例を示す図である。
【図２２】図２２は、アプリケーション部による処理フローを示す図である。
【図２３】図２３は、実施の形態４に係る仲介部のモジュール構成例を示す図である。
【図２４】図２４は、実施の形態４に係る出力可否判定の概要を示す図である。
【図２５】図２５は、実施の形態４に係る出力可否判定の概要を示す図である。
【図２６】図２６は、実施の形態４に係るデータ抽出処理（Ｂ）フローを示す図である。
【図２７】図２７は、実施の形態４に係るサイズ算出処理（Ｂ）フローを示す図である。
【図２８】図２８は、出力可否判定処理（Ａ）フローを示す図である。
【図２９】図２９は、実施の形態５に係る出力エラーの概要を示す図である。
【図３０】図３０は、実施の形態５に係る実データ取得の概要を示す図である。
【図３１】図３１は、実施の形態５に係る出力エラーの概要を示す図である。
【図３２】図３２は、実施の形態５に係る実データ取得の概要を示す図である。
【図３３】図３３は、実施の形態５に係るデータ抽出処理（Ｃ）フローを示す図である。
【図３４】図３４は、実施の形態５に係る出力可否判定処理（Ｂ）フローを示す図である。
【図３５】図３５は、実施の形態５に係る実データ取得処理（Ｂ）フローを示す図である。
【図３６】図３６は、実施の形態６に係るテーブル生成の概要を示す図である。
【図３７】図３７は、メタデータの例を示す図である。
【図３８】図３８は、実施の形態６に係るデータ追加及びデータ更新の概要を示す図である。
【図３９】図３９は、実施の形態６に係るサイズ算出の概要を示す図である。
【図４０】図４０は、実施の形態６に係る実データ取得の概要を示す図である。
【図４１】図４１は、実施の形態７に係る出力可否判定の概要を示す図である。
【図４２】図４２は、実施の形態８に係る出力エラーの概要を示す図である。
【図４３】図４３は、実施の形態８に係る実データ取得の概要を示す図である。
【図４４】図４４は、実施の形態９に係るテーブル生成の概要を示す図である。
【図４５】図４５は、メタデータの例を示す図である。
【図４６】図４６は、実施の形態９に係るデータ追加及びデータ更新の概要を示す図である。
【図４７】図４７は、実施の形態９に係るサイズ算出の概要を示す図である。
【図４８】図４８は、実施の形態９に係る実データ取得の概要を示す図である。
【図４９】図４９は、実施の形態１０に係る出力可否判定の概要を示す図である。
【図５０】図５０は、実施の形態１１に係る出力エラーの概要を示す図である。
【図５１】図５１は、実施の形態１１に係る実データ取得の概要を示す図である。
【図５２】図５２は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
図１に、データベースシステムの構成例を示す。リレーショナルデータベース装置１０１は、リレーショナルデータベース１０３を有している。ここでは、リレーショナルデータベース１０３を用いる例を示すが、他のデータベースを用いるようにしてもよい。
【００１１】
アプリケーション装置１０５は、アプリケーション部１０７を有している。アプリケーション部１０７は、リレーショナルデータベース１０３に格納されているデータを利用する。
【００１２】
本実施の形態では、アプリケーション装置１０５とリレーショナルデータベース装置１０１との間に、仲介装置１０９を設けている。アプリケーション装置１０５と仲介装置１０９は、例えばＬＡＮ（Local Area Network）あるいはインターネットなどのネットワークを介して接続している。仲介装置１０９とリレーショナルデータベース装置１０１は、例えばＬＡＮあるいはインターネットなどのネットワークを介して接続している。アプリケーション装置１０５と仲介装置１０９とリレーショナルデータベース装置１０１とが共通のネットワークに接続されるようにしてもよい。
【００１３】
仲介装置１０９は、仲介部１１１を有している。仲介部１１１は、アプリケーション部１０７によるリレーショナルデータベース１０３の利用を仲介する。つまり、仲介部１１１は、アプリケーション部１０７からの要求を受けて、その要求に応じてリレーショナルデータベース１０３に命令を出す。また、仲介部１１１は、リレーショナルデータベース１０３から結果を受けて、その結果に応じてアプリケーション部１０７に応答を返す。
【００１４】
仲介部１１１は、データ抽出要求に応じてＳＱＬ（Structured Query Language）文を生成し、そのＳＱＬ文をリレーショナルデータベース１０３に送信する。本実施の形態では、このＳＱＬ文をデータ抽出命令と呼ぶ。仲介部１１１は、リレーショナルデータベース１０３から結果セットを受信し、仲介部１１１は、所定形式に従った抽出結果データを生成し、その抽出結果データをアプリケーション部１０７に送信する。このとき用いられる形式は、例えば、ＣＳＶ（Comma Separated Values）、ＸＭＬ（Extensible Markup Language）あるいはＨＴＭＬ（HyperText Markup Language）などである。
【００１５】
このとき仲介部１１１が生成するＳＱＬ文は、具体的にはＳＥＬＥＣＴ文である。ＳＥＬＥＣＴ文に従って、あるテーブルにおけるレコードが特定され、そのレコードからデータが抽出される。そのため、ＳＥＬＥＣＴ文は、抽出条件と出力項目とを含んでいる。
【００１６】
抽出条件は、レコードを特定するための条件である。抽出条件は、ＳＥＬＥＣＴ文中のＷＨＥＲＥ句に設定される。抽出条件には、例えば任意の項目に対する任意の値あるいは任意の値域が指定される。
【００１７】
出力項目は、出力されるデータの項目である。出力項目は、ＳＥＬＥＣＴ文中のＳＥＬＥＣＴ句に設定される。出力項目には、例えば任意の項目が指定される。指定される項目は、１つであってもよいし、複数であってもよい。
【００１８】
ここでは、仲介部１１１を仲介装置１０９に設ける例を示したが、仲介部１１１をリレーショナルデータベース装置１０１に設けるようにしてもよい。また、仲介部１１１をアプリケーション装置１０５に設けるようにしてもよい。アプリケーション部１０７と仲介部１１１とリレーショナルデータベース装置１０１とが同じ装置に設けられるようにしてもよい。
【００１９】
図２に、仲介部のモジュール構成例を示す。仲介部１１１は、記憶部２０１、送信部２０３、受信部２０５、生成指示部２０７、追加指示部２０９、更新指示部２１１及び抽出指示部２１３を有する。
【００２０】
記憶部２０１は、メタデータを記憶する。メタデータは、テーブルの構造に関する情報を含んでいる。詳しくは、後に図５を用いて説明する。
【００２１】
送信部２０３は、アプリケーション装置１０５のアプリケーション部１０７へ各種のデータを送信する。送信部２０３は、更に、リレーショナルデータベース装置１０１のリレーショナルデータベース１０３へ各種のデータを送信する。
【００２２】
受信部２０５は、アプリケーション装置１０５のアプリケーション部１０７から各種のデータを受信する。受信部２０５は、更に、リレーショナルデータベース装置１０１のリレーショナルデータベース１０３から各種のデータを受信する。
【００２３】
生成指示部２０７は、アプリケーション部１０７からの要求に応じて、リレーショナルデータベース１０３にテーブル生成を指示する。
【００２４】
追加指示部２０９は、アプリケーション部１０７からの要求に応じて、リレーショナルデータベース１０３にデータの追加を指示する。
【００２５】
更新指示部２１１は、アプリケーション部１０７からの要求に応じて、リレーショナルデータベース１０３にデータの更新を指示する。
【００２６】
抽出指示部２１３は、アプリケーション部１０７からの要求に応じて、抽出結果データのサイズを算出する。更に、アプリケーション部１０７からの要求に応じて、リレーショナルデータベース１０３にデータの抽出を指示する。
【００２７】
抽出指示部２１３は、第１取得部２１５、算出部２１７及び第２取得部２１９を有する。第１取得部２１５は、リレーショナルデータベース１０３からデータのサイズを取得する。算出部２１７は、抽出結果データのサイズを算出する。第２取得部２１９は、リレーショナルデータベース１０３から抽出されるデータを取得する。
【００２８】
上述の記憶部２０１、送信部２０３、受信部２０５、生成指示部２０７、追加指示部２０９、更新指示部２１１及び抽出指示部２１３は、例えば図２１に示すハードウエア資源によって実現される。また送信部２０３、受信部２０５、生成指示部２０７、追加指示部２０９、更新指示部２１１及び抽出指示部２１３は、当該モジュールの処理の一部又は全部を、メモリ２５０１（図２１）にロードされたプログラムをＣＰＵ２５０３（図２１）で順次実行することにより実現するようにしてもよい。
【００２９】
以下に示す各フェーズの順に従って、データベースシステムの動作について詳述する。
【００３０】
（１）テーブル生成フェーズでは、アプリケーション部１０７の要求に従って、リレーショナルデータベース１０３に新しいテーブルが生成される。（２）データ追加又は更新フェーズでは、アプリケーション部１０７の要求に従って、リレーショナルデータベース１０３のテーブルにデータが追加され、又は更新される。（３）サイズ算出フェーズでは、アプリケーション部１０７の要求に従って、抽出すべきデータのサイズが算出される。（４）実データ取得フェーズでは、アプリケーション部１０７の要求に従って、リレーショナルデータベース１０３から抽出されたデータがアプリケーション部１０７に渡される。
【００３１】
図３を用いて、実施の形態１に係るテーブル生成の概要について説明する。アプリケーション部１０７は、テーブル生成要求を仲介部１１１に送信する（Ｓ３０１）。テーブル生成要求は、テーブル名を含んでいる。また、テーブル生成要求は、カラム毎に、カラム名とデータタイプとの組を指定している。この例におけるテーブル生成要求は、テーブル名「Ｔ」、カラム名「Ａ」とデータタイプ「ｃｈａｒ（５）」との組、カラム名「Ｂ」とデータタイプ「ｄａｔｅｔｉｍｅ」との組及びカラム名「Ｃ」とデータタイプ「ｂｌｏｂ（８Ｇ）」との組を含んでいる。データタイプに含まれる括弧内は、データサイズを示している。
【００３２】
テーブル生成要求において、カラムパターンを指定するようにしてもよい。カラムパターンは、同時にデータが抽出されるカラムの組み合わせである。
【００３３】
カラムの組み合わせは、１つであってもよいし、複数であってもよい。この例では、「，」で区切ったカラム同士が１つの組み合わせとなる。また、カラムの組み合わせを複数指定する場合には、「／」でカラムの組み合わせ同士を区切るようにする。例えば、カラムパターンが「Ａ／Ａ，Ｂ／Ａ，Ｃ」と指定された場合には、カラム名「Ａ」のカラム（以下、カラムＡという。）からデータを抽出し、あるいはカラムＡからのデータとカラム名「Ｂ」のカラム（以下、カラムＢという。）からのデータとを組み合わせて抽出し、あるいはカラムＡからのデータとカラム名「Ｃ」のカラム（以下、カラムＣという。）からのデータとを組み合わせて抽出することが想定される。
【００３４】
また、例えば、カラムパターン「Ａ，Ｂ，Ｃ」が指定された場合には、カラムＡからのデータと、カラムＢからのデータと、カラムＣからのデータとを組み合わせて抽出することが想定される。
【００３５】
カラムパターンが指定されない場合には、カラムＡからデータを抽出し、あるいはカラムＢからデータを抽出し、あるいはカラムＣからデータを抽出することが想定される。
【００３６】
仲介部１１１は、その要求に応じてテーブル生成命令（ＣＲＥＡＴＥ  ＴＡＢＬＥ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ３０３）。例えば、カラムパターンを指定しない場合は、「ｃｒｅａｔｅ  ｔａｂｌｅ  Ｔ  （Ａ  ｃｈａｒ（５），  Ｂ  ｄａｔｅｔｉｍｅ，  Ｃ  ｂｌｏｂ（８Ｇ），  ＡＳ  ｉｎｔ，  ＢＳ  ｉｎｔ，  ＣＳ  ｉｎｔ）」というテーブル生成命令が生成される。
【００３７】
このテーブル生成命令は、以下の内容を含んでいる。テーブル名「Ｔ」のテーブルを生成する。カラム名が「Ａ」であり、データタイプが「ｃｈａｒ（５）」であるカラムを生成する。カラム名が「Ｂ」であり、データタイプが「ｄａｔｅｔｉｍｅ」であるカラムを生成する。カラム名が「Ｃ」であり、データタイプが「ｂｌｏｂ（８Ｇ）」であるカラムを生成する。カラム名が「ＡＳ」であり、データタイプが「ｉｎｔ」であるカラムを生成する。カラム名が「ＢＳ」であり、データタイプが「ｉｎｔ」であるカラムを生成する。カラム名が「ＣＳ」であり、データタイプが「ｉｎｔ」であるカラムを生成する。
【００３８】
以下、カラム名が「ＡＳ」であるカラムをカラムＡＳという。カラム名が「ＢＳ」であるカラムをカラムＢＳという。また、カラム名が「ＣＳ」であるカラムをカラムＣＳという。
【００３９】
上述のテーブル生成命令に従って、図示するようにリレーショナルデータベース１０３にテーブルＴが生成される。上述のカラムのうち、カラムＡ、カラムＢ及びカラムＣは、実データを格納させるためのカラムである。一方、カラムＡＳ、カラムＢＳ及びカラムＣＳは、サイズデータを格納させるためのカラムである。カラムＡＳには、カラムＡに格納される実データのサイズを示す値が格納される。カラムＢＳには、カラムＢに格納される実データのサイズを示す値が格納される。カラムＣＳには、カラムＣに格納される実データのサイズを示す値が格納される。カラムＡＳ、カラムＢＳ及びカラムＣＳは、仲介部１１１が追加したカラムである。尚、実データは、アプリケーション部１０７がリレーショナルデータベース１０３に格納させ、あるいはアプリケーション部１０７がリレーショナルデータベース１０３から取得して用いる各種のデータである。
【００４０】
例えば、カラムパターン「Ａ，Ｂ」が指定された場合は、「ｃｒｅａｔｅ  ｔａｂｌｅ  Ｔ  （Ａ  ｃｈａｒ（５），  Ｂ  ｄａｔｅｔｉｍｅ，  Ｃ  ｂｌｏｂ（８Ｇ），  ＡＢＳ  ｉｎｔ）」というテーブル生成命令が生成される。カラムＡＢＳには、カラムＡに格納される実データのサイズとカラムＢに格納される実データのサイズとの合計サイズを示す値が格納される。
【００４１】
続いて、テーブル生成における仲介部１１１の処理について説明する。図４に、テーブル生成処理フローを示す。受信部２０５が、図３のＳ３０１に示したようにテーブル生成要求を受信すると（Ｓ４０１）、生成指示部２０７は、テーブル生成要求に応じてテーブル生成命令を生成する（Ｓ４０３）。
【００４２】
このとき、生成指示部２０７は、テーブル生成要求に含まれるテーブル名（例えば「Ｔ」）を、そのままテーブル生成命令に含める。また、生成指示部２０７は、テーブル生成要求に含まれるカラム名（例えば「Ａ」）とデータタイプ（例えば「ｃｈａｒ（５）」）とを、そのままテーブル生成命令に含める。更に、生成指示部２０７は、テーブル生成要求に含まれるカラム名（例えば「Ａ」）に対応するサイズカラム名（例えば「ＡＳ」）を生成し、サイズカラム名とデータタイプ「ｉｎｔ」とをテーブル生成命令に加える。この例では、実データを格納させるためのカラムのカラム名に「Ｓ」を加えることによって、当該カラムに格納されるデータのサイズ値を格納させるためのカラム（サイズカラムという。）のカラム名（サイズカラム名という。）を定める。
【００４３】
受信部２０５は、このときメタデータも生成する。図５に、メタデータの例を示す。メタデータは、各カラムに対応するレコードを有している。レコードには、カラム名を設定するためのフィールド、データタイプを設定するためのフィールド及び関連カラム名を設定するためのフィールドを含んでいる。関連カラム名は、当該レコードがサイズカラムに関する場合に使用される。関連カラム名は、そのサイズの元となる実データが格納されているカラムの名である。
【００４４】
図５は、テーブルＴのメタデータを示している。第１レコードは、テーブルＴにおける１番目のカラムのカラム名は「Ａ」であり、同じく１番目のカラムのデータタイプは「ｃｈａｒ（５）」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
【００４５】
第２レコードは、テーブルＴにおける２番目のカラムのカラム名は「Ｂ」であり、同じく２番目のカラムのデータタイプは「ｄａｔｅｔｉｍｅ」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
【００４６】
第３レコードは、テーブルＴにおける３番目のカラムのカラム名は「Ｃ」であり、同じく３番目のカラムのデータタイプは「ｂｌｏｂ（８Ｇ）」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
【００４７】
第４レコードは、テーブルＴにおける４番目のカラムのカラム名は「ＡＳ」であり、同じく４番目のカラムのデータタイプは「ｉｎｔ」であることを示している。また、４番目のカラムは、関連カラム名「Ａ」によって特定されるカラムＡに格納されているデータのサイズ値を格納することを示している。
【００４８】
第５レコードは、テーブルＴにおける５番目のカラムのカラム名は「ＢＳ」であり、同じく５番目のカラムのデータタイプは「ｉｎｔ」であることを示している。また、５番目のカラムは、関連カラム名「Ｂ」によって特定されるカラムＢに格納されているデータのサイズ値を格納することを示している。
【００４９】
第６レコードは、テーブルＴにおける６番目のカラムのカラム名は「ＣＳ」であり、同じく６番目のカラムのデータタイプは「ｉｎｔ」であることを示している。また、６番目のカラムは、関連カラム名「Ｃ」によって特定されるカラムＣに格納されているデータのサイズ値を格納することを示している。
【００５０】
送信部２０３は、図３のＳ３０３に示したようにテーブル生成命令をリレーショナルデータベース１０３へ送信する（Ｓ４０５）。
【００５１】
続いて、図６に、実施の形態１に係るデータ追加及びデータ更新の概要を示す。アプリケーション部１０７は、データ追加要求又はデータ更新要求を仲介部１１１に送信する（Ｓ６０１）。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「Ａ」と実データ’ｉｄ００１’の組と、カラム名「Ｂ」と実データ’２０１３−０５−２４’の組と、カラム名「Ｃ」と動画データの識別情報との組とを含んでいる。動画データは、データ追加要求に添付される。
【００５２】
データ更新要求も、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
【００５３】
仲介部１１１は、データ追加要求に応じてレコード追加命令（ＩＮＳＥＲＴ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ６０３）。あるいは、仲介部１１１は、データ更新要求に応じてレコード更新命令（ＵＰＤＡＴＥ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ６０３）。
【００５４】
仲介部１１１は、このとき当該テーブルについてのメタデータを参照して、登録される実データのサイズ値を、対応するサイズカラムに格納する。但し、登録先のカラムに対してサイズカラムが設定されていない場合には、サイズ値の格納は行わない。
【００５５】
この例では、カラムＡ、カラムＢ及びカラムＣは、いずれもサイズカラムが設定されているので、実データを格納するとともに、サイズ値も格納する。そのため、「ｉｎｓｅｒｔ  ｉｎｔｏ  Ｔ  （Ａ，Ｂ，Ｃ，ＡＳ，ＢＳ，ＣＳ）  ｖａｌｕｅｓ  （‘ｉｄ００１’，‘２０１３−０５−２４’，？，５，１０，４３２１７８３２１７）」というデータ追加命令が生成される。パラメータ中の上記？部分には、動画データの入力ストリームが設定される。
【００５６】
このデータ追加命令は、以下の内容を含んでいる。テーブル名「Ｔ」のテーブルに、レコードを追加する。カラムＡに、実データ’ｉｄ００１’を設定する。カラムＢに、実データ’２０１３−０５−２４’を設定する。カラムＣに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムＣには動画データへ至るための情報が格納される。カラムＡＳに、サイズ値の５を設定する。カラムＢＳに、サイズ値の１０を設定する。カラムＣＳに、サイズ値の４３２１７８３２１７を設定する。
【００５７】
図示するように、リレーショナルデータベース１０３のテーブルＴに新たなレコードが追加される。第１レコードは、上記データ追加命令によって追加された例である。第２レコードは、「ｉｎｓｅｒｔ  ｉｎｔｏ  Ｔ  （Ａ，Ｂ，Ｃ，ＡＳ，ＢＳ，ＣＳ）  ｖａｌｕｅｓ  （‘ｉｄ００２’，‘２０１３−０５−２４’，？，５，１０，１３８４７９３４７１）」というデータ追加命令に動画データを添付して送信した結果、生成された例を示している。
【００５８】
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
【００５９】
図７に、データ追加処理フローを示す。受信部２０５が、図６のＳ６０１に示したようにデータ追加要求を受信すると（Ｓ７０１）、追加指示部２０９は、追加する実データのサイズを算出する（Ｓ７０３）。例えば、実データが’ｉｄ００１’であれば、サイズ値は５バイトである。また、実データが’２０１３−０５−２４’であれば、サイズ値は１０バイトである。動画データのサイズ値は、元となる動画データから計測される。
【００６０】
追加指示部２０９は、上述したデータ追加命令を生成する（Ｓ７０５）。このとき、追加指示部２０９は、データ追加要求に含まれるカラム名（例えば「Ａ」）と実データ（例えば‘ｉｄ００１’）とを、そのままデータ追加命令に含める。更に、追加指示部２０９は、データ追加要求に含まれるカラムに対応するサイズカラム（例えば「ＡＳ」）と、Ｓ７０３で算出したサイズ値（例えば「５」）とを、データ追加命令に含める。
【００６１】
送信部２０３は、図６のＳ６０３に示したようにデータ追加命令をリレーショナルデータベース１０３に送信する（Ｓ７０７）。
【００６２】
図８に、データ更新処理フローを示す。受信部２０５が、図６のＳ６０１に示したようにデータ更新要求を受信すると（Ｓ８０１）、更新指示部２１１は、新たに書き込む実データのサイズ値を算出する（Ｓ８０３）。実データ値のサイズは、図７のＳ７０３の場合と同様に算出される。
【００６３】
更新指示部２１１は、データ更新命令を生成する（Ｓ８０５）。このとき、更新指示部２１１は、データ更新要求に含まれるカラム名と実データとを、そのままデータ更新命令に含める。更に、更新指示部２１１は、データ更新要求に含まれるカラムに対応するサイズカラムと、Ｓ８０３で算出したサイズ値とを、データ更新命令に含める。
【００６４】
送信部２０３は、図６のＳ６０３に示したようにデータ更新命令をリレーショナルデータベース１０３に送信する（Ｓ８０７）。
【００６５】
続いて、アプリケーション部１０７がリレーショナルデータベース１０３からデータを抽出する手順について説明する。この手順は、サイズ算出フェーズと実データ取得フェーズとからなる。そのため、図９に示すように、データ抽出処理（Ａ）では、抽出指示部２１３の算出部２１７がサイズ算出処理（Ａ）を実行した後に（Ｓ９０１）、抽出指示部２１３の第２取得部２１９が実データ取得処理（Ａ）を実行する（Ｓ９０３）。
【００６６】
まず、サイズ算出フェーズについて説明する。図１０に、実施の形態１に係るサイズ算出の概要を示す。アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ１００１）。データ抽出要求は、上述の通り、抽出条件と出力項目とを含んでいる。
【００６７】
以下、出力項目にカラム名「Ａ」と「Ｃ」とを含む第１例と、出力項目にカラム名「Ａ」と「Ｂ」とを含む第２例について説明する。また、第１例と第２例と共に、抽出条件が「Ａ＝ｉｄ００１」である。つまり、カラムＡの値が’ｉｄ００１’であるレコードをデータ抽出の対象とする。
【００６８】
仲介部１１１は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、仲介部１１１は、リレーショナルデータベース１０３に送信する（Ｓ１００３）。実データに対応するサイズカラムが設定されていないと判定した場合には、データ値を取得するための処理は行われない。
【００６９】
第１例の場合には、関連カラム名に「Ａ」を含むサイズカラムＡＳが設定され、更に関連カラム名に「Ｃ」を含むサイズカラムＣＳが設定されているか否かを判定する。サイズカラムＡＳとサイズカラムＣＳとの両方が設定されている場合には、それぞれのサイズカラムからサイズ値を抽出する。このとき、「ＳＥＬＥＣＴ  ＡＳ，ＣＳ  ＦＲＯＭ  Ｔ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。
【００７０】
第２例の場合には、関連カラム名に「Ａ」を含むサイズカラムＡＳが設定され、更に関連カラム名に「Ｂ」を含むサイズカラムＢＳが設定されているか否かを判定する。サイズカラムＡＳとサイズカラムＢＳとの両方が設定されている場合には、それぞれのサイズカラムからサイズデータを抽出する。「ＳＥＬＥＣＴ  ＡＳ，ＢＳ  ＦＲＯＭ  Ｔ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。
【００７１】
尚、例えばデータ抽出要求にカラム名「Ａ」と「Ｃ」が含まれる場合には、更に、関連カラム名に「Ａ，Ｃ」を含むサイズカラムＡＣＳが設定されているか否かを判定するようにしてもよい。サイズカラムＡＣＳが設定されている場合には、それぞれのサイズカラムからサイズ値を抽出する。「ＳＥＬＥＣＴ  ＡＣＳ  ＦＲＯＭ  Ｔ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。このとき、得られたサイズ値を、カラムＡから抽出されるデータのサイズ値とカラムＣから抽出されるデータのサイズ値との合計として扱う。
【００７２】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ１００５）。仲介部１１１は、データサイズの合計を算出し、その結果をアプリケーション部１０７に送信する（Ｓ１００７）。
【００７３】
例えば、第１例の場合には、サイズカラムＡＳから取得されるサイズ値が５となり、サイズカラムＣＳから取得されるサイズ値が４３２１７８３２１７となるので、データサイズの合計は、４３２１７８３２２２となる。
【００７４】
例えば、第２例の場合には、サイズカラムＡＳから取得されるサイズ値が５となり、サイズカラムＢＳから取得されるサイズ値が１０となるので、データサイズの合計は、１５となる。
【００７５】
図１１に、サイズ算出処理（Ａ）フローを示す。受信部２０５が、図１０のＳ１００１に示したようにデータ抽出要求を受信すると（Ｓ１１０１）、第１取得部２１５は、データ抽出命令を生成する（Ｓ１１０３）。このとき、第１取得部２１５は、データ抽出要求に含まれるカラム名に基づいて、サイズカラム名を特定する。この例では、第１取得部２１５は、カラム名に「Ｓ」を加えることによって、サイズカラム名を特定する。あるいは、第１取得部２１５は、メタデータにおいて、実データのカラム名と一致する関連カラム名を検索し、サイズカラム名を特定する。
【００７６】
第１取得部２１５は、図１０のＳ１００３に示したように送信部２０３を介して、データ抽出命令をリレーショナルデータベース１０３へ送信する（Ｓ１１０５）。第１取得部２１５が、図１０のＳ１００５に示したように受信部２０５を介して、サイズの結果セットをリレーショナルデータベース１０３から受信すると（Ｓ１１０７）、算出部２１７は、各カラムについてのサイズ値を合計して全体サイズを算出する（Ｓ１１０９）。複数のレコードについてサイズ値を取得した場合には、第１取得部２１５は、各レコードに係るサイズ値を合計する。送信部２０３は、図１０のＳ１００７に示したように全体サイズを送信する（Ｓ１１１１）。以上で、データ算出フェーズについての説明を終える。
【００７７】
次に、実データ取得フェーズについて説明する。図１２に、実施の形態１に係る実データ取得の概要を示す。アプリケーション部１０７が全体サイズを受信すると、アプリケーション装置１０５側で処理を継続させるか否かを判定する。
【００７８】
例えば、アプリケーション部１０７がアプリケーション装置１０５の表示装置に全体サイズを表示させ、ユーザに処理を継続させるか否かの判断を促す。そして、アプリケーション装置１０５の入力装置を介して受け付けたユーザの指示に従って、アプリケーション部１０７は処理を継続させるか否かを特定する。
【００７９】
あるいは、アプリケーション装置１０５は、受信した合計サイズが所定の閾値を越えている場合に、処理を継続させないと判定するようにしてもよい。また、受信した合計サイズが所定の閾値を越えていない場合に、アプリケーション装置１０５は、処理を継続させると判定するようにしてもよい。アプリケーション装置１０５において処理の継続を判定する例については、後述する実施の形態で詳しく述べる。
【００８０】
処理を継続させると判定した場合には、アプリケーション部１０７は、出力要求を仲介部１１１へ送信する（Ｓ１２０１）。処理を継続させないと判定した場合には、その時点で処理を終える。
【００８１】
仲介部１１１は、出力要求を受信すると、データ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ１２０３）。例えば、「ＳＥＬＥＣＴ  Ａ，Ｂ  ＦＲＯＭ  Ｔ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。
【００８２】
リレーショナルデータベース１０３は、実データの結果セットを仲介部１１１に送信する（Ｓ１２０５）。実データの結果セットは、例えば「Ａ，ｉｄ００１／Ｂ，２０１３−０５−２４」のようなデータを含んでいる。
【００８３】
仲介部１１１は、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部１０７に送信する（Ｓ１２０７）。このとき、実データの結果セットをそのままアプリケーション部１０７に送信するようにしてもよい。
【００８４】
図１３に、実データ取得処理（Ａ）フローを示す。抽出指示部２１３は、受信部２０５が出力要求を受信したか否かによって処理を分岐させる。（Ｓ１３０１）。
【００８５】
所定期間内に受信部２０５が出力要求を受信しなかった場合には、図１３の処理を終え、図９の処理に戻り、データ抽出処理（Ａ）を終える。
【００８６】
受信部２０５が出力要求を受信した場合には、第２取得部２１９は、図１０のＳ１００１で受信したデータ抽出要求に基づいて、データ抽出命令を生成する（Ｓ１３０３）。
【００８７】
送信部２０３は、データ抽出命令をリレーショナルデータベース１０３へ送信する（Ｓ１３０５）。受信部２０５は、リレーショナルデータベース１０３から実データの結果セットを受信する（Ｓ１３０７）。
【００８８】
送信部２０３は、アプリケーション部１０７へ抽出結果データを送信する（Ｓ１３０９）。抽出結果データは、結果セットから抽出した実データを所定の形式に改めたものであってもよいし、結果セットそのものであってもよい。
【００８９】
本実施の形態によれば、クエリに基づきリレーショナルデータベース１０３から抽出されるデータ量を予め特定できる。従って、検索結果データの送信にかかる時間を予測しやすい。また、データ送信の中断も予見しやすい。
【００９０】
また、多様なクエリに対してデータサイズを特定することができる。ＣＰＵやメモリなどの資源を無駄に使用することもなくなるという面もある。
【００９１】
また、選択的に実データの送信を行えるようになる。例えば、全体サイズが大きい場合は、データ送信を行わないようにできる。
【００９２】
［実施の形態２］
前述した実施の形態では、実データカラムとサイズカラムとを同じテーブルに持つ例について述べたが、本実施の形態では、実データカラムを持つテーブルと異なるテーブルにサイズカラムを設ける例について述べる。
【００９３】
本実施の形態では、既に存在するテーブルの実データに対して、サイズ値を設定する方法を提供する。
【００９４】
図１４に、実施の形態２に係るテーブルの例を示す。図示するようにリレーショナルデータベース１０３にテーブルＴが保持されている。カラムＡ、カラムＢ及びカラムＣは、実データを格納させるためのカラムである。前述した実施の形態と同様に、実データは、アプリケーション部１０７がリレーショナルデータベース１０３に格納させ、あるいはアプリケーション部１０７がリレーショナルデータベース１０３から取得して用いる各種のデータである。この例では、カラムＡがプライマリキーである。
【００９５】
次に、図１５を用いて、実施の形態２に係るテーブル生成の概要について説明する。アプリケーション部１０７は、カラムパターンを仲介部１１１に送る（Ｓ１５０１）。カラムパターンは、実施の形態１と同様に、同時にデータが抽出されるカラムの組み合わせである。
【００９６】
前述した実施の形態と同様に、カラムの組み合わせは、１つであってもよいし、複数であってもよい。この例では、「，」で区切ったカラム同士が１つの組み合わせとなる。また、カラムの組み合わせを複数指定する場合には、「／」でカラムの組み合わせ同士を区切るようにする。例えば、カラムパターンが「Ｔ−Ａ／Ｔ−Ｂ／Ｔ−Ｃ」と指定された場合には、テーブルＴのカラム名「Ａ」のカラム（以下、カラムＡという。）からデータを抽出し、あるいはテーブルＴのカラム名「Ｂ」のカラム（以下、カラムＢという。）からデータを抽出し、あるいはテーブルＴのカラム名「Ｃ」のカラム（以下、カラムＣという。）からデータを抽出することが想定される。また、カラムパターンが「Ｔ」と指定された場合には、カラムパターンが「Ｔ−Ａ／Ｔ−Ｂ／Ｔ−Ｃ」と指定されたとみなす。
【００９７】
仲介部１１１は、その要求に応じてテーブル生成命令（ＣＲＥＡＴＥ  ＴＡＢＬＥ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ１５０３）。例えば、カラムパターンが「Ｔ−Ａ／Ｔ−Ｂ／Ｔ−Ｃ」と指定された場合には、「ｃｒｅａｔｅ  ｔａｂｌｅ  ＴＳ  （Ａ  ｃｈａｒ（５），ＡＳ  ｉｎｔ，ＢＳ  ｉｎｔ，  ＣＳ  ｉｎｔ）というテーブル生成命令が生成される。
【００９８】
このテーブル生成命令は、以下の内容を含んでいる。テーブル名「ＴＳ」のテーブルを生成する。カラム名が「Ａ」であり、データタイプが「ｃｈａｒ（５）」であるカラムを生成する。カラム名が「ＡＳ」であり、データタイプが「ｉｎｔ」であるカラムを生成する。カラム名が「ＢＳ」であり、データタイプが「ｉｎｔ」であるカラムを生成する。カラム名が「ＣＳ」であり、データタイプが「ｉｎｔ」であるカラムを生成する。
【００９９】
以下、カラム名が「ＡＳ」であるカラムをカラムＡＳという。カラム名が「ＢＳ」であるカラムをカラムＢＳという。また、カラム名が「ＣＳ」であるカラムをカラムＣＳという。
【０１００】
上述のテーブル生成命令に従って、図示するようにリレーショナルデータベース１０３にテーブルＴＳが生成される。上述のカラムのうち、カラムＡは、実データを格納させるためのカラムである。一方、カラムＡＳ、カラムＢＳ及びカラムＣＳは、サイズデータを格納させるためのカラムである。カラムＡには、テーブルＴＳにおけるカラムＡと同じデータが格納される。カラムＡは、テーブルＴＳにおけるプライマリキーである。
【０１０１】
カラムＡＳには、カラムＡに格納される実データのサイズを示す値が格納される。カラムＢＳには、カラムＢに格納される実データのサイズを示す値が格納される。カラムＣＳには、カラムＣに格納される実データのサイズを示す値が格納される。
【０１０２】
続いて、図４を用いて、テーブル生成における仲介部１１１の処理について説明する。受信部２０５が、図１５のＳ１５０１に示したようにテーブル生成要求を受信すると（Ｓ４０１）、生成指示部２０７は、テーブル生成要求に応じてテーブル生成命令を生成する（Ｓ４０３）。
【０１０３】
このとき、生成指示部２０７は、新たに加えるテーブル名を特定する。この例では、生成指示部２０７は、既存のテーブル名（例えば「Ｔ」）に「Ｓ」を加えて、新たに加えるテーブル名を特定する。生成指示部２０７は、そのテーブル名をテーブル生成命令に含める。
【０１０４】
更に、生成指示部２０７は、まず、プライマリキーとなるカラム名とそのデータタイプをテーブル生成命令に加える。続いて、生成指示部２０７は、既存のテーブルに含まれるカラム名（例えば「Ａ」）に対応するサイズカラム名（例えば「ＡＳ」）を生成し、サイズカラム名とデータタイプ「ｉｎｔ」とをテーブル生成命令に加える。この例では、既存のテーブルに含まれるカラムのカラム名に「Ｓ」を加えることによって、当該カラムに格納されるデータのサイズ値を格納させるためのカラム（サイズカラムという。）のカラム名（サイズカラム名という。）を定める。
【０１０５】
生成指示部２０７は、このときメタデータも生成する。図１６と図１７とに、メタデータの例を示す。前述した実施の形態と同様に、メタデータは、各カラムに対応するレコードを有している。レコードには、カラム名を設定するためのフィールド、データタイプを設定するためのフィールド及び関連カラム名を設定するためのフィールドを含んでいる。関連カラム名は、当該レコードがサイズカラムに関する場合に使用される。関連カラム名は、そのサイズの元となる実データが格納されているカラムの名である。
【０１０６】
図１６は、既存のテーブルＴについてのメタデータを示している。第１レコードは、テーブルＴにおける１番目のカラムのカラム名は「Ａ」であり、同じく１番目のカラムのデータタイプは「ｃｈａｒ（５）」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
【０１０７】
第２レコードは、テーブルＴにおける２番目のカラムのカラム名は「Ｂ」であり、同じく２番目のカラムのデータタイプは「ｄａｔｅｔｉｍｅ」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
【０１０８】
第３レコードは、テーブルＴにおける３番目のカラムのカラム名は「Ｃ」であり、同じく３番目のカラムのデータタイプは「ｂｌｏｂ（８Ｇ）」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
【０１０９】
図１７は、追加されたテーブルＴＳについてのメタデータの例を示す。第１レコードは、テーブルＴＳにおける１番目のカラムのカラム名は「Ａ」であり、同じく１番目のカラムのデータタイプは「ｃｈａｒ（５）」であることを示している。このカラムは、サイズカラムではないので、関連カラム名は設定されない。
【０１１０】
第２レコードは、テーブルＴＳにおける２番目のカラムのカラム名は「ＡＳ」であり、同じく２番目のカラムのデータタイプは「ｉｎｔ」であることを示している。また、２番目のカラムは、関連カラム名「Ｔ−Ａ」によって特定されるテーブルＴのカラムＡに格納されているデータのサイズ値を格納することを示している。
【０１１１】
第３レコードは、テーブルＴＳにおける３番目のカラムのカラム名は「ＢＳ」であり、同じく３番目のカラムのデータタイプは「ｉｎｔ」であることを示している。また、３番目のカラムは、関連カラム名「Ｔ−Ｂ」によって特定されるテーブルＴのカラムＢに格納されているデータのサイズ値を格納することを示している。
【０１１２】
第４レコードは、テーブルＴＳにおける４番目のカラムのカラム名は「ＣＳ」であり、同じく４番目のカラムのデータタイプは「ｉｎｔ」であることを示している。また、４番目のカラムは、関連カラム名「Ｔ−Ｃ」によって特定されるテーブルＴのカラムＣに格納されているデータのサイズ値を格納することを示している。
【０１１３】
送信部２０３は、図１５のＳ１５０３に示したようにテーブル生成命令をリレーショナルデータベース１０３へ送信する（Ｓ４０５）。
【０１１４】
続いて、図１８に、実施の形態２に係るデータ追加及びデータ更新の概要を示す。アプリケーション部１０７は、データ追加要求又はデータ更新要求を仲介部１１１に送信する（Ｓ１８０１）。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「Ａ」と実データ’ｉｄ００１’の組と、カラム名「Ｂ」と実データ’２０１３−０５−２４’の組と、カラム名「Ｃ」と動画データの識別情報との組とを含んでいる。動画データは、データ追加要求に添付される。
【０１１５】
前述した実施の形態と同様に、データ更新要求も、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
【０１１６】
前述した実施の形態と同様に、仲介部１１１は、データ追加要求に応じてレコード追加命令（ＩＮＳＥＲＴ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ１８０３）。あるいは、仲介部１１１は、データ更新要求に応じてレコード更新命令（ＵＰＤＡＴＥ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ１８０３）。
【０１１７】
前述した実施の形態と同様に、仲介部１１１は、このとき当該テーブルについてのメタデータを参照して、登録される実データのサイズ値を、対応するサイズカラムに格納する。但し、実データが登録されるカラムに対してサイズカラムが設定されていない場合には、サイズ値の格納は行わない。
【０１１８】
前述した実施の形態と同様に、カラムＡ、カラムＢ及びカラムＣは、いずれもサイズカラムが設定されているので、実データを格納するとともに、サイズ値も格納する。そのため、２つのデータ追加命令が生成される。まず、「ｉｎｓｅｒｔ  ｉｎｔｏ  Ｔ  （Ａ，Ｂ，Ｃ）  ｖａｌｕｅｓ  （‘ｉｄ００１’，‘２０１３−０５−０２４’，？）」というデータ追加命令が生成される。パラメータ中の上記？部分には、動画データの入力ストリームが設定される。
【０１１９】
このデータ追加命令は、以下の内容を含んでいる。テーブル名「Ｔ」のテーブルに、レコードを追加する。カラムＡに、実データ’ｉｄ００１’を設定する。カラムＢに、実データ’２０１３−０５−２４’を設定する。カラムＣに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムＣには動画データへ至るための情報が格納される。
【０１２０】
更に、「ｉｎｓｅｒｔ  ｉｎｔｏ  ＴＳ  （Ａ，ＡＳ，ＢＳ，ＣＳ）  ｖａｌｕｅｓ  （‘ｉｄ００１’，５，１０，４３２１７８３２１７）」というデータ追加命令が生成される。
【０１２１】
このデータ追加命令は、以下の内容を含んでいる。テーブル名「ＴＳ」のテーブルに、レコードを追加する。カラムＡに、実データ’ｉｄ００１’を設定する。カラムＡＳに、サイズ値の５を設定する。カラムＢＳに、サイズ値の１０を設定する。カラムＣＳに、サイズ値の４３２１７８３２１７を設定する。
【０１２２】
図示するように、リレーショナルデータベース１０３のテーブルＴに新たなレコードが追加される。第１レコードは、上記の１つ目のデータ追加命令によって追加される。更に、リレーショナルデータベース１０３のテーブルＴＳに新たなレコードが追加される。第１レコードは、上記の２つ目のデータ追加命令によって追加される。
【０１２３】
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
【０１２４】
図７に示したデータ追加処理フローのうち、Ｓ７０５において、追加指示部２０９は、上述したように２つのデータ追加命令を生成する。このとき、追加指示部２０９は、データ追加要求に含まれるカラム名と実データとを、そのまま１つ目のデータ追加命令に含める。更に、追加指示部２０９は、データ追加要求に含まれるカラムに対応するサイズカラムと、Ｓ７０３で算出したサイズ値とを、２つ目のデータ追加命令に含める。尚、データ追加要求に含まれるカラム名が「Ａ」である場合には、２つ目のデータ追加命令にも、カラム名と実データとを含める。テーブルＴとテーブルＴＳとの関連を保つためである。
【０１２５】
送信部２０３は、２つのデータ追加命令をリレーショナルデータベース１０３に送信する（Ｓ７０７）。
【０１２６】
また、図８に示したデータ更新処理フローのうち、Ｓ８０５において、更新指示部２１１は、上述したように２つのデータ更新命令を生成する。このとき、更新指示部２１１は、データ更新要求に含まれるカラム名と実データとを、そのまま１つ目のデータ更新命令に含める。更に、更新指示部２１１は、データ更新要求に含まれるカラムに対応するサイズカラムと、Ｓ８０３で算出したサイズ値とを、２つ目のデータ更新命令に含める。尚、データ更新要求に含まれるカラム名が「Ａ」である場合には、２つ目のデータ追加命令にも、カラム名と実データとを含める。
【０１２７】
送信部２０３は、２つのデータ更新命令をリレーショナルデータベース１０３に送信する（Ｓ８０７）。
【０１２８】
続いて、図１９に、実施の形態２に係るサイズ算出の概要を示す。アプリケーション部１０７は、図１０のＳ１００１と同様に、データ抽出要求を仲介部１１１に送信する（Ｓ１９０１）。データ抽出要求は、上述の通り、抽出条件と出力項目とを含んでいる。
【０１２９】
前述した実施の形態と同様に、仲介部１１１は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、図１０のＳ１００１と同様に、仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ１９０３）。
【０１３０】
前述した実施の形態と同様に、リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ１９０５）。仲介部１１１は、データサイズの合計を算出し、その結果をアプリケーション部１０７に送信する（Ｓ１９０７）。
【０１３１】
図１１に示したサイズ算出処理（Ａ）フローのうち、Ｓ１１０３において、テーブルＴＳのサイズカラムからサイズ値を取得するためのデータ抽出命令を生成する。例えば、前述した実施の形態で示した第１例の場合には「ＳＥＬＥＣＴ  ＡＳ，ＣＳ  ＦＲＯＭ  ＴＳ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。前述した実施の形態で示した第２例の場合には「ＳＥＬＥＣＴ  ＡＳ，ＢＳ  ＦＲＯＭ  ＴＳ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。その他の処理は、前述した実施の形態の場合と同様である。
【０１３２】
図２０に、実施の形態２に係る実データ取得の概要を示す。前述した実施の形態と同様に、アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ２００１）。
【０１３３】
前述した実施の形態と同様に、実データを取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、仲介部１１１は、リレーショナルデータベース１０３に送信する（Ｓ２００３）。
【０１３４】
前述した実施の形態と同様に、リレーショナルデータベース１０３は、実データの結果セットを仲介部１１１に送信する（Ｓ２００５）。仲介部１１１は、抽出結果データを生成して、アプリケーション部１０７に送信する（Ｓ２００７）。
【０１３５】
実データ取得処理（Ａ）は、前述した実施の形態の場合（図１３）と同様である。
【０１３６】
本実施の形態によれば、実データのカラムを含むテーブルを改変することなく、サイズカラムを設けることができる。例えば、運用中のデータベースに対してサイズデータを付加させることができるようになる。
【０１３７】
［実施の形態３］
本実施の形態では、アプリケーション装置１０５のアプリケーション部１０７で、合計サイズに基づいて処理継続の要否を判定する例について述べる。
【０１３８】
図２１に、アプリケーション部１０７のモジュール構成例を示す。アプリケーション部１０７は、送信部２１０１、判定部２１０３及び受信部２１０５を有する。送信部２１０１は、仲介装置１０９の仲介部１１１へ各種のデータを送信する。判定部２１０３は、全体サイズに基づいて処理継続の要否を判定する。受信部２１０５は、仲介装置１０９の仲介部１１１から各種のデータを受信する。
【０１３９】
図２２に、アプリケーション部１０７による処理フローを示す。送信部２１０１は、図１０のＳ１００１あるいは図１９のＳ１９０１に示したように、データ抽出要求を仲介装置１０９の仲介部１１１へ送信する（Ｓ２２０１）。受信部２１０５は、図１０のＳ１００７あるいは図１９のＳ１９０７に示したように、全体サイズを仲介装置１０９の仲介部１１１から受信する（Ｓ２２０３）。
【０１４０】
判定部２１０３は、受信した全体サイズが閾値を越えているか否かを判定する（Ｓ２２０５）。受信した全体サイズが閾値を越えていないと判定した場合には、判定部２１０３は、処理を継続させる。
【０１４１】
送信部２１０１は、図１２のＳ１２０１あるいは図２０のＳ２００１に示したように、出力要求を仲介装置１０９の仲介部１１１へ送信する（Ｓ２２０７）。受信部２１０５は、図１２のＳ１２０７あるいは図２０のＳ２００７に示したように、抽出結果データを仲介装置１０９の仲介部１１１から受信する（Ｓ２２０９）。
【０１４２】
一方、Ｓ２２０５で、受信した全体サイズが閾値を越えていると判定した場合には、アプリケーション部１０７は、処理を中断させる。つまり、送信部２１０１による出力要求の送信処理（Ｓ２２０７）と、受信部２１０５による抽出結果データの受信処理（Ｓ２２０９）とを行わずに、処理を終了する。
【０１４３】
閾値は、例えばリレーショナルデータベース１０３から出力可能なデータ量を示す。あるいは、閾値は、リレーショナルデータベース１０３から出力可能なデータ量に基づいて定められるようにしてもよい。つまり、判定部２１０３は、リレーショナルデータベース１０３からのデータ出力の可否を判定する。
【０１４４】
閾値は、アプリケーション部１０７が要求される性能に応じて定められるようにしてもよい。例えば、アプリケーション部１０７の処理を速く行う場合には、閾値を小さく設定し、アプリケーション部１０７の処理が遅くても構わない場合には、閾値を大きく設定するようにしてもよい。
【０１４５】
閾値は、アプリケーション部１０７が扱うデータの特性に応じて定められるようにしてもよい。例えば、全体データサイズが大きいときに的確なデータが含まれていない可能性が高いという特性がある場合には、閾値を小さく設定し、全体データサイズが大きくても的確なデータが含まれている可能性が高いという特性がある場合には、閾値を大きく設定するようにしてもよい。
【０１４６】
閾値は、ネットワークの特性に応じて定められるようにしてもよい。例えば、アプリケーション装置１０５と仲介装置１０９とを繋ぐネットワークの伝送レートが大きい場合には、閾値を大きく設定し、アプリケーション装置１０５と仲介装置１０９とを繋ぐネットワークの伝送レートが小さい場合には、閾値を小さく設定するようにしてもよい。
【０１４７】
このように、仲介装置１０９を利用するアプリケーション装置１０５によって、あるいはアプリケーション部１０７によって異なる閾値を用いるようにしてもよい。
【０１４８】
このようにすれば、リレーショナルデータベース１０３から出力可能なデータ量、アプリケーション装置１０５の特性あるいはアプリケーション部１０７の特性などに応じて抽出結果データを要求するか否かを自動的に判断できるようになる。
【０１４９】
［実施の形態４］
実施の形態３では、アプリケーション装置１０５側で処理継続の判定を行う例について述べたが、本実施の形態では、仲介装置１０９側で処理継続の判定を行う例について述べる。
【０１５０】
図２３に、実施の形態４に係る仲介部１１１のモジュール構成例を示す。仲介部１１１は、図２と同様に、記憶部２０１、送信部２０３、受信部２０５、生成指示部２０７、追加指示部２０９、更新指示部２１１及び抽出指示部２１３を有する。
【０１５１】
抽出指示部２１３は、第１取得部２１５、算出部２１７及び第２取得部２１９の他に、判定部２３０１を有している。第１取得部２１５、算出部２１７及び第２取得部２１９は、図２と同様である。判定部２３０１は、結果データについての出力可否を判定する。
【０１５２】
図２４に、実施の形態４に係る出力可否判定の概要を示す。図２４は、上述した図１０の例を基にしている。アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ１００１）。この処理は、図１０の場合と同様である。
【０１５３】
仲介部１１１は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、仲介部１１１は、リレーショナルデータベース１０３に送信する（Ｓ１００３）。実データに対応するサイズカラムが設定されていないと判定した場合には、データ値を取得するための処理は行われない。この処理も、図１０の場合と同様である。
【０１５４】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ１００５）。この処理も、図１０の場合と同様である。
【０１５５】
仲介部１１１は、データサイズの合計を算出する。そして、仲介部１１１は、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合には、仲介部１１１は、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合には、仲介部１１１は、結果データの出力が可能であると判定する。
【０１５６】
仲介部１１１は、その判定結果をアプリケーション部１０７に送信する（Ｓ２４０１）。
【０１５７】
仲介部１１１が結果データの出力が可能であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付ける。一方、仲介部１１１が結果データの出力は不可であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付けないようにしてもよい。以上で、図１０の例を基にした出力可否判定の概要の説明を終える。
【０１５８】
続けて、図２５を用いて、図１９の例を基にした出力可否判定の概要について説明する。アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ１９０１）。この処理は、図１９の場合と同様である。
【０１５９】
仲介部１１１は、メタデータに基づいて、実データに対応するサイズカラムが設定されているか否かを判定する。実データに対応するサイズカラムが設定されていると判定した場合には、仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ１９０３）。この処理も、図１９の場合と同様である。
【０１６０】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ１９０５）。この処理も、図１９の場合と同様である。
【０１６１】
仲介部１１１は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合には、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合には、結果データの出力が可能であると判定する。
【０１６２】
仲介部１１１は、その判定結果をアプリケーション部１０７に送信する（Ｓ２５０１）。
【０１６３】
仲介部１１１が結果データの出力が可能であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付ける。一方、仲介部１１１が結果データの出力は不可であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付けないようにしてもよい。以上で、図１９の例を基にした出力可否判定の概要の説明を終える。
【０１６４】
本実施の形態におけるデータ抽出について説明する。仲介部１１１は、データ抽出処理（Ｂ）を実行する。図２６に示すように、データ抽出処理（Ｂ）では、抽出指示部２１３の算出部２１７がサイズ算出処理（Ａ）又はサイズ算出処理（Ｂ）を実行し（Ｓ２６０１）、算出したデータサイズに基づいて抽出指示部２１３の判定部２３０１が出力可否判定処理（Ａ）を実行する（Ｓ２６０３）。そして、抽出指示部２１３の第２取得部２１９が実データ取得処理（Ａ）を実行する（Ｓ９０３）。
【０１６５】
図２７に、実施の形態４に係るサイズ算出処理（Ｂ）フローを示す。受信部２０５が、図２４のＳ１００１及び図２５のＳ１９０１に示したようにデータ抽出要求を受信すると（Ｓ１１０１）、第１取得部２１５は、データ抽出命令を生成する（Ｓ１１０３）。第１取得部２１５は、図２４のＳ１００３及び図２５のＳ１９０３に示したように送信部２０３を介して、データ抽出命令をリレーショナルデータベース１０３へ送信する（Ｓ１１０５）。第１取得部２１５が、図２４のＳ１００５及び図２５のＳ１９０５に示したように受信部２０５を介して、サイズの結果セットをリレーショナルデータベース１０３から受信すると（Ｓ１１０７）、算出部２１７は、各カラムについてのサイズ値を合計して全体サイズを算出する（Ｓ１１０９）。Ｓ１１０１乃至Ｓ１１０９の処理は、図１１の場合と同様である。
【０１６６】
図１１に示したサイズ算出処理（Ａ）を実行する場合には、Ｓ１１１１において全体サイズが送信される。図２７に示したサイズ算出処理（Ｂ）を実行する場合には、図１１のＳ１１１１に示した全体サイズの送信処理は省かれる。
【０１６７】
図２８に、出力可否判定処理（Ａ）フローを示す。判定部２３０１は、全体サイズが閾値を越えているか否かを判定する（Ｓ２８０１）。全体サイズの閾値を越えていないと判定した場合に、判定部２３０１は、判定結果を出力可と設定する（Ｓ２８０３）。全体サイズの閾値を越えていると判定した場合に、判定部２３０１は、判定結果を出力不可と設定する（Ｓ２８０５）。送信部２０３は、図２４のＳ２４０１あるいは図２５のＳ２５０１に示したように判定結果を送信する（Ｓ２８０７）。
【０１６８】
Ｓ２８０７において、送信部２０３は判定結果と共に全体サイズを送信するようにしてもよい。
【０１６９】
閾値は、例えばリレーショナルデータベース１０３から出力可能なデータ量を示す。あるいは、閾値は、リレーショナルデータベース１０３から出力可能なデータ量に基づいて定められるようにしてもよい。
【０１７０】
閾値は、ネットワークの状態に応じて定められるようにしてもよい。例えば、仲介装置１０９とリレーショナルデータベース装置１０１とを繋ぐネットワークでエラーが生じていない場合には、閾値を大きく設定し、仲介装置１０９とリレーショナルデータベース装置１０１とを繋ぐネットワークでエラーが生じている場合には、閾値を小さく設定するようにしてもよい。
【０１７１】
本実施の形態によれば、リレーショナルデータベース１０３から抽出されるデータの出力可否を予測できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部１０７によるデータサイズに関する判定を省くことができる。
【０１７２】
一般的に、クエリに応じて出力されるべきデータ全体のサイズは、実際にデータを抽出し、抽出されたデータを取得するまで不明である。そして、読み出したデータが上限値を越えた段階で出力エラーと判定されるようになっている。そのため、上限値が大きく設定されている場合には、出力エラーと判定されるまでに長い時間がかかるという課題がある。
【０１７３】
また、通常のデータベースの場合には、ファイルシステムのように取得データサイズを予め知る手段が設けられていない。クエリによって抽出されるデータサイズがどの程度であるかは事前にわからないので、データサイズに基づいて予め出力可否を判定することは従来行われていない。
【０１７４】
［実施の形態５］
実施の形態４では、仲介装置１０９側で処理継続を判定し、判定結果をアプリケーション装置１０５に送信する例について述べたが、本実施の形態では、判定結果に基づいて仲介装置１０９で実データ取得処理を実行する例について述べる。
【０１７５】
以下、実施の形態４に示した図２４を基礎とする動作例と、実施の形態４に示した図２５を基礎とする動作例とについて説明する。
【０１７６】
まず、図２９と図３０とを用いて、実施の形態４に示した図２４を基礎とする動作例について説明する。図２９では、判定結果が出力不可となり、仲介部１１１からアプリケーション部１０７に出力エラーが通知される動作について説明する。図２９は、図２４と同様に、上述した図１０の例を基にしている。
【０１７７】
アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ１００１）。この処理は、図１０及び図２４の場合と同様である。
【０１７８】
仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ１００３）。この処理も、図１０及び図２４の場合と同様である。
【０１７９】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ１００５）。この処理も、図１０及び図２４の場合と同様である。
【０１８０】
仲介部１１１は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理は、図２４の場合と同様である。
【０１８１】
結果データの出力は不可であると判定した場合に、仲介部１１１は出力エラーをアプリケーション部１０７に送信する（Ｓ２９０１）。
【０１８２】
次に、図３０を用いて、判定結果が出力可となり、仲介部１１１が実データを取得する動作について説明する。Ｓ１００１乃至Ｓ１００５については、上述の図２９と同様である。また、仲介部１１１がデータサイズの合計を算出することも、上述の図２９と同様である。
【０１８３】
仲介部１１１が結果データの出力が可能であると判定した場合に、仲介部１１１は、図１２の場合と同様に、データ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ１２０３）。
【０１８４】
リレーショナルデータベース１０３は、図１２の場合と同様に、実データの結果セットを仲介部１１１に送信する（Ｓ１２０５）。
【０１８５】
仲介部１１１は、図１２の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部１０７に送信する（Ｓ１２０７）。
【０１８６】
次に、図３１と図３２とを用いて、実施の形態４に示した図２５を基礎とする動作例について説明する。図３１では、判定結果が出力不可となり、仲介部１１１からアプリケーション部１０７に出力エラーが通知される動作について説明する。図３１は、図２５と同様に、上述した図１９の例を基にしている。
【０１８７】
アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ１９０１）。この処理は、図１９及び図２５の場合と同様である。
【０１８８】
仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ１９０３）。この処理も、図１９及び図２５の場合と同様である。
【０１８９】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ１９０５）。この処理も、図１９及び図２５の場合と同様である。
【０１９０】
仲介部１１１は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理は、図２５の場合と同様である。
【０１９１】
結果データの出力は不可であると判定した場合に、仲介部１１１は出力エラーをアプリケーション部１０７に送信する（Ｓ３１０１）。
【０１９２】
次に、図３２を用いて、判定結果が出力可となり、仲介部１１１が実データを取得する動作について説明する。Ｓ１９０１乃至Ｓ１９０５については、上述の図３１と同様である。また、仲介部１１１がデータサイズの合計を算出することも、上述の図３１と同様である。
【０１９３】
仲介部１１１が結果データの出力が可能であると判定した場合に、仲介部１１１は、図２０の場合と同様に、データ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ２００３）。
【０１９４】
リレーショナルデータベース１０３は、図２０の場合と同様に、実データの結果セットを仲介部１１１に送信する（Ｓ２００５）。
【０１９５】
仲介部１１１は、図２０の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部１０７に送信する（Ｓ２００７）。
【０１９６】
続いて、本実施の形態におけるデータ抽出について説明する。仲介部１１１は、データ抽出処理（Ｃ）を実行する。図３３に示すように、データ抽出処理（Ｃ）では、抽出指示部２１３の算出部２１７がサイズ算出処理（Ａ）又はサイズ算出処理（Ｂ）を実行し（Ｓ２６０１）、算出したデータサイズに基づいて抽出指示部２１３の判定部２３０１が出力可否判定処理（Ｂ）を実行する（Ｓ３３０１）。サイズ算出処理（Ｂ）は、図２６を用いて前述した通りである。
【０１９７】
図３４に、実施の形態５に係る出力可否判定処理（Ｂ）フローを示す。出力可否判定処理（Ｂ）では、図２８に示した出力可否判定処理（Ａ）フローのうち、Ｓ２８０７に示した判定結果の送信処理が省かれる。
【０１９８】
図３３の説明に戻って、抽出指示部２１３は、判定結果が出力可であるか否かによって処理を分岐させる（Ｓ３３０３）。判定結果が出力可でない場合、つまり判定結果が出力不可である場合には、送信部２０３は、出力エラーをアプリケーション部１０７へ送信する（Ｓ３３０５）。
【０１９９】
一方、判定結果が出力可である場合には、抽出指示部２１３は実データ取得処理（Ｂ）を実行する（Ｓ３３０７）。
【０２００】
図３５に、実施の形態５に係る実データ取得処理（Ｂ）フローを示す。図１３に示した実データ取得処理（Ａ）フローのうち、Ｓ１３０１の判定処理を省く。Ｓ１３０３乃至Ｓ１３０９の処理については、実データ取得処理（Ａ）フローの場合と同様である。以上で、本実施の形態におけるデータ抽出についての説明を終える。
【０２０１】
本実施の形態では、リレーショナルデータベース１０３からのデータ出力が成功すると予測されるデータ取得処理を実行できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部１０７によるデータサイズに関する判定を省くことができる。
【０２０２】
実施の形態１乃至５では、項目毎のデータ（カラムに設定される実データ）を抽出することを前提として、項目単位の実データについてデータサイズを保持する例について説明した。これらの形態では、項目単位のデータサイズに基づいて、実際に抽出されるデータ全体のサイズを正確に求めることができる。
【０２０３】
［実施の形態６］
本実施の形態以降では、項目単位のデータサイズを保持するのではなく、レコード単位のデータサイズ、つまり複数の項目に係るデータのサイズを保持する例について述べる。本実施の形態では、実施の形態１を基に改めた例について述べる。
【０２０４】
図３６に、実施の形態６に係るテーブル生成の概要を示す。アプリケーション部１０７は、テーブル生成要求を仲介部１１１に送信する（Ｓ３６０１）。テーブル生成要求は、テーブル名を含んでいる。また、テーブル生成要求は、カラム毎に、カラム名とデータタイプとの組を指定している。この例におけるテーブル生成要求は、テーブル名「Ｔ」、カラム名「Ａ」とデータタイプ「ｃｈａｒ（５）」との組、カラム名「Ｂ」とデータタイプ「ｄａｔｅｔｉｍｅ」との組及びカラム名「Ｃ」とデータタイプ「ｂｌｏｂ（８Ｇ）」との組を含んでいる。データタイプに含まれる括弧内は、データサイズを示している。
【０２０５】
仲介部１１１は、その要求に応じてテーブル生成命令（ＣＲＥＡＴＥ  ＴＡＢＬＥ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ３６０３）。例えば、「ｃｒｅａｔｅ  ｔａｂｌｅ  Ｔ  （Ａ  ｃｈａｒ（５），  Ｂ  ｄａｔｅｔｉｍｅ，  Ｃ  ｂｌｏｂ（８Ｇ），  ＲＳ  ｉｎｔ）」というテーブル生成命令が生成される。
【０２０６】
このテーブル生成命令は、以下の内容を含んでいる。テーブル名「Ｔ」のテーブルを生成する。カラム名が「Ａ」であり、データタイプが「ｃｈａｒ（５）」であるカラムを生成する。カラム名が「Ｂ」であり、データタイプが「ｄａｔｅｔｉｍｅ」であるカラムを生成する。カラム名が「Ｃ」であり、データタイプが「ｂｌｏｂ（８Ｇ）」であるカラムを生成する。カラム名が「ＲＳ」であり、データタイプが「ｉｎｔ」であるカラムを生成する。以下、カラム名が「Ａ」であるカラムをカラムＡという。カラム名が「Ｂ」であるカラムをカラムＢという。カラム名が「Ｃ」であるカラムをカラムＣという。カラム名が「ＲＳ」であるカラムをカラムＲＳという。
【０２０７】
上述のテーブル生成命令に従って、図示するようにリレーショナルデータベース１０３にテーブルＴが生成される。上述のカラムのうち、カラムＡ、カラムＢ及びカラムＣは、実データを格納させるためのカラムである。一方、カラムＲＳは、サイズデータを格納させるためのカラムである。カラムＲＳには、カラムＡに格納される実データのサイズと、カラムＢに格納される実データのサイズと、カラムＣに格納される実データのサイズとの合計を示す値が格納される。
【０２０８】
続いて、図４を用いて、テーブル生成における仲介部１１１の処理について説明する。受信部２０５が、図３６のＳ３６０１に示したようにテーブル生成要求を受信すると（Ｓ４０１）、生成指示部２０７は、テーブル生成要求に応じてテーブル生成命令を生成する（Ｓ４０３）。
【０２０９】
このとき、生成指示部２０７は、テーブル生成要求に含まれるテーブル名（例えば「Ｔ」）を、そのままテーブル生成命令に含める。また、生成指示部２０７は、テーブル生成要求に含まれるカラム名（例えば「Ａ」）とデータタイプ（例えば「ｃｈａｒ（５）」）とを、そのままテーブル生成命令に含める。更に、生成指示部２０７は、サイズカラム名「ＲＳ」とデータタイプ「ｉｎｔ」とをテーブル生成命令に加える。
【０２１０】
受信部２０５は、このときメタデータも生成する。図３７は、テーブルＴのメタデータを示している。第１レコードは、テーブルＴにおける１番目のカラムのカラム名は「Ａ」であり、同じく１番目のカラムのデータタイプは「ｃｈａｒ（５）」であることを示している。
【０２１１】
第２レコードは、テーブルＴにおける２番目のカラムのカラム名は「Ｂ」であり、同じく２番目のカラムのデータタイプは「ｄａｔｅｔｉｍｅ」であることを示している。
【０２１２】
第３レコードは、テーブルＴにおける３番目のカラムのカラム名は「Ｃ」であり、同じく３番目のカラムのデータタイプは「ｂｌｏｂ（８Ｇ）」であることを示している。
【０２１３】
第４レコードは、テーブルＴにおける４番目のカラムのカラム名は「ＲＳ」であり、同じく４番目のカラムのデータタイプは「ｉｎｔ」であることを示している。
【０２１４】
送信部２０３は、図３６のＳ３６０３に示したようにテーブル生成命令をリレーショナルデータベース１０３へ送信する（Ｓ４０５）。
【０２１５】
続いて、図３８に、実施の形態６に係るデータ追加及びデータ更新の概要を示す。アプリケーション部１０７は、データ追加要求又はデータ更新要求を仲介部１１１に送信する（Ｓ３８０１）。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「Ａ」と実データ’ｉｄ００１’の組と、カラム名「Ｂ」と実データ’２０１３−０５−２４’の組と、カラム名「Ｃ」と動画データの識別情報の組とを含んでいる。動画データは、データ追加要求に添付される。
【０２１６】
データ更新要求も、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
【０２１７】
仲介部１１１は、上述の実施の形態と同様に、データ追加要求に応じてレコード追加命令（ＩＮＳＥＲＴ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ３８０３）。あるいは、仲介部１１１は、データ更新要求に応じてレコード更新命令（ＵＰＤＡＴＥ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ３８０３）。
【０２１８】
仲介部１１１は、登録される実データのサイズ値を合計して、サイズ値の合計をサイズカラムに格納する。
【０２１９】
この例では、カラムＡの実データのサイズ値が５であり、カラムＢの実データのサイズ値が１０であり、カラムＣの実データのサイズ値が４３２１７８３２１７であるので、これらを合計してサイズ値４３２１７８３２３２を求める。そして、「ｉｎｓｅｒｔ  ｉｎｔｏ  Ｔ  （Ａ，Ｂ，Ｃ，ＲＳ）  ｖａｌｕｅｓ  （‘ｉｄ００１’，‘２０１３−０５−２４’，？，４３２１７８３２３２）」というデータ追加命令が生成される。パラメータ中の上記？部分には、動画データの入力ストリームが設定される。
【０２２０】
このデータ追加命令は、以下の内容を含んでいる。テーブル名「Ｔ」のテーブルに、レコードを追加する。カラムＡに、実データ’ｉｄ００１’を設定する。カラムＢに、実データ’２０１３−０５−２４’を設定する。カラムＣに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムＣには動画データへ至るための情報が格納される。カラムＲＳに、サイズ値の４３２１７８３２３２を設定する。
【０２２１】
図示するように、リレーショナルデータベース１０３のテーブルＴに新たなレコードが追加される。第１レコードは、上記データ追加命令によって追加された例である。第２レコードは、「ｉｎｓｅｒｔ  ｉｎｔｏ  Ｔ  （Ａ，Ｂ，Ｃ，ＲＳ）  ｖａｌｕｅｓ  （‘ｉｄ００２’，‘２０１３−０５−２４’，？，１３８４７９３４８６）」というデータ追加命令に動画データを添付して送信した結果、生成された例を示している。
【０２２２】
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
【０２２３】
図７に示したデータ追加処理フローに従って、受信部２０５が、図３８のＳ３８０１に示したようにデータ追加要求を受信すると（Ｓ７０１）、追加指示部２０９は、追加する実データのサイズを算出し、それらの合計を算出する（Ｓ７０３）。例えば、実データが’ｉｄ００１’であれば、サイズ値は５バイトである。また、実データが’２０１３−０５−２４’であれば、サイズ値は１０バイトである。動画データのサイズ値は、元となる動画データから計測される。そして、これらを合計したサイズ値を算出する。
【０２２４】
追加指示部２０９は、上述したデータ追加命令を生成する（Ｓ７０５）。このとき、追加指示部２０９は、データ追加要求に含まれるカラム名（例えば「Ａ」）と実データ（例えば‘ｉｄ００１’）とを、そのままデータ追加命令に含める。更に、追加指示部２０９は、サイズカラム「ＲＳ」と、Ｓ７０３で算出したサイズ値（例えば「４３２１７８３２３２」）とを、データ追加命令に含める。
【０２２５】
送信部２０３は、図３８のＳ３８０３に示したようにデータ追加命令をリレーショナルデータベース１０３に送信する（Ｓ７０７）。
【０２２６】
図８に示したデータ更新処理フローに従って、受信部２０５が、図３８のＳ３８０１に示したようにデータ更新要求を受信すると（Ｓ８０１）、更新指示部２１１は、新たに書き込む実データのサイズ値を算出する（Ｓ８０３）。実データ値のサイズは、図７のＳ７０３の場合と同様に算出される。
【０２２７】
更新指示部２１１は、データ更新命令を生成する（Ｓ８０５）。このとき、更新指示部２１１は、データ更新要求に含まれるカラム名と実データとを、そのままデータ更新命令に含める。更に、更新指示部２１１は、サイズカラム「ＲＳ」と、Ｓ８０３で算出したサイズ値とを、データ更新命令に含める。
【０２２８】
送信部２０３は、図３８のＳ３８０３に示したようにデータ更新命令をリレーショナルデータベース１０３に送信する（Ｓ８０７）。
【０２２９】
続いて、アプリケーション部１０７がリレーショナルデータベース１０３からデータを抽出する手順について説明する。この手順は、実施の形態１と同様に、サイズ算出フェーズと実データ取得フェーズとからなる。そのため、図９に示すように、データ抽出処理（Ａ）では、抽出指示部２１３の算出部２１７がサイズ算出処理（Ａ）を実行した後に（Ｓ９０１）、抽出指示部２１３の第２取得部２１９が実データ取得処理（Ａ）を実行する（Ｓ９０３）。
【０２３０】
まず、サイズ算出フェーズについて説明する。図３９に、実施の形態６に係るサイズ算出の概要を示す。アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ３９０１）。データ抽出要求は、抽出条件と出力テーブルの指定とを含んでいる。つまり、実施の形態６では、上述の実施の形態における出力項目に代えて出力テーブルを指定する。出力テーブルを指定した場合には、テーブルに含まれる実データをすべて取得することを意味する。
【０２３１】
以下、出力テーブルが「Ｔ」である例について説明する。また、抽出条件は、「Ａ＝ｉｄ００１」である。つまり、カラムＡの値が’ｉｄ００１’であるレコードが抽出の対象となる。
【０２３２】
仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ３９０３）。
【０２３３】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ３９０５）。仲介部１１１は、データサイズの合計を算出し、その結果をアプリケーション部１０７に送信する（Ｓ３９０７）。
【０２３４】
図１１に示したサイズ算出処理（Ａ）フローに従って、受信部２０５が、図３９のＳ３９０１に示したようにデータ抽出要求を受信すると（Ｓ１１０１）、第１取得部２１５は、データ抽出命令を生成する（Ｓ１１０３）。このとき、サイズカラム名には「ＲＳ」が設定される。例えば、「ＳＥＬＥＣＴ  ＲＳ  ＦＲＯＭ  Ｔ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。
【０２３５】
第１取得部２１５は、図３９のＳ３９０３に示したように送信部２０３を介して、データ抽出命令をリレーショナルデータベース１０３へ送信する（Ｓ１１０５）。第１取得部２１５が、図３９のＳ３９０５に示したように受信部２０５を介して、サイズの結果セットをリレーショナルデータベース１０３から受信すると（Ｓ１１０７）、算出部２１７は、各レコードのサイズ値を合計して全体サイズを算出する（Ｓ１１０９）。送信部２０３は、図３９のＳ３９０７に示したように全体サイズを送信する（Ｓ１１１１）。以上で、データ算出フェーズについての説明を終える。
【０２３６】
次に、実データ取得フェーズについて説明する。図４０に、実施の形態６に係る実データ取得の概要を示す。アプリケーション部１０７が全体サイズを受信すると、前述の実施の形態と同様に、アプリケーション装置１０５側で処理を継続させるか否かを判定する。
【０２３７】
アプリケーション装置１０５のアプリケーション部１０７で、実施の形態３に示した処理を行うようにしてもよい。
【０２３８】
処理を継続させると判定した場合には、アプリケーション部１０７は、出力要求を仲介部１１１へ送信する（Ｓ４００１）。処理を継続させないと判定した場合には、その時点で処理を終える。
【０２３９】
仲介部１１１は、出力要求を受信すると、データ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ４００３）。このとき、仲介部１１１は、レコードに含まれるすべての実データを抽出させるデータ抽出命令を生成する。
【０２４０】
リレーショナルデータベース１０３は、実データの結果セットを仲介部１１１に送信する（Ｓ４００５）。実データの結果セットは、レコードにカラムＡの実データ、カラムＢの実データ及びカラムＣの実データを含んでいる。
【０２４１】
仲介部１１１は、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部１０７に送信する（Ｓ４００７）。このとき、仲介部１１１は、実データの結果セットをそのままアプリケーション部１０７に送信するようにしてもよい。
【０２４２】
図１３に示した実データ取得処理（Ａ）フローに従って、抽出指示部２１３は、受信部２０５が出力要求を受信したか否かによって処理を分岐させる。（Ｓ１３０１）。
【０２４３】
所定期間内に受信部２０５が出力要求を受信しなかった場合には、図１３の処理を終え、図９の処理に戻り、データ抽出処理（Ａ）を終える。
【０２４４】
受信部２０５が出力要求を受信した場合には、第２取得部２１９は、図３９のＳ３９０１で受信したデータ抽出要求に基づいて、データ抽出命令を生成する（Ｓ１３０３）。
【０２４５】
送信部２０３は、データ抽出命令をリレーショナルデータベース１０３へ送信する（Ｓ１３０５）。受信部２０５は、リレーショナルデータベース１０３から実データの結果セットを受信する（Ｓ１３０７）。
【０２４６】
送信部２０３は、アプリケーション部１０７へ抽出結果データを送信する（Ｓ１３０９）。抽出結果データは、結果セットから抽出した実データを所定の形式に改めたものであってもよいし、結果セットそのものであってもよい。
【０２４７】
本実施の形態によれば、レコード単位のサイズ値を設定しておくので、リレーショナルデータベース１０３からレコード単位で抽出されるデータサイズを求める処理が速い。
【０２４８】
［実施の形態７］
本実施の形態では、実施の形態６を基に、仲介装置１０９側で処理継続の判定を行うように改めた例について述べる。
【０２４９】
仲介部１１１のモジュール構成は、図２３に示した通りである。
【０２５０】
図４１に、実施の形態７に係る出力可否判定の概要を示す。図４１は、上述した図３９の例を基にしている。アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ３９０１）。この処理は、図３９の場合と同様である。
【０２５１】
仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ３９０３）。この処理も、図３９の場合と同様である。
【０２５２】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ３９０５）。この処理も、図３９の場合と同様である。
【０２５３】
仲介部１１１は、データサイズの合計を算出する。そして、仲介部１１１は、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合に、仲介部１１１は、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合に、仲介部１１１は、結果データの出力が可能であると判定する。
【０２５４】
その判定結果をアプリケーション部１０７に送信する（Ｓ４１０１）。
【０２５５】
結果データの出力が可能であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付ける。一方、結果データの出力は不可であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付けないようにしてもよい。以上で、図３９の例を基にした出力可否判定の概要の説明を終える。
【０２５６】
本実施の形態におけるデータ抽出について説明する。図２６に示すように、データ抽出処理（Ｂ）では、抽出指示部２１３の算出部２１７がサイズ算出処理（Ａ）又はサイズ算出処理（Ｂ）を実行し（Ｓ２６０１）、算出したデータサイズに基づいて抽出指示部２１３の判定部２３０１が出力可否判定処理（Ａ）を実行する（Ｓ２６０３）。そして、抽出指示部２１３の第２取得部２１９が実データ取得処理（Ａ）を実行する（Ｓ９０３）。
【０２５７】
図１１に示したサイズ算出処理（Ａ）を実行する場合には、Ｓ１１１１において全体サイズが送信される。図２７に示したサイズ算出処理（Ｂ）を実行する場合には、図１１のＳ１１１１に示した全体サイズの送信処理は省かれる。
【０２５８】
出力可否判定処理（Ａ）は、図２８を用いて説明した実施の形態４の例と同様である。
【０２５９】
実データ取得処理（Ａ）は、実施の形態６の場合と同様である。
【０２６０】
このようにすれば、実施の形態６のようにレコード単位でデータサイズを設定するようにした場合にも、実施の形態４のように仲介部１１１でデータ出力の可否を判定することができる。
【０２６１】
［実施の形態８］
本実施の形態では、実施の形態６を基に、判定結果に基づいて仲介装置１０９で実データ取得処理を実行するように改めた例について説明する。
【０２６２】
図４２と図４３とを用いて、実施の形態６に示した図３９を基礎とする動作例について説明する。図４２では、判定結果が出力不可となり、仲介部１１１からアプリケーション部１０７に出力エラーが通知される動作について説明する。
【０２６３】
アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ３９０１）。この処理は、図３９の場合と同様である。
【０２６４】
仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ３９０３）。この処理も、図３９の場合と同様である。
【０２６５】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ３９０５）。この処理も、図３９の場合と同様である。
【０２６６】
仲介部１１１は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理も、図３９の場合と同様である。
【０２６７】
結果データの出力は不可であると判定した場合に、仲介部１１１は出力エラーをアプリケーション部１０７に送信する（Ｓ４２０１）。
【０２６８】
次に、図４３を用いて、判定結果が出力可となり、仲介部１１１が実データを取得する動作について説明する。Ｓ３９０１乃至Ｓ３９０５については、上述の図４２と同様である。また、仲介部１１１がデータサイズの合計を算出することも、上述の図４２と同様である。
【０２６９】
結果データの出力が可能であると判定した場合に、仲介部１１１は、図４０の場合と同様に、データ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ４００３）。
【０２７０】
リレーショナルデータベース１０３は、図４０の場合と同様に、実データの結果セットを仲介部１１１に送信する（Ｓ４００５）。
【０２７１】
仲介部１１１は、図４０の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部１０７に送信する（Ｓ４００７）。
【０２７２】
本実施の形態に係る処理フローは、図３３乃至図３５を用いて説明した実施の形態５の場合と同様である。但し、図２７のサイズ算出処理（Ｂ）フローにおけるＳ１１０１乃至Ｓ１１０９については、実施の形態６と同様である。また、図３５の実データ取得処理（Ｂ）フローにおけるＳ１３０３乃至Ｓ１３０９についても、実施の形態６と同様である。
【０２７３】
本実施の形態では、リレーショナルデータベース１０３からのデータ出力が成功すると予測されるデータ取得処理を実行できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部１０７によるデータサイズに関する判定を省くことができる。
【０２７４】
［実施の形態９］
本実施の形態では、実施の形態２を基に、複数のカラムを含むレコード全体のデータサイズを保持するように改めた例について説明する。
【０２７５】
本実施の形態では、レコード単位のデータサイズを別のテーブルに設定する。従って、本実施の形態は、既に存在するテーブルのレコードに対して、サイズ値を設定しようとする場合に役立つ。
【０２７６】
図１４に示したように、リレーショナルデータベース１０３にテーブルＴが保持されている状態を想定する。カラムＡ、カラムＢ及びカラムＣは、実データを格納させるためのカラムである。
【０２７７】
次に、図４４を用いて、実施の形態９に係るテーブル生成の概要について説明する。アプリケーション部１０７は、テーブル追加要求を仲介部１１１に送る（Ｓ４４０１）。テーブル追加要求は、対象となるテーブルを指定するテーブル名（この例では、「Ｔ」）を含む。
【０２７８】
続いて、図４を用いて、テーブル生成における仲介部１１１の処理について説明する。受信部２０５が、図４４のＳ４４０１に示したようにテーブル生成要求を受信すると（Ｓ４０１）、生成指示部２０７は、テーブル生成要求に応じてテーブル生成命令を生成する（Ｓ４０３）。
【０２７９】
このとき、生成指示部２０７は、新たに加えるテーブル名を特定する。この例では、生成指示部２０７は、指定されたテーブル名（例えば「Ｔ」）に「Ｓ」を加えて、新たに加えるテーブル名を特定する。生成指示部２０７は、そのテーブル名をテーブル生成命令に含める。
【０２８０】
更に、生成指示部２０７は、プライマリキーとなるカラム名とそのデータタイプをテーブル生成命令に加える。また、生成指示部２０７は、サイズカラム名（この例では、「ＲＳ」である。）とデータタイプ「ｉｎｔ」とをテーブル生成命令に加える。
【０２８１】
この例で前提となる既存のテーブルＴのメタデータは、図１６に示した通りである。但し、この例では関連カラム名を設定するためのフィールドは用いられないので、このフィールドは省いてもよい。
【０２８２】
図４５に、追加されたテーブルＴＳについてのメタデータの例を示す。第１レコードは、テーブルＴＳにおける１番目のカラムのカラム名は「Ａ」であり、同じく１番目のカラムのデータタイプは「ｃｈａｒ（５）」であることを示している。
【０２８３】
第２レコードは、テーブルＴＳにおける２番目のカラムのカラム名は「ＲＳ」であり、同じく２番目のカラムのデータタイプは「ｉｎｔ」であることを示している。このカラムは、プライマリキーであるカラムＡで特定されるレコードの全体サイズを格納する。
【０２８４】
送信部２０３は、図４４のＳ４４０３に示したようにテーブル生成命令をリレーショナルデータベース１０３へ送信する（Ｓ４０５）。
【０２８５】
続いて、図４６に、実施の形態９に係るデータ追加及びデータ更新の概要を示す。アプリケーション部１０７は、データ追加要求又はデータ更新要求を仲介部１１１に送信する（Ｓ４６０１）。データ追加要求は、カラム名と実データとの組を指定している。この例におけるデータ追加要求は、カラム名「Ａ」と実データ’ｉｄ００１’の組と、カラム名「Ｂ」と実データ’２０１３−０５−２４’の組と、カラム名「Ｃ」と動画データの識別情報との組とを含んでいる。動画データは、データ追加要求に添付される。
【０２８６】
データ更新要求は、データ追加要求と同様にカラム名と実データとの組を指定している。データ更新要求の場合には、更新対象となるレコードを特定するデータも含んでいる。
【０２８７】
仲介部１１１は、データ追加要求に応じてレコード追加命令（ＩＮＳＥＲＴ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ４６０３）。あるいは、仲介部１１１は、データ更新要求に応じてレコード更新命令（ＵＰＤＡＴＥ）を生成し、リレーショナルデータベース１０３に送信する（Ｓ４６０３）。
【０２８８】
仲介部１１１は、レコードに含まれるすべての実データのサイズ値の合計を、サイズカラムに格納する。
【０２８９】
このとき、２つのデータ追加命令が生成される。まず、「ｉｎｓｅｒｔ  ｉｎｔｏ  Ｔ  （Ａ，Ｂ，Ｃ）  ｖａｌｕｅｓ  （‘ｉｄ００１’，‘２０１３−０５−０２４’，？）」というデータ追加命令が生成される。パラメータ中の上記？部分には、動画データの入力ストリームが設定される。
【０２９０】
このデータ追加命令は、以下の内容を含んでいる。テーブル名「Ｔ」のテーブルに、レコードを追加する。カラムＡに、実データ’ｉｄ００１’を設定する。カラムＢに、実データ’２０１３−０５−２４’を設定する。カラムＣに、動画データを設定する。但し、実際には動画データは、テーブルの外に保存され、カラムＣには動画データへ至るための情報が格納される。
【０２９１】
更に、「ｉｎｓｅｒｔ  ｉｎｔｏ  ＴＳ  （Ａ，ＲＳ）  ｖａｌｕｅｓ  （‘ｉｄ００１’，４３２１７８３２３２）」というデータ追加命令が生成される。
【０２９２】
このデータ追加命令は、以下の内容を含んでいる。テーブル名「ＴＳ」のテーブルに、レコードを追加する。カラムＡに、実データ’ｉｄ００１’を設定する。カラムＲＳに、サイズ値の４３２１７８３２３２を設定する。
【０２９３】
図４６に示したように、リレーショナルデータベース１０３のテーブルＴに新たなレコードが追加される。テーブルＴの第１レコードは、上記の１つ目のデータ追加命令によって追加される。更に、リレーショナルデータベース１０３のテーブルＴＳに新たなレコードが追加される。テーブルＴＳの第１レコードは、上記の２つ目のデータ追加命令によって追加される。
【０２９４】
尚、データ更新命令を送信する場合には、既存のレコードに新たなデータが設定される。具体的には、実データが書き換えられると共に、サイズ値も書き変えられる。
【０２９５】
図７に示したデータ追加処理フローのＳ７０３において、追加指示部２０９は、追加する実データのサイズを算出し、それらの合計を算出する。例えば、実データが’ｉｄ００１’であれば、サイズ値は５バイトである。また、実データが’２０１３−０５−２４’であれば、サイズ値は１０バイトである。動画データのサイズ値は、元となる動画データから計測される。そして、これらを合計したサイズ値を算出する。
【０２９６】
Ｓ７０５において、追加指示部２０９は、上述したように２つのデータ追加命令を生成する。このとき、追加指示部２０９は、データ追加要求に含まれるカラム名と実データとを、そのまま１つ目のデータ追加命令に含める。更に、追加指示部２０９は、サイズカラムＲＳと、Ｓ７０３で算出したサイズ値とを、２つ目のデータ追加命令に含める。
【０２９７】
送信部２０３は、２つのデータ追加命令をリレーショナルデータベース１０３に送信する（Ｓ７０７）。
【０２９８】
また、図８に示したデータ更新処理フローのＳ８０３において、更新指示部２１１は、更新するレコードに含まれる実データのサイズを算出し、それらの合計を算出する。算出の手順は、図７のＳ７０３の場合と同様である。
【０２９９】
Ｓ８０５において、更新指示部２１１は、２つのデータ更新命令を生成する。このとき、更新指示部２１１は、データ更新要求に含まれるカラム名と実データとを、そのまま１つ目のデータ更新命令に含める。更に、更新指示部２１１は、サイズカラムＲＳと、Ｓ８０３で算出したサイズ値とを、２つ目のデータ更新命令に含める。
【０３００】
送信部２０３は、２つのデータ更新命令をリレーショナルデータベース１０３に送信する（Ｓ８０７）。
【０３０１】
続いて、図４７に、実施の形態９に係るサイズ算出の概要を示す。アプリケーション部１０７は、図１９のＳ１９０１と同様に、データ抽出要求を仲介部１１１に送信する（Ｓ４７０１）。データ抽出要求は、実施の形態６と同様に、抽出条件と出力テーブルとを含んでいる。出力テーブルを指定した場合には、テーブルに含まれる実データをすべて取得することを意味する。
【０３０２】
仲介部１１１は、サイズカラムＲＳからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ４７０３）。
【０３０３】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ４７０５）。仲介部１１１は、データサイズの合計を算出し、その結果をアプリケーション部１０７に送信する（Ｓ４７０７）。
【０３０４】
図１１に示したサイズ算出処理（Ａ）フローのＳ１１０３において、テーブルＴＳのサイズカラムＲＳからサイズ値を取得するためのデータ抽出命令を生成する。例えば、「ＳＥＬＥＣＴ  ＲＳ  ＦＲＯＭ  ＴＳ  ＷＨＥＲＥ  Ａ＝ｉｄ００１」というデータ抽出命令が生成される。
【０３０５】
図４８に、実施の形態９に係る実データ取得の概要を示す。アプリケーション部１０７は、出力要求を仲介部１１１に送信する（Ｓ４８０１）。
【０３０６】
仲介部１１１は、実データを取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ４８０３）。
【０３０７】
リレーショナルデータベース１０３は、実データの結果セットを仲介部１１１に送信する（Ｓ４８０５）。仲介部１１１は、抽出結果データを生成して、アプリケーション部１０７に送信する（Ｓ４８０７）。
【０３０８】
実データ取得処理（Ａ）は、図１３に示した通りである。
【０３０９】
本実施の形態によれば、レコード単位のサイズ値を設定しておくので、リレーショナルデータベース１０３からレコード単位で抽出されるデータサイズを求める処理が速い。また、実データを格納しているテーブルを書き改めなくてもよいので、既に存在するテーブルを変更することなく、サイズ値を設定することができる。
【０３１０】
［実施の形態１０］
本実施の形態では、実施の形態９を基に、仲介装置１０９側で処理継続の判定を行うように改めた例について述べる。
【０３１１】
仲介部１１１のモジュール構成は、図２３に示した通りである。
【０３１２】
図４９に、実施の形態１０に係る出力可否判定の概要を示す。図４９は、上述した図４７の例を基にしている。アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ４７０１）。この処理は、図４７の場合と同様である。
【０３１３】
仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ４７０３）。この処理も、図４７の場合と同様である。
【０３１４】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ４７０５）。この処理も、図４７の場合と同様である。
【０３１５】
仲介部１１１は、データサイズの合計を算出する。そして、仲介部１１１は、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。具体的には、データサイズの合計が閾値を越えている場合には、仲介部１１１は、結果データの出力は不可であると判定する。データサイズの合計が閾値を越えていない場合には、仲介部１１１は、結果データの出力が可能であると判定する。
【０３１６】
仲介部１１１は、その判定結果をアプリケーション部１０７に送信する（Ｓ４９０１）。
【０３１７】
結果データの出力が可能であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付ける。一方、結果データの出力は不可であると判定した場合には、仲介部１１１はアプリケーション部１０７からの出力要求を受け付けないようにしてもよい。以上で、本実施の形態に係る出力可否判定の概要の説明を終える。
【０３１８】
本実施の形態におけるデータ抽出について説明する。図２６に示すように、データ抽出処理（Ｂ）では、抽出指示部２１３の算出部２１７がサイズ算出処理（Ａ）又はサイズ算出処理（Ｂ）を実行し（Ｓ２６０１）、算出したデータサイズに基づいて抽出指示部２１３の判定部２３０１が出力可否判定処理（Ａ）を実行する（Ｓ２６０３）。そして、抽出指示部２１３の第２取得部２１９が実データ取得処理（Ａ）を実行する（Ｓ９０３）。
【０３１９】
図１１に示したサイズ算出処理（Ａ）を実行する場合には、Ｓ１１１１において全体サイズが送信される。図２７に示したサイズ算出処理（Ｂ）を実行する場合には、図１１のＳ１１１１に示した全体サイズの送信処理は省かれる。
【０３２０】
出力可否判定処理（Ａ）は、図２８を用いて説明した実施の形態４の場合と同様である。
【０３２１】
実データ取得処理（Ａ）は、実施の形態９の場合と同様である。
【０３２２】
このようにすれば、実施の形態９のようにレコード単位のデータサイズを別テーブルに設定するようにした場合にも、実施の形態４のように仲介部１１１でデータ出力の可否を判定することができる。
【０３２３】
［実施の形態１１］
本実施の形態では、実施の形態９を基に、判定結果に基づいて仲介装置１０９で実データ取得処理を実行するように改めた例について説明する。
【０３２４】
図５０と図５１とを用いて、実施の形態９に示した図４７を基礎とする動作例について説明する。図５０では、判定結果が出力不可となり、仲介部１１１からアプリケーション部１０７に出力エラーが通知される動作について説明する。
【０３２５】
アプリケーション部１０７は、データ抽出要求を仲介部１１１に送信する（Ｓ４７０１）。この処理は、図４７の場合と同様である。
【０３２６】
仲介部１１１は、サイズカラムからサイズ値を取得するためのデータ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ４７０３）。この処理も、図４７の場合と同様である。
【０３２７】
リレーショナルデータベース１０３は、データサイズの結果セットを仲介部１１１に送信する（Ｓ４７０５）。この処理も、図４７の場合と同様である。
【０３２８】
仲介部１１１は、データサイズの合計を算出する。そして、データサイズの合計と閾値を比較し、結果データの出力可否を判定する。この処理も、図４７の場合と同様である。
【０３２９】
仲介部１１１が結果データの出力は不可であると判定した場合に、出力エラーをアプリケーション部１０７に送信する（Ｓ５００１）。
【０３３０】
次に、図５１を用いて、判定結果が出力可となり、仲介部１１１が実データを取得する動作について説明する。Ｓ４７０１乃至Ｓ４７０５については、上述の図５０と同様である。また、仲介部１１１がデータサイズの合計を算出することも、上述の図５０と同様である。
【０３３１】
結果データの出力が可能であると判定した場合に、仲介部１１１は、図４８の場合と同様に、データ抽出命令（ＳＥＬＥＣＴ）を生成して、リレーショナルデータベース１０３に送信する（Ｓ４８０３）。
【０３３２】
リレーショナルデータベース１０３は、図４８の場合と同様に、実データの結果セットを仲介部１１１に送信する（Ｓ４８０５）。
【０３３３】
仲介部１１１は、図４８の場合と同様に、実データの結果セットから実データを取得して、所定の形式に改めてアプリケーション部１０７に送信する（Ｓ４８０７）。
【０３３４】
本実施の形態に係る処理フローは、図３３乃至図３５を用いて説明した実施の形態５の場合と同様である。但し、図２７のサイズ算出処理（Ｂ）フローにおけるＳ１１０１乃至Ｓ１１０９については、実施の形態９と同様である。また、図３５の実データ取得処理（Ｂ）フローにおけるＳ１３０３乃至Ｓ１３０９についても、実施の形態９と同様である。
【０３３５】
本実施の形態では、リレーショナルデータベース１０３からのデータ出力が成功すると予測されるデータ取得処理を実行できる。従って、抽出されたデータの出力が中断される事態を未然に防ぐことができる。また、アプリケーション部１０７によるデータサイズに関する判定を省くことができる。
【０３３６】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０３３７】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０３３８】
なお、上で述べた仲介装置１０９とアプリケーション装置１０５とは、コンピュータ装置であって、図５２に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０３３９】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０３４０】
本実施の形態に係る情報処理方法は、（Ａ）データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する上記データに関連付けられたデータサイズ情報を参照して、参照したデータサイズ情報に基づいて、クエリの結果に対応する上記データのデータ量を算出する算出処理と、（Ｂ）算出したデータ量と、記憶部から出力可能なデータ量とに基づいて、クエリの結果に対応する上記データの出力可否を判定する処理とを含む。
【０３４１】
このようにすれば、データを記憶する記憶部（例えばデータベース）から抽出されるデータの出力可否を予測できる。例えば、抽出されたデータの出力が中断される事態を未然に防ぐことができる。
【０３４２】
また、上記情報処理方法は、クエリの結果に対応する上記データの出力が可能と判定された場合に、クエリの結果に対応する上記データを取得する処理を含むようにしてもよい。
【０３４３】
このようにすれば、記憶部からのデータ出力が成功すると予測されるデータ取得処理を実行できる。
【０３４４】
また、上記記憶部は、上記データに含まれる項目データの各々と、当該項目データのデータサイズを示す項目データサイズ情報とを対応付けて記憶するようにしてもよい。更に、上記算出処理において、項目データサイズ情報に基づいて、クエリの結果に対応する上記データのデータ量を算出するようにしてもよい。
【０３４５】
このようにすれば、項目単位のデータサイズに基づいて、実際に抽出されるデータ量を正確に求めることができる。
【０３４６】
また、上記情報処理方法は、算出したデータ量を送信する処理を含むようにしてもよい。
【０３４７】
このようにすれば、記憶部から抽出されるデータ量を、外部において予知できる。例えば、ユーザ側においてデータ送信にかかる時間を予測しやすい。
【０３４８】
また、上記情報処理方法は、出力要求を受信した場合に、クエリの結果に対応する上記データを取得する処理を含むようにしてもよい。更に、取得した上記データを送信する処理を含むようにしてもよい。
【０３４９】
このようにすれば、ユーザ側の判断でデータ送信の実行を選択できる。例えば、全体サイズが大きい場合は、データ送信を行わないようにできる。
【０３５０】
また、上記情報処理方法は、前記記憶部において、前記データを含むテーブルと異なるテーブルに当該データに係る前記データサイズ情報を格納するためのフィールドを設定する処理を含むようにしてもよい。
【０３５１】
このようにすれば、上記データを含むテーブルを改変することなく、データサイズ情報を設けることができる。例えば、運用中のデータベースに対してサイズデータ情報を付加させることができるようになる。
【０３５２】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０３５３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０３５４】
（付記１）
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出処理と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する処理と
を、コンピュータに実行させるための情報処理プログラム。
【０３５５】
（付記２）
前記コンピュータに、
前記クエリの結果に対応する前記データの出力が可能と判定された場合に、前記クエリの結果に対応する前記データを取得する処理
を実行させるための付記１記載の情報処理プログラム。
【０３５６】
（付記３）
前記記憶部は、前記データに含まれる項目データの各々と、当該項目データのデータサイズを示す項目データサイズ情報とを対応付けて記憶し、
前記算出処理において、前記項目データサイズ情報に基づいて、前記クエリの結果に対応する前記データの前記データ量を算出する
付記１記載の情報処理プログラム。
【０３５７】
（付記４）
前記コンピュータに、
算出した前記データ量を送信する処理
を実行させるための付記１記載の情報処理プログラム。
【０３５８】
（付記５）
前記コンピュータに、
出力要求を受信した場合に、前記クエリの結果に対応する前記データを取得する処理と、
取得した前記データを送信する処理と
を実行させるための付記４記載の情報処理プログラム。
【０３５９】
（付記６）
前記コンピュータに、
前記記憶部において、前記データを含むテーブルと異なるテーブルに当該データに係る前記データサイズ情報を格納するためのフィールドを設定する処理
を実行させるための付記１乃至５のいずれか１つ記載の情報処理プログラム。
【０３６０】
（付記７）
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出部と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する判定部と
を有する情報処理装置。
【０３６１】
（付記８）
データと、当該データのデータサイズを示すデータサイズ情報とを関連付けて記憶する記憶部から、クエリの結果に対応する前記データに関連付けられた前記データサイズ情報を参照して、参照した前記データサイズ情報に基づいて、前記クエリの結果に対応する前記データのデータ量を算出する算出処理と、
算出した前記データ量と、前記記憶部から出力可能なデータ量とに基づいて、前記クエリの結果に対応する前記データの出力可否を判定する処理と
を、コンピュータが実行する情報処理方法。
【符号の説明】
【０３６２】
１０１  リレーショナルデータベース装置    １０３  リレーショナルデータベース
１０５  アプリケーション装置    １０７  アプリケーション部
１０９  仲介装置    １１１  仲介部
２０１  記憶部    ２０３  送信部
２０５  受信部    ２０７  生成指示部
２０９  追加指示部    ２１１  更新指示部
２１３  抽出指示部    ２１５  第１取得部
２１７  算出部    ２１９  第２取得部
２１０１  送信部    ２１０３  判定部
２１０５  受信部    ２３０１  判定部
【図１】
2015072537.tif 000003
【図２】
2015072537.tif 000004
【図３】
2015072537.tif 000005
【図４】
2015072537.tif 000006
【図５】
2015072537.tif 000007
【図６】
2015072537.tif 000008
【図７】
2015072537.tif 000009
【図８】
2015072537.tif 000010
【図９】
2015072537.tif 000011
【図１０】
2015072537.tif 000012
【図１１】
2015072537.tif 000013
【図１２】
2015072537.tif 000014
【図１３】
2015072537.tif 000015
【図１４】
2015072537.tif 000016
【図１５】
2015072537.tif 000017
【図１６】
2015072537.tif 000018
【図１７】
2015072537.tif 000019
【図１８】
2015072537.tif 000020
【図１９】
2015072537.tif 000021
【図２０】
2015072537.tif 000022
【図２１】
2015072537.tif 000023
【図２２】
2015072537.tif 000024
【図２３】
2015072537.tif 000025
【図２４】
2015072537.tif 000026
【図２５】
2015072537.tif 000027
【図２６】
2015072537.tif 000028
【図２７】
2015072537.tif 000029
【図２８】
2015072537.tif 000030
【図２９】
2015072537.tif 000031
【図３０】
2015072537.tif 000032
【図３１】
2015072537.tif 000033
【図３２】
2015072537.tif 000034
【図３３】
2015072537.tif 000035
【図３４】
2015072537.tif 000036
【図３５】
2015072537.tif 000037
【図３６】
2015072537.tif 000038
【図３７】
2015072537.tif 000039
【図３８】
2015072537.tif 000040
【図３９】
2015072537.tif 000041
【図４０】
2015072537.tif 000042
【図４１】
2015072537.tif 000043
【図４２】
2015072537.tif 000044
【図４３】
2015072537.tif 000045
【図４４】
2015072537.tif 000046
【図４５】
2015072537.tif 000047
【図４６】
2015072537.tif 000048
【図４７】
2015072537.tif 000049
【図４８】
2015072537.tif 000050
【図４９】
2015072537.tif 000051
【図５０】
2015072537.tif 000052
【図５１】
2015072537.tif 000053
【図５２】
2015072537.tif 000054