(57)【要約】【課題】複素の属性から成る複数のタプルデータをテーブルに格納する処理を、独立性を保証しつつ高速化すること。【解決手段】情報処理装置は、タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして保持する記憶部と、複数のタプルを当該複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割するとともに、分割後の複数の第２の処理の処理順序を決定する順序決定部と、決定した処理順序に従って複数の第２の処理をパイプライン方式で実行するパイプライン処理部と、を備えている。【選択図】図１
2015082293.tif 000002
【特許請求の範囲】
【請求項１】
タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして保持する記憶部と、
複数のタプルを前記複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割し、前記複数の第２の処理の処理順序を決定する順序決定部と、
前記処理順序に従って前記複数の第２の処理をパイプライン方式で実行するパイプライン処理部と、を備える、情報処理装置。
【請求項２】
前記パイプライン処理部は、前記複数の第２の処理をパイプライン方式で実行する複数のステージ実行部を備え、
前記順序決定部は、前記複数の第２の処理を前記処理順序に従って前記複数のステージ実行部に割り当てる、請求項１に記載の情報処理装置。
【請求項３】
前記複数のステージ実行部は、前記複数の第２の処理のうちの割り当てられた処理を、前記複数のタプルについて同一の順序で実行する、請求項２に記載の情報処理装置。
【請求項４】
前記複数のステージ実行部は、タプルを識別する識別子を保持するキューと、
前記キューからデキューした識別子が示すタプルに含まれる属性データを、前記複数のテーブルのうちの該当するテーブルに挿入するデータ処理部と、を有する、請求項３に記載の情報処理装置。
【請求項５】
前記データ処理部は、前記キューから識別子をデキューすると、デキューした識別子を後段のステージ実行部に設けられたキューにエンキューする、請求項４に記載の情報処理装置。
【請求項６】
前記記憶部は、前記複数のタプルのうちの最終段のステージ実行部が処理したタプルの個数を表すカウント値を保持する、請求項２ないし５のいずれか１項に記載の情報処理装置。
【請求項７】
前記最終段のステージ実行部に設けられたデータ処理部は、前記キューから識別子をデキューすると、デキューした識別子が示すタプルに含まれる属性データを前記複数のテーブルのうちの該当するテーブルに挿入し、前記記憶部が保持するカウント値を更新する、請求項６に記載の情報処理装置。
【請求項８】
情報処理装置が、タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして記憶部に保持する工程と、
複数のタプルを前記複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割する工程と、
前記複数の第２の処理の処理順序を決定する工程と、
前記処理順序に従って前記複数の第２の処理をパイプライン方式で実行する工程と、を含む、情報処理方法。
【請求項９】
前記複数の第２の処理をパイプライン方式で処理する複数のステージ実行部に対して、前記複数の第２の処理を前記処理順序に従って割り当てる工程を含む、請求項８に記載の情報処理方法。
【請求項１０】
情報処理装置が、タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして記憶部に保持する処理と、
複数のタプルを前記複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割する処理と、
前記複数の第２の処理の処理順序を決定する処理と、
前記処理順序に従って前記複数の第２の処理をパイプライン方式で実行する処理と、をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関し、特に、タプルを列指向データベースに格納する情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、位置情報などの時々刻々と変化する大量のデータに対して、リアルタイムに分析を行う技術が必要とされている。このため、データベースに対して、高速な参照性能に加えて、高速なデータの挿入性能が求められている。
【０００３】
高速な参照性能が求められる場合には、列指向データベースが用いられる。列指向データベースはデータを属性（カラム、列）毎に分割して保持しており、ＩＯ（Input/Output）効率が良く、高速に参照クエリを実行することができる（非特許文献１）。
【０００４】
関連技術として、特許文献１には、共有記憶装置上の共有データへの複数のシステムからのアクセスにおいて、それらのアクセスが１つのシステムに集中することを回避すると共に、ロック機構等の排他制御の必要性をなくした共有データ処理システムが記載されている。また、特許文献２には、ジョブを並列実行する複数のメモリ共用プロセッサと、データの一貫性を保証する手段とを備えた処理システムが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０８−２３５０４６号公報
【特許文献２】特表２００２−５３０７３８号公報
【非特許文献】
【０００６】
【非特許文献１】Stonebraker, Mike, et al., "C-Store: A Column-oriented DBMS," Proceedings of the 31st VLDB Conference, Trondheim, Norway (2005).
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者らによってなされたものである。
【０００８】
大量に発生するデータに対してリアルタイムにデータ分析を行うためには、高速にデータを格納することが求められる。そこで、マルチコアＣＰＵ（Central Processing Unit）や複数の計算機などの計算資源を活用することによって、データ格納処理を並列化し、処理時間を短くする技術が必要とされる。ただし、データ格納処理を並列化した場合においても、１件１件のデータは完全な形で取り出せるようにデータベースに格納されなければならない。この性質は、データベースのトランザクションが備えるべきＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）属性のうちの「独立性（Ｉ：Isolation）」と呼ばれる。
【０００９】
ここで、列指向データベースにおけるデータの管理方法について、具体例に基づいて説明する。まず、図１１、図１２を参照しつつ、表形式のデータについて説明する。図１１の表形式データは、３つの列（属性）、ＣｏｌＡ、ＣｏｌＢ、ＣｏｌＣを有している。また、図１１の表形式データは、３件以上のタプル（行）を有している。さらに、図１１の表形式データには、説明の便宜上、タプル（行）を一意に識別するためにタプル識別子（ＴＩＤ：Tuple Identifier）が設定されている。
【００１０】
列指向データベースでは、Ｎ列（Ｎ個の属性）から成るタプルをＭ（≦Ｎ）列毎に分割して管理する。図１２は、一例として、タプルを１列毎に分割して管理する場合を示す。列毎にデータをまとめて管理することで、異なる列に対するデータ操作を同時並列的に実行でき、マルチコアＣＰＵや複数の計算機などの計算資源を用いた処理性能の向上が可能となる。
【００１１】
図１１および図１２を参照して説明したようにデータを管理する列指向データベースにおいて、新たに２件のタプルデータとして、（タプル１）＝｛ＭＳ−０５，１９８１，３０００｝と（タプル２）＝｛ＭＳ−０９，１９８２，２０００｝を格納する場合に生じうる問題について説明する。
【００１２】
第１の方法として、タプル間の処理を排他制御する方法が考えられる。例えば、タプル１のデータ格納が完了した後、タプル２の格納を行う方法である。１件のタプルの格納処理は、３つのカラムの格納処理になる。
【００１３】
第１の方法において各列の処理を逐次的に行う場合、同時に実行される処理は列１つ分の格納処理となり、マルチコアＣＰＵや複数の計算機などの計算資源を用いた性能向上を図ることができなくなってしまう。
【００１４】
一方、第１の方法において列データを並列処理する場合にも、次の問題が生じる。タプル間の処理を排他制御し、タプル内のカラム間の処理を並列実行する場合の手順は以下のようになる。（１）ロックを取得する。（２）各列の処理を並列に実行する。（３）すべての列処理の終了を待つ。（４）ロックを開放する。このうち、（３）では処理の同期が行われ、計算コストが大きく、高い並列化効率を得ることが難しい。特に、列の格納処理をするプログラムが別のプロセスや計算機である場合、処理の同期のためのコストはさらに増大する。
【００１５】
以上のように、タプル間の処理を排他制御する第１の方法によると、マルチコアＣＰＵや複数の計算機などの計算資源を十分に用いた性能向上を図ることができないという問題がある。
【００１６】
第２の方法として、タプル間の排他制御を行うことなく、列間の処理を並列に行う方法が考えられる。しかしながら、第２の方法によると、各列でタプルデータの処理順に不整合が生じるおそれがある。例えば、ＣｏｌＡにはタプル１、タプル２の順にデータが格納され、ＣｏｌＢにはタプル２、タプル１の順にデータが格納されると、タプル１とタプル２の値が混合したタプルとして格納されることになり、データ処理の独立性を保障することができない。
【００１７】
なお、特許文献１、２に記載された技術によっても、上述の問題を解消することはできない。
【００１８】
そこで、複素の属性から成る複数のタプルデータをテーブルに格納する処理を、独立性を保証しつつ高速化することが要望される。本発明の目的は、かかる要望に寄与する情報処理装置、情報処理方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本発明の第１の視点に係る情報処理装置は、
タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして保持する記憶部と、
複数のタプルを前記複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割し、前記複数の第２の処理の処理順序を決定する順序決定部と、
前記処理順序に従って前記複数の第２の処理をパイプライン方式で実行するパイプライン処理部と、を備える。
【００２０】
本発明の第２の視点に係る情報処理方法は、
情報処理装置が、タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして記憶部に保持する工程と、
複数のタプルを前記複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割する工程と、
前記複数の第２の処理の処理順序を決定する工程と、
前記処理順序に従って前記複数の第２の処理をパイプライン方式で実行する工程と、を含む。
【００２１】
本発明の第３の視点に係るプログラムは、
情報処理装置が、タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして記憶部に保持する処理と、
複数のタプルを前記複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割する処理と、
前記複数の第２の処理の処理順序を決定する処理と、
前記処理順序に従って前記複数の第２の処理をパイプライン方式で実行する処理と、をコンピュータに実行させる。
なお、プログラムは、非一時的なコンピュータ可読記録媒体（non-transitory computer-readable storage medium）に記録されたプログラム製品として提供することができる。
【発明の効果】
【００２２】
本発明に係る情報処理装置、情報処理方法およびプログラムによると、複素の属性から成る複数のタプルデータをテーブルに格納する処理を、独立性を保証しつつ高速化することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】一実施形態に係る情報処理装置の構成を一例として示すブロック図である。
【図２】第１の実施形態に係る情報処理装置の構成を一例として示すブロック図である。
【図３】第１の実施形態における情報処理装置におけるパイプライン処理の準備動作を一例として示すフロー図である。
【図４】第１の実施形態における情報処理装置におけるステージ実行部の動作を一例として示すフロー図である。
【図５】第２の実施形態における情報処理装置の構成を一例として示すブロック図である。
【図６】第２の実施形態における情報処理装置におけるステージ実行部の動作を一例として示すフロー図である。
【図７】第２の実施形態における情報処理装置におけるデータ参照部の動作を一例として示すフロー図である。
【図８】第３の実施形態に係る情報処理装置のユーザインタフェースの構成を一例として示す図である。
【図９】第３の実施形態に係る情報処理装置の動作を一例として示すフロー図である。
【図１０】第４の実施形態における情報処理装置の構成を一例として示すブロック図である。
【図１１】データベースに格納されるテーブルの例を示す図である。
【図１２】属性（カラム、列）ごとにデータを記憶する例を説明するための図である。
【発明を実施するための形態】
【００２４】
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００２５】
図１は、一実施形態に係る情報処理装置１００の構成を一例として示すブロック図である。図１を参照すると、情報処理装置１００は、記憶部３０、順序決定部１０およびパイプライン処理部２０を備えている。記憶部３０は、タプルに含まれる複数の属性データを属性ごとに異なる複数のテーブルとして保持する（図１１および図１２参照）。順序決定部１０は、複数のタプルを複数のテーブルに挿入する第１の処理を、属性を単位として複数の第２の処理に分割し、分割後の複数の第２の処理の処理順序を決定する。パイプライン処理部２０は、決定された処理順序に従って複数の第２の処理をパイプライン方式で実行する。
【００２６】
図１１および図１２に示した例の場合、第１の処理は、ＴＩＤ＝１、２、３の３つのタプルを図１２に示す３つのテーブルに挿入する処理となる。また、複数の第２の処理は、属性「ＣｏｌＡ」の属性データ｛ＭＸ−３０、ＭＳ−０６、ＭＡ−１１｝を図１２の左側のテーブルに挿入する処理（「処理Ｐ」という。）と、属性「ＣｏｌＢ」の属性データ｛２０１０、１９９０、１９９０｝を図１２の中央のテーブルに挿入する処理（「処理Ｑ」という。）と、属性「ＣｏｌＣ」の属性データ｛３０００、２０００、１０００｝を図１２の右側のテーブルに挿入する処理（「処理Ｒ」という。）の３つの処理となる。ただし、本発明は１つの第２の処理に対して１つの属性を割り当てる場合に限定されず、１つの第２の処理に対して複数の属性を割り当てるようにしてもよい。
【００２７】
ここで、パイプライン処理部２０は、複数の第２の処理をパイプライン方式で実行する複数のステージ実行部２２Ｐ、２２Ｑ、…、２２Ｘを備え、順序決定部１０は、複数の第２の処理を、決定された処理順序に従って複数のステージ実行部２２Ｐ、２２Ｑ、…、２２Ｘに割り当てるようにしてもよい。ここで、複数のステージ実行部２２Ｐ、２２Ｑ、…、２２Ｘは、複数の第２の処理のうちの割り当てられた処理を、複数のタプルについて同一の順序で実行する。
【００２８】
図１１および図１２に示した例の場合、３つのステージ実行部２２Ｐ、２２Ｑ、２２Ｒを用いる。順序決定部１０は、一例として、処理Ｐ、処理Ｑ、処理Ｒを、それぞれ、ステージ実行部２２Ｐ、２２Ｑ、２２Ｒに割り当てるようにしてもよい。このとき、ステージ実行部２２Ｐ、２２Ｑ、２２Ｒは、それぞれ、割り当てられた処理Ｐ、処理Ｑ、処理Ｒを、複数のタプルについて同一の順序（例えば、ＴＩＤ＝１、２、３の順序）で実行する。なお、１つのステージ実行部に割り当てられる第２の処理の個数は１つに限定されず、１つのステージ実行部に対して複数の第２の処理を割り当てるようにしてもよい。
【００２９】
図２は、パイプライン処理部２０の詳細な構成を例示するブロック図である。図２を参照すると、ステージ実行部２２Ｐ、２２Ｑ、２２Ｒは、タプルを識別する識別子を保持するキュー２４Ｐ、２４Ｑ、２４Ｒと、キュー２４Ｐ、２４Ｑ、２４Ｒからデキューした識別子が示すタプルに含まれる属性データを、複数のテーブルのうちの該当するテーブルに挿入するデータ処理部２６Ｐ、２６Ｑ、２６Ｒと、を有することが好ましい。このとき、データ処理部２６Ｐ（２６Ｑ）は、キュー２４Ｐ（２４Ｑ）から識別子をデキューすると、デキューした識別子を後段のステージ実行部２２Ｑ（２２Ｒ）に設けられたキュー２４Ｑ（２４Ｒ）にエンキューする。
【００３０】
かかる情報処理装置によると、複素の属性から成る複数のタプルデータをテーブルに格納する処理を、独立性を保証しつつ高速化することが可能となる。
【００３１】
＜実施形態１＞
次に、第１の実施形態に係る情報処理装置について、図面を参照して詳細に説明する。本実施形態では、情報処理装置は、複数属性から成るタプルを属性毎にまとめて格納する。
【００３２】
図２は、本実施形態の情報処理装置１１０の構成を一例として示すブロック図である。図２を参照すると、情報処理装置１１０は、順序決定部１０、パイプライン処理部２０、および、記憶部３０を備えている。
【００３３】
パイプライン処理部２０は、複数のステージ実行部２２Ｐ、２２Ｑ、２２Ｒを備えている。ステージ実行部２２Ｐ、２２Ｑ、２２Ｒは、それぞれ、処理を格納するＦＩＦＯ（First In First Out）型のキュー２４Ｐ、２４Ｑ、２４Ｒと、データ処理部２６Ｐ、２６Ｑ、２６Ｒを備えている。
【００３４】
ステージ実行部２２Ｐのデータ処理部２６Ｐは、キュー２４Ｐから取り出した（デキューした）処理を実行し、次段のステージ実行部２２Ｑのキュー２４Ｑに処理を追加（エンキュー）する。同様に、ステージ実行部２２Ｑのデータ処理部２６Ｑは、キュー２４Ｑから取り出した処理を実行し、次段のステージ実行部２２Ｒのキュー２４Ｒに処理を追加する。
【００３５】
記憶部３０は、１列（属性）毎にデータをまとめて格納する。
【００３６】
なお、本実施形態では、記憶部３０は、１列毎にデータをまとめて管理するものとしたが、本発明はこれに限定されない。例えば、記憶部３０は、複数の列ごとにデータを管理するようにしてもよい。また、記憶部３０が保持するテーブル間で列の数が異なっていてもよい。さらに、本実施形態では、一例として、ステージ実行部２２Ｐ、２２Ｑ、２２Ｒの個数を３個としたが、本発明はこれに限定されない。
【００３７】
［動作］
図３および図４は、本実施形態に係る情報処理装置１１０（図２）の動作を一例として示すフロー図である。図２ないし図４を参照して、データが空の状態の情報処理装置１１０に、図１１に示す複数属性から成るタプルデータを格納する動作について説明する。図１１では、タプル識別子ＴＩＤ＝１、２、３までのタプルデータを示しているが、以下では、タプル識別子ＴＩＤ＝１、２、３、４を持つタプルを格納するものとする。タプルを格納でする際には、異なるタプル識別子のデータが混合されないようにし、処理の独立性を保つ必要がある。
【００３８】
＜パイプライン処理の準備＞
パイプライン処理の準備について、図３を参照して説明する。まず、順序決定部１０は、タプルデータの格納処理を複数のステージに分割する（ステップＡ１）。ここでは、一例として、３列から成るタプルの格納を、列毎に３つのステージに分割する場合を考える。各ステージにおける処理は、記憶部３０中の列毎のデータ領域に１つの列データを格納する処理となる。
【００３９】
次に、順序決定部１０は、ステージの実行順序を決定する（ステップＡ２）。ここでは、一例として、ステージの処理順を、ＣｏｌＡ、ＣｏｌＢ、ＣｏｌＣの順とする。
【００４０】
次に、順序決定部１０は、各ステージ処理をパイプライン処理部２０に設定する（ステップＡ３）。ここでは、３つのステージに対して、３つのステージ実行部２２Ｐ、２２Ｑ、２２Ｒを用意する。ステージ実行部２２Ｐ、２２Ｑ、２２Ｒは、それぞれ、ＣｏｌＡ、ＣｏｌＢ、ＣｏｌＣの格納処理を行う。各ステージ実行部での処理の終了後に次段の処理が行われるように、前段のデータ処理部は、次段のキューの情報の設定を行う。
【００４１】
＜タプルの格納処理＞
次に、実際にデータを格納する様子について、図２および図４を参照して説明する。まず、処理の識別子がステージ実行部２２Ｐのキュー２４Ｐに格納される（ステップＢ１）。この場合の、処理の識別子は、ＣｏｌＡの格納処理であることと、処理対象のタプルデータを特定するものである。本実施形態では、処理の識別子として、格納対象タプルの識別子であるＴＩＤを用いるものとし、ＴＩＤの小さい順に格納されるものとする。なお、本実施形態におけるタプルの格納順序は例示に過ぎず、本発明はこれに限定されない。
【００４２】
ステージ実行部２２Ｐ、２２Ｑ、２２Ｒは、それぞれ、図４のフロー図に従って動作する。ステージ実行部２２Ｐのデータ処理部２６Ｐは、キュー２４ＰからＴＩＤ＝１を取り出し（ステップＢ２）、次段のステージ実行部２２Ｑのキュー２４Ｑに格納する（ステップＢ３）。次に、データ処理部２６Ｐは、ＴＩＤ＝１のタプルのＣｏｌＡのデータ「ＭＸ−３０」を記憶部３０中のＣｏｌＡの領域３２Ｐに格納する（ステップＢ４）。
【００４３】
なお、図４のステップＢ３とステップＢ４の実行順序は、逆であってもよい。
【００４４】
次に、ステージ実行部２２Ｐのデータ処理部２６Ｐは、ＴＩＤ＝２のタプルデータに対しての格納処理を開始する。ステージ実行部２２ＰのＴＩＤ＝２のタプルデータの処理開始に平行して、ステージ実行部２２Ｑのデータ処理部２６Ｑは、キュー２４ＱからＴＩＤ＝１を取り出し（ステップＢ２）、ＴＩＤ＝１を次段のステージ実行部２２Ｒのキュー２４Ｒに格納する（ステップＢ３）。次に、データ処理部２６Ｑは、ＴＩＤ＝１のタプルのＣｏｌＢのデータ「２０１０」を記憶部３０中のＣｏｌＢの領域３２Ｑに格納する（ステップＢ４）。
【００４５】
同様の処理が、ステージ実行部２２Ｒでも行われ、各カラムの格納処理が同時並列的に行われる。
【００４６】
図２は、上記の処理がステージ実行部２２ＰにおいてＴＩＤ＝３まで終了した状態を示す。図２示した状態において、データ処理部２６Ｐ、２６Ｑ、２６Ｒは、それぞれ、ＴＩＤ＝４、３、２の処理を実行することになる。したがって、複数のタプルの挿入処理が、パイプライン処理部により並列処理可能となる。
【００４７】
また、各カラムに対する処理は、最初のキュー２４Ｐに投入された順序が保持されることになるため、処理の独立性を保つことが可能となる。
【００４８】
以上より、本実施形態の情報処理装置１１０によると、複数属性から成るデータを、１つ以上の属性毎に分割格納する際、データの完全性を損なうことなく、並列処理することを可能にし、データ格納処理を高速化することが可能となる。
【００４９】
＜実施形態２＞
次に、第２の実施形態に係る情報処理装置について、図面を参照して説明する。本実施形態においても、情報処理装置は、複数属性から成るタプルを属性毎にまとめて格納する。
【００５０】
図５は、本実施形態の情報処理装置１２０の構成を一例として示すブロック図である。図５を参照すると、情報処理装置１２０は、格納処理終了済みのタプルを処理対象とするデータ参照部４０をさらに備え、記憶部３０は格納処理が終了したタプルのＴＩＤを保持する領域３４を有する点において、第１の実施形態の情報処理装置１１０（図２）と相違する。
【００５１】
［動作］
図６および図７は、本実施形態の情報処理装置１２０の動作を一例として示すフロー図である。図５ないし図７を参照して、データが空の状態の情報処理装置１２０に、図１１に示す複数属性から成るタプルデータを格納する動作について説明する。図１１にはタプル識別子ＴＩＤ＝１、２、３までのタプルデータを示している。以下では、タプル識別子ＴＩＤ＝１、２、３、４を持つタプルを格納するものとする。タプル格納では、異なるタプル識別子のデータが混合されないようにし、処理の独立性を保つ必要がある。
【００５２】
＜パイプライン処理の準備＞
パイプライン処理の準備については、第１の実施形態に係る情報処理装置１１０と同様であることから、説明を省略する。
【００５３】
＜タプルの格納処理＞
実際にデータを格納する動作について、図６を参照して説明する。まず、処理の識別子がステージ実行部２２Ｐのキュー２４Ｐに格納される（ステップＣ１）。この場合の処理の識別子は、ＣｏｌＡの格納処理であることと、処理対象のタプルデータを特定するものである。本実施形態では、処理の識別子として、格納対象タプルの識別子であるＴＩＤを用いることとし、ＴＩＤは小さい順に格納されるものとする。なお、本実施形態におけるタプルの格納順序は例示に過ぎず、本発明はこれに限定されない。
【００５４】
ステージ実行部２２Ｐ、２２Ｑ、２２Ｒは、それぞれ、図６のフロー図に従って動作する。ステージ実行部２２Ｐのデータ処理部２６Ｐは、キュー２４ＰからＴＩＤ＝１を取り出し（ステップＣ２）、データ処理部２６Ｐは、ＴＩＤ＝１のタプルのＣｏｌＡのデータ「ＭＸ−３０」を記憶部３０中のＣｏｌＡの領域３２Ｐに格納する（ステップＣ３）。
【００５５】
次に、データ処理部２６Ｐは、最後のステージでないため（ステップＣ４のＮｏ）、ＴＩＤ＝１を次段のステージ実行部２２Ｑのキュー２４Ｑに格納する（ステップＣ５）。次に、ステージ実行部２２Ｐのデータ処理部２６Ｐは、ＴＩＤ＝２のタプルデータに対する格納処理を開始する。
【００５６】
ステージ実行部２２ＰのＴＩＤ＝２のタプルデータ処理の開始に平行して、ステージ実行部２２Ｑのデータ処理部２６Ｑは、キュー２４ＱからＴＩＤ＝１を取り出し（ステップＣ２）、ＴＩＤ＝１のタプルのＣｏｌＢのデータ「２０１０」を記憶部３０中のＣｏｌＢの領域３２Ｑに格納する（ステップＣ３）。
【００５７】
次に、データ処理部２６Ｑは、最後のステージではないため（ステップＣ４のＮｏ）、ＴＩＤ＝１を次段のステージ実行部２２Ｒのキュー２４Ｒに格納する（ステップＣ５）。
【００５８】
同様に、ステージ実行部２２ＱのＴＩＤ＝２のタプルデータの開始に平行して、ステージ実行部２２Ｒのデータ処理部２６Ｒは、キュー２４ＲからＴＩＤ＝１を取り出し（ステップＣ２）、ＴＩＤ＝１のタプルのＣｏｌＣのデータ「３０００」を記憶部３０中のＣｏｌＣの領域３２Ｒに格納する（ステップＣ３）。
【００５９】
次に、データ処理部２６Ｒはタプルデータを処理する最後のステージであるため（ステップＣ４のＹｅｓ）、記憶部３０中のＭａｘＴＩＤを格納する領域３４のＭａｘＴＩＤの値を更新（例えば、インクリメント）する。（ステップＣ６）。
【００６０】
図５は、上記の処理がステージ実行部２２ＰにおいてＴＩＤ＝３まで終了した状態を示している。
【００６１】
本実施形態の情報処理装置１２０によると、第１の実施形態の情報処理装置１１０と同様に、タプル処理の独立性を確保しつつ、並列にタプルの格納処理を行うことが可能となる。さらに、本実施形態によると、記憶部３０中のＭａｘＴＩＤの値を参照することにより、タプル挿入処理が終了したタプルのＴＩＤを把握することが可能となる。
【００６２】
本実施形態では、図１１の入力データに付与したＴＩＤが図５の格納後のＴＩＤと等しい場合について説明したが、本発明はかかる場合に限定されない。格納後のＴＩＤは、パイプライン処理部への入力順に付けられる連続するタプル管理識別子であればよく、ＭａｘＴＩＤは、現在格納済みのタプル管理識別子であればよい。
【００６３】
＜タプルの参照処理＞
次に、図５の状態において、データを参照する処理について、図７を参照して説明する。ここでは、参照処理の一例として、ＣｏｌＢの値が２０１３以下であるタプルの属性「ＣｏｌＡ」の値を取得する処理を考える。
【００６４】
まず、データ参照部４０は、記憶部３０中のＭａｘＴＩＤの値を格納する領域３４を参照し、当該領域に格納された値を取得する（ステップＤ１）。ここでは、データ参照部４０は、ＭａｘＴＩＤ＝１を取得する。
【００６５】
次に、データ参照部４０は、ＴＩＤ≦１の範囲で、ＣｏｌＢの値が２０１３以下であるタプルを検索する（ステップＤ２）。ここでは、結果として、ＴＩＤ＝｛１｝が取得される。データ参照部４０は、ＴＩＤ＝｛１｝のＣｏｌＡの値「ＭＸ−３０」を結果として返却する。
【００６６】
本実施形態の情報処理装置１２０では、上記のようにＭａｘＴＩＤを用いて参照処理を行うことによって、参照処理開始時点で格納処理が終了しているタプルに対してのみ、参照処理を行うことが可能となる。
【００６７】
＜実施形態３＞
次に、第３の実施形態に係る情報処理装置について、図面を参照して説明する。
【００６８】
本実施形態の情報処理装置は、第１の実施形態の情報処理装置１１０（図２）、または、第２の実施形態の情報処理装置１２０（図５）において、さらに、図８に示すユーザインタフェース５０を備えている。情報処理装置のユーザは、ユーザインタフェース５０を介して、順序決定部１０の動作内容を規定するパラメータを設定する。順序決定部１０は、ユーザがユーザインタフェース５０に入力した情報に基づいて、図３のステップＡ１、Ａ２の処理内容を決定する。
【００６９】
図８を参照すると、ユーザインタフェース５０は、テーブルを指定する領域５２とステージ数（すなわち、複数のタプルをテーブルに挿入する処理の列方向についての分割数）を入力する領域５４と、各ステージを示す領域５６Ｐ、５６Ｑ、５６Ｒと各ステージが担当するカラムを選択する領域５８Ｐ、５８Ｑ、５８Ｒを備える。
【００７０】
図８のユーザインタフェース５０の動作を、図９のフロー図を参照して説明する。まず、ユーザはテーブル指定領域５２にテーブル名を入力する。なお、ユーザは提示されたテーブル名から処理対象のテーブル名を選択するようにしてもよい。順序決定部１０は、領域５２に入力されたテーブル名に応じて、対象テーブルを取得する（ステップＥ１）。
【００７１】
次に、ユーザは、ステージ数を入力する領域５４にステージ数を入力する。順序決定部１０は、領域５４に入力されたステージ数を取得する（ステップＥ２）。
【００７２】
次に、ユーザインタフェース５０は、領域５４に入力されたステージ数分のカラム選択領域５６Ｐ、５６Ｑ、５６Ｒを表示する（ステップＥ３）。図８に示した例は、ユーザは、カラムＡ〜Ｅから成るテーブルＸの挿入処理を３ステージのパイプラインで実行するよう入力した場合を示す。ユーザインタフェース５０には、３つのステージを示す領域５６Ｐ、５６Ｑ、５６Ｒの中に、テーブルＸのカラムＡ〜Ｅを表示する領域５８Ｐ、５８Ｑ、５８Ｒが表示される。
【００７３】
ユーザは、各ステージの担当するカラムを選択する領域５８Ｐ、５８Ｑ、５８Ｒに対して、各ステージが担当するカラムにチェックを入れる。図８は、ユーザが、ステージ１としてカラムＡとカラムＣの処理を行い、ステージ２としてカラムＢの処理を行い、ステージ３としてカラムＤとカラムＥの処理を行うよう入力した場合を示す。順序決定部１０は、ユーザの入力に基づいて、各ステージの処理内容を取得する（ステップＥ４）。
【００７４】
本実施形態の情報処理装置では、図８に示すユーザインタフェース５０を設けたことにより、ユーザが各ステージにおける処理内容を個別に設定することが可能となる。
【００７５】
＜実施形態４＞
次に、第４の実施形態に係る情報処理装置について、図面を参照して説明する。
【００７６】
図１０は、本実施形態の情報処理装置１４０の構成を一例として示すブロック図である。図１０を参照すると、情報処理装置１４０は、計算機６０Ｐ、６０Ｑ、６０Ｒ、および、記憶部７０を備えている。また、計算機６０Ｐは、順序決定部１０およびステージ実行部２２Ｐを備えている。さらに、計算機６０Ｑ、６０Ｒは、それぞれ、ステージ実行部２２Ｑ、２２Ｒを備えている。また、記憶部７０は、記憶ノード７２Ｐ、７２Ｑ、７２Ｒを備えている。
【００７７】
すなわち、本実施形態の情報処理装置１４０は、第１の実施形態の情報処理装置１１０（図２）のパイプライン処理部２０に含まれるステージ実行部２２Ｐ、２２Ｑ、２２Ｒを、それぞれ、計算機６０Ｐ、６０Ｑ，６０Ｒに分散して配置した構成を有する。さらに、情報処理装置１４０は、図２に示した領域３２Ｐ、３２Ｑ、３２Ｒのテーブルをそれぞれ保持する記憶ノード７２Ｐ、７２Ｑ、７２Ｒを備えている。
【００７８】
本実施形態におけるステージ実行部２２Ｐ、２２Ｑ、２２Ｒの詳細構成、ならびに、順序決定部１０およびステージ実行部２２Ｐ、２２Ｑ、２２Ｒの動作は、第１の実施形態の情報処理装置（図２ないし図４）と同様であるため、説明を省略する。
【００７９】
本実施形態の情報処理装置１４０によると、複素の列（属性）から成る複数のタプルデータをデータベースに格納する処理を、複数の計算機と複数の記憶ノードを用いて、独立性を保証しつつ高速化することが可能となる。
【００８０】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成および詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。例えば、パイプライン処理部の各ステージ実行部、記憶部は１つの計算機内に設ける必要はなく、仮想的および物理的に複数の計算機に分散されていてもよい。また、第２の実施形態において、ＭａｘＴＩＤの値は、順序決定部１０によって決定されたカラム格納処理の順序において最後のカラムの処理済みＴＩＤと等しい。したがって、記憶部３０にＭａｘＴＩＤ用の領域３４を設ける代わりに、データ参照部４０は当該最後のカラムのＴＩＤの値を直接参照するようにしてもよい。
【００８１】
なお、本発明において、下記の形態が可能である。
［形態１］
上記第１の視点に係る情報処理装置のとおりである。
［形態２］
前記パイプライン処理部は、前記複数の第２の処理をパイプライン方式で実行する複数のステージ実行部を備え、
前記順序決定部は、前記複数の第２の処理を前記処理順序に従って前記複数のステージ実行部に割り当てる、形態１に記載の情報処理装置。
［形態３］
前記複数のステージ実行部は、前記複数の第２の処理のうちの割り当てられた処理を、前記複数のタプルについて同一の順序で実行する、形態２に記載の情報処理装置。
［形態４］
前記複数のステージ実行部は、タプルを識別する識別子を保持するキューと、
前記キューからデキューした識別子が示すタプルに含まれる属性データを、前記複数のテーブルのうちの該当するテーブルに挿入するデータ処理部と、を有する、形態３に記載の情報処理装置。
［形態５］
前記データ処理部は、前記キューから識別子をデキューすると、デキューした識別子を後段のステージ実行部に設けられたキューにエンキューする、形態４に記載の情報処理装置。
［形態６］
前記記憶部は、前記複数のタプルのうちの最終段のステージ実行部が処理したタプルの個数を表すカウント値を保持する、形態２ないし５のいずれか１項に記載の情報処理装置。
［形態７］
前記最終段のステージ実行部に設けられたデータ処理部は、前記キューから識別子をデキューすると、デキューした識別子が示すタプルに含まれる属性データを前記複数のテーブルのうちの該当するテーブルに挿入し、前記記憶部が保持するカウント値を更新する、形態６に記載の情報処理装置。
［形態８］
前記順序決定部は、前記第１の処理の分割数を受け付け、受け付けた分割数に応じて前記第１の処理を前記複数の第２の処理に分割する、形態１ないし７のいずれか１項に記載の情報処理装置。
［形態９］
前記順序決定部は、前記複数のタプルに含まれる複数の属性の前記複数の第２の処理への割当てを受け付け、受け付けた割当てに応じて前記複数の属性を前記複数の第２の処理に割り当てる、形態８に記載の情報処理装置。
［形態１０］
上記第２の視点に係る情報処理方法のとおりである。
［形態１１］
前記複数の第２の処理をパイプライン方式で処理する複数のステージ実行部に対して、前記複数の第２の処理を前記処理順序に従って割り当てる工程を含む、形態１０に記載の情報処理方法。
［形態１２］
前記複数のステージ実行部は、前記複数の第２の処理のうちの割り当てられた処理を、前記複数のタプルについて同一の順序で実行する、形態１１に記載の情報処理方法。
［形態１３］
前記複数のステージ実行部が、タプルを識別する識別子をキューに保持する工程と、
前記キューからデキューした識別子が示すタプルに含まれる属性データを、前記複数のテーブルのうちの該当するテーブルに挿入する工程と、を含む、形態１２に記載の情報処理方法。
［形態１４］
前記複数のステージ実行部は、前記キューから識別子をデキューすると、デキューした識別子を後段のステージ実行部に設けられたキューにエンキューする、形態１３に記載の情報処理方法。
［形態１５］
前記記憶部が、前記複数のタプルのうちの最終段のステージ実行部が処理したタプルの個数を表すカウント値を保持する工程を含む、形態１１ないし１４のいずれか１項に記載の情報処理方法。
［形態１６］
前記最終段のステージ実行部は、前記キューから識別子をデキューすると、デキューした識別子が示すタプルに含まれる属性データを前記複数のテーブルのうちの該当するテーブルに挿入し、前記記憶部が保持するカウント値を更新する、形態１５に記載の情報処理方法。
［形態１７］
上記第３の視点に係るプログラムのとおりである。
［形態１８］
前記複数の第２の処理をパイプライン方式で実行する複数のステージ実行部に対して、前記複数の第２の処理を前記処理順序に従って割り当てる処理を、前記コンピュータに実行させる、形態１７に記載のプログラム。
［形態１９］
前記複数の第２の処理のうちの割り当てられた処理を、前記複数のタプルについて同一の順序で実行する処理を、前記複数のステージ実行部に実行させる、形態１８に記載のプログラム。
［形態２０］
タプルを識別する識別子をキューに保持する処理と、
前記キューからデキューした識別子が示すタプルに含まれる属性データを、前記複数のテーブルのうちの該当するテーブルに挿入する処理と、を前記複数のステージ実行部に実行させる、形態１９に記載のプログラム。
［形態２１］
前記キューから識別子をデキューすると、デキューした識別子を後段のステージ実行部に設けられたキューにエンキューする処理を、前記複数のステージ実行部に実行させる、形態２０に記載のプログラム。
【００８２】
なお、上記特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００８３】
１０    順序決定部
２０    パイプライン処理部
２２Ｐ、２２Ｑ、２２Ｒ、…、２２Ｘ    ステージ実行部
２４Ｐ、２４Ｑ、２４Ｒ    キュー
２６Ｐ、２６Ｑ、２６Ｒ    データ処理部
３０、７０    記憶部
３２Ｐ、３２Ｑ、３２Ｒ、３４    領域
４０    データ参照部
５０    ユーザインタフェース
６０Ｐ、６０Ｑ、６０Ｒ    計算機
７２Ｐ、７２Ｑ、７２Ｒ    記憶ノード
５２、５４、５６Ｐ、５６Ｑ、５６Ｒ、５８Ｐ、５８Ｑ、５８Ｒ    領域
１００、１１０、１２０、１４０    情報処理装置
【図１】
2015082293.tif 000003
【図２】
2015082293.tif 000004
【図３】
2015082293.tif 000005
【図４】
2015082293.tif 000006
【図５】
2015082293.tif 000007
【図６】
2015082293.tif 000008
【図７】
2015082293.tif 000009
【図８】
2015082293.tif 000010
【図９】
2015082293.tif 000011
【図１０】
2015082293.tif 000012
【図１１】
2015082293.tif 000013
【図１２】
2015082293.tif 000014