(57)【要約】【課題】適切にコミット間隔を制御することが可能なコミット間隔自動制御装置を提供することにある。【解決手段】入力手段は、構造化データベースに対して登録される複数の構造化データであって、当該構造化データが有する構造を識別するための構造識別情報を含む複数の構造化データを入力する。第１の取得手段は、入力された複数の構造化データに含まれる構造識別情報を取得する。第２の取得手段は、第１の取得手段によって取得された構造識別情報に対応づけてコミット間隔格納手段に格納されているコミット間隔を取得する。更新処理手段は、構造化データベースに対して入力手段によって入力された構造化データの各々を登録する。コミット実行手段は、第２の取得手段によって取得されたコミット間隔に基づいて構造化データベースに対してコミット処理を実行する。【選択図】図２
2012058923.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素を含む複数の構造化データを格納する構造化データベースと接続されているコミット間隔自動制御装置において、
構造化データが有する構造を識別するための構造識別情報および前記構造化データベースに対して構造化データが登録される際に実行されるコミット処理の間隔を示すコミット間隔を対応づけて格納するコミット間隔格納手段と、
前記構造化データベースに対して登録される複数の構造化データであって、当該構造化データが有する構造を識別するための構造識別情報を含む複数の構造化データを入力する入力手段と、
前記入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別情報を取得する第１の取得手段と、
前記第１の取得手段によって取得された構造識別情報に対応づけて前記コミット間隔格納手段に格納されているコミット間隔を取得する第２の取得手段と、
前記構造化データベースに対して前記入力された構造化データの各々を登録する更新処理手段と、
前記構造化データベースに対して構造化データが登録される際に、前記第２の取得手段によって取得されたコミット間隔に基づいて前記構造化データベースに対して前記コミット処理を実行するコミット実行手段と
を具備することを特徴とするコミット間隔自動制御装置。
【請求項２】
前記コミット間隔格納手段に格納されているコミット間隔は、当該コミット間隔に対応づけて前記コミット間隔格納手段に格納されている構造識別情報によって識別される構造を有する構造化データが前記コミット処理間において前記構造化データベースに対して登録されるべき数であるコミット処理間登録数を示し、
前記コミット実行手段は、
前記構造化データベースに対して登録された構造化データの数が前記第２の取得手段によって取得されたコミット間隔によって示されるコミット処理間登録数に達したかを判定する判定手段を含み、
前記構造化データベースに対して登録された構造化データの数が前記コミット間隔によって示されるコミット処理間登録数に達したと判定された場合、前記構造化データベースに対してコミット処理を実行する
ことを特徴とする請求項１記載のコミット間隔自動制御装置。
【請求項３】
構造化データの構造が定義された構造定義であって、当該構造化データが有する構造を識別するための構造識別情報および当該構造化データに含まれる要素の各々を表す要素名を含む構造定義を予め格納する構造定義格納手段と、
前記構造定義格納手段に格納されている構造定義を解析することによって、当該構造定義に含まれる構造識別情報を取得する第３の取得手段と、
前記構造定義格納手段に格納されている構造定義を解析することによって、当該構造定義に含まれる要素名を取得する第４の取得手段と、
前記第４の取得手段によって取得された要素名によって表される要素を含む構造化データを前記構造化データベースに格納されている複数の構造化データの中から検索する検索手段と、
前記第４の取得手段によって取得された要素名および前記検索された構造化データに基づいて、前記第３の取得手段によって取得された構造識別情報によって識別される構造を有する構造化データにおけるデータサイズを算出する第１の算出手段と、
前記第１の算出手段によって算出されたデータサイズに基づいて、前記第３の取得手段によって取得された構造識別情報によって識別される構造を有する構造化データが前記コミット処理間において前記構造化データベースに対して登録されるべき数であるコミット処理間登録数を算出する第２の算出手段と、
前記第３の取得手段によって取得された構造識別情報および前記第２の算出手段によって算出されたコミット処理間登録数を示すコミット間隔を対応づけて前記コミット間隔格納手段に格納する格納処理手段と、
を更に具備することを特徴とする請求項２記載のコミット間隔自動制御装置。
【請求項４】
前記第１の算出手段は、
前記検索された構造化データに含まれる前記第４の取得手段によって取得された要素名によって表される要素の内容の長さの平均値を算出し、
前記第４の取得手段によって取得された要素名、前記検索された構造化データの数および前記算出された要素の内容の長さの平均値に基づいて、前記第３の取得手段によって取得された構造識別情報によって識別される構造を有する構造化データにおけるデータサイズを算出する
ことを特徴とする請求項３記載のコミット間隔自動制御装置。
【請求項５】
前記第２の算出手段は、予め定められたロールバック処理用の記憶領域を前記第１の算出手段によって算出されたデータサイズで除算することによって、前記コミット処理間登録数を算出することを特徴とする請求項３記載のコミット間隔自動制御装置。
【請求項６】
前記コミット実行手段は、前記入力された複数の構造化データの全てが前記構造化データベースに対して登録された場合に、前記構造化データベースに対してコミット処理を更に実行することを特徴とする請求項１記載のコミット間隔自動制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、構造化データベースに対するコミット処理の間隔を制御するコミット間隔自動制御装置に関する。
【背景技術】
【０００２】
一般的に、大量のデータを登録、更新または削除等することによって例えばＲＤＢ（Relational Database）等のデータベース（の内容）が更新される場合、当該データベースにおける更新を確定するためのコミット処理が所定の間隔（以下、コミット間隔と表記）で実行される。
【０００３】
ところで、メモリの大量消費を抑えたり、ロールバック処理用の領域（記憶領域）を十分に確保したりするためには、上記したコミット間隔を制御する必要がある。
【０００４】
コミット間隔を制御する手法としては、例えば、テーブル定義の内容から経験的または統計的に値（つまり、コミット間隔）を予め人手により決定する手法、または、例えばジャーナルを監視することによってジャーナルサイズやトランザクション数に基づいて動的にコミット間隔を制御する手法等がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０５−１４３４１８号公報
【特許文献２】特開平１１−３４５１５６号公報
【特許文献３】特開平０５−４６４５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、例えばＸＭＬ（eXtensible Markup Language）データベースのような構造化データを格納するデータベースの場合、当該構造化要素の繰り返し数等が未知であるため、単純にトランザクション数を指定するだけでは、適切なコミット間隔でコミット処理を実行することができない（つまり、適切にコミット間隔を制御することができない）場合がある。
【０００７】
また、ジャーナルを監視する手法では、コミット間隔を制御する際のオーバヘッドが大きくなり、効率性に欠ける。
【０００８】
そこで、本発明が解決しようとする課題は、適切にコミット間隔を制御することが可能なコミット間隔自動制御装置を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態によれば、複数の要素を含む複数の構造化データを格納する構造化データベースと接続されているコミット間隔自動制御装置が提供される。
【００１０】
実施形態に係るコミット間隔自動制御装置は、コミット間隔格納手段と、入力手段と、第１の取得手段と、第２の取得手段と、更新手段と、コミット実行手段とを具備する。
【００１１】
コミット間隔格納手段は、構造化データが有する構造を識別するための構造識別情報及び前記構造化データベースに対して構造化データを登録する際に実行されるコミット処理の間隔を示すコミット間隔を対応づけて格納する。
【００１２】
入力手段は、前記構造化データベースに対して登録される複数の構造化データであって、当該構造化データが有する構造を識別するための構造識別情報を含む複数の構造化データを入力する。
【００１３】
第１の取得手段は、前記入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別情報を取得する。
【００１４】
第２の取得手段は、前記第１の取得手段によって取得された構造識別情報に対応づけて前記コミット間隔格納手段に格納されているコミット間隔を取得する。
【００１５】
更新処理手段は、前記構造化データベースに対して前記入力された構造化データの各々を登録する。
【００１６】
コミット実行手段は、前記構造化データベースに対して構造化データが登録される際に、前記第２の取得手段によって取得されたコミット間隔に基づいて前記構造化データベースに対して前記コミット処理を実行する。
【図面の簡単な説明】
【００１７】
【図１】実施形態に係るコミット間隔自動制御装置のハードウェア構成を示すブロック図。
【図２】図１に示すコミット間隔自動制御装置３０の主として機能構成を示すブロック図。
【図３】図２に示す構造定義格納部２２に格納されている構造定義の一例を示す図。
【図４】図２に示すコミット間隔格納部２３のデータ構造の一例を示す図。
【図５】図２に示す構造化データベース４１に格納されている構造化データのデータ構造の一例を示す図。
【図６】コミット間隔設定部３１によって実行されるコミット間隔設定処理の処理手順を示すフローチャート。
【図７】コミット間隔算出部３１３によって実行されるコミット間隔算出処理の処理手順を示すフローチャート。
【図８】構造定義１００において定義されているルート要素である「Person」要素のデータサイズについて具体的に説明するための図。
【図９】コミット間隔自動制御部３２によって実行されるコミット間隔自動制御処理の処理手順を示すフローチャート。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、実施形態について説明する。
【００１９】
図１は、本実施形態に係るコミット間隔自動制御装置のハードウェア構成を示すブロック図である。図１に示すように、コンピュータ１０は、例えばハードディスクドライブ（ＨＤＤ：Hard Disk Drive）のような外部記憶装置２０と接続されている。この外部記憶装置２０は、コンピュータ１０によって実行されるプログラム２１を格納する。コンピュータ１０および外部記憶装置２０は、コミット間隔自動制御装置３０を構成する。
【００２０】
このコミット間隔自動制御装置３０は、例えばＸＭＬ（eXtensible Markup Language）データのような構造化データを格納する構造化データベースと接続されており、当該構造化データベースに対して構造化データが例えば登録される際に実行されるコミット処理の間隔（コミット間隔）を制御する機能を有する。なお、コミット処理は、構造化データベースにおける更新を確定するための処理である。
【００２１】
図２は、図１に示すコミット間隔自動制御装置３０の主として機能構成を示すブロック図である。図２に示すように、コミット間隔自動制御装置３０は、コミット間隔設定部３１およびコミット間隔自動制御部３２を含む。本実施形態において、これらコミット間隔設定部３１およびコミット間隔自動制御部３２は、図１に示すコンピュータ１０が外部記憶装置２０に格納されているプログラム２１を実行することにより実現されるものとする。このプログラム２１は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム２１が、例えばネットワークを介してコンピュータ１０にダウンロードされても構わない。
【００２２】
また、コミット間隔自動制御装置３０は、構造定義格納部２２およびコミット間隔格納部２３を含む。本実施形態において、構造定義格納部２２およびコミット間隔格納部２３は、例えば図１に示す外部記憶装置２０に格納される。
【００２３】
なお、図２に示すように、コミット間隔自動制御装置３０は、構造化データを管理する構造化データ管理装置４０と接続されている。この構造化データ管理装置４０は、構造化データベース（ＸＭＬデータベース）４１、検索部４２、更新部４３およびコミット部４４を含む。構造化データベース４１は、複数の構造化データ（ＸＭＬデータ）を格納する。なお、構造化データベース４１に格納されている構造化データは、当該構造化データが有する構造を識別するための構造識別子（構造識別情報）および複数の要素を含む。検索部４２は、構造化データベース４１から構造化データを検索する機能を有する。更新部４３は、構造化データベース４１に対して構造化データを例えば登録することによって当該構造化データベース４１を更新する機能を有する。コミット部４４は、構造化データベース４１に対してコミット処理を実行する機能を有する。
【００２４】
構造定義格納部２２には、構造化データが有する構造が定義された構造定義（例えば、ＸＭＬスキーマ）が予め格納される。なお、構造定義においては、構造化データが有する構造として、例えば当該構造化データに含まれる要素等が定義される。構造定義格納部２２に格納されている構造定義には、当該構造定義によって定義されている構造化データが有する構造を識別するための構造識別情報（以下、構造識別子と表記）が含まれる。また、構造定義格納部２２に格納されている構造定義には、当該構造定義によって定義されている構造を有する構造化データに含まれる要素（つまり、当該構造定義において定義されている要素）の各々を表す要素名（タグ名）等が含まれる。
【００２５】
コミット間隔設定部３１は、構造定義格納部２２に格納されている構造定義毎にコミット間隔を設定する機能を有する。コミット間隔設定部３１は、構造定義解析部３１１、データ統計解析部３１２およびコミット間隔算出部３１３を含む。
【００２６】
構造定義解析部３１１は、構造定義格納部２２に格納されている構造定義を解析する。構造定義解析部３１１は、構造定義の解析結果に基づいて、当該構造定義に含まれる構造識別子を取得する。また、構造定義解析部３１１は、構造定義の解析結果に基づいて、当該構造定義に含まれる要素名等を取得する。
【００２７】
データ統計解析部３１２は、構造定義解析部３１１によって取得された要素名によって表される要素を含む構造化データを、構造化データ管理装置４０に含まれる構造化データベース４１（に格納されている複数の構造化データの中）から検索する。この場合、データ統計解析部３１２は、構造化データ管理装置４０に含まれる検索部４２を介して検索処理を実行する。
【００２８】
コミット間隔算出部３１３は、構造定義解析部３１１によって取得された要素名およびデータ統計解析部３１２によって検索された構造化データに基づいて、構造定義解析部３１１によって取得された構造識別子によって識別される構造を有する構造化データにおけるデータサイズを算出する。
【００２９】
コミット間隔算出部３１３は、算出されたデータサイズに基づいて、コミット処理間において構造化データ（構造定義解析部３１１によって取得された構造識別子によって識別される構造を有する構造化データ）が構造化データベース４１に対して登録されるべき数（以下、コミット処理間登録数と表記）を算出する。
【００３０】
コミット間隔設定部３１は、構造定義解析部３１１によって取得された構造識別子およびコミット間隔算出部３１３によって算出されたコミット処理間登録数を示すコミット間隔を対応づけてコミット間隔格納部２３に格納する処理を実行する。
【００３１】
コミット間隔格納部２３には、構造化データが有する構造を識別するための構造識別子（構造識別情報）およびコミット処理間登録数を示すコミット間隔が対応づけて格納される。このコミット処理間登録数は、構造化データがコミット処理間において構造化データベース４１に対して登録されるべき数を表す。なお、コミット間隔格納部２３には、構造識別子およびコミット間隔に加えて、例えば当該構造識別子によって識別される構造を有する構造化データに含まれるルート要素（当該構造における最上位の要素）を表す要素名が格納される。
【００３２】
コミット間隔自動制御部３２は、コミット間隔格納部２３に格納されているコミット間隔に基づいて、構造化データベース４１に対して構造化データが登録される際に実行されるコミット処理の間隔（つまり、コミット間隔）を制御する機能を有する。コミット間隔自動制御部３２は、構造定義判別部３２１およびコミット実行部３２２を含む。
【００３３】
構造定義判別部３２１は、構造化データベース４１に対して登録される構造化データを入力する。構造定義判別部３２１によって入力される構造化データには、当該構造化データが有する構造を識別するための構造識別子（構造識別情報）が含まれる。なお、構造定義判別部３２１は、複数の構造化データを入力する。
【００３４】
構造定義判別部３２１は、入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別子を取得する。
【００３５】
コミット実行部３２２は、構造定義判別部３２１によって取得された構造識別子に対応づけてコミット間隔格納部２３に格納されているコミット間隔を取得する。
【００３６】
コミット実行部３２２は、構造定義判別部３２１によって入力された構造化データの各々を構造化データベース４１に対して登録する。これによって、コミット実行部３２２は、構造化データベース４１を更新する。この場合、コミット実行部３２２は、構造化データ管理装置４０に含まれる更新部４３を介して構造化データベース４１に対する更新処理を実行する。
【００３７】
また、コミット実行部３２２は、構造化データベース４１に対して登録された構造化データの数が、取得されたコミット間隔によって示されるコミット処理間登録数に達したかを判定する。コミット実行部３２２は、構造化データベース４１に対して登録された構造化データの数がコミット処理間登録数に達したと判定された場合、構造化データベース４１に対してコミット処理を実行する。この場合、コミット実行部３２２は、構造化データ管理装置４０に含まれるコミット部４４を介してコミット処理を実行する。
【００３８】
図３は、図２に示す構造定義格納部２２に格納されている構造定義の一例を示す。なお、図３に示す構造定義は、Ｗ３Ｃで規定されるＸＭＬスキーマである。
【００３９】
構造定義格納部２２に格納されている構造定義には、構造化データが有する構造が定義されている。具体的には、構造定義においては、構造化データに含まれる要素の各々について定義されている。構造定義には、構造化データが有する構造を識別するための構造識別子および当該構造化データに含まれる要素毎に、当該要素を表す要素名、当該要素の内容の長さおよび当該要素の繰り返し数が含まれる。
【００４０】
図３に示す構造定義１００においては、「xsd:schema」要素で構造化データが有する構造を識別するための構造識別子が定義されている。具体的には、構造定義１００における「xsd:schema」要素の「targetNamespace」属性の属性値である「http://www.example.org/person」が構造識別子である。
【００４１】
また、構造定義１００においては、「xsd:element」要素で構造化データに含まれる各要素（当該要素を表す要素名、当該要素の内容の長さおよび当該要素の繰り返し数）が定義されている。
【００４２】
構造定義１００における「xsd:element」要素の「name」属性には、構造化データに含まれる要素を表す要素名が定義されている。具体的には、構造定義１００における「xsd:element」要素の「name」属性の属性値である「Person」、「Name」、「Age」、「BirthDate」、「Blood」、「Lab」、「Active」および「Email」が要素名である。なお、これらの要素名のうち、「xsd:schema」要素の直下の要素（「xsd:element」要素）で定義されている要素を表す要素名は、「Person」である。このため、要素名「Person」によって表される要素が構造定義１００によって定義されている構造（を有する構造化データ）におけるルート要素である。
【００４３】
構造定義１００における「xsd:element」要素の「type」属性には、構造化データに含まれる要素の内容の長さが定義されている。構造化データに含まれる要素の内容の長さは、型（「xsd:element」要素の「type」属性の属性値）によって固定長と可変長に分類される。
【００４４】
例えば要素名「BirthDate」によって表される要素の「type」属性の属性値である「xsd:dateTime（つまり、xsd:dateTime型）」は、必ず「YYYY-MM-DDThh:mm:ss」の形式をとるため、当該要素の内容の長さ（すなわち、文字数）は必ず１９となる。したがって、要素名「BirthDate」によって表される要素の内容の長さは固定長である。
【００４５】
また、例えば要素名「Lab」によって表される要素の「type」属性の属性値である「string3（つまり、string3型）」は、独自の定義（構造定義１００における「name」属性の属性値が「string3」である「xsd:simpleType」要素による定義）である。ここで、「name」属性の属性値が「string3」である「xsd:simpleType」要素では、「<xsd:length value=”3”/>」と定義（指定）されているため、要素名「Lab」によって表される要素の内容の長さは３で固定されている。したがって、要素名「Lab」によって表される要素の内容の長さは固定長である。
【００４６】
一方、例えば要素名「Name」によって表される要素の「type」属性の属性値である「xsd:string（つまり、xsd:string型）」は、文字列定義であり、任意の長さをとることができる。このため、要素名「Name」によって表される要素の内容の長さの最小は０、最大は∞となる。したがって、要素名「Name」によって表される要素の内容の長さは可変長である。
【００４７】
また、例えば要素名「Age」によって表される要素の「type」属性の属性値である「xsd:integer（つまり、xsd:integer型）」は、８桁の整数である。このため、要素名「Age」によって表される要素の内容の長さの最小は１、最大は８となる。したがって、要素名「Age」によって表される要素の内容の長さは可変長である。
【００４８】
また、例えば要素名「Blood」によって表される要素の「type」属性の属性値である「BloodType（つまり、Blood型）」は、独自の定義（構造定義１００における「name」属性の属性値が「BloodType」である「xsd:simpleType」要素による定義）である。ここで、「name」属性の属性値が「BloodType」である「xsd:simpleType」要素によれば、Blood型は、Ａ，Ｂ，Ｏ，ＡＢのいずれかの列挙値を取る。このため、要素名「Blood」によって表される要素の長さの最小は１、最大は２となる。したがって、要素名「Blood」によって表される要素の内容の長さは可変長である。
【００４９】
また、例えば要素名「Active」によって表される要素の「type」属性の属性値である「xsd:boolean（つまり、xsd:boolean型）」は、true、falseのいずれかの列挙値を取る。このため、要素名「Active」によって表される要素の内容の長さの最小は４、最大は５となる。したがって、要素名「Active」によって表される要素の内容の長さは可変長である。
【００５０】
なお、要素名「Email」によって表される要素の内容の長さについては、上記した要素名「Name」によって表される要素の内容の長さと同様であるため、その詳しい説明は省略する。
【００５１】
構造定義１００における「xsd:element」要素の「minOccurs」属性には、構造化データに含まれる要素の繰り返し数の最小値が定義されている。また、構造定義１００における「xsd:element」要素の「maxOccurs」属性には、構造化データに含まれる要素の繰り返し数の最大値が定義されている。なお、「xsd:element」要素において「minOccurs」属性が省略されている場合には当該「xsd:element」要素において定義されている要素の繰り返し数の最小値は１であり、「xsd:element」要素において「maxOccurs」属性が省略されている場合には当該「xsd:element」要素において定義されている要素の繰り返し数の最大値は１である。また、「xsd:element」要素において例えば「maxOccurs」属性の属性値として「unbounded」が定義されている場合には、当該「xsd:element」要素において定義されている要素の繰り返し数の最大値は∞である。
【００５２】
図３に示す構造定義１００を参照して具体的に説明すると、例えば要素名「Age」によって表される要素の繰り返し数の最小値は０であり、最大値は１である。また、例えば要素名「Email」によって表される要素の繰り返し数の最小値は１であり、最大値は∞である。
【００５３】
なお、「xsd:element」要素の「minOccurs」属性および「maxOccurs」属性に定義されている要素の繰り返し数（の最小値および最大値）は、当該「xsd:element」要素において定義されている要素が構造定義１００によって定義されている構造におけるルート要素（図３に示す例では、要素名「Person」によって表される要素）の中で繰り返し出現する回数（の最小値および最大値）である。
【００５４】
図４は、図２に示すコミット間隔格納部２３のデータ構造の一例を示す。図４に示すように、コミット間隔格納部２３には、構造識別子、構造定義ルート要素およびコミット間隔が対応づけて格納される。
【００５５】
構造識別子は、構造化データが有する構造を識別するための識別子である。構造定義ルート要素は、構造識別子によって識別される構造（を有する構造化データ）におけるルート要素を表す要素名（タグ名）を示す。コミット間隔は、構造識別子によって識別される構造を有する構造化データがコミット処理間において構造化データベース４１に対して登録されるべき数（コミット処理間登録数）を示す。
【００５６】
図４に示す例では、コミット間隔格納部２３には、構造識別子「http://www.examle.org/person」、構造定義ルート要素「Person」およびコミット間隔「２４０９１」が対応づけて格納されている。これによれば、構造識別子「http://www.examle.org/person」によって識別される構造を有する構造化データがコミット処理間において構造化データベース４１に登録されるべき数（つまり、コミット処理間登録数）が２４０９１であることが示される。また、構造識別子「http://www.examle.org/person」によって識別される構造におけるルート要素のタグ名が「Person」であることが示される。
【００５７】
コミット間隔格納部２３には、構造識別子「http://www.bbb.example/schema」、構造定義ルート要素「rss」およびコミット間隔「１０」が対応づけて格納されている。これによれば、構造識別子「http://www.bbb.example/schema」によって識別される構造を有する構造化データがコミット処理間において構造化データベース４１に登録されるべき数（コミット処理間登録数）が１０であることが示される。また、構造識別子「http://www.bbb.example/schema」によって識別される構造におけるルート要素のタグ名が「rss」であることが示される。
【００５８】
コミット間隔格納部２３には、構造識別子「http://www.ccc.example/schema」、構造定義ルート要素「test」およびコミット間隔「２０００」が対応づけて格納されている。これによれば、構造識別子「http://www.ccc.example/schema」によって識別される構造を有する構造化データがコミット処理間において構造化データベース４１に登録されるべき数（コミット処理間登録数）が２０００であることが示される。また、構造識別子「http://www.ccc.example/schema」によって識別される構造におけるルート要素のタグ名が「test」であることが示される。
【００５９】
図５は、図２に示す構造化データベース４１に格納されている構造化データのデータ構造の一例を示す。上記したように、構造化データには、当該構造化データが有する構造を識別するための構造識別子および複数の要素（を表す要素名）が含まれる。なお、構造化データベース４１には、図５に示すような構造化データが多数蓄積されている。
【００６０】
図５に示す構造化データ２００においては、「Person」要素がルート要素であり、当該「Person」要素の「xmlns」属性の属性値である「http://www.example.org/person」が構造識別子である。
【００６１】
また、構造化データ２００には、ルート要素である「Person」要素の子要素として「Name」、「Age」、「BirthDate」、「Blood」、「Lab」、「Active」および２つの「Email」要素が含まれている。
【００６２】
なお、図５は構造化データベース４１に格納されている構造化データのデータ構造を示すものとして説明したが、上記したコミット間隔自動制御部３２によって入力される構造化データ（つまり、当該構造化データベース４１に登録される構造化データ）のデータ構造についても同様である。
【００６３】
また、図５に示す例では、構造化データには構造識別子が含まれているものとして説明したが、本実施形態では、構造化データには構造識別子が含まれていなくても構わない（つまり、構造化データに構造識別子が定義されていなくても構わない）。
【００６４】
次に、本実施形態に係るコミット間隔自動制御装置３０の動作について説明する。コミット間隔自動制御装置３０においては、コミット間隔設定処理およびコミット間隔自動制御処理が実行される。コミット間隔設定処理は、コミット間隔設定部３１によって実行される。コミット間隔自動制御処理は、コミット間隔自動制御部３２によって実行される。以下、これらの各処理について説明する。
【００６５】
まず、図６のフローチャートを参照して、コミット間隔設定部３１によって実行されるコミット間隔設定処理の処理手順について説明する。なお、コミット間隔設定処理は、例えばコミット間隔自動制御装置３０の管理者からの指示に応じて実行されてもよいし、定期的に実行されても構わない。
【００６６】
コミット間隔設定部３１に含まれる構造定義解析部３１１は、構造定義格納部２２から構造定義を１つ読み出す（ステップＳ１）。
【００６７】
構造定義解析部３１１は、読み出された構造定義を解析することによって、当該構造定義に含まれる構造識別子およびルート要素を表す要素名（タグ名）を取得する（ステップＳ２）。なお、構造定義に構造識別子が含まれていない（つまり、構造識別子が定義されていない）場合には、構造定義に含まれるルート要素を表す要素名のみが取得される。
【００６８】
次に、構造定義解析部３１１によって読み出された構造定義において定義されている要素（つまり、当該構造定義に含まれる要素名）の各々についてステップＳ３〜Ｓ５の処理が実行される。ここでは、構造定義において定義されている要素のうち、ルート要素以外の要素の各々について処理が実行される。以下、この処理の対象となる要素を対象要素と称する。
【００６９】
構造定義解析部３１１は、読み出された構造定義を解析することによって、当該構造定義に含まれる対象要素を表す要素名（要素のタグ名）を取得する（ステップＳ３）。
【００７０】
また、構造定義解析部３１１は、対象要素の内容の長さおよび対象要素の繰り返し数を取得する。なお、構造定義解析部３１１は、対象要素の内容の長さが固定長である場合には当該対象要素の内容の長さの固定長を、当該対象要素の内容の長さが可変長である場合には当該対象要素の内容の長さの最小値および最大値を、当該対象要素の内容の長さとして取得する。また、構造定義解析部３１１は、対象要素の繰り返し数の最小値および最大値を、当該対象要素の繰り返し数として取得する。
【００７１】
データ統計解析部３１２は、構造定義解析部３１１によって取得されたルート要素を表す要素名、対象要素を表す要素名および構造化データベース４１に格納されている構造化データに基づいて、当該対象要素の平均出現回数を算出する（ステップＳ４）。
【００７２】
この場合、データ統計解析部３１２は、構造定義解析部３１１によって取得されたルート要素を表す要素名に基づいて、当該ルート要素を含む構造化データを構造化データベース４１から検索する。また、データ統計解析部３１２は、構造定義解析部３１１によって取得された対象要素を表す要素名に基づいて、当該対象要素を含む構造化データを構造化データベース４１から検索する。なお、データ統計解析部３１２は、構造化データ管理装置４０に含まれる検索部４２を介して検索処理を実行する。
【００７３】
データ統計解析部３１２は、検索された構造化データに基づいて、ルート要素を含む構造化データの数に対する対象要素を含む構造化データの数の割合を、対象要素の出現回数として算出する。
【００７４】
次に、データ統計解析部３１２は、構造定義解析部３１１によって取得された対象要素を表す要素名および構造化データベース４１に格納されている構造化データに基づいて、当該対象要素の平均サイズを算出する（ステップＳ５）。
【００７５】
この場合、データ統計解析部３１２は、構造定義解析部３１１によって取得された対象要素を表す要素名に基づいて、当該対象要素を含む構造化データを構造化データベース４１から検索する。なお、データ統計解析部３１２は、構造化データ管理装置４０に含まれる検索部４２を介して検索処理を実行する。
【００７６】
データ統計解析部３１２は、検索された構造化データに含まれる対象要素の内容を、当該構造化データから抽出する。データ統計解析部３１２は、抽出された対象要素の内容の長さ（文字数）の平均値を、対象要素の平均サイズとして算出する。
【００７７】
なお、上記したステップＳ４およびＳ５においては、後述するように、必要に応じて構造定義解析部３１１によって取得された対象要素の内容の長さおよび対象要素の繰り返し数を用いることによって処理を簡略化することができる。
【００７８】
次に、構造定義解析部３１１によって読み出された構造定義において定義されているルート要素以外の全ての要素について上記したステップＳ３〜Ｓ５の処理が実行されたか否かが判定される（ステップＳ６）。
【００７９】
ルート要素以外の全ての要素について処理が実行されていないと判定された場合（ステップＳ６のＮＯ）、上記したステップＳ３に戻って処理が繰り返される。この場合、上記したステップＳ３〜Ｓ５の処理が実行されていない要素を対象要素として処理が実行される。
【００８０】
一方、ルート要素以外の全ての要素について処理が実行されたと判定された場合（ステップＳ６のＹＥＳ）、コミット間隔算出部３１３は、構造定義解析部３１１によって取得された要素名、データ統計解析部３１２によって算出された要素の平均出現回数および平均サイズに基づいて、コミット処理間登録数（つまり、コミット間隔）を算出する処理（以下、コミット間隔算出処理と表記）を実行する（ステップＳ７）。なお、コミット間隔算出処理において算出されるコミット処理間登録数は、構造定義解析部３１１によって読み出された構造定義によって定義されている構造を有する構造化データが構造化データベース４１に対して登録されるべき数である。このコミット間隔算出処理の詳細については後述する。
【００８１】
次に、コミット間隔設定部３１は、コミット間隔算出部３１３によって算出されたコミット処理間登録数を示すコミット間隔をコミット間隔格納部２３に格納する（ステップＳ８）。この場合、コミット間隔設定部３１は、上記したステップＳ２において構造定義解析部３１１によって取得された構造識別子およびルート要素を表す要素名（構造定義ルート要素）に対応づけてコミット間隔を格納する。なお、上記したステップＳ２において要素名のみが取得されている場合には、ルート要素を表す要素名に対応づけてコミット間隔が格納される。
【００８２】
次に、構造定義格納部２２に格納されている全ての構造定義について上記したステップＳ１以降の処理が実行されたか否かが判定される（ステップＳ９）。
【００８３】
全ての構造定義について処理が実行されていないと判定された場合（ステップＳ９のＮＯ）、ステップＳ１に戻って処理が繰り返される。この場合、ステップＳ１においては、当該ステップＳ１以降の処理が実行されていない構造定義が読み出される。
【００８４】
一方、全ての構造定義について処理が実行されたと判定された場合（ステップＳ９のＹＥＳ）、コミット間隔設定処理は終了される。
【００８５】
上記したように構造定義格納部２２に格納されている構造定義の各々についてステップＳ１以降の処理が実行されることによって、コミット間隔格納部２３には、当該構造定義毎のコミット間隔が設定（格納）される。
【００８６】
次に、図７のフローチャートを参照して、上述したコミット間隔算出部３１３によって実行されるコミット間隔算出処理（図６に示すステップＳ７の処理）の処理手順について説明する。
【００８７】
まず、コミット間隔算出部３１３は、図６に示すステップＳ１において読み出された構造定義において定義されている要素の各々についてステップＳ１１およびＳ１２の処理を実行する。ここでは、構造定義において定義されている要素のうち、ルート要素以外の要素の各々について処理が実行される。このステップＳ１１およびＳ１２の処理がルート要素以外の要素の各々について実行されることによって、当該要素毎の予想サイズが算出される。以下、このステップＳ１１およびＳ１２の処理の対象となる要素を対象要素と称する。
【００８８】
コミット間隔算出部３１３は、対象要素のタグ長を算出する（ステップＳ１１）。この場合、コミット間隔算出部３１３は、図６に示すステップＳ３において取得された対象要素を表す要素名（対象要素のタグ名）を用いて算出処理を実行する。
【００８９】
具体的には、対象要素のタグ長は、「当該対象要素を表す要素名の長さ（文字数）＊２＋５」で算出される。これは、ＸＭＬの場合における開始タグおよび終了タグのデータサイズ（例えば、「<Name>〜</Name>」）を示している。例えば対象要素を表す要素名が「Name」である場合、当該対象要素のタグ長は、「４（Nameの文字数）＊２（開始タグおよび終了タグ）＋５（“<”が２つ、“>”が２つ、“/”が１つ）」で１３となる。
【００９０】
次に、コミット間隔算出部３１３は、対象要素の予想サイズを算出する（ステップＳ１２）。対象要素の予想サイズは、「（平均サイズ＋タグ長）＊平均出現回数」によって算出される。なお、ここで用いられる平均サイズは、図６に示すステップＳ５において算出された対象要素の平均サイズである。また、タグ長は、上記したステップＳ１１において算出された対象要素のタグ長である。また、平均出現回数は、図６に示すステップＳ４において算出された対象要素の平均出現回数である。
【００９１】
上記したステップＳ１２の処理が実行されると、図６に示すステップＳ１において読み出された構造定義において定義されているルート要素以外の全ての要素についてステップＳ１１およびＳ１２の処理が実行されたか否かが判定される（ステップＳ１３）。
【００９２】
ルート要素以外の全ての要素について処理が実行されていないと判定された場合（ステップＳ１３のＮＯ）、上記したステップＳ１１に戻って処理が繰り返される。この場合、上記したステップＳ１１およびＳ１２の処理が実行されてない要素を対象要素として処理が実行される。
【００９３】
一方、ルート要素以外の全ての要素について処理が実行されたと判定された場合（ステップＳ１３のＹＥＳ）、コミット間隔算出部３１３は、図６に示すステップＳ１において読み出された構造定義において定義されている要素のうちのルート要素のタグ長を算出する（ステップＳ１４）。このルート要素のタグ長は、上記したステップＳ１１の処理と同様に、「ルート要素を表す要素名の長さ（文字数）＊２＋５」で算出される。なお、ルート要素を表す要素名は、図６に示すステップＳ２において取得される。
【００９４】
次に、コミット間隔算出部３１３は、図６に示すステップＳ１において読み出された構造定義に定義されているルート要素１つあたりの確率的なデータサイズ（以下、単にデータサイズと表記）を算出する（ステップＳ１５）。なお、コミット間隔算出部３１３によって算出されるデータサイズは、図６に示すステップＳ１において読み出された構造定義に定義されている構造を有する構造化データにおけるデータサイズ（予想サイズ）を表す。
【００９５】
この場合、コミット間隔算出部３１３は、上記したステップＳ１１およびＳ１２の処理が実行されることによって算出されたルート要素以外の要素毎の予想サイズおよびステップＳ１６において算出されたルート要素のタグ長に基づいて、データサイズを算出する。具体的には、コミット間隔算出部３１３は、ルート要素以外の要素毎の予想サイズおよびルート要素のタグ長の合計をデータサイズとして算出する。
【００９６】
コミット間隔算出部３１３は、予め定められたロールバック処理用の記憶領域（設定値）をステップＳ１７において算出されたデータサイズで除算する（ステップＳ１６）。これによって、コミット間隔算出部３１３は、コミット処理間登録数を算出する。ここで、コミット間隔算出部３１３によって算出されたコミット処理間登録数は、コミット処理間において図６に示すステップＳ１において読み出された構造定義によって定義されている構造を有する構造化データ（つまり、図６に示すステップＳ２において取得された構造識別子によって識別される構造を有する構造化データ）が構造化データベース４１に対して登録されるべき数である。ステップＳ１６の処理が実行されると、コミット間隔算出処理は終了される。
【００９７】
ここで、上述した図６に示すコミット間隔設定処理（および図７に示すコミット間隔算出処理）について具体的に説明する。
【００９８】
まず、構造定義解析部３１１は、構造定義格納部２２から構造定義を１つ読み出す。ここでは、上述した図３に示す構造定義１００が読み出されたものとする。
【００９９】
構造定義解析部３１１は、構造定義解析部３１１は、構造定義１００を解析することによって、当該構造定義１００に含まれる構造識別子およびルート要素を表す要素名を取得する。ここでは、構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」が取得される。なお、以下の説明では、要素名「Person」によって表される要素を単に「Person」要素と称する。「Person」要素以外の要素についても同様とする。
【０１００】
ここで、構造定義１００において定義されている要素のうち、「Person」要素（ルート要素）以外の要素は、「Name」要素、「Age」要素、「BirthDate」要素、「Blood」要素、「Lab」要素、「Active」要素および「Email」要素である。つまり、これらの要素の各々について、上述した図６に示すステップＳ３〜Ｓ５の処理が実行される。
【０１０１】
まず、例えば「Name」要素に対して図６に示すステップＳ３〜Ｓ５の処理が実行される場合について具体的に説明する。
【０１０２】
この場合、構造定義解析部３１１は、構造定義１００を解析することによって、「Name」要素を表す要素名である「Name」、当該「Name」要素の内容の長さおよび当該「Name」要素の繰り返し数を取得する。
【０１０３】
ここでは、上述した図３において説明したように「Name」要素の内容の長さは可変長であるため、当該「Name」要素の内容の長さとして、当該「Name」要素の内容の長さの最小値「０」および最大値「∞」が取得される。
【０１０４】
また、「Name」要素の繰り返し数として、当該「Name」要素の繰り返し数の最小値「１」および最大値「１」が取得される。
【０１０５】
次に、データ統計解析部３１２は、「Name」要素の平均出現回数を算出する。この場合、データ統計解析部３１２は、構造定義１００において定義されているルート要素である「Person」要素を含む構造化データを構造化データベース４１から検索する。また、データ統計解析部３１２は、「Name」要素を含む構造化データを構造化データベース４１から検索する。データ統計解析部３１２は、検索された構造化データに基づいて、「Person」要素を含む構造化データの数に対する「Name」要素を含む構造化データの割合を、当該「Name」要素の出現回数として算出する。
【０１０６】
ここで、「Name」要素の繰り返し数の最小値および最大値はともに１であるため、当該「Name」要素は、「Person」要素において１回出現する。したがって、この場合における「Name」要素の出現回数は、１となる。
【０１０７】
ここでは、ルート要素である「Person」要素を含む構造化データの数に対する「Name」要素を含む構造化データの割合を当該「Name」要素の出現回数として算出するものとして説明したが、上記した「Name」要素のように要素の繰り返し数の最小値および最大値がともに１である場合には、構造化データベース４１に対する検索処理を実行することなく、当該「Name」要素の出現回数を１としても構わない。
【０１０８】
また、データ統計解析部３１２は、「Name」要素の平均サイズを算出する。この場合、データ統計解析部３１２は、「Name」要素を含む構造化データを構造化データベース４１から検索する。データ統計解析部３１２は、検索された構造化データに含まれる「Name」要素の内容の長さ（文字数）の平均値を、当該「Name」要素の平均サイズとして算出する。
【０１０９】
次に、例えば「BirthDate」要素に対して図６に示すステップＳ３〜Ｓ５の処理が実行される場合について具体的に説明する。
【０１１０】
この場合、構造定義解析部３１１は、構造定義１００を解析することによって、「BirthDate」要素を表す要素名である「BirthDate」、当該「BirthDate」要素の内容の長さおよび当該「BirthDate」要素の繰り返し数を取得する。
【０１１１】
ここでは、上述した図３において説明したように「BirthDate」要素の内容の長さは固定長であるため、当該「BirthDate」要素の内容の長さとして、当該「BirthDate」要素の内容の長さの固定長「１９」が取得される。
【０１１２】
また、「BirthDate」要素の繰り返し数として、当該「BirthDate」要素の繰り返し数の最小値「０」および最大値「１」が取得される。
【０１１３】
次に、データ統計解析部３１２は、「BirthDate」要素の平均出現回数を算出する。この場合、データ統計解析部３１２は、構造定義１００において定義されているルート要素である「Person」要素を含む構造化データを構造化データベース４１から検索する。また、データ統計解析部３１２は、「BirthDate」要素を含む構造化データを構造化データベース４１から検索する。データ統計解析部３１２は、検索された構造化データに基づいて、「Person」要素を含む構造化データの数に対する「BirthDate」要素を含む構造化データの割合を、当該「BirthDate」要素の出現回数として算出する。
【０１１４】
また、データ統計解析部３１２は、「BirthDate」要素の平均サイズを算出する。この場合、データ統計解析部３１２は、「BirthDate」要素を含む構造化データを構造化データベース４１から検索し、当該検索された構造化データに含まれる「BirthDate」要素の内容の長さ（文字数）の平均値を、当該「BirthDate」要素の平均サイズとして算出する。
【０１１５】
ここで、上記したように「BirthDate」要素の内容の長さは固定長であるため、データ統計解析部３１２によって検索された構造化データに含まれる「BirthDate」要素の内容の長さは常に一定である。つまり、データ統計解析部３１２によって検索された構造化データに含まれる「BirthDate」要素の内容の長さの平均値は、当該「BirthDate」要素の内容の長さの固定長と同一である。
【０１１６】
したがって、上記した「BirthDate」要素のように要素の内容の長さが固定長である場合には、データ統計解析部３１２は、構造化データベース４１に対する検索処理を実行することなく、当該固定長（ここでは、１９）を「BirthDate」要素の平均サイズとしても構わない。
【０１１７】
ここでは、「Name」要素および「BirthDate」要素に対して図６に示すステップＳ３〜Ｓ５の処理が実行される場合について説明したが、他の要素についても同様であるため、その詳しい説明を省略する。
【０１１８】
上記した構造定義１００において定義されているルート要素である「Person」要素以外の全ての要素（「Name」要素、「Age」要素、「BirthDate」要素、「Blood」要素、「Lab」要素、「Active」要素および「Email」要素）について処理が実行されると、コミット間隔算出部３１３は、コミット間隔算出処理を実行する。
【０１１９】
このコミット間隔算出処理においては、まず、構造定義１００において定義されているルート要素である「Person」要素以外の要素毎の予想サイズが算出される。
【０１２０】
ここで、例えば「Name」要素の予想サイズが算出される場合について具体的に説明する。
【０１２１】
この場合、コミット間隔算出部３１３は、「Name」要素のタグ長を算出する。「Name」要素のタグ長は、「当該「Name」要素を表す要素名の長さ（文字数）＊２＋５」で算出される。ここで、「Name」要素を表す要素名（タグ名）は「Name」であり、その長さは４である。したがって、「Name」要素のタグ長は、４＊２＋５＝１３である。
【０１２２】
次に、コミット間隔算出部３１３は、「Name」要素の予想サイズを算出する。「Name」要素の予想サイズは、「（当該「Name」要素の平均サイズ＋タグ長）＊平均出現回数」によって算出される。ここで、「Name」要素の平均サイズが例えば８であり、当該「Name」要素のタグ長が１３であり、当該「Name」要素の平均出現回数が１である場合には、当該「Name」要素の予想サイズは２１となる。
【０１２３】
この「Name」要素と同様に、ルート要素以外の全ての要素について予想サイズが算出されると、コミット間隔算出部３１３は、構造定義１００において定義されている要素のうちのルート要素である「Person」要素のタグ長を算出する。この「Person」要素のタグ長は、「当該「Person」要素を表す要素名の長さ＊２＋５」で算出される。ここで、「Person」要素を表す要素名（タグ名）は「Person」であり、その長さは６である。したがって、「Person」要素のタグ長は、６＊２＋５＝１７である。
【０１２４】
次に、コミット間隔算出部３１３は、構造定義１００において定義されているルート要素（ここでは、「Person」要素）１つあたりの確率的なデータサイズ（以下、「Person」要素のデータサイズと表記）を算出する。
【０１２５】
この場合、コミット間隔算出部３１３は、構造定義１００において定義されているルート要素である「Person」要素以外の要素毎の予想サイズと当該ルート要素である「Person」要素のタグ長との合計を、「Person」要素のデータサイズとして算出する。
【０１２６】
ここで、図８を参照して、構造定義１００において定義されているルート要素である「Person」要素のデータサイズについて具体的に説明する。
【０１２７】
図８においては、構造定義１００において定義されているルート要素である「Person」要素以外の要素毎の平均出現回数、平均サイズ、タグ長および予想サイズが示されている。なお、上記したように予想サイズは、「（平均サイズ＋タグ長）＊平均出現回数」により算出される。
【０１２８】
図８を参照すると、例えば「Name」要素の平均出現回数は１、平均サイズは８、タグ長は１３である。この場合、「Name」要素の予想サイズは、（８＋１３）＊１＝２１である。
【０１２９】
図８を参照すると、「Age」要素の平均出現回数は０．２、平均サイズは２、タグ長は１１である。この場合、「Age」要素の予想サイズは、（２＋１１）＊０．２＝２．６である。
【０１３０】
図８を参照すると、「BirthDate」要素の平均出現回数は０．３、平均サイズは１９、タグ長は２３である。この場合、「BirthDate」要素の予想サイズは、（１９＋２３）＊０．３＝１２．６である。
【０１３１】
図８を参照すると、「Blood」要素の平均出現回数は１、平均サイズは１．１、タグ長は１５である。この場合、「Blood」要素の予想サイズは、（１．１＋１５）＊１＝１６．１である。
【０１３２】
図８を参照すると、「Lab」要素の平均出現回数は１、平均サイズは３、タグ長は１１である。この場合、「Lab」要素の予想サイズは、（３＋１１）＊１＝１４である。
【０１３３】
図８を参照すると、「Active」要素の平均出現回数は１、平均サイズは４．２、タグ長は１７である。この場合、「Active」要素の予想サイズは、（４．２＋１７）＊１＝２１．２である。
【０１３４】
また、図８を参照すると、「Email」要素の平均出現回数は２．８、平均サイズは２５．４、タグ長は１５である。この場合、「Email」要素の予想サイズは、（２５．４＋１５）＊２．８＝１１３．１２である。
【０１３５】
なお、図８に示すように、構造定義１００において定義されているルート要素である「Person」要素のタグ長は、１７である。
【０１３６】
ここで、構造定義１００において定義されているルート要素である「Person」要素１つあたりの確率的なデータサイズ（つまり、「Person」要素のデータサイズ）は、当該「Person」要素以外の要素の予想サイズと当該「Person」要素のタグ長との合計である。したがって、「Person」要素のデータサイズは、２１７．６２（byte）となる。
【０１３７】
次に、コミット間隔算出部３１３は、算出されたデータサイズサイズ（「Person」要素のデータサイズ）を用いてコミット処理間登録数を算出する。この場合、コミット間隔算出部３１３は、ロールバック処理用の記憶領域、例えばジャーナル／ロールバック領域の推奨使用領域（設定値）を「Person」要素のデータサイズで除算することによってコミット処理間登録数を算出する。なお、コミット間隔算出部３１３によって算出されるコミット処理間登録数は、コミット処理間において構造定義１００によって定義された構造を有する構造化データが構造化データベース４１に対して登録されるべき数である。
【０１３８】
ここで、コミット間隔算出部３１３によって算出された「Person」要素のデータサイズが２１７．６２であり、ジャーナル／ロールバック領域の最大値が５０ＭＢであり、そのうち推奨使用領域が１０％であるものとする。この場合、コミット間隔算出部３１３は、設定値である５０ＭＢの１０％を「Person」要素のデータサイズである２１７．６２で除算することによって、コミット処理間登録数（推奨コミット間隔）を算出する。具体的には、１ＭＢ＝１０２４ＫＢ＝１０２４Ｂ×１０２４Ｂであることから、５０×１０２４（Ｂ）×１０２４（Ｂ）×１０（％）÷２１７．６２（Ｂ）で算出できて、小数点以下を切り捨てると、結果は２４０９１となる。この結果によれば、最大で２４０９１件毎にコミット処理を実行することによって、最適かつ安全な処理を行うことが可能であると算出できる。
【０１３９】
このように算出されたコミット処理間登録数（を示すコミット間隔）は、構造定義１００に含まれる構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」に対応づけてコミット間隔格納部２３に格納される。
【０１４０】
なお、ここでは、構造定義格納部２２から図３に示す構造定義１００が読み出されたものとして説明したが、他の構造定義が読み出された場合についても同様であるため、その詳しい説明を省略する。
【０１４１】
次に、図９のフローチャートを参照して、コミット間隔自動制御部３２によって実行されるコミット間隔自動制御処理の処理手順について説明する。なお、コミット間隔自動制御処理は、例えば構造化データが構造化データベース４１に対して登録される（つまり、当該構造化データベース４１が更新される）際に実行されるコミット処理の間隔を制御する処理である。
【０１４２】
まず、コミット間隔自動制御部３２に含まれる構造定義判別部３２１は、例えばユーザによって指定された複数の構造化データを入力する（ステップＳ２１）。なお、構造定義判別部３２１によって入力される構造化データは、例えば構造化データベース４１に対して更新処理を実行するためのプログラム等から渡される。このプログラムは、コミット間隔自動制御装置３０と同一の装置内で実行されていてもよいし、異なる装置内で実行されていても構わない。
【０１４３】
構造定義判別部３２１によって入力される複数の構造化データは、例えば構造化データベース４１に対して登録される構造化データである。構造定義判別部３２１によって入力される複数の構造化データには、当該構造化データが有する構造を識別するための構造識別子および当該構造化データに含まれるルート要素を表す要素名が含まれる。なお、一括して構造化データベース４１に対して登録される複数の構造化データにおいては、構造識別子およびルート要素を表す要素名は共通しているものとする。
【０１４４】
次に、構造定義判別部３２１は、構造定義判別部３２１によって入力された複数の構造化データを解析することによって、当該構造化データに含まれる構造識別子およびルート要素を表す要素名を取得する（ステップＳ２２）。
【０１４５】
コミット実行部３２２は、構造定義判別部３２１によって取得された構造識別子およびルート要素を表す要素名（構造定義ルート要素）に対応づけてコミット間隔格納部２３に格納されているコミット間隔を取得する（ステップＳ２３）。
【０１４６】
次に、コミット実行部３２２は、構造定義判別部３２１によって入力された複数の構造化データのうちの例えば１つを構造化データベース４１に対して登録する。これによって、コミット実行部３２２は、構造化データベース４１を更新する処理（当該構造化データベース４１に対する更新処理）を実行する（ステップＳ２４）。この場合、コミット実行部３２２は、構造化データ管理装置４０に含まれる更新部４３を介して更新処理を実行する。
【０１４７】
コミット実行部３２２は、構造化データベース４１に対して登録された構造化データ（つまり、構造化データベース４１に対して更新処理された構造化データ）の数が、ステップＳ２３において取得されたコミット間隔によって示されるコミット処理間登録数（つまり、コミット間隔）に達したか否かを判定する（ステップＳ２５）。
【０１４８】
コミット処理間登録数に達したと判定された場合（ステップＳ２５のＹＥＳ）、コミット実行部３２２は、構造化データベース４１に対してコミット処理を実行する（ステップＳ２６）。この場合、コミット実行部３２２は、構造化データ管理装置４０に含まれるコミット部４４を介してコミット処理を実行する。
【０１４９】
一方、コミット処理間登録数に達していないと判定された場合（ステップＳ２５のＮＯ）、ステップＳ２６の処理は実行されない。
【０１５０】
コミット実行部３２２は、構造定義判別部３２１によって入力された複数の構造化データの全てについて処理が完了した（つまり、当該複数の構造化データの全てが構造化データベース４１に対して登録された）か否かを判定する（ステップＳ２７）。
【０１５１】
複数の構造化データの全てについて処理が完了していないと判定された場合（ステップＳ２７のＮＯ）、ステップＳ２４に戻って処理が繰り返される。
【０１５２】
一方、複数の構造化データの全てについて処理が完了したと判定された場合（ステップＳ２７のＹＥＳ）、コミット実行部３２２は、構造化データベース４１に対してコミット処理を実行する（ステップＳ２８）。この場合、コミット実行部３２２は、構造化データ管理装置４０に含まれるコミット部４４を介してコミット処理を実行する。
【０１５３】
上記したようにコミット間隔自動制御処理においては、複数の構造化データの各々が（順に）構造化データベース４１に対して登録され、当該登録された構造化データの数がコミット間隔（によって示されるコミット処理間登録数）に達した場合にコミット処理が実行される。
【０１５４】
なお、図９に示すコミット間隔自動制御処理においては、構造化データベース４１に対して登録された構造化データの数がコミット間隔によって示されるコミット処理間登録数に達した場合および複数の構造化データの全てについて処理が完了した場合にコミット処理が実行されるものとして説明したが、例えばステップＳ２６においてコミット処理が実行された後にステップＳ２７において複数の構造化データの全てについて処理が完了したと判定された場合には、ステップＳ２８の処理は省略されても構わない。
【０１５５】
ここで、上述した図４および図５を参照して、コミット間隔自動制御処理について具体的に説明する。
【０１５６】
まず、構造定義判別部３２１は、複数の構造化データを入力する。ここでは、図５に示す構造化データ２００を含む例えば１０万件の構造化データが入力されたものとする。
【０１５７】
この場合、構造定義判別部３２１は、例えば構造化データ２００を解析することによって、当該構造化データ２００に含まれる構造識別子およびルート要素を表す要素名を取得する。ここでは、構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」が取得される。
【０１５８】
コミット実行部３２２は、構造定義判別部３２１によって取得された構造識別子およびルート要素を表す要素名（構造定義ルート要素）に対応づけてコミット間隔格納部２３に格納されているコミット間隔を取得する。図４に示すコミット間隔格納部２３によれば、構造定義判別部３２１によって取得された構造識別子「http://xxx.example.org/person」およびルート要素を表す要素名「Person」に対応づけられているコミット間隔「２４０９１」が取得される。
【０１５９】
ここでは、構造定義判別部３２１によって取得された構造識別子およびルート要素を表す要素名（に対応づけられているコミット間隔）がコミット間隔格納部２３に存在するものとして説明したが、例えば当該構造識別子およびルート要素を表す要素名がコミット間隔格納部２３に存在しない場合には、予め定められているコミット間隔（デフォルト値）が取得される構成であっても構わない。
【０１６０】
また、コミット間隔格納部２３からコミット間隔が取得される際には、構造識別子を優先的な判断基準とする。つまり、構造定義判別部３２１によって取得されたルート要素を表す要素名がコミット間隔格納部２３に存在する場合（つまり、当該ルート要素を表す要素名が一致する場合）であっても、当該要素名（構造定義ルート要素）に対応づけられている構造識別子が当該構造定義判別部３２１によって取得された構造識別子と一致しない場合には、上記したデフォルト値が取得されるものとする。
【０１６１】
なお、構造定義判別部３２１によって入力された複数の構造化データに構造識別子が含まれておらず当該構造識別子が取得されない（つまり、構造識別子の指定がない）場合には、当該構造化データから取得されたルート要素を表す要素名（構造定義ルート要素）に対応づけてコミット間隔格納部２３に格納されているコミット間隔が取得されてもよい。
【０１６２】
以下、コミット実行部３２２によって取得されたコミット間隔（ここでは、コミット間隔「２４０９１」）に基づいて、コミット処理の間隔が制御される。具体的には、上記したように構造定義判別部３２１によって入力された構造化データ（入力データ）が１０万件あるものとすると、２４０９１件の構造化データが処理される（つまり、構造化データベース４１に対して登録される）毎にコミット処理が実行される。
【０１６３】
具体的には、登録しようとする総件数が１０万件で、コミット推奨間隔件数が２４０９１件とすると、１０万件÷２４０９１件＝４あまり３６３６件となる。従って、４回コミットするとともに、残り３６３６件の構造化データが処理された後に最後のコミット処理が実行される。つまり、このように２４０９１件毎にコミット処理が実行されると、１０万件から２４０９１件×４を引いた３６３６件の構造化データが最後に残るため、当該３６３６件の構造化データが処理された後に最後のコミット処理が実行されることになる。これによって、構造定義判別部３２１によって入力された１０万件の構造化データの処理（登録処理）が完了される。
【０１６４】
上記したように本実施形態においては、複数の構造化データを解析することによって当該構造化データに含まれる構造識別子（構造識別情報）が取得され、当該構造識別子に対応づけてコミット間隔格納部２３に格納されているコミット間隔が取得される。本実施形態においては、構造化データベース４１に対して登録された構造化データの数がコミット間隔によって示されるコミット処理間登録数に達したと判定された場合に、当該構造化データベースに対してコミット処理が実行される。
【０１６５】
これにより、本実施形態においては、構造化データが有する構造に応じて適切にコミット処理の間隔を制御することが可能となる。
【０１６６】
また、本実施形態においては、構造定義格納部２２に格納されている構造定義を解析することによって当該構造定義に含まれる構造識別子および要素名が取得され、当該要素名によって表される要素を含む構造化データが構造化データベース４１から検索される。本実施形態においては、取得された要素名および検索された構造化データに基づいて構造定義によって定義されている構造を有する構造化データにおけるデータサイズが算出され、当該データサイズに基づいてコミット間隔（構造化データがコミット処理間において構造化データベース４１に対して登録されるべき数）が算出される。
【０１６７】
つまり、本実施形態においては、構造化データベース４１に蓄積されている構造化データの統計量と構造定義（ＸＭＬスキーマ）をもとに、構造化データベース４１に登録され得るデータの確率的なサイズ（データサイズ）を静的に算出することができる。これにより、本実施形態においては、最適なコミット間隔を自動的に算出することができ、効率的なデータ管理を実現することができる。
【０１６８】
なお、本実施形態においては、構造化データベース４１に対して構造化データが登録される場合について主に説明したが、当該構造化データベース４１に対して構造化データが変更（更新）または削除されることによって当該構造化データベース４１が更新される場合についても同様である。
【０１６９】
また、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。  
【符号の説明】
【０１７０】
１０…コンピュータ、２０…外部記憶装置、２１…プログラム、２２…構造定義格納部、２３…コミット間隔格納部、３０…コミット間隔自動制御装置、３１…コミット間隔設定部、３２…コミット間隔自動制御部、４０…構造化データ管理装置、４１…構造化データベース、４２…検索部、４３…更新部、４４…コミット部、３１１…構造定義解析部、３１２…データ統計解析部、３１３…コミット間隔算出部、３２１…構造定義判別部、３２２…コミット実行部。
【図１】
2012058923.tif 000003
【図２】
2012058923.tif 000004
【図３】
2012058923.tif 000005
【図４】
2012058923.tif 000006
【図５】
2012058923.tif 000007
【図６】
2012058923.tif 000008
【図７】
2012058923.tif 000009
【図８】
2012058923.tif 000010
【図９】
2012058923.tif 000011