説明

コミット間隔自動制御装置

【課題】適切にコミット間隔を制御することが可能なコミット間隔自動制御装置を提供することにある。
【解決手段】入力手段は、構造化データベースに対して登録される複数の構造化データであって、当該構造化データが有する構造を識別するための構造識別情報を含む複数の構造化データを入力する。第1の取得手段は、入力された複数の構造化データに含まれる構造識別情報を取得する。第2の取得手段は、第1の取得手段によって取得された構造識別情報に対応づけてコミット間隔格納手段に格納されているコミット間隔を取得する。更新処理手段は、構造化データベースに対して入力手段によって入力された構造化データの各々を登録する。コミット実行手段は、第2の取得手段によって取得されたコミット間隔に基づいて構造化データベースに対してコミット処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、構造化データベースに対するコミット処理の間隔を制御するコミット間隔自動制御装置に関する。
【背景技術】
【0002】
一般的に、大量のデータを登録、更新または削除等することによって例えばRDB(Relational Database)等のデータベース(の内容)が更新される場合、当該データベースにおける更新を確定するためのコミット処理が所定の間隔(以下、コミット間隔と表記)で実行される。
【0003】
ところで、メモリの大量消費を抑えたり、ロールバック処理用の領域(記憶領域)を十分に確保したりするためには、上記したコミット間隔を制御する必要がある。
【0004】
コミット間隔を制御する手法としては、例えば、テーブル定義の内容から経験的または統計的に値(つまり、コミット間隔)を予め人手により決定する手法、または、例えばジャーナルを監視することによってジャーナルサイズやトランザクション数に基づいて動的にコミット間隔を制御する手法等がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平05−143418号公報
【特許文献2】特開平11−345156号公報
【特許文献3】特開平05−46452号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、例えばXML(eXtensible Markup Language)データベースのような構造化データを格納するデータベースの場合、当該構造化要素の繰り返し数等が未知であるため、単純にトランザクション数を指定するだけでは、適切なコミット間隔でコミット処理を実行することができない(つまり、適切にコミット間隔を制御することができない)場合がある。
【0007】
また、ジャーナルを監視する手法では、コミット間隔を制御する際のオーバヘッドが大きくなり、効率性に欠ける。
【0008】
そこで、本発明が解決しようとする課題は、適切にコミット間隔を制御することが可能なコミット間隔自動制御装置を提供することにある。
【課題を解決するための手段】
【0009】
実施形態によれば、複数の要素を含む複数の構造化データを格納する構造化データベースと接続されているコミット間隔自動制御装置が提供される。
【0010】
実施形態に係るコミット間隔自動制御装置は、コミット間隔格納手段と、入力手段と、第1の取得手段と、第2の取得手段と、更新手段と、コミット実行手段とを具備する。
【0011】
コミット間隔格納手段は、構造化データが有する構造を識別するための構造識別情報及び前記構造化データベースに対して構造化データを登録する際に実行されるコミット処理の間隔を示すコミット間隔を対応づけて格納する。
【0012】
入力手段は、前記構造化データベースに対して登録される複数の構造化データであって、当該構造化データが有する構造を識別するための構造識別情報を含む複数の構造化データを入力する。
【0013】
第1の取得手段は、前記入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別情報を取得する。
【0014】
第2の取得手段は、前記第1の取得手段によって取得された構造識別情報に対応づけて前記コミット間隔格納手段に格納されているコミット間隔を取得する。
【0015】
更新処理手段は、前記構造化データベースに対して前記入力された構造化データの各々を登録する。
【0016】
コミット実行手段は、前記構造化データベースに対して構造化データが登録される際に、前記第2の取得手段によって取得されたコミット間隔に基づいて前記構造化データベースに対して前記コミット処理を実行する。
【図面の簡単な説明】
【0017】
【図1】実施形態に係るコミット間隔自動制御装置のハードウェア構成を示すブロック図。
【図2】図1に示すコミット間隔自動制御装置30の主として機能構成を示すブロック図。
【図3】図2に示す構造定義格納部22に格納されている構造定義の一例を示す図。
【図4】図2に示すコミット間隔格納部23のデータ構造の一例を示す図。
【図5】図2に示す構造化データベース41に格納されている構造化データのデータ構造の一例を示す図。
【図6】コミット間隔設定部31によって実行されるコミット間隔設定処理の処理手順を示すフローチャート。
【図7】コミット間隔算出部313によって実行されるコミット間隔算出処理の処理手順を示すフローチャート。
【図8】構造定義100において定義されているルート要素である「Person」要素のデータサイズについて具体的に説明するための図。
【図9】コミット間隔自動制御部32によって実行されるコミット間隔自動制御処理の処理手順を示すフローチャート。
【発明を実施するための形態】
【0018】
以下、図面を参照して、実施形態について説明する。
【0019】
図1は、本実施形態に係るコミット間隔自動制御装置のハードウェア構成を示すブロック図である。図1に示すように、コンピュータ10は、例えばハードディスクドライブ(HDD:Hard Disk Drive)のような外部記憶装置20と接続されている。この外部記憶装置20は、コンピュータ10によって実行されるプログラム21を格納する。コンピュータ10および外部記憶装置20は、コミット間隔自動制御装置30を構成する。
【0020】
このコミット間隔自動制御装置30は、例えばXML(eXtensible Markup Language)データのような構造化データを格納する構造化データベースと接続されており、当該構造化データベースに対して構造化データが例えば登録される際に実行されるコミット処理の間隔(コミット間隔)を制御する機能を有する。なお、コミット処理は、構造化データベースにおける更新を確定するための処理である。
【0021】
図2は、図1に示すコミット間隔自動制御装置30の主として機能構成を示すブロック図である。図2に示すように、コミット間隔自動制御装置30は、コミット間隔設定部31およびコミット間隔自動制御部32を含む。本実施形態において、これらコミット間隔設定部31およびコミット間隔自動制御部32は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。このプログラム21は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム21が、例えばネットワークを介してコンピュータ10にダウンロードされても構わない。
【0022】
また、コミット間隔自動制御装置30は、構造定義格納部22およびコミット間隔格納部23を含む。本実施形態において、構造定義格納部22およびコミット間隔格納部23は、例えば図1に示す外部記憶装置20に格納される。
【0023】
なお、図2に示すように、コミット間隔自動制御装置30は、構造化データを管理する構造化データ管理装置40と接続されている。この構造化データ管理装置40は、構造化データベース(XMLデータベース)41、検索部42、更新部43およびコミット部44を含む。構造化データベース41は、複数の構造化データ(XMLデータ)を格納する。なお、構造化データベース41に格納されている構造化データは、当該構造化データが有する構造を識別するための構造識別子(構造識別情報)および複数の要素を含む。検索部42は、構造化データベース41から構造化データを検索する機能を有する。更新部43は、構造化データベース41に対して構造化データを例えば登録することによって当該構造化データベース41を更新する機能を有する。コミット部44は、構造化データベース41に対してコミット処理を実行する機能を有する。
【0024】
構造定義格納部22には、構造化データが有する構造が定義された構造定義(例えば、XMLスキーマ)が予め格納される。なお、構造定義においては、構造化データが有する構造として、例えば当該構造化データに含まれる要素等が定義される。構造定義格納部22に格納されている構造定義には、当該構造定義によって定義されている構造化データが有する構造を識別するための構造識別情報(以下、構造識別子と表記)が含まれる。また、構造定義格納部22に格納されている構造定義には、当該構造定義によって定義されている構造を有する構造化データに含まれる要素(つまり、当該構造定義において定義されている要素)の各々を表す要素名(タグ名)等が含まれる。
【0025】
コミット間隔設定部31は、構造定義格納部22に格納されている構造定義毎にコミット間隔を設定する機能を有する。コミット間隔設定部31は、構造定義解析部311、データ統計解析部312およびコミット間隔算出部313を含む。
【0026】
構造定義解析部311は、構造定義格納部22に格納されている構造定義を解析する。構造定義解析部311は、構造定義の解析結果に基づいて、当該構造定義に含まれる構造識別子を取得する。また、構造定義解析部311は、構造定義の解析結果に基づいて、当該構造定義に含まれる要素名等を取得する。
【0027】
データ統計解析部312は、構造定義解析部311によって取得された要素名によって表される要素を含む構造化データを、構造化データ管理装置40に含まれる構造化データベース41(に格納されている複数の構造化データの中)から検索する。この場合、データ統計解析部312は、構造化データ管理装置40に含まれる検索部42を介して検索処理を実行する。
【0028】
コミット間隔算出部313は、構造定義解析部311によって取得された要素名およびデータ統計解析部312によって検索された構造化データに基づいて、構造定義解析部311によって取得された構造識別子によって識別される構造を有する構造化データにおけるデータサイズを算出する。
【0029】
コミット間隔算出部313は、算出されたデータサイズに基づいて、コミット処理間において構造化データ(構造定義解析部311によって取得された構造識別子によって識別される構造を有する構造化データ)が構造化データベース41に対して登録されるべき数(以下、コミット処理間登録数と表記)を算出する。
【0030】
コミット間隔設定部31は、構造定義解析部311によって取得された構造識別子およびコミット間隔算出部313によって算出されたコミット処理間登録数を示すコミット間隔を対応づけてコミット間隔格納部23に格納する処理を実行する。
【0031】
コミット間隔格納部23には、構造化データが有する構造を識別するための構造識別子(構造識別情報)およびコミット処理間登録数を示すコミット間隔が対応づけて格納される。このコミット処理間登録数は、構造化データがコミット処理間において構造化データベース41に対して登録されるべき数を表す。なお、コミット間隔格納部23には、構造識別子およびコミット間隔に加えて、例えば当該構造識別子によって識別される構造を有する構造化データに含まれるルート要素(当該構造における最上位の要素)を表す要素名が格納される。
【0032】
コミット間隔自動制御部32は、コミット間隔格納部23に格納されているコミット間隔に基づいて、構造化データベース41に対して構造化データが登録される際に実行されるコミット処理の間隔(つまり、コミット間隔)を制御する機能を有する。コミット間隔自動制御部32は、構造定義判別部321およびコミット実行部322を含む。
【0033】
構造定義判別部321は、構造化データベース41に対して登録される構造化データを入力する。構造定義判別部321によって入力される構造化データには、当該構造化データが有する構造を識別するための構造識別子(構造識別情報)が含まれる。なお、構造定義判別部321は、複数の構造化データを入力する。
【0034】
構造定義判別部321は、入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別子を取得する。
【0035】
コミット実行部322は、構造定義判別部321によって取得された構造識別子に対応づけてコミット間隔格納部23に格納されているコミット間隔を取得する。
【0036】
コミット実行部322は、構造定義判別部321によって入力された構造化データの各々を構造化データベース41に対して登録する。これによって、コミット実行部322は、構造化データベース41を更新する。この場合、コミット実行部322は、構造化データ管理装置40に含まれる更新部43を介して構造化データベース41に対する更新処理を実行する。
【0037】
また、コミット実行部322は、構造化データベース41に対して登録された構造化データの数が、取得されたコミット間隔によって示されるコミット処理間登録数に達したかを判定する。コミット実行部322は、構造化データベース41に対して登録された構造化データの数がコミット処理間登録数に達したと判定された場合、構造化データベース41に対してコミット処理を実行する。この場合、コミット実行部322は、構造化データ管理装置40に含まれるコミット部44を介してコミット処理を実行する。
【0038】
図3は、図2に示す構造定義格納部22に格納されている構造定義の一例を示す。なお、図3に示す構造定義は、W3Cで規定されるXMLスキーマである。
【0039】
構造定義格納部22に格納されている構造定義には、構造化データが有する構造が定義されている。具体的には、構造定義においては、構造化データに含まれる要素の各々について定義されている。構造定義には、構造化データが有する構造を識別するための構造識別子および当該構造化データに含まれる要素毎に、当該要素を表す要素名、当該要素の内容の長さおよび当該要素の繰り返し数が含まれる。
【0040】
図3に示す構造定義100においては、「xsd:schema」要素で構造化データが有する構造を識別するための構造識別子が定義されている。具体的には、構造定義100における「xsd:schema」要素の「targetNamespace」属性の属性値である「http://www.example.org/person」が構造識別子である。
【0041】
また、構造定義100においては、「xsd:element」要素で構造化データに含まれる各要素(当該要素を表す要素名、当該要素の内容の長さおよび当該要素の繰り返し数)が定義されている。
【0042】
構造定義100における「xsd:element」要素の「name」属性には、構造化データに含まれる要素を表す要素名が定義されている。具体的には、構造定義100における「xsd:element」要素の「name」属性の属性値である「Person」、「Name」、「Age」、「BirthDate」、「Blood」、「Lab」、「Active」および「Email」が要素名である。なお、これらの要素名のうち、「xsd:schema」要素の直下の要素(「xsd:element」要素)で定義されている要素を表す要素名は、「Person」である。このため、要素名「Person」によって表される要素が構造定義100によって定義されている構造(を有する構造化データ)におけるルート要素である。
【0043】
構造定義100における「xsd:element」要素の「type」属性には、構造化データに含まれる要素の内容の長さが定義されている。構造化データに含まれる要素の内容の長さは、型(「xsd:element」要素の「type」属性の属性値)によって固定長と可変長に分類される。
【0044】
例えば要素名「BirthDate」によって表される要素の「type」属性の属性値である「xsd:dateTime(つまり、xsd:dateTime型)」は、必ず「YYYY-MM-DDThh:mm:ss」の形式をとるため、当該要素の内容の長さ(すなわち、文字数)は必ず19となる。したがって、要素名「BirthDate」によって表される要素の内容の長さは固定長である。
【0045】
また、例えば要素名「Lab」によって表される要素の「type」属性の属性値である「string3(つまり、string3型)」は、独自の定義(構造定義100における「name」属性の属性値が「string3」である「xsd:simpleType」要素による定義)である。ここで、「name」属性の属性値が「string3」である「xsd:simpleType」要素では、「<xsd:length value=”3”/>」と定義(指定)されているため、要素名「Lab」によって表される要素の内容の長さは3で固定されている。したがって、要素名「Lab」によって表される要素の内容の長さは固定長である。
【0046】
一方、例えば要素名「Name」によって表される要素の「type」属性の属性値である「xsd:string(つまり、xsd:string型)」は、文字列定義であり、任意の長さをとることができる。このため、要素名「Name」によって表される要素の内容の長さの最小は0、最大は∞となる。したがって、要素名「Name」によって表される要素の内容の長さは可変長である。
【0047】
また、例えば要素名「Age」によって表される要素の「type」属性の属性値である「xsd:integer(つまり、xsd:integer型)」は、8桁の整数である。このため、要素名「Age」によって表される要素の内容の長さの最小は1、最大は8となる。したがって、要素名「Age」によって表される要素の内容の長さは可変長である。
【0048】
また、例えば要素名「Blood」によって表される要素の「type」属性の属性値である「BloodType(つまり、Blood型)」は、独自の定義(構造定義100における「name」属性の属性値が「BloodType」である「xsd:simpleType」要素による定義)である。ここで、「name」属性の属性値が「BloodType」である「xsd:simpleType」要素によれば、Blood型は、A,B,O,ABのいずれかの列挙値を取る。このため、要素名「Blood」によって表される要素の長さの最小は1、最大は2となる。したがって、要素名「Blood」によって表される要素の内容の長さは可変長である。
【0049】
また、例えば要素名「Active」によって表される要素の「type」属性の属性値である「xsd:boolean(つまり、xsd:boolean型)」は、true、falseのいずれかの列挙値を取る。このため、要素名「Active」によって表される要素の内容の長さの最小は4、最大は5となる。したがって、要素名「Active」によって表される要素の内容の長さは可変長である。
【0050】
なお、要素名「Email」によって表される要素の内容の長さについては、上記した要素名「Name」によって表される要素の内容の長さと同様であるため、その詳しい説明は省略する。
【0051】
構造定義100における「xsd:element」要素の「minOccurs」属性には、構造化データに含まれる要素の繰り返し数の最小値が定義されている。また、構造定義100における「xsd:element」要素の「maxOccurs」属性には、構造化データに含まれる要素の繰り返し数の最大値が定義されている。なお、「xsd:element」要素において「minOccurs」属性が省略されている場合には当該「xsd:element」要素において定義されている要素の繰り返し数の最小値は1であり、「xsd:element」要素において「maxOccurs」属性が省略されている場合には当該「xsd:element」要素において定義されている要素の繰り返し数の最大値は1である。また、「xsd:element」要素において例えば「maxOccurs」属性の属性値として「unbounded」が定義されている場合には、当該「xsd:element」要素において定義されている要素の繰り返し数の最大値は∞である。
【0052】
図3に示す構造定義100を参照して具体的に説明すると、例えば要素名「Age」によって表される要素の繰り返し数の最小値は0であり、最大値は1である。また、例えば要素名「Email」によって表される要素の繰り返し数の最小値は1であり、最大値は∞である。
【0053】
なお、「xsd:element」要素の「minOccurs」属性および「maxOccurs」属性に定義されている要素の繰り返し数(の最小値および最大値)は、当該「xsd:element」要素において定義されている要素が構造定義100によって定義されている構造におけるルート要素(図3に示す例では、要素名「Person」によって表される要素)の中で繰り返し出現する回数(の最小値および最大値)である。
【0054】
図4は、図2に示すコミット間隔格納部23のデータ構造の一例を示す。図4に示すように、コミット間隔格納部23には、構造識別子、構造定義ルート要素およびコミット間隔が対応づけて格納される。
【0055】
構造識別子は、構造化データが有する構造を識別するための識別子である。構造定義ルート要素は、構造識別子によって識別される構造(を有する構造化データ)におけるルート要素を表す要素名(タグ名)を示す。コミット間隔は、構造識別子によって識別される構造を有する構造化データがコミット処理間において構造化データベース41に対して登録されるべき数(コミット処理間登録数)を示す。
【0056】
図4に示す例では、コミット間隔格納部23には、構造識別子「http://www.examle.org/person」、構造定義ルート要素「Person」およびコミット間隔「24091」が対応づけて格納されている。これによれば、構造識別子「http://www.examle.org/person」によって識別される構造を有する構造化データがコミット処理間において構造化データベース41に登録されるべき数(つまり、コミット処理間登録数)が24091であることが示される。また、構造識別子「http://www.examle.org/person」によって識別される構造におけるルート要素のタグ名が「Person」であることが示される。
【0057】
コミット間隔格納部23には、構造識別子「http://www.bbb.example/schema」、構造定義ルート要素「rss」およびコミット間隔「10」が対応づけて格納されている。これによれば、構造識別子「http://www.bbb.example/schema」によって識別される構造を有する構造化データがコミット処理間において構造化データベース41に登録されるべき数(コミット処理間登録数)が10であることが示される。また、構造識別子「http://www.bbb.example/schema」によって識別される構造におけるルート要素のタグ名が「rss」であることが示される。
【0058】
コミット間隔格納部23には、構造識別子「http://www.ccc.example/schema」、構造定義ルート要素「test」およびコミット間隔「2000」が対応づけて格納されている。これによれば、構造識別子「http://www.ccc.example/schema」によって識別される構造を有する構造化データがコミット処理間において構造化データベース41に登録されるべき数(コミット処理間登録数)が2000であることが示される。また、構造識別子「http://www.ccc.example/schema」によって識別される構造におけるルート要素のタグ名が「test」であることが示される。
【0059】
図5は、図2に示す構造化データベース41に格納されている構造化データのデータ構造の一例を示す。上記したように、構造化データには、当該構造化データが有する構造を識別するための構造識別子および複数の要素(を表す要素名)が含まれる。なお、構造化データベース41には、図5に示すような構造化データが多数蓄積されている。
【0060】
図5に示す構造化データ200においては、「Person」要素がルート要素であり、当該「Person」要素の「xmlns」属性の属性値である「http://www.example.org/person」が構造識別子である。
【0061】
また、構造化データ200には、ルート要素である「Person」要素の子要素として「Name」、「Age」、「BirthDate」、「Blood」、「Lab」、「Active」および2つの「Email」要素が含まれている。
【0062】
なお、図5は構造化データベース41に格納されている構造化データのデータ構造を示すものとして説明したが、上記したコミット間隔自動制御部32によって入力される構造化データ(つまり、当該構造化データベース41に登録される構造化データ)のデータ構造についても同様である。
【0063】
また、図5に示す例では、構造化データには構造識別子が含まれているものとして説明したが、本実施形態では、構造化データには構造識別子が含まれていなくても構わない(つまり、構造化データに構造識別子が定義されていなくても構わない)。
【0064】
次に、本実施形態に係るコミット間隔自動制御装置30の動作について説明する。コミット間隔自動制御装置30においては、コミット間隔設定処理およびコミット間隔自動制御処理が実行される。コミット間隔設定処理は、コミット間隔設定部31によって実行される。コミット間隔自動制御処理は、コミット間隔自動制御部32によって実行される。以下、これらの各処理について説明する。
【0065】
まず、図6のフローチャートを参照して、コミット間隔設定部31によって実行されるコミット間隔設定処理の処理手順について説明する。なお、コミット間隔設定処理は、例えばコミット間隔自動制御装置30の管理者からの指示に応じて実行されてもよいし、定期的に実行されても構わない。
【0066】
コミット間隔設定部31に含まれる構造定義解析部311は、構造定義格納部22から構造定義を1つ読み出す(ステップS1)。
【0067】
構造定義解析部311は、読み出された構造定義を解析することによって、当該構造定義に含まれる構造識別子およびルート要素を表す要素名(タグ名)を取得する(ステップS2)。なお、構造定義に構造識別子が含まれていない(つまり、構造識別子が定義されていない)場合には、構造定義に含まれるルート要素を表す要素名のみが取得される。
【0068】
次に、構造定義解析部311によって読み出された構造定義において定義されている要素(つまり、当該構造定義に含まれる要素名)の各々についてステップS3〜S5の処理が実行される。ここでは、構造定義において定義されている要素のうち、ルート要素以外の要素の各々について処理が実行される。以下、この処理の対象となる要素を対象要素と称する。
【0069】
構造定義解析部311は、読み出された構造定義を解析することによって、当該構造定義に含まれる対象要素を表す要素名(要素のタグ名)を取得する(ステップS3)。
【0070】
また、構造定義解析部311は、対象要素の内容の長さおよび対象要素の繰り返し数を取得する。なお、構造定義解析部311は、対象要素の内容の長さが固定長である場合には当該対象要素の内容の長さの固定長を、当該対象要素の内容の長さが可変長である場合には当該対象要素の内容の長さの最小値および最大値を、当該対象要素の内容の長さとして取得する。また、構造定義解析部311は、対象要素の繰り返し数の最小値および最大値を、当該対象要素の繰り返し数として取得する。
【0071】
データ統計解析部312は、構造定義解析部311によって取得されたルート要素を表す要素名、対象要素を表す要素名および構造化データベース41に格納されている構造化データに基づいて、当該対象要素の平均出現回数を算出する(ステップS4)。
【0072】
この場合、データ統計解析部312は、構造定義解析部311によって取得されたルート要素を表す要素名に基づいて、当該ルート要素を含む構造化データを構造化データベース41から検索する。また、データ統計解析部312は、構造定義解析部311によって取得された対象要素を表す要素名に基づいて、当該対象要素を含む構造化データを構造化データベース41から検索する。なお、データ統計解析部312は、構造化データ管理装置40に含まれる検索部42を介して検索処理を実行する。
【0073】
データ統計解析部312は、検索された構造化データに基づいて、ルート要素を含む構造化データの数に対する対象要素を含む構造化データの数の割合を、対象要素の出現回数として算出する。
【0074】
次に、データ統計解析部312は、構造定義解析部311によって取得された対象要素を表す要素名および構造化データベース41に格納されている構造化データに基づいて、当該対象要素の平均サイズを算出する(ステップS5)。
【0075】
この場合、データ統計解析部312は、構造定義解析部311によって取得された対象要素を表す要素名に基づいて、当該対象要素を含む構造化データを構造化データベース41から検索する。なお、データ統計解析部312は、構造化データ管理装置40に含まれる検索部42を介して検索処理を実行する。
【0076】
データ統計解析部312は、検索された構造化データに含まれる対象要素の内容を、当該構造化データから抽出する。データ統計解析部312は、抽出された対象要素の内容の長さ(文字数)の平均値を、対象要素の平均サイズとして算出する。
【0077】
なお、上記したステップS4およびS5においては、後述するように、必要に応じて構造定義解析部311によって取得された対象要素の内容の長さおよび対象要素の繰り返し数を用いることによって処理を簡略化することができる。
【0078】
次に、構造定義解析部311によって読み出された構造定義において定義されているルート要素以外の全ての要素について上記したステップS3〜S5の処理が実行されたか否かが判定される(ステップS6)。
【0079】
ルート要素以外の全ての要素について処理が実行されていないと判定された場合(ステップS6のNO)、上記したステップS3に戻って処理が繰り返される。この場合、上記したステップS3〜S5の処理が実行されていない要素を対象要素として処理が実行される。
【0080】
一方、ルート要素以外の全ての要素について処理が実行されたと判定された場合(ステップS6のYES)、コミット間隔算出部313は、構造定義解析部311によって取得された要素名、データ統計解析部312によって算出された要素の平均出現回数および平均サイズに基づいて、コミット処理間登録数(つまり、コミット間隔)を算出する処理(以下、コミット間隔算出処理と表記)を実行する(ステップS7)。なお、コミット間隔算出処理において算出されるコミット処理間登録数は、構造定義解析部311によって読み出された構造定義によって定義されている構造を有する構造化データが構造化データベース41に対して登録されるべき数である。このコミット間隔算出処理の詳細については後述する。
【0081】
次に、コミット間隔設定部31は、コミット間隔算出部313によって算出されたコミット処理間登録数を示すコミット間隔をコミット間隔格納部23に格納する(ステップS8)。この場合、コミット間隔設定部31は、上記したステップS2において構造定義解析部311によって取得された構造識別子およびルート要素を表す要素名(構造定義ルート要素)に対応づけてコミット間隔を格納する。なお、上記したステップS2において要素名のみが取得されている場合には、ルート要素を表す要素名に対応づけてコミット間隔が格納される。
【0082】
次に、構造定義格納部22に格納されている全ての構造定義について上記したステップS1以降の処理が実行されたか否かが判定される(ステップS9)。
【0083】
全ての構造定義について処理が実行されていないと判定された場合(ステップS9のNO)、ステップS1に戻って処理が繰り返される。この場合、ステップS1においては、当該ステップS1以降の処理が実行されていない構造定義が読み出される。
【0084】
一方、全ての構造定義について処理が実行されたと判定された場合(ステップS9のYES)、コミット間隔設定処理は終了される。
【0085】
上記したように構造定義格納部22に格納されている構造定義の各々についてステップS1以降の処理が実行されることによって、コミット間隔格納部23には、当該構造定義毎のコミット間隔が設定(格納)される。
【0086】
次に、図7のフローチャートを参照して、上述したコミット間隔算出部313によって実行されるコミット間隔算出処理(図6に示すステップS7の処理)の処理手順について説明する。
【0087】
まず、コミット間隔算出部313は、図6に示すステップS1において読み出された構造定義において定義されている要素の各々についてステップS11およびS12の処理を実行する。ここでは、構造定義において定義されている要素のうち、ルート要素以外の要素の各々について処理が実行される。このステップS11およびS12の処理がルート要素以外の要素の各々について実行されることによって、当該要素毎の予想サイズが算出される。以下、このステップS11およびS12の処理の対象となる要素を対象要素と称する。
【0088】
コミット間隔算出部313は、対象要素のタグ長を算出する(ステップS11)。この場合、コミット間隔算出部313は、図6に示すステップS3において取得された対象要素を表す要素名(対象要素のタグ名)を用いて算出処理を実行する。
【0089】
具体的には、対象要素のタグ長は、「当該対象要素を表す要素名の長さ(文字数)*2+5」で算出される。これは、XMLの場合における開始タグおよび終了タグのデータサイズ(例えば、「<Name>〜</Name>」)を示している。例えば対象要素を表す要素名が「Name」である場合、当該対象要素のタグ長は、「4(Nameの文字数)*2(開始タグおよび終了タグ)+5(“<”が2つ、“>”が2つ、“/”が1つ)」で13となる。
【0090】
次に、コミット間隔算出部313は、対象要素の予想サイズを算出する(ステップS12)。対象要素の予想サイズは、「(平均サイズ+タグ長)*平均出現回数」によって算出される。なお、ここで用いられる平均サイズは、図6に示すステップS5において算出された対象要素の平均サイズである。また、タグ長は、上記したステップS11において算出された対象要素のタグ長である。また、平均出現回数は、図6に示すステップS4において算出された対象要素の平均出現回数である。
【0091】
上記したステップS12の処理が実行されると、図6に示すステップS1において読み出された構造定義において定義されているルート要素以外の全ての要素についてステップS11およびS12の処理が実行されたか否かが判定される(ステップS13)。
【0092】
ルート要素以外の全ての要素について処理が実行されていないと判定された場合(ステップS13のNO)、上記したステップS11に戻って処理が繰り返される。この場合、上記したステップS11およびS12の処理が実行されてない要素を対象要素として処理が実行される。
【0093】
一方、ルート要素以外の全ての要素について処理が実行されたと判定された場合(ステップS13のYES)、コミット間隔算出部313は、図6に示すステップS1において読み出された構造定義において定義されている要素のうちのルート要素のタグ長を算出する(ステップS14)。このルート要素のタグ長は、上記したステップS11の処理と同様に、「ルート要素を表す要素名の長さ(文字数)*2+5」で算出される。なお、ルート要素を表す要素名は、図6に示すステップS2において取得される。
【0094】
次に、コミット間隔算出部313は、図6に示すステップS1において読み出された構造定義に定義されているルート要素1つあたりの確率的なデータサイズ(以下、単にデータサイズと表記)を算出する(ステップS15)。なお、コミット間隔算出部313によって算出されるデータサイズは、図6に示すステップS1において読み出された構造定義に定義されている構造を有する構造化データにおけるデータサイズ(予想サイズ)を表す。
【0095】
この場合、コミット間隔算出部313は、上記したステップS11およびS12の処理が実行されることによって算出されたルート要素以外の要素毎の予想サイズおよびステップS16において算出されたルート要素のタグ長に基づいて、データサイズを算出する。具体的には、コミット間隔算出部313は、ルート要素以外の要素毎の予想サイズおよびルート要素のタグ長の合計をデータサイズとして算出する。
【0096】
コミット間隔算出部313は、予め定められたロールバック処理用の記憶領域(設定値)をステップS17において算出されたデータサイズで除算する(ステップS16)。これによって、コミット間隔算出部313は、コミット処理間登録数を算出する。ここで、コミット間隔算出部313によって算出されたコミット処理間登録数は、コミット処理間において図6に示すステップS1において読み出された構造定義によって定義されている構造を有する構造化データ(つまり、図6に示すステップS2において取得された構造識別子によって識別される構造を有する構造化データ)が構造化データベース41に対して登録されるべき数である。ステップS16の処理が実行されると、コミット間隔算出処理は終了される。
【0097】
ここで、上述した図6に示すコミット間隔設定処理(および図7に示すコミット間隔算出処理)について具体的に説明する。
【0098】
まず、構造定義解析部311は、構造定義格納部22から構造定義を1つ読み出す。ここでは、上述した図3に示す構造定義100が読み出されたものとする。
【0099】
構造定義解析部311は、構造定義解析部311は、構造定義100を解析することによって、当該構造定義100に含まれる構造識別子およびルート要素を表す要素名を取得する。ここでは、構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」が取得される。なお、以下の説明では、要素名「Person」によって表される要素を単に「Person」要素と称する。「Person」要素以外の要素についても同様とする。
【0100】
ここで、構造定義100において定義されている要素のうち、「Person」要素(ルート要素)以外の要素は、「Name」要素、「Age」要素、「BirthDate」要素、「Blood」要素、「Lab」要素、「Active」要素および「Email」要素である。つまり、これらの要素の各々について、上述した図6に示すステップS3〜S5の処理が実行される。
【0101】
まず、例えば「Name」要素に対して図6に示すステップS3〜S5の処理が実行される場合について具体的に説明する。
【0102】
この場合、構造定義解析部311は、構造定義100を解析することによって、「Name」要素を表す要素名である「Name」、当該「Name」要素の内容の長さおよび当該「Name」要素の繰り返し数を取得する。
【0103】
ここでは、上述した図3において説明したように「Name」要素の内容の長さは可変長であるため、当該「Name」要素の内容の長さとして、当該「Name」要素の内容の長さの最小値「0」および最大値「∞」が取得される。
【0104】
また、「Name」要素の繰り返し数として、当該「Name」要素の繰り返し数の最小値「1」および最大値「1」が取得される。
【0105】
次に、データ統計解析部312は、「Name」要素の平均出現回数を算出する。この場合、データ統計解析部312は、構造定義100において定義されているルート要素である「Person」要素を含む構造化データを構造化データベース41から検索する。また、データ統計解析部312は、「Name」要素を含む構造化データを構造化データベース41から検索する。データ統計解析部312は、検索された構造化データに基づいて、「Person」要素を含む構造化データの数に対する「Name」要素を含む構造化データの割合を、当該「Name」要素の出現回数として算出する。
【0106】
ここで、「Name」要素の繰り返し数の最小値および最大値はともに1であるため、当該「Name」要素は、「Person」要素において1回出現する。したがって、この場合における「Name」要素の出現回数は、1となる。
【0107】
ここでは、ルート要素である「Person」要素を含む構造化データの数に対する「Name」要素を含む構造化データの割合を当該「Name」要素の出現回数として算出するものとして説明したが、上記した「Name」要素のように要素の繰り返し数の最小値および最大値がともに1である場合には、構造化データベース41に対する検索処理を実行することなく、当該「Name」要素の出現回数を1としても構わない。
【0108】
また、データ統計解析部312は、「Name」要素の平均サイズを算出する。この場合、データ統計解析部312は、「Name」要素を含む構造化データを構造化データベース41から検索する。データ統計解析部312は、検索された構造化データに含まれる「Name」要素の内容の長さ(文字数)の平均値を、当該「Name」要素の平均サイズとして算出する。
【0109】
次に、例えば「BirthDate」要素に対して図6に示すステップS3〜S5の処理が実行される場合について具体的に説明する。
【0110】
この場合、構造定義解析部311は、構造定義100を解析することによって、「BirthDate」要素を表す要素名である「BirthDate」、当該「BirthDate」要素の内容の長さおよび当該「BirthDate」要素の繰り返し数を取得する。
【0111】
ここでは、上述した図3において説明したように「BirthDate」要素の内容の長さは固定長であるため、当該「BirthDate」要素の内容の長さとして、当該「BirthDate」要素の内容の長さの固定長「19」が取得される。
【0112】
また、「BirthDate」要素の繰り返し数として、当該「BirthDate」要素の繰り返し数の最小値「0」および最大値「1」が取得される。
【0113】
次に、データ統計解析部312は、「BirthDate」要素の平均出現回数を算出する。この場合、データ統計解析部312は、構造定義100において定義されているルート要素である「Person」要素を含む構造化データを構造化データベース41から検索する。また、データ統計解析部312は、「BirthDate」要素を含む構造化データを構造化データベース41から検索する。データ統計解析部312は、検索された構造化データに基づいて、「Person」要素を含む構造化データの数に対する「BirthDate」要素を含む構造化データの割合を、当該「BirthDate」要素の出現回数として算出する。
【0114】
また、データ統計解析部312は、「BirthDate」要素の平均サイズを算出する。この場合、データ統計解析部312は、「BirthDate」要素を含む構造化データを構造化データベース41から検索し、当該検索された構造化データに含まれる「BirthDate」要素の内容の長さ(文字数)の平均値を、当該「BirthDate」要素の平均サイズとして算出する。
【0115】
ここで、上記したように「BirthDate」要素の内容の長さは固定長であるため、データ統計解析部312によって検索された構造化データに含まれる「BirthDate」要素の内容の長さは常に一定である。つまり、データ統計解析部312によって検索された構造化データに含まれる「BirthDate」要素の内容の長さの平均値は、当該「BirthDate」要素の内容の長さの固定長と同一である。
【0116】
したがって、上記した「BirthDate」要素のように要素の内容の長さが固定長である場合には、データ統計解析部312は、構造化データベース41に対する検索処理を実行することなく、当該固定長(ここでは、19)を「BirthDate」要素の平均サイズとしても構わない。
【0117】
ここでは、「Name」要素および「BirthDate」要素に対して図6に示すステップS3〜S5の処理が実行される場合について説明したが、他の要素についても同様であるため、その詳しい説明を省略する。
【0118】
上記した構造定義100において定義されているルート要素である「Person」要素以外の全ての要素(「Name」要素、「Age」要素、「BirthDate」要素、「Blood」要素、「Lab」要素、「Active」要素および「Email」要素)について処理が実行されると、コミット間隔算出部313は、コミット間隔算出処理を実行する。
【0119】
このコミット間隔算出処理においては、まず、構造定義100において定義されているルート要素である「Person」要素以外の要素毎の予想サイズが算出される。
【0120】
ここで、例えば「Name」要素の予想サイズが算出される場合について具体的に説明する。
【0121】
この場合、コミット間隔算出部313は、「Name」要素のタグ長を算出する。「Name」要素のタグ長は、「当該「Name」要素を表す要素名の長さ(文字数)*2+5」で算出される。ここで、「Name」要素を表す要素名(タグ名)は「Name」であり、その長さは4である。したがって、「Name」要素のタグ長は、4*2+5=13である。
【0122】
次に、コミット間隔算出部313は、「Name」要素の予想サイズを算出する。「Name」要素の予想サイズは、「(当該「Name」要素の平均サイズ+タグ長)*平均出現回数」によって算出される。ここで、「Name」要素の平均サイズが例えば8であり、当該「Name」要素のタグ長が13であり、当該「Name」要素の平均出現回数が1である場合には、当該「Name」要素の予想サイズは21となる。
【0123】
この「Name」要素と同様に、ルート要素以外の全ての要素について予想サイズが算出されると、コミット間隔算出部313は、構造定義100において定義されている要素のうちのルート要素である「Person」要素のタグ長を算出する。この「Person」要素のタグ長は、「当該「Person」要素を表す要素名の長さ*2+5」で算出される。ここで、「Person」要素を表す要素名(タグ名)は「Person」であり、その長さは6である。したがって、「Person」要素のタグ長は、6*2+5=17である。
【0124】
次に、コミット間隔算出部313は、構造定義100において定義されているルート要素(ここでは、「Person」要素)1つあたりの確率的なデータサイズ(以下、「Person」要素のデータサイズと表記)を算出する。
【0125】
この場合、コミット間隔算出部313は、構造定義100において定義されているルート要素である「Person」要素以外の要素毎の予想サイズと当該ルート要素である「Person」要素のタグ長との合計を、「Person」要素のデータサイズとして算出する。
【0126】
ここで、図8を参照して、構造定義100において定義されているルート要素である「Person」要素のデータサイズについて具体的に説明する。
【0127】
図8においては、構造定義100において定義されているルート要素である「Person」要素以外の要素毎の平均出現回数、平均サイズ、タグ長および予想サイズが示されている。なお、上記したように予想サイズは、「(平均サイズ+タグ長)*平均出現回数」により算出される。
【0128】
図8を参照すると、例えば「Name」要素の平均出現回数は1、平均サイズは8、タグ長は13である。この場合、「Name」要素の予想サイズは、(8+13)*1=21である。
【0129】
図8を参照すると、「Age」要素の平均出現回数は0.2、平均サイズは2、タグ長は11である。この場合、「Age」要素の予想サイズは、(2+11)*0.2=2.6である。
【0130】
図8を参照すると、「BirthDate」要素の平均出現回数は0.3、平均サイズは19、タグ長は23である。この場合、「BirthDate」要素の予想サイズは、(19+23)*0.3=12.6である。
【0131】
図8を参照すると、「Blood」要素の平均出現回数は1、平均サイズは1.1、タグ長は15である。この場合、「Blood」要素の予想サイズは、(1.1+15)*1=16.1である。
【0132】
図8を参照すると、「Lab」要素の平均出現回数は1、平均サイズは3、タグ長は11である。この場合、「Lab」要素の予想サイズは、(3+11)*1=14である。
【0133】
図8を参照すると、「Active」要素の平均出現回数は1、平均サイズは4.2、タグ長は17である。この場合、「Active」要素の予想サイズは、(4.2+17)*1=21.2である。
【0134】
また、図8を参照すると、「Email」要素の平均出現回数は2.8、平均サイズは25.4、タグ長は15である。この場合、「Email」要素の予想サイズは、(25.4+15)*2.8=113.12である。
【0135】
なお、図8に示すように、構造定義100において定義されているルート要素である「Person」要素のタグ長は、17である。
【0136】
ここで、構造定義100において定義されているルート要素である「Person」要素1つあたりの確率的なデータサイズ(つまり、「Person」要素のデータサイズ)は、当該「Person」要素以外の要素の予想サイズと当該「Person」要素のタグ長との合計である。したがって、「Person」要素のデータサイズは、217.62(byte)となる。
【0137】
次に、コミット間隔算出部313は、算出されたデータサイズサイズ(「Person」要素のデータサイズ)を用いてコミット処理間登録数を算出する。この場合、コミット間隔算出部313は、ロールバック処理用の記憶領域、例えばジャーナル/ロールバック領域の推奨使用領域(設定値)を「Person」要素のデータサイズで除算することによってコミット処理間登録数を算出する。なお、コミット間隔算出部313によって算出されるコミット処理間登録数は、コミット処理間において構造定義100によって定義された構造を有する構造化データが構造化データベース41に対して登録されるべき数である。
【0138】
ここで、コミット間隔算出部313によって算出された「Person」要素のデータサイズが217.62であり、ジャーナル/ロールバック領域の最大値が50MBであり、そのうち推奨使用領域が10%であるものとする。この場合、コミット間隔算出部313は、設定値である50MBの10%を「Person」要素のデータサイズである217.62で除算することによって、コミット処理間登録数(推奨コミット間隔)を算出する。具体的には、1MB=1024KB=1024B×1024Bであることから、50×1024(B)×1024(B)×10(%)÷217.62(B)で算出できて、小数点以下を切り捨てると、結果は24091となる。この結果によれば、最大で24091件毎にコミット処理を実行することによって、最適かつ安全な処理を行うことが可能であると算出できる。
【0139】
このように算出されたコミット処理間登録数(を示すコミット間隔)は、構造定義100に含まれる構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」に対応づけてコミット間隔格納部23に格納される。
【0140】
なお、ここでは、構造定義格納部22から図3に示す構造定義100が読み出されたものとして説明したが、他の構造定義が読み出された場合についても同様であるため、その詳しい説明を省略する。
【0141】
次に、図9のフローチャートを参照して、コミット間隔自動制御部32によって実行されるコミット間隔自動制御処理の処理手順について説明する。なお、コミット間隔自動制御処理は、例えば構造化データが構造化データベース41に対して登録される(つまり、当該構造化データベース41が更新される)際に実行されるコミット処理の間隔を制御する処理である。
【0142】
まず、コミット間隔自動制御部32に含まれる構造定義判別部321は、例えばユーザによって指定された複数の構造化データを入力する(ステップS21)。なお、構造定義判別部321によって入力される構造化データは、例えば構造化データベース41に対して更新処理を実行するためのプログラム等から渡される。このプログラムは、コミット間隔自動制御装置30と同一の装置内で実行されていてもよいし、異なる装置内で実行されていても構わない。
【0143】
構造定義判別部321によって入力される複数の構造化データは、例えば構造化データベース41に対して登録される構造化データである。構造定義判別部321によって入力される複数の構造化データには、当該構造化データが有する構造を識別するための構造識別子および当該構造化データに含まれるルート要素を表す要素名が含まれる。なお、一括して構造化データベース41に対して登録される複数の構造化データにおいては、構造識別子およびルート要素を表す要素名は共通しているものとする。
【0144】
次に、構造定義判別部321は、構造定義判別部321によって入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別子およびルート要素を表す要素名を取得する(ステップS22)。
【0145】
コミット実行部322は、構造定義判別部321によって取得された構造識別子およびルート要素を表す要素名(構造定義ルート要素)に対応づけてコミット間隔格納部23に格納されているコミット間隔を取得する(ステップS23)。
【0146】
次に、コミット実行部322は、構造定義判別部321によって入力された複数の構造化データのうちの例えば1つを構造化データベース41に対して登録する。これによって、コミット実行部322は、構造化データベース41を更新する処理(当該構造化データベース41に対する更新処理)を実行する(ステップS24)。この場合、コミット実行部322は、構造化データ管理装置40に含まれる更新部43を介して更新処理を実行する。
【0147】
コミット実行部322は、構造化データベース41に対して登録された構造化データ(つまり、構造化データベース41に対して更新処理された構造化データ)の数が、ステップS23において取得されたコミット間隔によって示されるコミット処理間登録数(つまり、コミット間隔)に達したか否かを判定する(ステップS25)。
【0148】
コミット処理間登録数に達したと判定された場合(ステップS25のYES)、コミット実行部322は、構造化データベース41に対してコミット処理を実行する(ステップS26)。この場合、コミット実行部322は、構造化データ管理装置40に含まれるコミット部44を介してコミット処理を実行する。
【0149】
一方、コミット処理間登録数に達していないと判定された場合(ステップS25のNO)、ステップS26の処理は実行されない。
【0150】
コミット実行部322は、構造定義判別部321によって入力された複数の構造化データの全てについて処理が完了した(つまり、当該複数の構造化データの全てが構造化データベース41に対して登録された)か否かを判定する(ステップS27)。
【0151】
複数の構造化データの全てについて処理が完了していないと判定された場合(ステップS27のNO)、ステップS24に戻って処理が繰り返される。
【0152】
一方、複数の構造化データの全てについて処理が完了したと判定された場合(ステップS27のYES)、コミット実行部322は、構造化データベース41に対してコミット処理を実行する(ステップS28)。この場合、コミット実行部322は、構造化データ管理装置40に含まれるコミット部44を介してコミット処理を実行する。
【0153】
上記したようにコミット間隔自動制御処理においては、複数の構造化データの各々が(順に)構造化データベース41に対して登録され、当該登録された構造化データの数がコミット間隔(によって示されるコミット処理間登録数)に達した場合にコミット処理が実行される。
【0154】
なお、図9に示すコミット間隔自動制御処理においては、構造化データベース41に対して登録された構造化データの数がコミット間隔によって示されるコミット処理間登録数に達した場合および複数の構造化データの全てについて処理が完了した場合にコミット処理が実行されるものとして説明したが、例えばステップS26においてコミット処理が実行された後にステップS27において複数の構造化データの全てについて処理が完了したと判定された場合には、ステップS28の処理は省略されても構わない。
【0155】
ここで、上述した図4および図5を参照して、コミット間隔自動制御処理について具体的に説明する。
【0156】
まず、構造定義判別部321は、複数の構造化データを入力する。ここでは、図5に示す構造化データ200を含む例えば10万件の構造化データが入力されたものとする。
【0157】
この場合、構造定義判別部321は、例えば構造化データ200を解析することによって、当該構造化データ200に含まれる構造識別子およびルート要素を表す要素名を取得する。ここでは、構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」が取得される。
【0158】
コミット実行部322は、構造定義判別部321によって取得された構造識別子およびルート要素を表す要素名(構造定義ルート要素)に対応づけてコミット間隔格納部23に格納されているコミット間隔を取得する。図4に示すコミット間隔格納部23によれば、構造定義判別部321によって取得された構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」に対応づけられているコミット間隔「24091」が取得される。
【0159】
ここでは、構造定義判別部321によって取得された構造識別子およびルート要素を表す要素名(に対応づけられているコミット間隔)がコミット間隔格納部23に存在するものとして説明したが、例えば当該構造識別子およびルート要素を表す要素名がコミット間隔格納部23に存在しない場合には、予め定められているコミット間隔(デフォルト値)が取得される構成であっても構わない。
【0160】
また、コミット間隔格納部23からコミット間隔が取得される際には、構造識別子を優先的な判断基準とする。つまり、構造定義判別部321によって取得されたルート要素を表す要素名がコミット間隔格納部23に存在する場合(つまり、当該ルート要素を表す要素名が一致する場合)であっても、当該要素名(構造定義ルート要素)に対応づけられている構造識別子が当該構造定義判別部321によって取得された構造識別子と一致しない場合には、上記したデフォルト値が取得されるものとする。
【0161】
なお、構造定義判別部321によって入力された複数の構造化データに構造識別子が含まれておらず当該構造識別子が取得されない(つまり、構造識別子の指定がない)場合には、当該構造化データから取得されたルート要素を表す要素名(構造定義ルート要素)に対応づけてコミット間隔格納部23に格納されているコミット間隔が取得されてもよい。
【0162】
以下、コミット実行部322によって取得されたコミット間隔(ここでは、コミット間隔「24091」)に基づいて、コミット処理の間隔が制御される。具体的には、上記したように構造定義判別部321によって入力された構造化データ(入力データ)が10万件あるものとすると、24091件の構造化データが処理される(つまり、構造化データベース41に対して登録される)毎にコミット処理が実行される。
【0163】
具体的には、登録しようとする総件数が10万件で、コミット推奨間隔件数が24091件とすると、10万件÷24091件=4あまり3636件となる。従って、4回コミットするとともに、残り3636件の構造化データが処理された後に最後のコミット処理が実行される。つまり、このように24091件毎にコミット処理が実行されると、10万件から24091件×4を引いた3636件の構造化データが最後に残るため、当該3636件の構造化データが処理された後に最後のコミット処理が実行されることになる。これによって、構造定義判別部321によって入力された10万件の構造化データの処理(登録処理)が完了される。
【0164】
上記したように本実施形態においては、複数の構造化データを解析することによって当該構造化データに含まれる構造識別子(構造識別情報)が取得され、当該構造識別子に対応づけてコミット間隔格納部23に格納されているコミット間隔が取得される。本実施形態においては、構造化データベース41に対して登録された構造化データの数がコミット間隔によって示されるコミット処理間登録数に達したと判定された場合に、当該構造化データベースに対してコミット処理が実行される。
【0165】
これにより、本実施形態においては、構造化データが有する構造に応じて適切にコミット処理の間隔を制御することが可能となる。
【0166】
また、本実施形態においては、構造定義格納部22に格納されている構造定義を解析することによって当該構造定義に含まれる構造識別子および要素名が取得され、当該要素名によって表される要素を含む構造化データが構造化データベース41から検索される。本実施形態においては、取得された要素名および検索された構造化データに基づいて構造定義によって定義されている構造を有する構造化データにおけるデータサイズが算出され、当該データサイズに基づいてコミット間隔(構造化データがコミット処理間において構造化データベース41に対して登録されるべき数)が算出される。
【0167】
つまり、本実施形態においては、構造化データベース41に蓄積されている構造化データの統計量と構造定義(XMLスキーマ)をもとに、構造化データベース41に登録され得るデータの確率的なサイズ(データサイズ)を静的に算出することができる。これにより、本実施形態においては、最適なコミット間隔を自動的に算出することができ、効率的なデータ管理を実現することができる。
【0168】
なお、本実施形態においては、構造化データベース41に対して構造化データが登録される場合について主に説明したが、当該構造化データベース41に対して構造化データが変更(更新)または削除されることによって当該構造化データベース41が更新される場合についても同様である。
【0169】
また、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【符号の説明】
【0170】
10…コンピュータ、20…外部記憶装置、21…プログラム、22…構造定義格納部、23…コミット間隔格納部、30…コミット間隔自動制御装置、31…コミット間隔設定部、32…コミット間隔自動制御部、40…構造化データ管理装置、41…構造化データベース、42…検索部、43…更新部、44…コミット部、311…構造定義解析部、312…データ統計解析部、313…コミット間隔算出部、321…構造定義判別部、322…コミット実行部。

【特許請求の範囲】
【請求項1】
複数の要素を含む複数の構造化データを格納する構造化データベースと接続されているコミット間隔自動制御装置において、
構造化データが有する構造を識別するための構造識別情報および前記構造化データベースに対して構造化データが登録される際に実行されるコミット処理の間隔を示すコミット間隔を対応づけて格納するコミット間隔格納手段と、
前記構造化データベースに対して登録される複数の構造化データであって、当該構造化データが有する構造を識別するための構造識別情報を含む複数の構造化データを入力する入力手段と、
前記入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別情報を取得する第1の取得手段と、
前記第1の取得手段によって取得された構造識別情報に対応づけて前記コミット間隔格納手段に格納されているコミット間隔を取得する第2の取得手段と、
前記構造化データベースに対して前記入力された構造化データの各々を登録する更新処理手段と、
前記構造化データベースに対して構造化データが登録される際に、前記第2の取得手段によって取得されたコミット間隔に基づいて前記構造化データベースに対して前記コミット処理を実行するコミット実行手段と
を具備することを特徴とするコミット間隔自動制御装置。
【請求項2】
前記コミット間隔格納手段に格納されているコミット間隔は、当該コミット間隔に対応づけて前記コミット間隔格納手段に格納されている構造識別情報によって識別される構造を有する構造化データが前記コミット処理間において前記構造化データベースに対して登録されるべき数であるコミット処理間登録数を示し、
前記コミット実行手段は、
前記構造化データベースに対して登録された構造化データの数が前記第2の取得手段によって取得されたコミット間隔によって示されるコミット処理間登録数に達したかを判定する判定手段を含み、
前記構造化データベースに対して登録された構造化データの数が前記コミット間隔によって示されるコミット処理間登録数に達したと判定された場合、前記構造化データベースに対してコミット処理を実行する
ことを特徴とする請求項1記載のコミット間隔自動制御装置。
【請求項3】
構造化データの構造が定義された構造定義であって、当該構造化データが有する構造を識別するための構造識別情報および当該構造化データに含まれる要素の各々を表す要素名を含む構造定義を予め格納する構造定義格納手段と、
前記構造定義格納手段に格納されている構造定義を解析することによって、当該構造定義に含まれる構造識別情報を取得する第3の取得手段と、
前記構造定義格納手段に格納されている構造定義を解析することによって、当該構造定義に含まれる要素名を取得する第4の取得手段と、
前記第4の取得手段によって取得された要素名によって表される要素を含む構造化データを前記構造化データベースに格納されている複数の構造化データの中から検索する検索手段と、
前記第4の取得手段によって取得された要素名および前記検索された構造化データに基づいて、前記第3の取得手段によって取得された構造識別情報によって識別される構造を有する構造化データにおけるデータサイズを算出する第1の算出手段と、
前記第1の算出手段によって算出されたデータサイズに基づいて、前記第3の取得手段によって取得された構造識別情報によって識別される構造を有する構造化データが前記コミット処理間において前記構造化データベースに対して登録されるべき数であるコミット処理間登録数を算出する第2の算出手段と、
前記第3の取得手段によって取得された構造識別情報および前記第2の算出手段によって算出されたコミット処理間登録数を示すコミット間隔を対応づけて前記コミット間隔格納手段に格納する格納処理手段と、
を更に具備することを特徴とする請求項2記載のコミット間隔自動制御装置。
【請求項4】
前記第1の算出手段は、
前記検索された構造化データに含まれる前記第4の取得手段によって取得された要素名によって表される要素の内容の長さの平均値を算出し、
前記第4の取得手段によって取得された要素名、前記検索された構造化データの数および前記算出された要素の内容の長さの平均値に基づいて、前記第3の取得手段によって取得された構造識別情報によって識別される構造を有する構造化データにおけるデータサイズを算出する
ことを特徴とする請求項3記載のコミット間隔自動制御装置。
【請求項5】
前記第2の算出手段は、予め定められたロールバック処理用の記憶領域を前記第1の算出手段によって算出されたデータサイズで除算することによって、前記コミット処理間登録数を算出することを特徴とする請求項3記載のコミット間隔自動制御装置。
【請求項6】
前記コミット実行手段は、前記入力された複数の構造化データの全てが前記構造化データベースに対して登録された場合に、前記構造化データベースに対してコミット処理を更に実行することを特徴とする請求項1記載のコミット間隔自動制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−58923(P2012−58923A)
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願番号】特願2010−200187(P2010−200187)
【出願日】平成22年9月7日(2010.9.7)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】