(57)【要約】  より少ない容量で、より簡単なデータベース管理を行う、演算システムを実現する。  演算システムは、並列演算を実行する並列演算装置と、前記並列演算に用いるデータを格納するデータベースを管理するデータベース管理装置と、を備え、前記データベース管理装置は、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する抽出手段と、を備え、前記並列演算装置は、前記データベース管理装置の前記抽出手段によって抽出された列指向型のデータを格納するベクトルレジスタと、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する並列演算手段と、を備える。
2015105043.tif 000002
【特許請求の範囲】
【請求項１】
並列演算を実行する並列演算装置と、
前記並列演算に用いるデータを格納するデータベースを管理するデータベース管理装置と、を備え、
前記データベース管理装置は、
前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、
前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する抽出手段と、を備え、
前記並列演算装置は、
前記データベース管理装置の前記抽出手段によって抽出された列指向型のデータを格納するベクトルレジスタと、
前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する並列演算手段と、を備えることを特徴とする演算システム。
【請求項２】
前記列指向型キャッシュは、前記データベースに含まれるレコードの夫々の物理位置を示す位置識別子をインデックスとして含んでおり、
前記データベース管理装置は、前記データベースに更新がある場合に、更新されたデータに対応する、前記列指向型キャッシュのデータを更新するためのキャッシュ制御手段を更に備え、
前記キャッシュ制御手段は、前記インデックスを用いて、前記データベース内の更新されたデータに対応する、キャッシュされたデータを検索することを特徴とする請求項１に記載の演算システム。
【請求項３】
前記抽出手段は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリのうち、前記並列演算に用いるデータを前記列指向型キャッシュから抽出するためのクエリを実行する、ことを特徴とする請求項１または２に記載の演算システム。
【請求項４】
前記データベース管理装置は、更新系のクエリを、前記データベースを用いて実行するクエリ実行手段を更に備え、
前記抽出手段は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリのうち、前記更新系のクエリか否かを確認し、更新系のクエリである場合、前記クエリを前記クエリ実行手段に供給する、ことを特徴とする請求項３に記載の演算システム。
【請求項５】
前記データベース管理装置は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリに基づいて、前記クエリを前記データベース管理装置で最適に実行するためのクエリ実行計画を作成する最適化手段を更に備えることを特徴とする請求項３または４に記載の演算システム。
【請求項６】
前記データベース管理装置に接続された外部記憶装置を更に備え、
前記データベースの所定の列のデータは、列指向型で、前記列指向型キャッシュと、前記外部記憶装置とにキャッシュされる、ことを特徴とする請求項１から５の何れか１項に記載の演算システム。
【請求項７】
並列演算に用いるデータを格納するデータベースを記憶する記憶手段と、
前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、
前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する抽出手段と、
前記抽出手段によって抽出された列指向型のデータを格納するベクトルレジスタと、
前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する並列演算手段と、を備えることを特徴とするデータベース管理装置。
【請求項８】
前記列指向型キャッシュは、前記データベースに含まれるレコードの夫々の物理位置を示す位置識別子をインデックスとして含んでおり、
前記データベースに更新がある場合に、更新されたデータに対応する、キャッシュされたデータを更新するためのキャッシュ制御手段を更に備え、
前記キャッシュ制御手段は、前記インデックスを用いて、前記データベース内の更新されたデータに対応する、キャッシュされたデータを検索することを特徴とする請求項７に記載のデータベース管理装置。
【請求項９】
並列演算を実行する並列演算装置と、前記並列演算に用いるデータを格納するデータベースを管理するデータベース管理装置と、を備えた演算システムの演算方法であって、
前記データベース管理装置は、前記データベースの所定の列のデータを列指向型でキャッシュし、
前記キャッシュされた列指向型のデータから、前記並列演算に用いるデータを抽出し、
前記並列演算装置は、前記抽出された列指向型のデータをベクトルレジスタに格納し、
前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する、ことを特徴とする演算方法。
【請求項１０】
並列演算に用いるデータを格納するデータベースを記憶する記憶手段と、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、を備えたデータベース管理装置の演算方法であって、
前記列指向型キャッシュから、前記並列演算に用いるデータを抽出し、
前記抽出された列指向型のデータをベクトルレジスタに格納し、
前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する、ことを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算システム、データベース管理装置および演算方法に関する。
【背景技術】
【０００２】
関係データベース（ＲＤＢ：Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）を管理するシステムで用いられるデータベースは、一般的に、ひとつの行を構成する列データをひとまとまりのデータとして扱う行指向型データベースである。これに対し、列方向のデータをひとまとまりのデータとして扱う列指向型データベースも用いられている。また、データベースのデータをキャッシュして用いる方法が知られている。【０００３】
例えば、特許文献１には、行フォーマットでデータベース情報を記憶するリレーショナルデータベース管理システムコンポーネントと、列フォーマットでデータベース情報を記憶する列指向性データ処理コンポーネントとを有するシステムが記載されている。【０００４】
また、特許文献２には、複数のデータベースの列情報をキャッシュファイルにキャッシュする複合データベース検索システムが記載されている。【０００５】
また、特許文献３には、データベースのデータがキャッシュされていれば、キャッシュからデータを読み出し、キャッシュされていなければ、データをデータベースから取り出すシステムが記載されている。また、特許文献３の技術では、上記キャッシュはマップを用いて管理されており、データベースに変更があったとき、キャッシュの解放またはマップの更新が行われることが記載されている。【０００６】
また、バックエンドデータストアとクライアントとの間にデータ形式を抽象化するコンテンツアダプタを備え、アクセス特有のバックエンドデータベースを読出し側アプリケーションから独立させるシステムが特許文献４に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１０−５３９６１６号公報
【特許文献２】特開２００６−９２４０９号公報
【特許文献３】特開２００９−２６５８４０号公報
【特許文献４】特表２００５−５３５９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一般的に、関係データベースの列のうち、検索や結合の条件としてよく使用されるものには、検索の性能を向上させるために、インデックスが定義されていることが多い。また、例えば、行指向型データベース（関係データベース）と列指向型データベースまたは列指向型データのキャッシュとを用いたシステムでは、双方のデータベースの検索性能を向上させるために、インデックスが定義されている場合が多い。【０００９】
しかしながら、インデックスを定義することにより、データの挿入、削除、更新が遅くなるため、インデックスの定義には考慮が必要であり、その管理には手間がかかってしまう。また、関係データベースにインデックスを定義すると、そのインデックスの分、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の容量を消費してしまう。【００１０】
特許文献１のシステムでは、データベースがインデックスを用いて管理されているため、データベースの管理に手間がかかり、インデックスの分、ＲＡＭの容量を消費してしまう。【００１１】
また、特許文献２のシステムでは、外部記憶装置内にインデックスファイルが作成されているため、インデックスファイルの分、外部記憶装置の容量を消費してしまう。【００１２】
また、特許文献３および４の技術では、インデックスの管理について特に言及されていない。【００１３】
そのため、上述した特許文献１〜４に記載の技術を用いて、並列演算処理に関係データベースと列指向型キャッシュとを使用した演算システムの場合、キャッシュされた列指向型データのマスタであるデータベースのデータには、インデックスが作成される。したがって、特許文献１〜４の技術では、データベースの管理に手間がかかり、更にＲＡＭの容量を消費してしまうという問題があった。【００１４】
本発明は上記問題に鑑みてなされたものであり、その目的は、より少ない容量で、より簡単なデータベース管理を行う、演算システムを実現することにある。
【課題を解決するための手段】
【００１５】
本発明の一態様に係る演算システムは、並列演算を実行する並列演算装置と、前記並列演算に用いるデータを格納するデータベースを管理するデータベース管理装置と、を備え、前記データベース管理装置は、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する抽出手段と、を備え、前記並列演算装置は、前記データベース管理装置の前記抽出手段によって抽出された列指向型のデータを格納するベクトルレジスタと、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する並列演算手段と、を備える。【００１６】
本発明の一態様に係るデータベース管理装置は、並列演算に用いるデータを格納するデータベースを記憶する記憶手段と、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する抽出手段と、前記抽出手段によって抽出された列指向型のデータを格納するベクトルレジスタと、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する並列演算手段と、を備える。【００１７】
本発明の一態様に係る演算システムにおける演算方法は、並列演算を実行する並列演算装置と、前記並列演算に用いるデータを格納するデータベースを管理するデータベース管理装置と、を備えた演算システムの演算方法であって、前記データベース管理装置は、前記データベースの所定の列のデータを列指向型でキャッシュし、前記キャッシュされた列指向型のデータから、前記並列演算に用いるデータを抽出し、前記並列演算装置は、前記抽出された列指向型のデータをベクトルレジスタに格納し、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する。【００１８】
本発明の一態様に係るデータベース管理装置における演算方法は、並列演算に用いるデータを格納するデータベースを記憶する記憶手段と、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、を備えたデータベース管理装置の演算方法であって、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出し、前記抽出された列指向型のデータをベクトルレジスタに格納し、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する。【００１９】
なお、上記各装置または方法を、コンピュータによって実現するコンピュータプログラム、およびそのコンピュータプログラムが格納されている、コンピュータ読み取り可能な記憶媒体も、本発明の範疇に含まれる。
【発明の効果】
【００２０】
本発明によれば、より少ない容量で、より簡単なデータベース管理を行うことができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施の形態に係る演算システムの機能構成の一例を示す機能ブロック図である。
【図２】本発明の第１の実施の形態に係る演算システムのハードウエア構成の一例を示す図である。
【図３】本発明の第１の実施の形態に係るデータベース記憶部に記憶されているデータおよび主記憶部にキャッシュされているデータを説明するための図である。
【図４】本発明の第１の実施の形態に係るベクトルレジスタと主記憶部との関係を説明するための図である。
【図５】本発明の第１の実施の形態に係る演算システムの並列演算処理の流れの一例を示すフローチャートである。
【図６】本発明の第２の実施の形態に係る演算システムの機能構成の一例を示す機能ブロック図である。
【図７】本発明の第３の実施の形態に係る演算システムの機能構成の一例を示す機能ブロック図である。
【発明を実施するための形態】
【００２２】
＜第１の実施の形態＞
本発明の第１の実施の形態について、図面を参照して詳細に説明する。
【００２３】
図１は、本発明の第１の実施の形態に係る演算システムの一例を示すブロック図である。図１に示すように、本実施の形態に係る演算システム１は、データベース管理装置１０と、並列演算装置２０とを備えている。なお、本実施の形態において、データベース管理装置１０と並列演算装置２０とは、別個の構成であることを例に説明を行うが、本発明はこれに限定されるものではない。データベース管理装置１０と並列演算装置２０とは、同じ装置で実現されてもよい。例えば、並列演算装置２０が、データベース管理装置１０を含む構成であってもよいし、データベース管理装置１０が並列演算装置２０を含む構成であってもよい。
【００２４】
（データベース管理装置１０について）
図１に示す通り、データベース管理装置１０は、通信部１０１、解析部１０２、クエリ最適化部１０３、クエリ実行部１０４、拡張クエリ実行部１０５、キャッシュ制御部１０６、主記憶部１０７およびデータベース記憶部１０８を備えている。
【００２５】
データベース管理装置１０の通信部１０１は、ネットワークを介して、例えば、上位装置からの命令（クエリ）を受信する。また、通信部１０１は、上記命令の応答をネットワークに送信する。通信部１０１は、ネットワークを介して受信した命令を解析部１０２に供給する。
【００２６】
解析部１０２は、通信部１０１から、通信部１０１が受信した命令を受信する。そして、解析部１０２は、上記命令に含まれる、文字列で受信したクエリを解析し、内部処理に適した形式に変換する。解析部１０２は、変換したクエリをクエリ最適化部１０３に供給する。
【００２７】
クエリ最適化部１０３は、通信部１０１が受信した命令に含まれるクエリに基づいて、上記クエリをデータベース管理装置１０内で最適に実行するための１以上のクエリ実行計画の候補を作成する。具体的には、まず、クエリ最適化部１０３は、クエリ毎に、同じ実行結果を異なる複数の方法で導出する。ここで、異なる複数の方法とは、例えば、全件スキャン、インデックススキャン、並列演算装置２０を使用した全件スキャンなどが挙げられる。このとき、例えば、（ａ）データベース記憶部１０８からの読み出すデータ量、（ｂ）クエリに含まれる条件句をチェックするための演算回数、（ｃ）データベースに含まれる行のうち処理すべき行の数、などを抽象化した値（「コスト値」と呼ぶ）を上記異なる方法毎に算出する。この異なる方法がクエリ実行計画の候補となる。
【００２８】
そして、クエリ最適化部１０３は、上記クエリ実行計画の候補から算出したコスト値が最も低い方法（クエリ実行計画の候補）をクエリ実行計画として選択する。クエリ実行計画には、クエリを処理する方法と、実行するクエリそのものが含まれる。このクエリ実行計画に含まれるクエリの形態によっては、処理の一部または全部で並列演算装置２０を用いる。なお、説明したクエリ実行計画の作成は、一例であり、これに限定されるものではない。
【００２９】
クエリ最適化部１０３は、クエリ実行計画を、拡張クエリ実行部１０５に供給する。
【００３０】
データベース記憶部１０８には、データベースが記憶されている。データベース記憶部１０８に記憶されているデータベースは、一般的な関係データベース（行指向型データベース）である。
【００３１】
主記憶部１０７は、データベース管理装置１０内で使用されるデータを記憶する記憶手段である。主記憶部１０７には、データベース記憶部１０８内のデータベースの列のデータをキャッシュするためのキャッシュ領域が含まれている。以降、キャッシュ領域にキャッシュされた列指向型のデータを列指向型データとも呼ぶ。なお、以降において、列指向型キャッシュとは、列指向型データが保存されたキャッシュ領域を指すが、当該キャッシュ領域にキャッシュされた列指向型データを列指向型キャッシュと呼ぶ場合もある。
【００３２】
また、主記憶部１０７は、後述する並列演算装置２０の主記憶部２０４と、互いのデータを非同期ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によって転送するように、主記憶部２０４に接続されている。なお、本実施の形態では、データベース管理装置１０の主記憶部１０７と並列演算装置２０の主記憶部２０４とが別個の構成であることを例に説明を行うが、本発明はこれに限定されるものではない。主記憶部１０７と主記憶部２０４とは一体形成されていてもよい。つまり、データベース管理装置１０と並列演算装置２０との間で主記憶部が共有された構成であってもよい。
【００３３】
キャッシュ制御部１０６は、データベース記憶部１０８に記憶された行指向型データベースの所定の列のデータを、列指向型に変換して、主記憶部１０７にキャッシュする。ここで、主記憶部１０７にキャッシュされる所定の列とは、利用者によって指定された列であってもよいし、設定ファイルにあらかじめ記載された列であってもよい。なお、主記憶部１０７にキャッシュする列はこれに限定されるものではなく、例えば、参照度合いが高い列であってもよい。ここで、参照度合いが高い列とは、最後に参照された日時が現時点に最も近い（最新の）列のことを示す。なお、主記憶部１０７にキャッシュされている列は、並列演算装置２０の並列演算で使用されるデータが含まれる列であることが好ましい。
【００３４】
ここで、図面を変えて、データベース記憶部１０８と主記憶部１０７との関係について、さらに説明する。図３は、データベース記憶部１０８に記憶されているデータおよび主記憶部１０７にキャッシュされているデータを説明するための図である。
【００３５】
図３に示す通り、データベース記憶部１０８には、並列演算に用いるデータを格納しているデータベースのテーブルが記憶されている。図３に示すテーブルには、列名が、位置ＩＤ（ＩＤｅｎｔｉｆｉｅｒ）、列Ａ、列Ｂ、列Ｃ、列Ｄおよび列Ｅである列が含まれている。一方、主記憶部１０７には、データベース記憶部１０８内のテーブルの列Ｂと列Ｄとのデータが、列指向型でキャッシュされている。
【００３６】
データベース記憶部１０８のテーブルに含まれる位置ＩＤは、行指向型データベースの磁気ディスク装置上での格納位置を示すものである。データベース記憶部１０８は、磁気ディスク等の記憶装置（後述する）で実現されている。そのため、テーブルに含まれるレコードは、磁気ディスクの物理位置（例えば、ブロックｉ番目の先頭からｊ番目の位置）に保存されている。本実施の形態における位置ＩＤ（位置識別子）は、この「ブロックｉ番目の先頭からｊ番目の位置」を示すものであり、（ｉ，ｊ）と表記する。図３においては、１行目のレコードの位置ＩＤを（０，０）とし、２行目のレコードの位置ＩＤを（０，１）として表している。
【００３７】
なお、物理位置の表現は、上記表現に限定されるものではなく、セクタ位置を示す情報を用いてもよいし、データファイルの先頭からのオフセット位置などを示す情報を用いてもよい。
【００３８】
この位置ＩＤは、上述したとおり、各レコードの格納位置を示す情報である。つまり、テーブルのインデックスとして定義されるものではない。したがって、当該テーブルに対してインデックスが定義された場合と比べ、記憶装置内の容量を消費しない。また、インデックスとして定義されていないため、インデックスが定義されている場合と比べ、データベース記憶部１０８内のデータベースは、管理が容易である。
【００３９】
行指向型データベースでは、この位置ＩＤによって、あるレコードに対して、全ての列のデータの存在する場所を一意に特定することができる。なぜならば、あるレコードのデータは、隣り合った位置に格納されているからである。したがって、磁気ディスク上のデータが更新されたとき、この更新されたデータを含むレコードに対して、位置ＩＤが存在する。
【００４０】
一方、主記憶部１０７のキャッシュ領域には、列指向型のデータが長大な配列としてキャッシュされている。そのため、ある列のあるデータを特定する場合、先頭から何番目であるかを特定する必要がある。したがって、主記憶部１０７にキャッシュされたデータ（列指向型データ）には、この何番目であるかを特定するために位置ＩＤを用いたインデックスが作成されている。このインデックスは、キャッシュ上のデータを管理するために作成されたデータである。そのため、位置ＩＤは、ハッシュや木構造を用いてインデックス化されている。よって、インデックスを用いることにより、目的の位置ＩＤが配置されているキャッシュ上（主記憶部１０７上）の位置を容易に特定することができる。これにより、例えば、列Ａのｉ番目、列Ｂのｉ番目、・・・と順にデータを取得することで、特定の行の内容を取得することができる。
【００４１】
主記憶部１０７にキャッシュされたデータのマスタは、データベース記憶部１０８のデータベースである。そのため、データベース記憶部１０８に含まれるテーブルのレコードが更新された場合、後述するトリガ関数に従い、キャッシュ制御部１０６は、キャッシュ上の対応するデータを更新する。行指向型データベース上のレコードの位置は、上述したとおり位置ＩＤで特定できる。したがって、データベース管理装置１０は、キャッシュ上に作られた位置ＩＤをキーとしてキャッシュを探索し、データベース記憶部１０８上のレコードに対応する、主記憶部１０７上のデータを更新することができる。
【００４２】
図１に戻り、演算システム１の各部材の説明を続ける。
【００４３】
データベース管理装置１０の拡張クエリ実行部（抽出手段）１０５は、クエリ最適化部１０３から、クエリ実行計画を受信する。拡張クエリ実行部１０５は、受信したクエリ実行計画に基づいて実行されるクエリが、参照系のクエリか更新系のクエリかを確認する。更新系のクエリとは、挿入、更新、削除などの処理を行うクエリである。なお、更新系のクエリには、未使用のデータベースの回収処理を含むものであってもよい。拡張クエリ実行部１０５は、上記実行されるクエリが更新系のクエリの場合、上記クエリが含まれるクエリ実行計画をクエリ実行部１０４に供給する。
【００４４】
一方、拡張クエリ実行部１０５は、上記実行されるクエリが参照系のクエリである場合、参照対象の列が主記憶部１０７にキャッシュされているか否かを確認する。参照系のクエリとは、データベースのデータを参照するために抽出する処理を行うクエリである。参照対象の列が主記憶部１０７にキャッシュされている場合、拡張クエリ実行部１０５は、主記憶部１０７にキャッシュされている列指向型データから、クエリ実行結果を作成する。例えば、拡張クエリ実行部１０５で実行されるクエリが、列指向型キャッシュのデータを抽出するクエリである場合、拡張クエリ実行部１０５は、上記列指向型キャッシュから、データを抽出した結果をクエリ実行結果として作成する。これにより、拡張クエリ実行部１０５は、データベース記憶部１０８へアクセスすることなく、クエリ実行結果を返すことができる。
【００４５】
このように、参照系のクエリに対して、主記憶部１０７上の列指向型データを参照してクエリ実行結果を生成することにより、参照系の処理の性能を向上させることができる。
【００４６】
クエリが参照している列（参照対象の列）が主記憶部１０７にキャッシュされていない場合、拡張クエリ実行部１０５は、キャッシュされていない列を参照するためのクエリが含まれるクエリ実行計画をクエリ実行部１０４に供給する。
【００４７】
また、拡張クエリ実行部１０５は、例えば、クエリ実行計画に通信部１０１によって受信されたクエリが、データの参照クエリである場合、通信部１０１にクエリ実行結果を送信する。ここで、上記参照クエリが、例えば、並列演算装置２０を用いるクエリである場合、拡張クエリ実行部１０５は、並列演算に用いる列指向型データを列指向型キャッシュから抽出し、当該抽出した列指向型データを、主記憶部１０７から並列演算装置２０の主記憶部２０４にＤＭＡによって転送させる。この時、拡張クエリ実行部１０５は、並列演算命令を並列演算装置２０に送信する。そして、並列演算装置２０から並列演算が終了した旨の通知を受け取ると、主記憶部１０７に格納された並列演算結果に基づいてクエリ実行結果を作成し、通信部１０１に当該クエリ実行結果を供給する。
【００４８】
クエリ実行部１０４は、拡張クエリ実行部１０５から供給されたクエリ実行計画に基づいて、データベース記憶部１０８のデータベースを参照し、上記クエリ実行計画に含まれるクエリを実行する。クエリ実行部１０４は、クエリ実行結果を通信部１０１に供給する。なお、クエリ実行部１０４が実行したクエリが並列演算装置２０を用いるクエリであった場合、クエリ実行部１０４はクエリ実行結果を拡張クエリ実行部１０５に供給する。
【００４９】
また、クエリ実行部１０４は、実行したクエリが更新系のクエリである場合、トリガ関数を呼び出し実行する。トリガ関数は、例えば、クエリ実行部１０４内に格納されているとするが、本発明はこれに限定されるものではなく、例えば、主記憶部１０７に格納されていてもよい。
【００５０】
トリガ関数は、あるレコードが挿入、更新または削除された時に呼び出されるものである。トリガ関数は、キャッシュ制御部１０６に、更新されたレコードの位置ＩＤをキーとして、主記憶部１０７上のキャッシュを探索させ、主記憶部１０７上の、上記更新されたレコードに対応するデータを、上記更新されたレコードと同様に更新するためのものである。したがって、レコードの更新または削除に伴って呼び出されるトリガ関数は、データベース記憶部１０８のデータに対応する、主記憶部１０７上のデータを更新または削除する処理をキャッシュ制御部１０６に実行させる。また、レコードの挿入処理に伴って呼び出されるトリガ関数は、「データベース記憶部１０８のテーブルに挿入されたレコードに対応するデータを、主記憶部１０７のキャッシュ上に追加する」処理をキャッシュ制御部１０６に実行させる。
【００５１】
このように、トリガ関数を用いて、データベース記憶部１０８のテーブルの列と、主記憶部１０７にキャッシュされた列との同期を行うことにより、どちらのデータを参照する場合であっても、一貫性が保たれた状態のデータを参照することができる。
【００５２】
なお、更新系のクエリにおいて、例えば、更新処理（例えば、ＵＰＤＡＴＥ句）の対象となる列の検索（例えば、ＷＨＥＲＥ句）を、拡張クエリ実行部１０５が主記憶部１０７上のデータを用いて行い、クエリ実行部１０４が、上記検索結果に基づいて、更新処理を行う構成であってもよい。
【００５３】
（並列演算装置２０について）
次に、並列演算装置２０について説明する。図１に示す通り、並列演算装置２０は、ベクトルレジスタ２０１、並列演算部２０２、制御部２０３および主記憶部２０４を備えている。
【００５４】
制御部２０３は、並列演算装置２０全体を制御する。制御部２０３は、データベース管理装置１０から並列演算命令を受信すると、主記憶部２０４に転送されたデータをベクトルレジスタ２０１にロードする。そして、制御部２０３は、ベクトルレジスタ２０１にロードしたデータを用いて並列演算を行うよう並列演算部２０２に指示する。
【００５５】
また、制御部２０３は、ベクトルレジスタ２０１に格納された、並列演算部２０２による並列演算の結果（並列演算結果）を、主記憶部２０４にストアする。そして、制御部２０３は、当該結果を、主記憶部２０４から主記憶部１０７にＤＭＡによって転送させる。この時、制御部２０３は、データベース管理装置１０に対し、並列演算が終了した旨を示す通知を送信する。
【００５６】
ベクトルレジスタ２０１は、並列演算用のレジスタである。ベクトルレジスタ２０１は、制御部２０３の指示に従い、主記憶部２０４との間でデータのロードおよびストアを実行する。なお、ベクトルレジスタ２０１の例については、後述する。
【００５７】
主記憶部２０４は、主記憶部１０７と、互いのデータを非同期ＤＭＡによって転送するように、主記憶部１０７に接続されている。
【００５８】
並列演算部２０２は、制御部２０３からの指示に従い、データがロードされたベクトルレジスタ２０１のデータを用いて、並列演算を実行する。並列演算部２０２は、演算結果を、演算結果を格納するためのベクトルレジスタ２０１に格納する。
【００５９】
ここで、図４を参照して、ベクトルレジスタ２０１と主記憶部１０７との関係について説明する。図４は、ベクトルレジスタ２０１と主記憶部１０７との関係を説明するための図である。なお、上述したとおり、ベクトルレジスタ２０１のデータは主記憶部２０４からロードされ、主記憶部２０４にストアされるが、図４においては、説明の便宜上、主記憶部２０４についての説明を省略している。
【００６０】
本実施の形態に係る並列演算装置２０は、ＳＩＭＤ（Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉ  Ｄａｔａ）型の並列演算装置であるとする。なお、並列演算装置２０は、これに限定されるものではなく、例えば、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）技術を用いたものであってもよい。
【００６１】
並列演算装置２０のベクトルレジスタ２０１は、複数のベクトルレジスタからなる。図４に示す通り、本実施の形態におけるベクトルレジスタ２０１は、ベクトルレジスタ２０１Ａ〜ベクトルレジスタ２０１Ｒのベクトルレジスタを有している。
【００６２】
１つのベクトルレジスタには、各ベクトルの要素が含まれている。各ベクトルの要素は、同一ビット幅である。例えば、図４において、ベクトルレジスタ２０１Ａには、各ベクトル要素である、値Ａ１、値Ａ２、・・・、値Ａｎが格納されている。並列演算部２０２は、このようなベクトルレジスタ２０１を用いて、同じ演算処理（加減乗除など）を同時に実行することができる。そして、並列演算部２０２は、実行結果をベクトルレジスタ２０１Ｒに対し、各ベクトルの要素として格納している。この実行結果は、制御部２０３からの制御に従い、ベクトルレジスタ２０１Ｒから主記憶部１０７にＤＭＡによって転送される。
【００６３】
ベクトルレジスタへのデータのロード／ストアは、図４に示す通り、主記憶部１０７上の領域を対象としている。そのため、本実施の形態に係る並列演算装置２０のように、複数行のデータを同時に処理する場合には、同じ列の値が隣接している列指向型データを用いることによって、好適に並列演算処理を実行することができる。
【００６４】
ここで、主記憶部１０７上にキャッシュされたデータは、列指向型である。列指向型のデータのデータ構造は、図３に示す通り、行１列Ｂ、行２列Ｂ、・・・、となっており、同じ列のデータが隣接した構造である。また、図４に示す通り、ベクトルレジスタ２０１のデータ構造も、ある列に対応するデータが隣接した構造である。そのため、列指向型データのデータ構造と、ベクトルレジスタ２０１のデータ構造とは一致する。したがって、データベース管理装置１０の拡張クエリ実行部１０５は、並列演算に用いるデータセット（拡張クエリ実行部１０５のクエリ実行結果）を、主記憶部１０７から主記憶部２０４を介して、ベクトルレジスタ２０１にそのままロードさせることができる。
【００６５】
一方、行指向型データベースのデータをベクトルレジスタ２０１に格納する場合、データ構造の変換が必要となる。したがって、データの変換処理に時間がかかってしまう。
【００６６】
しかしながら、本実施の形態に係る演算システム１は、上述のように、列指向型キャッシュに格納された列指向型データをそのままベクトルレジスタ２０１にロードすることができる。そのため、主記憶部１０７内で、データ再配置の必要がなく、より高速に、ベクトルレジスタ２０１にデータをロードすることができる。
【００６７】
（ハードウエア構成について）
次に、図１の演算システム１のハードウエア構成の一例について、図２を参照して説明する。図２は、本実施の形態に係る演算システム１のデータベース管理装置１０および並列演算装置２０をコンピュータ装置で実現したハードウエア構成の一例を示す図である。なお、図２に示す演算システム１のハードウエア構成は、本発明に主要な部材を説明するためのものであり、演算システム１がその他の部材を有してもよいことは言うまでもない。
【００６８】
図２に示す通り、演算システム１のデータベース管理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、内部バス１２、メモリ１３およびハードディスク等の記憶装置１４およびネットワーク接続用の通信Ｉ／Ｆ（通信インタフェース）１５を含んでいる。また、並列演算装置２０は、ＣＰＵ２１、内部バス２２およびメモリ２３を含んでいる。データベース管理装置１０の各部材は、夫々接続されている。同様に、並列演算装置２０の各部材は、夫々接続されている。
【００６９】
ＣＰＵ１１およびＣＰＵ２１は、夫々、オペレーティングシステムを動作させて本実施の形態に係るデータベース管理装置１０および並列演算装置２０を制御する。また、ＣＰＵ１１は、例えば、記憶装置１４からメモリ１３にプログラムやデータを読み出して実行することにより、コンパイラおよびジョブスケジューラの全体的な動作を司る。また、ＣＰＵ２１は、例えば、図示しない記憶装置などからメモリ２３にプログラムやデータを読み出して実行することにより、コンパイラおよびジョブスケジューラの全体的な動作を司る。すなわち、本実施の形態において、ＣＰＵ１１およびＣＰＵ２１は、夫々、記憶装置等を適宜参照しながら、コンパイラおよびジョブスケジューラが備える各機能（各部）を実行するソフトウエアプログラムを実行する。
【００７０】
また、ＣＰＵ１１は、例えば、本実施の形態の解析部１０２、クエリ最適化部１０３、クエリ実行部１０４、拡張クエリ実行部１０５およびキャッシュ制御部１０６の一部として機能し、プログラムに基づいて各種の処理を実行する。また、ＣＰＵ２１は、例えば、本実施の形態の並列演算部２０２および制御部２０３の一部として機能し、プログラムに基づいて各種の処理を実行する。
【００７１】
内部バス１２および内部バス２２は、データベース管理装置１０および並列演算装置２０を互いに接続するためのバスである。内部バス１２および内部バス２２は、例えば、ＰＣＩ−Ｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスなどが挙げられるが、本発明はこれに限定されるものではない。内部バス１２は、例えば、拡張クエリ実行部１０５および主記憶部１０７の一部として機能する。また、内部バス２２は、例えば、制御部２０３および主記憶部２０４の一部として機能する。
【００７２】
通信Ｉ／Ｆ１５は、ネットワークに接続するためのインタフェースである。通信Ｉ／Ｆ１５は、例えば、通信部１０１の一部として機能する。
【００７３】
メモリ１３およびメモリ２３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）とからなる主記憶装置である。メモリ１３は、例えば、本実施の形態における主記憶部１０７として機能する。メモリ２３は、例えば、本実施の形態におけるベクトルレジスタ２０１および主記憶部２０４として機能する。
【００７４】
記憶装置１４は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、または半導体メモリ等である。記憶装置１４の一部の記憶媒体は、不揮発性記憶装置であり、そこにプログラムを記憶している。また、プログラムは通信網に接続されている図示しない外部コンピュータからダウンロードされてもよい。記憶装置１４は、例えば、本実施の形態におけるデータベース記憶部１０８として機能する。
【００７５】
なお、図１に示した各ブロックのハードウエア構成は、上述の構成に限定されない。また、本実施の形態では、図１に示した演算システム１における各ブロックに示す機能を、ＣＰＵ１１およびＣＰＵ２１が実行する一例として、ソフトウエアプログラムによって実現する場合について説明しているが、各ブロックに示す機能は、一部または全部を、ハードウエアの回路として実現してもよい。
【００７６】
（並列演算処理について）
次に、図５を参照して、本実施の形態に係る演算システム１における並列演算処理の流れについて説明する。図５は、本実施の形態に係る演算システム１の並列演算処理の流れの一例を示すフローチャートである。
【００７７】
図５に示す通り、上位装置などからデータベースの検索命令（検索クエリ）が発せられると、データベース管理装置１０の通信部１０１が上記検索クエリを受信する（ステップＳ１）。
【００７８】
そして、解析部１０２が、通信部１０１が受信した検索クエリを解析し、内部処理に適した形式に変換する（ステップＳ２）。
【００７９】
次に、クエリ最適化部１０３が、形式変換されたクエリに基づいて、クエリ実行計画の候補を作成する（ステップＳ３）。
【００８０】
そして、クエリ最適化部１０３が、上記クエリ実行計画の候補から、コスト値が最も小さい候補をクエリ実行計画として選択する（ステップＳ４）。以降の処理は、クエリ実行計画に含まれるクエリが並列演算装置２０を利用するものであることを例に説明を行う。
【００８１】
次に、拡張クエリ実行部１０５が、受信したクエリ実行計画に基づいて、並列演算装置２０を利用するクエリの実行を開始する（ステップＳ５）。そして、拡張クエリ実行部１０５が並列演算装置２０で利用する列指向型データを、主記憶部１０７から並列演算装置２０の主記憶部２０４にＤＭＡによって転送させる（ステップＳ６）。その後、並列演算装置２０の制御部２０３が上記データを主記憶部２０４からベクトルレジスタ２０１にロードする（ステップＳ７）。
【００８２】
そして、並列演算部２０２は、並列演算命令に従って、ステップＳ５でデータがロードされたベクトルレジスタ２０１のデータを用いて、並列演算を実行する（ステップＳ８）。
【００８３】
その後、制御部２０３が、並列演算部２０２による並列演算の結果（並列演算結果）を、ベクトルレジスタ２０１から主記憶部２０４にストアする。そして、制御部２０３が、ストアしたデータをデータベース管理装置１０の主記憶部１０７にＤＭＡによって転送させることにより、並列演算結果を主記憶部１０７に格納する。また、制御部２０３は、並列演算が完了したことを示す通知を、拡張クエリ実行部１０５に送信する（ステップＳ９）。
【００８４】
そして、通信部１０１がクエリ実行結果を、ネットワークに送信する（ステップＳ１０）。
【００８５】
（効果）
本発明の第１の実施の形態に係る演算システム１によれば、より少ない容量で、より簡単なデータベース管理を行うことができる。
【００８６】
なぜならば、データベース管理装置１０の拡張クエリ実行部１０５が列指向型キャッシュから、並列演算に用いるデータを抽出し、並列演算装置２０のベクトルレジスタ２０１が、抽出された列指向型のデータを格納し、並列演算部２０２がベクトルレジスタ２０１に格納されたデータを用いて、並列演算を実行するからである。データベース管理装置１０のデータベース記憶部１０８に記憶されたデータベースは、並列演算に用いるデータを格納している。また、主記憶部１０７に含まれる列指向型キャッシュは、上記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納している。
【００８７】
このように、列指向型キャッシュの列指向型データは、そのまま、ベクトルレジスタ２０１にロードすることができる。そのため、主記憶部１０７内で、データ再配置の必要がなく、より高速に、ベクトルレジスタ２０１にデータをロードすることができる。また、キャッシュされたデータを用いるため、キャッシュのマスタとなるデータベースに対してアクセスする必要がない。そのため、上記データベースには、検索のためのインデックスを設ける必要がない。したがって、インデックスを有するデータベースと比べ、本実施の形態に係るデータベースは、管理が容易になる。また、インデックスの分の記憶装置の容量の消費量を少なくすることができる。したがって、より多くの行のオンメモリ処理が可能になる。
【００８８】
このように、本実施の形態に係る演算システム１によれば、データベース管理装置１０が予めデータを列指向型データに変換しておくことで、並列演算装置２０を使用して複数行を一度に処理することが可能となる。したがって、参照系のクエリに付随する計算処理速度を向上させることができ、並列演算装置２０をより有効に利用することができる。
【００８９】
＜第２の実施の形態＞
次に、本発明の第２の実施の形態について、図面を参照して詳細に説明する。なお、説明の便宜上、前述した第１の実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その詳細な説明を省略する。
【００９０】
図６は、本発明の第２の実施の形態に係る演算システムの一例を示すブロック図である。図６に示すように、本実施の形態に係る演算システム２は、データベース管理装置３０と、並列演算装置２０と、外部記憶装置３０１と、を備えている。なお、本実施の形態に係る演算システム２は、上述した演算システム１と同様に、データベース管理装置３０と並列演算装置２０とが、別個の構成であってもよいし、同じ装置で実現される構成であってもよい。
【００９１】
なお、データベース管理装置３０および並列演算装置２０のハードウエア構成は、図２に示したデータベース管理装置１０および並列演算装置２０のハードウエア構成と同様の構成であるとする。
【００９２】
外部記憶装置３０１は、データベース管理装置３０に外部接続された記憶装置である。外部記憶装置３０１は、例えば、半導体記憶装置である。外部記憶装置３０１は、データベース管理装置３０の主記憶部１０７よりも容量が大きいものであるとする。外部記憶装置３０１には、データベース記憶部１０８内のデータベースの列のデータがキャッシュされている。なお、キャッシュのマスタとなるデータベースとの同期処理に掛かるコストを最小化するために、外部記憶装置３０１として、例えば、磁気ディスク装置ではなく、半導体記憶装置のような低遅延のデバイスを用いることが好ましい。
【００９３】
図６に示す通り、データベース管理装置３０は、通信部１０１、解析部１０２、クエリ最適化部１０３、クエリ実行部１０４、拡張クエリ実行部１０５、キャッシュ制御部３０６、主記憶部１０７およびデータベース記憶部１０８を備えている。
【００９４】
キャッシュ制御部３０６は、データベース記憶部１０８に記憶された行指向型データベースの所定の列のデータを、列指向型に変換して、主記憶部１０７または外部記憶装置３０１にキャッシュする。つまり、データベース記憶部１０８内のデータベースの列のデータは、上述した外部記憶装置３０１と、主記憶部１０７とにキャッシュされる。
【００９５】
キャッシュ制御部３０６は、データベース記憶部１０８に記憶された所定の列のデータのうち、例えば、参照頻度が高い列のデータを主記憶部１０７にキャッシュし、参照頻度が低い列のデータを外部記憶装置３０１にキャッシュする、という制御を行う。また、キャッシュ制御部３０６は、必要に応じて、主記憶部１０７および外部記憶装置３０１間でキャッシュされたデータを移動させる。
【００９６】
また、クエリ実行部１０４が呼び出すトリガ関数は、第１の実施の形態のトリガ関数と異なり、キャッシュ制御部３０６に、更新されたレコードの位置ＩＤをキーとして、主記憶部１０７上および外部記憶装置３０１上のキャッシュを探索する。そして、トリガ関数は、キャッシュ制御部３０６に、主記憶部１０７上または外部記憶装置３０１上の、上記更新されたレコードに対応するデータを、上記更新されたレコードと同様に更新させる。
【００９７】
（効果）
以上のように、本実施の形態に係る演算システム２は、データベース記憶部１０８内のデータベースの列のデータを、主記憶部１０７上と、外部記憶装置３０１上とに、キャッシュする構成である。
【００９８】
外部記憶装置３０１は、主記憶部１０７を構成するメモリ１３より、安価である。そのため、本実施の形態に係る演算システム２によれば、より安価な構成で、より大量のデータをキャッシュすることができる。
【００９９】
これにより、より大量のデータをより高速に、並列演算装置２０にロードすることができるため、より高速に並列演算を行うことができる。
【０１００】
＜第３の実施の形態＞
次に、本発明の第３の実施の形態について、図面を参照して詳細に説明する。なお、説明の便宜上、前述した第１の実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その詳細な説明を省略する。
【０１０１】
図７は、本発明の第３の実施の形態に係る演算システムの一例を示すブロック図である。図７に示すように、本実施の形態に係る演算システム３は、データベース管理装置４０と、並列演算装置５０と、を備えている。なお、本実施の形態に係る演算システム３は、上述した演算システム１と同様に、データベース管理装置４０と並列演算装置５０とが、別個の構成であってもよいし、１つのデータベース管理装置で実現される構成であってもよい。
【０１０２】
なお、データベース管理装置４０および並列演算装置５０のハードウエア構成は、図２に示したデータベース管理装置１０および並列演算装置２０のハードウエア構成と同様の構成であるとする。
【０１０３】
図７に示す通り、データベース管理装置４０は、抽出部４０５、列指向型キャッシュ４０７およびデータベース４０８を備えている。また、並列演算装置５０は、ベクトルレジスタ２０１および並列演算部２０２を備えている。
【０１０４】
データベース４０８は、データベース管理装置４０で管理されているデータベースである。データベース４０８は、並列演算に用いるデータを格納している。また、データベース４０８は、上記データに対してのインデックスを有していない。
【０１０５】
列指向型キャッシュ４０７は、第１の実施の形態に係る主記憶部１０７に含まれるキャッシュ領域である。列指向型キャッシュ４０７は、データベース４０８の所定の列のデータを列指向型でキャッシュしている。
【０１０６】
抽出部４０５は、第１の実施の形態に係る拡張クエリ実行部１０５に相当する。抽出部４０５は、列指向型キャッシュ４０７から、並列演算に用いるデータを抽出する。
【０１０７】
並列演算装置５０は、並列演算を実行する装置である。並列演算装置５０のベクトルレジスタ２０１および並列演算部２０２は、第１の実施の形態のベクトルレジスタ２０１および並列演算部２０２とそれぞれ同じ構成であるため、説明を省略する。
【０１０８】
本発明の第３の実施の形態に係る演算システム３によれば、より少ない容量で、より簡単なデータベース管理を行うことができる。
【０１０９】
なぜならば、データベース管理装置４０の抽出部４０５が列指向型キャッシュ４０７から、並列演算に用いるデータを抽出し、並列演算装置５０のベクトルレジスタ２０１が、抽出された列指向型のデータを格納し、並列演算部２０２がベクトルレジスタ２０１に格納されたデータを用いて、並列演算を実行するからである。データベース管理装置４０のデータベース４０８は、並列演算に用いるデータを格納している。また、列指向型キャッシュ４０７には、上記データベースの所定の列のデータが列指向型でキャッシュされている。
【０１１０】
このように、列指向型キャッシュ４０７のデータは、そのまま、ベクトルレジスタ２０１にロードすることができる。そのため、ベクトルレジスタ２０１にロードする際に、データ再配置の必要がなく、より高速に、ベクトルレジスタ２０１にデータをロードすることができる。また、キャッシュされたデータを用いるため、キャッシュのマスタとなるデータベース４０８に対してアクセスする必要がない。そのため、上記データベース４０８には、検索のためのインデックスを設ける必要がない。したがって、インデックスを有するデータベースと比べ、本実施の形態に係るデータベースは、管理が容易になる。また、インデックスの分の記憶装置の容量の消費量を少なくすることができる。したがって、より多くの行のオンメモリ処理が可能になる。
【０１１１】
このように、本実施の形態に係る演算システム３によれば、データベース４０８のデータを列指向型のデータに変換しておくことで、複数行のデータを一度に処理するという並列演算処理が可能となる。したがって、参照系のクエリに付随する計算処理速度を向上させることができ、並列演算装置５０をより有効に利用することができる。
【０１１２】
なお、上述した各実施の形態は、本発明の好適な実施の形態であり、上記各実施の形態にのみ本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において当業者が上記各実施の形態の修正や代用を行い、種々の変更を施した形態を構築することが可能である。
【０１１３】
例えば、上述した実施の形態における各動作は、ハードウエアまたはソフトウエア、あるいはその両方の複合構成によって実行することも可能である。
【０１１４】
なお、ソフトウエアによる処理を実行する場合には、例えば、上記各処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。また、上記プログラムは、例えば、ハードディスクなどの記録媒体に記録しておくことが可能である。
【０１１５】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１６】
（付記１）並列演算を実行する並列演算装置と、前記並列演算に用いるデータを格納するデータベースを管理するデータベース管理装置と、を備え、前記データベース管理装置は、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する抽出手段と、を備え、前記並列演算装置は、前記データベース管理装置の前記抽出手段によって抽出された列指向型のデータを格納するベクトルレジスタと、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する並列演算手段と、を備えることを特徴とする演算システム。
【０１１７】
（付記２）前記列指向型キャッシュは、前記データベースに含まれるレコードの夫々の物理位置を示す位置識別子をインデックスとして含んでおり、前記データベース管理装置は、前記データベースに更新がある場合に、更新されたデータに対応する、前記列指向型キャッシュのデータを更新するためのキャッシュ制御手段を更に備え、前記キャッシュ制御手段は、前記インデックスを用いて、前記データベース内の更新されたデータに対応する、キャッシュされたデータを検索することを特徴とする付記１に記載の演算システム。
【０１１８】
（付記３）前記抽出手段は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリのうち、前記並列演算に用いるデータを前記列指向型キャッシュから抽出するためのクエリを実行する、ことを特徴とする付記１または２に記載の演算システム。
【０１１９】
（付記４）前記データベース管理装置は、更新系のクエリを、前記データベースを用いて実行するクエリ実行手段を更に備え、前記抽出手段は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリのうち、前記更新系のクエリか否かを確認し、更新系のクエリである場合、前記クエリを前記クエリ実行手段に供給する、ことを特徴とする付記３に記載の演算システム。
【０１２０】
（付記５）前記データベース管理装置は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリに基づいて、前記クエリを前記データベース管理装置で最適に実行するためのクエリ実行計画を作成する最適化手段を更に備えることを特徴とする付記３または４に記載の演算システム。
【０１２１】
（付記６）前記データベース管理装置に接続された外部記憶装置を更に備え、前記データベースの所定の列のデータは、列指向型で、前記列指向型キャッシュと、前記外部記憶装置とにキャッシュされる、ことを特徴とする付記１から５の何れかに記載の演算システム。
【０１２２】
（付記７）並列演算に用いるデータを格納するデータベースを記憶する記憶手段と、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する抽出手段と、前記抽出手段によって抽出された列指向型のデータを格納するベクトルレジスタと、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する並列演算手段と、を備えることを特徴とするデータベース管理装置。
【０１２３】
（付記８）前記列指向型キャッシュは、前記データベースに含まれるレコードの夫々の物理位置を示す位置識別子をインデックスとして含んでおり、前記データベースに更新がある場合に、更新されたデータに対応する、キャッシュされたデータを更新するためのキャッシュ制御手段を更に備え、前記キャッシュ制御手段は、前記インデックスを用いて、前記データベース内の更新されたデータに対応する、キャッシュされたデータを検索することを特徴とする付記７に記載のデータベース管理装置。
【０１２４】
（付記９）前記抽出手段は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリのうち、前記並列演算に用いるデータを前記列指向型キャッシュから抽出するためのクエリを実行する、ことを特徴とする付記７または８に記載のデータベース管理装置。
【０１２５】
（付記１０）更新系のクエリを、前記データベースを用いて実行するクエリ実行手段を更に備え、前記抽出手段は、前記データベースまたは前記列指向型キャッシュのデータを操作するクエリのうち、前記更新系のクエリか否かを確認し、更新系のクエリである場合、前記クエリを前記クエリ実行手段に供給する、ことを特徴とする付記９に記載のデータベース管理装置。
【０１２６】
（付記１１）前記データベースまたは前記列指向型キャッシュのデータを操作するクエリに基づいて、前記クエリを前記データベース管理装置で最適に実行するためのクエリ実行計画を作成する最適化手段を更に備えることを特徴とする付記９または１０に記載のデータベース管理装置。
【０１２７】
（付記１２）前記データベース管理装置に接続された外部記憶装置を更に備え、前記データベースの所定の列のデータは、列指向型で、前記列指向型キャッシュと、前記外部記憶装置とにキャッシュされる、ことを特徴とする付記７から１１の何れかに記載のデータベース管理装置。
【０１２８】
（付記１３）並列演算を実行する並列演算装置と、前記並列演算に用いるデータを格納するデータベースを管理するデータベース管理装置と、を備えた演算システムの演算方法であって、前記データベース管理装置は、前記データベースの所定の列のデータを列指向型でキャッシュし、前記キャッシュされた列指向型のデータから、前記並列演算に用いるデータを抽出し、前記並列演算装置は、前記抽出された列指向型のデータをベクトルレジスタに格納し、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する、ことを特徴とする演算方法。
【０１２９】
（付記１４）並列演算に用いるデータを格納するデータベースを記憶する記憶手段と、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、を備えたデータベース管理装置の演算方法であって、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出し、前記抽出された列指向型のデータをベクトルレジスタに格納し、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する、ことを特徴とする演算方法。
【０１３０】
（付記１５）並列演算に用いるデータを格納するデータベースを記憶する記憶手段と、前記データベースの所定の列のデータを列指向型でキャッシュしたデータを格納する列指向型キャッシュと、を備えたデータベース管理装置に、前記列指向型キャッシュから、前記並列演算に用いるデータを抽出する処理と、前記抽出された列指向型のデータをベクトルレジスタに格納する処理と、前記ベクトルレジスタに格納されたデータを用いて、前記並列演算を実行する処理と、を実行させることを特徴とするプログラム。
【０１３１】
（付記１６）付記１５に記載のプログラムを記憶する、ことを特徴とするコンピュータ読み取り可能な記録媒体。
【０１３２】
本発明の成果は、ＤＷＨ（Ｄａｔａ  ＷａｒｅＨｏｕｓｅ）などデータベースに蓄積された大量のデータを参照し、高速に抽出することが要求される場合に有効である。
【０１３３】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０１３４】
この出願は、２０１４年１月８日に出願された日本出願特願２０１４−００１６４０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１３５】
１    演算システム
１０    データベース管理装置
１０１    通信部
１０２    解析部
１０３    クエリ最適化部
１０４    クエリ実行部
１０５    拡張クエリ実行部
１０６    キャッシュ制御部
１０７    主記憶部
１０８    データベース記憶部
２０    並列演算装置
２０１    ベクトルレジスタ
２０２    並列演算部
２０３    制御部
２    演算システム
３０    データベース管理装置
３０１    外部記憶装置
３０６    キャッシュ制御部
３    演算システム
４０    データベース管理装置
４０５    抽出部
４０７    列指向型キャッシュ
４０８    データベース
５０    並列演算装置
【図１】
2015105043.tif 000003
【図２】
2015105043.tif 000004
【図３】
2015105043.tif 000005
【図４】
2015105043.tif 000006
【図５】
2015105043.tif 000007
【図６】
2015105043.tif 000008
【図７】
2015105043.tif 000009
【国際調査報告】
2015105043.tif 000010
2015105043.tif 000011
2015105043.tif 000012