(57)【要約】【課題】カラムストア型データベースにおける分析関数の処理性能を向上させる。【解決手段】カラム形式格納部６は、複数の行と１以上の列で表されるデータを、値番号リスト、値リスト、及び、順序集合により格納する。値リストは、１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の１以上の値の順序に応じて付与された値番号とを関連付けたリストである。値番号リストは、１以上の列の各々についての、複数の行の各々と当該行の値の値番号とを関連付けたリストである。順序集合は、所定の列の値をもとに複数の行の行番号がソートされた集合である。カラム形式分析部４１は、データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、順序集合、値リスト、及び、値番号リストを用いて実行し、実行結果を出力する。【選択図】      図１
2017058939.tif 000002
【特許請求の範囲】
【請求項１】
複数の行と１以上の列で表されるデータを、前記１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の前記１以上の値の順序に応じて付与された値番号とを関連付けた値リスト、前記１以上の列の各々についての、前記複数の行の各々と当該行の値の値番号とを関連付けた値番号リスト、及び、所定の列の値をもとに前記複数の行の行番号がソートされた集合である順序集合、により格納する、データ格納手段と、
前記データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、前記順序集合、前記値リスト、及び、前記値番号リストを用いて実行し、実行結果を出力する、分析手段と、
を備えたデータベース装置。
【請求項２】
前記分析手段は、前記分析関数の定義に従って、前記順序集合をもとに前記分析関数の実行結果に対応した新たな順序集合を生成する集合順序生成手段と、前記新たな順序集合をもとに前記分析関数の実行結果の値を生成する値生成手段と、を含む、
請求項１に記載のデータベース装置。
【請求項３】
前記分析手段は、さらに、前記分析関数の定義に従って、前記新たな順序集合をもとに前記分析関数の実行結果に対応した新たな値番号を生成する値番号生成手段を含み、
前記値生成手段は、前記新たな順序集合と前記新たな値番号ともとに前記分析関数の実行結果の値を生成する、
請求項２に記載のデータベース装置。
【請求項４】
さらに、前記分析関数を、前記順序集合、前記値リスト、及び、前記値番号リストを用いて実行する手順である、分析手順を格納する、分析手順格納手段を備え、
前記分析手段は、前記分析手順に従って、前記データに対して前記分析関数を実行する、
請求項１乃至３のいずれかに記載のデータベース装置。
【請求項５】
さらに、前記分析手順格納手段に前記分析手順が格納されている分析関数については、前記分析手段を用いて当該分析関数を実行し、前記分析手順格納手段に前記分析手順が格納されていない分析関数については、前記データ格納手段に格納されている前記データをテーブル形式のデータに変換し、当該テーブル形式のデータを用いて当該分析関数を実行する、分析実行制御手段を備える、
請求項１乃至４のいずれかに記載のデータベース装置。
【請求項６】
前記所定の演算は、前記データの指定された列に係る、ソートされた前記複数の行の各々のｎ行（ｎは１以上の整数）前、または、後の値を算出する演算である、
請求項１乃至５のいずれかに記載のデータベース装置。
【請求項７】
前記所定の演算は、前記データの指定された列に係る、ソートされた前記複数の行の各々の値の順序を算出する演算である、
請求項１乃至５のいずれかに記載のデータベース装置。
【請求項８】
前記所定の演算は、前記データの指定された列に係る、ソートされた前記複数の行の各々についての、先頭行から当該行までの値の合計値を算出する演算である、
請求項１乃至５のいずれかに記載のデータベース装置。
【請求項９】
複数の行と１以上の列で表されるデータを、前記１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の前記１以上の値の順序に応じて付与された値番号とを関連付けた値リスト、前記１以上の列の各々についての、前記複数の行の各々と当該行の値の値番号とを関連付けた値番号リスト、及び、所定の列の値をもとに前記複数の行の行番号がソートされた集合である順序集合、により格納し、
前記データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、前記順序集合、前記値リスト、及び、前記値番号リストを用いて実行し、実行結果を出力する、
データ処理方法。
【請求項１０】
コンピュータに、
複数の行と１以上の列で表されるデータを、前記１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の前記１以上の値の順序に応じて付与された値番号とを関連付けた値リスト、前記１以上の列の各々についての、前記複数の行の各々と当該行の値の値番号とを関連付けた値番号リスト、及び、所定の列の値をもとに前記複数の行の行番号がソートされた集合である順序集合、により格納し、
前記データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、前記順序集合、前記値リスト、及び、前記値番号リストを用いて実行し、実行結果を出力する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース装置、データ処理方法、及び、プログラムに関し、特に、カラムストア型でデータを格納するデータベース装置、データ処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
データベース（ＤＢ）におけるデータ構造として、データを複数の列（項目）の値を含む行（レコード）からなるテーブル形式で表現し、行単位で処理するリレーショナル型データベース（ＲＤＢ）が多く用いられてきた。ＲＤＢは、特定の行に対する更新や削除等のトランザクション処理に優れている一方、特定の列に対する抽出や集計等、列毎の処理が苦手という特徴がある。
【０００３】
このようなＲＤＢが苦手とする列毎の処理を得意とするＤＢとして、カラムストア型データベース（以下、カラムストアＤＢとも記載）が注目されている。カラムストアＤＢは、データを列毎に分離して保持するため、特定の列に対する処理を高速に行うことができる。このようなカラムストアＤＢは、例えば、特許文献１に開示されている。
【０００４】
カラムストアＤＢのデータ構造の一つとして、ＦＡＳＴ（Filter Array Structure）構造が知られている。ＦＡＳＴ構造では、図４、図５に示すように、ＤＢの各列は、「値リスト」、「値番号リスト」、及び、「順序集合」により表現される。値リストは、重複排除後にソートされた列の各値に、値を識別するための番号（値番号）を順番に付与したリストである。値番号リストは、各行の値を、値リストで付与された値番号で示したリストである。順序集合は、検索した結果に含まれる行の行番号を順番に並べた集合である。また、ＦＡＳＴ構造では、ある列をキーに並び替えやカテゴリ分類を行う場合、その結果は、図５に示すように、別の順序集合として表現される。
【０００５】
近年、ＲＤＢを利用したデータ分析においては、行と行の関係性や、部分的に切り出された領域におけるデータの関係性に着目した分析手法である、分析関数が取り入れられている。分析関数は、ＲＤＢ用の言語（ＳＱＬ）ではＷｉｎｄｏｗ関数と呼ばれており、データ分析業務において利用頻度が高まりつつある。
【０００６】
このようなカラムストアＤＢでは、分析関数で扱われるような行間の位置関係や順序関係は表現できないため、ＤＢのデータ構造を、一旦、カラムストア型のデータ構造からＲＤＢと同様のテーブル形式のデータ構造に変換してから処理する必要があった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−２０９８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のように、特許文献１に記載されているようなカラムストアＤＢでは、分析関数を処理する場合、データ構造の変換により処理時間やメモリ使用量が増加し、カラムストアＤＢの持つデータ分析の高速性が損なわれるという課題があった。
【０００９】
本発明の目的は、上述の課題を解決し、カラムストア型データベースにおける分析関数の処理性能を改善できる、データベース装置、データ処理方法、及び、プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本発明のデータベース装置は、複数の行と１以上の列で表されるデータを、前記１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の前記１以上の値の順序に応じて付与された値番号とを関連付けた値リスト、前記１以上の列の各々についての、前記複数の行の各々と当該行の値の値番号とを関連付けた値番号リスト、及び、所定の列の値をもとに前記複数の行の行番号がソートされた集合である順序集合、により格納する、データ格納手段と、前記データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、前記順序集合、前記値リスト、及び、前記値番号リストを用いて実行し、実行結果を出力する、分析手段と、を備える。
【００１１】
本発明のデータ処理方法は、複数の行と１以上の列で表されるデータを、前記１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の前記１以上の値の順序に応じて付与された値番号とを関連付けた値リスト、前記１以上の列の各々についての、前記複数の行の各々と当該行の値の値番号とを関連付けた値番号リスト、及び、所定の列の値をもとに前記複数の行の行番号がソートされた集合である順序集合、により格納し、前記データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、前記順序集合、前記値リスト、及び、前記値番号リストを用いて実行し、実行結果を出力する。
【００１２】
本発明のプログラムは、コンピュータに、複数の行と１以上の列で表されるデータを、前記１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の前記１以上の値の順序に応じて付与された値番号とを関連付けた値リスト、前記１以上の列の各々についての、前記複数の行の各々と当該行の値の値番号とを関連付けた値番号リスト、及び、所定の列の値をもとに前記複数の行の行番号がソートされた集合である順序集合、により格納し、前記データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、前記順序集合、前記値リスト、及び、前記値番号リストを用いて実行し、実行結果を出力する、処理を実行させる。
【発明の効果】
【００１３】
本発明の効果は、カラムストア型データベースにおける分析関数の処理性能を改善できることである。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の実施の形態における、データベース装置１の構成を示すブロック図である。
【図３】本発明の実施の形態における、コンピュータにより実現されたデータベース装置１の構成を示すブロック図である。
【図４】本発明の実施の形態における、カラム形式で格納されたデータの例を示す図である。
【図５】本発明の実施の形態における、カラム形式で格納されたデータのソート結果の例を示す図である。
【図６】本発明の実施の形態における、ＬＡＧ関数を含む検索要求とその実行結果の例を示す図である。
【図７】本発明の実施の形態における、分析手順格納部４３に格納される分析手順の例を示す図である。
【図８】本発明の実施の形態における、分析関数実行部４の動作を示すフローチャートである。
【図９】本発明の実施の形態における、ＬＡＧ関数に対する分析手順を示すフローチャートである。
【図１０】本発明の実施の形態における、ＬＡＧ関数の実行例を示す図である。
【図１１】本発明の実施の形態における、カテゴリ別ＬＡＧ関数を含む検索要求とその実行結果の例を示す図である。
【図１２】本発明の実施の形態における、カテゴリ別ＬＡＧ関数に対する分析手順を示すフローチャートである。
【図１３】本発明の実施の形態における、カテゴリ別ＬＡＧ関数の実行例を示す図である。
【図１４】本発明の実施の形態における、ＬＥＡＤ関数を含む検索要求とその実行結果の例を示す図である。
【図１５】本発明の実施の形態における、ＬＥＡＤ関数に対する分析手順を示すフローチャートである。
【図１６】本発明の実施の形態における、ＬＥＡＤ関数の実行例を示す図である。
【図１７】本発明の実施の形態における、ＲＡＮＫ関数を含む検索要求とその実行結果の例を示す図である。
【図１８】本発明の実施の形態における、ＲＡＮＫ関数に対する分析手順を示すフローチャートである。
【図１９】本発明の実施の形態における、ＲＡＮＫ関数の実行例を示す図である。
【図２０】本発明の実施の形態における、ＤＥＮＳＥ＿ＲＡＮＫ関数を含む検索要求とその実行結果の例を示す図である。
【図２１】本発明の実施の形態における、ＤＥＮＳＥ＿ＲＡＮＫ関数に対する分析手順を示すフローチャートである。
【図２２】本発明の実施の形態における、ＤＥＮＳＥ＿ＲＡＮＫ関数の実行例を示す図である。
【図２３】本発明の実施の形態における、ＲＯＷ＿ＮＵＭＢＥＲ関数を含む検索要求とその実行結果の例を示す図である。
【図２４】本発明の実施の形態における、ＲＯＷ＿ＮＵＭＢＥＲ関数に対する分析手順を示すフローチャートである。
【図２５】本発明の実施の形態における、ＲＯＷ＿ＮＵＭＢＥＲ関数の実行例を示す図である。
【図２６】本発明の実施の形態における、ＳＵＭ関数を含む検索要求とその実行結果の例を示す図である。
【図２７】本発明の実施の形態における、ＳＵＭ関数に対する分析手順を示すフローチャートである。
【図２８】本発明の実施の形態における、ＳＵＭ関数の実行例を示す図である。
【発明を実施するための形態】
【００１５】
はじめに、本発明の実施の形態の構成について説明する。
【００１６】
図２は、本発明の実施の形態における、データベース装置１（以下、データベースサーバとも記載）の構成を示すブロック図である。
【００１７】
図２を参照すると、データベース装置１は、問い合わせ処理部２、及び、データ管理部３を含む。問い合わせ処理部２は、データベースを利用するアプリケーションから受け付けた問い合わせ要求（以下、検索要求とも記載）を処理する。データ管理部３は、問い合わせ要求に対するデータの検索や、問い合わせ応答への検索結果の格納を行う。
【００１８】
問い合わせ処理部２は、検索内容解析部２１、及び、検索結果取得部２２を含む。検索内容解析部２１は、検索要求を解析し、検索要求が分析関数を含むかどうかを判断する。分析関数は、例えば、後述するＬＡＧ関数、ＬＥＡＤ関数、ＲＡＮＫ関数、ＳＵＭ関数等、データの指定された列における、前後の行の値の取得、順位の算出、累計値の算出等、行間の位置関係に依存した所定の演算を含む関数である。分析関数を含まない場合、検索結果取得部２２は、データ管理部３のカラム形式検索部５に対して、検索要求を送信する。分析関数を含む場合、検索結果取得部２２は、データ管理部３の分析関数実行部４に対して、検索要求を送信する。
【００１９】
データ管理部３は、分析関数実行部４、カラム形式検索部５、カラム形式格納部６（または、データ格納部とも記載）、テーブル形式格納部７、及び、形式変換部８を含む。
【００２０】
カラム形式格納部６は、データをカラム形式で格納する。カラム形式格納部６は、順序集合６１、値番号リスト６２、及び、値リスト６３を格納する。
【００２１】
値リスト６３は、重複排除後にソートされた列（項目）の各値に、値を識別するための番号（値番号）を順番に付与したリストである。値番号リスト６２は、各行（レコード）の値を、値リスト６３で付与された値番号で示したリストである。順序集合６１は、検索した結果に含まれる行の行番号を順番に並べた集合である。
【００２２】
図４は、本発明の実施の形態における、カラム形式で格納されたデータの例を示す図である。また、図５は、本発明の実施の形態における、カラム形式で格納されたデータのソート結果の例を示す図である。
【００２３】
図４の例では、データの列「ＥＭＰ＿ＩＤ」、「ＤＥＰＴ＿ＩＤ」、「ＥＭＰ＿ＮＡＭＥ」、「ＹＥＡＲＳ」、「ＳＡＬＡＲＹ」の各々について、値番号リスト６２、及び、値リスト６３が定義されている。図４の値番号リスト６２、値リスト６３において、列「Ｌｉｎｅ」は行番号、列「ＶＮｏ」は値番号、列「ＶＬ」は値を示す。また、図５の例では、データを列「ＥＭＰ＿ＩＤ」でソートしたとき（初期状態）の順序集合６１、及び、列「ＳＡＬＡＲＹ」でソート後の順序集合６１が示されている。
【００２４】
テーブル形式格納部７は、データをテーブル形式で格納する。テーブル形式格納部７は、カラム形式では扱えない処理を実行するために用いられる。
【００２５】
形式変換部８は、カラム形式で表されるデータを表形式に変換する。
【００２６】
カラム形式検索部５は、検索結果取得部２２からの要求に応じて、カラム形式格納部６のカラム形式で格納されたデータを用いて検索を行う。カラム形式検索部５は、ソート部５１、カテゴリ分類部５２を含む。
【００２７】
ソート部５１は、カラム形式のデータを、指定された列の値でソートする。カテゴリ分類部５２は、カラム形式のデータを、指定された列の値で分類する。
【００２８】
分析関数実行部４は、検索結果取得部２２からの要求に応じて、カラム形式格納部６のカラム形式で格納されたデータを用いて、分析関数を実行する。
【００２９】
分析関数実行部４は、カラム形式分析部４１（または、単に分析部とも記載）、分析実行制御部４２、分析手順格納部４３、及び、テーブル形式分析部４４を含む。
【００３０】
分析実行制御部４２は、検索結果取得部２２から要求された分析関数の処理をカラム形式分析部４１で実行可能かどうか判断する。分析実行制御部４２は、分析手順格納部４３に分析手順が格納されている分析関数については、カラム形式分析部４１で実行可能と判断する。
【００３１】
分析手順格納部４３は、分析関数を、カラム形式で格納されたデータを用いて、カラム形式で表現されたまま実行するための処理内容（分析手順）を格納する。分析手順は、順序集合生成手順、値番号生成手順、及び、値生成手順を含む。
【００３２】
図７は、本発明の実施の形態における、分析手順格納部４３に格納される分析手順の例を示す図である。図７の例では、各分析関数について、分析手順が定義されている。
【００３３】
カラム形式分析部４１は、検索結果取得部２２から要求された分析関数の処理を、カラム形式で格納されたデータに対して実行する。カラム形式分析部４１は、順序集合生成部４１１、値番号生成部４１２、値生成部４１３、及び、カラム形式検索部５のソート部５１、カテゴリ分類部５２を用いて、分析関数を実行する。
【００３４】
順序集合生成部４１１は、順序集合生成手順に従って、分析関数の結果を導出するための新たな順序集合を生成する。値番号生成部４１２は、値番号生成手順に従って、分析関数の結果を導出するための新たな値番号リストを生成する。値生成部４１３は、値生成手順に従って、分析関数の結果である値を生成する。
【００３５】
テーブル形式分析部４４は、分析実行制御部４２において、カラム形式分析部４１で実行できないと判断された分析関数の処理を、テーブル形式で格納されたデータを用いて実行する。テーブル形式分析部４４は、形式変換部８を用いて、カラム形式のデータをテーブル形式に変換し、ＲＤＢにおける分析関数の分析手順に従って、分析関数を実行する。
【００３６】
なお、データベース装置１は、ＣＰＵ（Central Processing Unit）とプログラムを記憶した記憶媒体を含み、プログラムにもとづく制御によって動作するコンピュータであってもよい。
【００３７】
図３は、本発明の実施の形態における、コンピュータにより実現されたデータベース装置１の構成を示すブロック図である。
【００３８】
図３を参照すると、データベース装置１は、ＣＰＵ１０１、ハードディスクやメモリ等の記憶デバイス１０２（記憶媒体）、キーボード、ディスプレイ等の入出力デバイス１０３、及び、他の装置等と通信を行う通信デバイス１０４を含む。ＣＰＵ１０１は、問い合わせ処理部２、カラム形式分析部４１、分析実行制御部４２、テーブル形式分析部４４、カラム形式検索部５、及び、形式変換部８を実現するためのプログラムを実行する。記憶デバイス１０２は、分析手順格納部４３、カラム形式格納部６、及び、テーブル形式格納部７のデータを記憶する。通信デバイス１０４は、他の装置上のアプリケーションから問い合わせ要求を受信し、アプリケーションへ問い合わせ応答を送信する。また、入出力デバイス１０３が、ユーザ等から問い合わせ要求の入力を受け付け、ユーザ等へ問い合わせ応答を出力してもよい。
【００３９】
また、データベース装置１の各構成要素は、論理回路で実現されていてもよい。この場合、複数の構成要素が、１つの論理回路で実現されていてもよいし、それぞれ、複数の独立した論理回路で実現されていてもよい。
【００４０】
また、データベース装置１の各構成要素は、有線または無線で接続された複数の物理的な装置に分散的に配置されていてもよい。この場合、データベース装置１は、複数のコンピュータによる分散処理により実現されていてもよい。
【００４１】
次に、本発明の実施の形態の動作について説明する。
【００４２】
ここでは、カラム形式格納部６に図４、図５のようなカラム形式のデータ（順序集合６１、値番号リスト６２、値リスト６３）が格納されており、また、分析手順格納部４３に図７のような分析手順が格納されている場合を例に、動作を説明する。
【００４３】
図８は、本発明の実施の形態における、分析関数実行部４の動作を示すフローチャートである。
【００４４】
はじめに、分析実行制御部４２は、検索結果取得部２２から検索要求を受信する（ステップＳ１）。
【００４５】
分析実行制御部４２は、分析手順格納部４３を参照し、検索要求に含まれる分析関数を、カラム形式分析部４１で実行可能かどうか判断する（ステップＳ２）。
【００４６】
ステップＳ２で実行可能な場合（ステップＳ２／Ｙ）、分析実行制御部４２は、分析手順格納部４３から分析関数の実行手順を取得し（ステップＳ３）、当該取得した実行手順とともに、カラム形式分析部４１に、検索要求を転送する。
【００４７】
カラム形式分析部４１は、分析実行制御部４２により指定された実行手順に従って、カラム形式のデータを用いて分析関数を実行する（ステップＳ４）。カラム形式分析部４１は、分析関数の実行結果を含む検索結果を、分析実行制御部４２に返却する。
【００４８】
一方、ステップＳ２で実行不可能な場合（ステップＳ２／Ｎ）、分析実行制御部４２は、テーブル形式分析部４４に、検索要求を転送する。
【００４９】
テーブル形式分析部４４は、形式変換部８を用いて、カラム形式のデータをテーブル形式に変換する（ステップＳ５）。テーブル形式分析部４４は、テーブル形式のデータを用いて分析関数を実行する（ステップＳ６）。テーブル形式分析部４４は、分析関数の実行結果を含む検索結果を、分析実行制御部４２に返却する。
【００５０】
分析実行制御部４２は、検索結果を、検索結果取得部２２に返却する（ステップＳ７）。
【００５１】
次に、カラム形式分析部４１における、分析関数実行処理（ステップＳ４）の詳細について、分析関数毎に説明する。
【００５２】
＜ＬＡＧ関数の実行処理＞
はじめに、分析関数がＬＡＧ関数の場合の分析関数実行処理を説明する。
【００５３】
ＬＡＧ関数は、データが、ソート条件で指定された列でソートされた状態において、指定された列（以下、対象列とも記載）の各行について、ｎ行（ｎは１以上の整数）前の値を取得するための関数である。
【００５４】
図６は、本発明の実施の形態における、ＬＡＧ関数を含む検索要求とその実行結果の例を示す図である。図６において「ＯＲＤＥＲＤ  ＢＹ」で示される列が、ソート条件（ソートする列）を示す。図６の例では、データがソート条件で示された列「ＳＡＬＡＲＹ」で昇順にソートされた状態において、対象列「ＳＡＬＡＲＹ」の１行前（ｎ＝１）の値が、実行結果に対応する、新たな列「ＰＲＥ＿ＳＡＬＡＲＹ」として示されている。
【００５５】
図９は、本発明の実施の形態における、ＬＡＧ関数に対する分析手順を示すフローチャートである。分析手順格納部４３には、ＬＡＧ関数に対して図９のような分析手順が格納されており、カラム形式分析部４１は、当該分析手順に従って、分析関数を実行する。
【００５６】
また、図１０は、本発明の実施の形態における、ＬＡＧ関数の実行例を示す図である。
【００５７】
はじめに、カラム形式分析部４１の順序集合生成部４１１は、カラム形式検索部５のソート部５１を用いて、順序集合６１を、ＬＡＧ関数で指定されたソート条件に従ってソートした結果の順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ１０１）。ここで、ＯｒｄＳｅｔ［ｉ］は、ソート後のｉ番目（ｉは１以上、データの行数（レコード数）以下の整数）の行（レコード）の行番号を示す。
【００５８】
例えば、順序集合生成部４１１は、図６のＬＡＧ関数に対して、図１０の状態２のように、列「ＳＡＬＡＲＹ」でソートした結果のＯｒｄＳｅｔ［ｉ］を取得する。
【００５９】
順序集合生成部４１１は、ステップＳ１０１で得られた順序集合（ＯｒｄＳｅｔ［ｉ］）に対し、数１式により、ＬＡＧ関数の結果を導出するための新たな順序集合（ＮｅｗＯｒｄＳｅｔ［ｉ］）を生成する（ステップＳ１１１〜１１４）。
【００６０】
【数１】
2017058939.tif 000003
【００６１】
例えば、順序集合生成部４１１は、図１０の状態３のように、ＮｅｗＯｒｄＳｅｔ［ｉ］を生成する。
【００６２】
値番号生成部４１２は、数２式により、対象列の値番号リスト６２（ＶＮｏ［ｉ］）とＮｅｗＯｒｄＳｅｔ［ｉ］から、ＬＡＧ関数の結果を導出するための新たな値番号（ＮｅｗＶＮｏ［ｉ］）を生成する（ステップＳ１２１〜１２４）。ここで、ＶＮｏ［ｉ］は、ｉ行目の値の値番号を示す。
【００６３】
【数２】
2017058939.tif 000004
【００６４】
例えば、値番号生成部４１２は、図１０の状態４のように、対象列「ＳＡＬＡＲＹ」の値番号リスト６２とＮｅｗＯｒｄＳｅｔ［ｉ］を用いて、列「ＰＲＥ＿ＳＡＬＡＲＹ」の各行の値の値番号を示すＮｅｗＶＮｏ［ｉ］を生成する。
【００６５】
値生成部４１３は、数３式により、対象列の値リスト６３（ＶＬ［ｉ］）とＮｅｗＶＮｏ［ｉ］から、実行結果に対応する新たな列の各行の値（ｖａｌｕｅ）を生成（取得）する（ステップＳ１３１〜１３４）。
【００６６】
【数３】
2017058939.tif 000005
【００６７】
例えば、値生成部４１３は、図１０の状態５のように、対象列「ＳＡＬＡＲＹ」の値リスト６３とＮｅｗＶＮｏ［ｉ］を用いて、列「ＰＲＥ＿ＳＡＬＡＲＹ」の各行の値を取得する。
【００６８】
新たな列に対して生成した値を順番に取得することで、分析関数（ＬＡＧ関数）の実行結果が得られる。カラム形式分析部４１は、分析関数（ＬＡＧ関数）の実行結果を含む検索結果を、分析実行制御部４２へ返却する（ステップＳ１４１）。ここで、カラム形式分析部４１は、分析関数で指定されている他の列の値についても、ステップＳ１０１で得られた順序集合（ＯｒｄＳｅｔ［ｉ］）の順番で、返却する。
【００６９】
例えば、カラム形式分析部４１は、図６の実行結果のように、列「ＥＭＰ＿ＩＤ」、「ＳＡＬＡＲＹ」、「ＰＲＥ＿ＳＡＬＡＲＹ」の値の組を、順番に出力する。
【００７０】
このように、カラム形式分析部４１は、カラム形式のデータをテーブル形式へ変換することなく、対象列の値番号リスト６２と値リスト６３、及び、生成した新たな順序集合から、ＬＡＧ関数の実行結果を得ることができる。また、実行結果に対応する新たな列については、値リストの生成は不要であるため、メモリ使用量を削減できる。
【００７１】
＜カテゴリ別ＬＡＧ関数の実行処理＞
次に、分析関数がカテゴリ別ＬＡＧ関数の場合の分析関数実行処理を説明する。
【００７２】
カテゴリ別ＬＡＧ関数は、データが、ソート条件で指定された列でソートされた状態において、さらに、カテゴリ条件で指定された列で分類し、対象列の各行について、カテゴリ内で、ｎ行前の値を取得するための関数である。
【００７３】
図１１は、本発明の実施の形態における、カテゴリ別ＬＡＧ関数を含む検索要求とその実行結果の例を示す図である。図１１において「ＰＡＲＴＩＴＩＯＮ  ＢＹ」で示される列が、カテゴリ条件（分類する列）を示す。図１１の例では、データがソート条件で示された列「ＳＡＬＡＲＹ」で昇順にソートされた状態において、カテゴリ条件で示された列「ＤＥＰＴ＿ＩＤ」で分類されている。そして、カテゴリ毎に、対象列「ＳＡＬＡＲＹ」の１行前（ｎ＝１）の値が、新たな列「ＰＲＥ＿ＳＡＬＡＲＹ」として示されている。
【００７４】
図１２は、本発明の実施の形態における、カテゴリ別ＬＡＧ関数に対する分析手順を示すフローチャートである。また、図１３は、本発明の実施の形態における、カテゴリ別ＬＡＧ関数の実行例を示す図である。
【００７５】
はじめに、順序集合生成部４１１は、ソート部５１を用いて、順序集合６１を、カテゴリ別ＬＡＧ関数で指定されたソート条件に従ってソートした結果の順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ２０１）。順序集合生成部４１１は、カラム形式検索部５のカテゴリ分類部５２を用いて、さらに、カテゴリ別ＬＡＧ関数で指定されたカテゴリ条件に従ってソート、分類した結果の順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ２０２）。
【００７６】
例えば、順序集合生成部４１１は、図１１のＬＡＧ関数に対して、図１３の状態２のように、列「ＳＡＬＡＲＹ」でソートした結果のＯｒｄＳｅｔ［ｉ］を取得する。さらに、順序集合生成部４１１は、図１３の状態３のように、列「ＤＥＰＴ＿ＩＤ」でソート、分類した結果のＯｒｄＳｅｔ［ｉ］を取得する。
【００７７】
順序集合生成部４１１は、ステップＳ２０２で得られた順序集合（ＯｒｄＳｅｔ［ｉ］）に対し、数４式により、カテゴリ別ＬＡＧ関数の結果を導出するための新たな順序集合（ＮｅｗＯｒｄＳｅｔ［ｉ］）を生成する（ステップＳ２１１〜２１６）。
【００７８】
ここで、ｊ（ｊは１以上の整数）は各カテゴリの先頭を示し、カテゴリが切り替わるタイミングで、ｊ＝ｉに更新される。
【００７９】
【数４】
2017058939.tif 000006
【００８０】
例えば、順序集合生成部４１１は、図１３の状態４のように、ＮｅｗＯｒｄＳｅｔ［ｉ］を生成する。
【００８１】
以降、ＬＡＧ関数の場合（図９）と同様に、値番号生成部４１２が新たな値番号（ＮｅｗＶＮｏ［ｉ］）を生成し、値生成部４１３が新たな列の各行の値（ｖａｌｕｅ）を生成（取得）する（ステップＳ２２１、２３１）。そして、カラム形式分析部４１は、分析関数（カテゴリ別ＬＡＧ関数）の実行結果を含む検索結果を、分析実行制御部４２へ返却する（ステップＳ２４１）。
【００８２】
例えば、値番号生成部４１２は、図１３の状態５のようにＮｅｗＶＮｏ［ｉ］を生成し、状態６のように新たな列「ＰＲＥ＿ＳＡＬＡＲＹ」の各行の値を取得する。そして、カラム形式分析部４１は、図１１の実行結果のように、列「ＥＭＰ＿ＩＤ」、「ＤＥＰＴ＿ＩＤ」、「ＳＡＬＡＲＹ」、「ＰＲＥ＿ＳＡＬＡＲＹ」の値の組を、順番に出力する。
【００８３】
＜ＬＥＡＤ関数の実行処理＞
次に、分析関数がＬＥＡＤ関数の場合の分析関数実行処理を説明する。
【００８４】
ＬＥＡＤ関数は、対象列の各行について、カテゴリ内で、ｎ行後の値を取得するための関数である。
【００８５】
図１４は、本発明の実施の形態における、ＬＥＡＤ関数を含む検索要求とその実行結果の例を示す図である。図１４の例では、カテゴリ毎に、対象列「ＳＡＬＡＲＹ」の１行後（ｎ＝１）の値が、新たな列「ＰＯＳＴ＿ＳＡＬＡＲＹ」として示されている。
【００８６】
図１５は、本発明の実施の形態における、ＬＥＡＤ関数に対する分析手順を示すフローチャートである。また、図１６は、本発明の実施の形態における、ＬＥＡＤ関数の実行例を示す図である。
【００８７】
はじめに、順序集合生成部４１１は、カテゴリ別ＬＡＧ関数の場合（図１２）と同様に、順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ３０１、Ｓ３０２）。
【００８８】
例えば、順序集合生成部４１１は、図１４のＬＥＡＤ関数に対して、図１６の状態３のように、ＯｒｄＳｅｔ［ｉ］を取得する。
【００８９】
順序集合生成部４１１は、ステップＳ３０２で得られた順序集合（ＯｒｄＳｅｔ［ｉ］）に対し、数５式により、ＬＥＡＤ関数の結果を導出するための新たな順序集合（ＮｅｗＯｒｄＳｅｔ［ｉ］）を生成する（ステップＳ３１１〜３１６）。
【００９０】
ここで、ｊは各カテゴリの末尾を示し、カテゴリが切り替わるタイミングで、ｊ＝ｉに更新される。
【００９１】
【数５】
2017058939.tif 000007
【００９２】
例えば、順序集合生成部４１１は、図１６の状態４のように、ＮｅｗＯｒｄＳｅｔ［ｉ］を生成する。
【００９３】
以降、ＬＡＧ関数の場合（図９）と同様に、値番号生成部４１２が新たな値番号（ＮｅｗＶＮｏ［ｉ］）を生成し、値生成部４１３が新たな列の各行の値（ｖａｌｕｅ）を生成（取得）する（ステップＳ３２１、３３１）。そして、カラム形式分析部４１は、分析関数（ＬＥＡＤ関数）の実行結果を含む検索結果を、分析実行制御部４２へ返却する（ステップＳ３４１）。
【００９４】
例えば、値番号生成部４１２は、図１６の状態５のようにＮｅｗＶＮｏ［ｉ］を生成し、状態６のように新たな列「ＰＯＳＴ＿ＳＡＬＡＲＹ」の各行の値を取得する。そして、カラム形式分析部４１は、図１４の実行結果のように、列「ＥＭＰ＿ＩＤ」、「ＤＥＰＴ＿ＩＤ」、「ＳＡＬＡＲＹ」、「ＰＯＳＴ＿ＳＡＬＡＲＹ」の値の組を、順番に出力する。
【００９５】
＜ＲＡＮＫ関数の実行処理＞
次に、分析関数がＲＡＮＫ関数の場合の分析関数実行処理を説明する。
【００９６】
ＲＡＮＫ関数は、カテゴリ内で、対象列の各行について、値の順位を取得するための関数である。
【００９７】
図１７は、本発明の実施の形態における、ＲＡＮＫ関数を含む検索要求とその実行結果の例を示す図である。図１７の例では、データがソート条件で示された列「ＳＡＬＡＲＹ」で昇順にソートされた状態において、カテゴリ条件で示された列「ＤＥＰＴ＿ＩＤ」で分類されている。そして、カテゴリ毎に、対象列「ＳＡＬＡＲＹ」の値の順位が、新たな列「ＲＡＮＫ＿ＳＡＬＡＲＹ」として示されている。
【００９８】
図１８は、本発明の実施の形態における、ＲＡＮＫ関数に対する分析手順を示すフローチャートである。また、図１９は、本発明の実施の形態における、ＲＡＮＫ関数の実行例を示す図である。
【００９９】
はじめに、順序集合生成部４１１は、カテゴリ別ＬＡＧ関数の場合（図１２）と同様に、順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ４０１、Ｓ４０２）。
【０１００】
例えば、順序集合生成部４１１は、図１７のＲＡＮＫ関数に対して、図１９の状態３のように、ＯｒｄＳｅｔ［ｉ］を取得する。
【０１０１】
値生成部４１３は、数６式により、順序集合（ＯｒｄＳｅｔ［ｉ］）と対象列の値番号リスト６２（ＶＮｏ［ｉ］）から、新たな列の各行の値（ｖａｌｕｅ）を生成（取得）する（ステップＳ４３１〜４３９）。
【０１０２】
【数６】
2017058939.tif 000008
【０１０３】
ここで、ｃｏｕｎｔは値の増分を示し、ＶＮｏ［ＯｒｄＳｅｔ［ｉ］］とＶＮｏ［ＯｒｄＳｅｔ［ｉ−１］］とが同じ場合には１加算し、異なる場合には１に戻るように更新される。
【０１０４】
例えば、値生成部４１３は、図１９の状態４、５のように、新たな列「ＲＡＮＫ＿ＳＡＬＡＲＹ」の各行の値を取得する。
【０１０５】
カラム形式分析部４１は、分析関数（ＲＡＮＫ関数）の実行結果を含む検索結果を、分析実行制御部４２へ返却する（ステップＳ４４１）。
【０１０６】
例えば、カラム形式分析部４１は、図１７の実行結果のように、列「ＥＭＰ＿ＩＤ」、「ＤＥＰＴ＿ＩＤ」、「ＳＡＬＡＲＹ」、「ＲＡＮＫ＿ＳＡＬＡＲＹ」の値の組を、順番に出力する。
【０１０７】
＜ＤＥＮＳＥ＿ＲＡＮＫ関数の実行処理＞
次に、分析関数がＤＥＮＳＥ＿ＲＡＮＫ関数の場合の分析関数実行処理を説明する。
【０１０８】
ＤＥＮＳＥ＿ＲＡＮＫ関数のＲＡＮＫ関数との差異は、順位の重複するレコードが存在した場合に、当該重複するレコードの次の順位を連続した値で表現する点である。
【０１０９】
図２０は、本発明の実施の形態における、ＤＥＮＳＥ＿ＲＡＮＫ関数を含む検索要求とその実行結果の例を示す図である。図２０の例では、カテゴリ毎に、対象列「ＳＡＬＡＲＹ」の値の順位が、新たな列「ＲＡＮＫ＿ＳＡＬＡＲＹ」として示されている。
【０１１０】
図２１は、本発明の実施の形態における、ＤＥＮＳＥ＿ＲＡＮＫ関数に対する分析手順を示すフローチャートである。また、図２２は、本発明の実施の形態における、ＤＥＮＳＥ＿ＲＡＮＫ関数の実行例を示す図である。
【０１１１】
はじめに、順序集合生成部４１１は、カテゴリ別ＬＡＧ関数の場合（図１２）と同様に、順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ５０１、Ｓ５０２）。
【０１１２】
例えば、順序集合生成部４１１は、図２０のＤＥＮＳＥ＿ＲＡＮＫ関数に対して、図２２の状態３のように、ＯｒｄＳｅｔ［ｉ］を取得する。
【０１１３】
値生成部４１３は、数７式により、順序集合（ＯｒｄＳｅｔ［ｉ］）と対象列の値番号リスト６２（ＶＮｏ［ｉ］）から、新たな列の各行の値（ｖａｌｕｅ）を生成（取得）する（ステップＳ５３１〜５３６）。
【０１１４】
【数７】
2017058939.tif 000009
【０１１５】
例えば、値生成部４１３は、図２２の状態４、５のように、新たな列「ＲＡＮＫ＿ＳＡＬＡＲＹ」の各行の値を取得する。
【０１１６】
カラム形式分析部４１は、分析関数（ＤＥＮＳＥ＿ＲＡＮＫ関数）の実行結果を含む検索結果を、分析実行制御部４２へ返却する（ステップＳ５４１）。
【０１１７】
例えば、カラム形式分析部４１は、図２０の実行結果のように、列「ＥＭＰ＿ＩＤ」、「ＤＥＰＴ＿ＩＤ」、「ＳＡＬＡＲＹ」、「ＲＡＮＫ＿ＳＡＬＡＲＹ」の値の組を、順番に出力する。
【０１１８】
＜ＲＯＷ＿ＮＵＭＢＥＲ関数の実行処理＞
次に、分析関数がＲＯＷ＿ＮＵＭＢＥＲ関数の場合の分析関数実行処理を説明する。
【０１１９】
ＲＯＷ＿ＮＵＭＢＥＲ関数は、ＲＡＮＫ関数の処理を単純化した関数であり、対象列の各行について、カテゴリ内での順序（行番号）を取得するための関数である。
【０１２０】
図２３は、本発明の実施の形態における、ＲＯＷ＿ＮＵＭＢＥＲ関数を含む検索要求とその実行結果の例を示す図である。図２３の例では、カテゴリ毎に、対象列「ＳＡＬＡＲＹ」の値の順位が、新たな列「ＯＲＤＥＲ＿ＳＡＬＡＲＹ」として示されている。
【０１２１】
図２４は、本発明の実施の形態における、ＲＯＷ＿ＮＵＭＢＥＲ関数に対する分析手順を示すフローチャートである。また、図２５は、本発明の実施の形態における、ＲＯＷ＿ＮＵＭＢＥＲ関数の実行例を示す図である。
【０１２２】
はじめに、順序集合生成部４１１は、カテゴリ別ＬＡＧ関数の場合（図１２）と同様に、順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ６０１、Ｓ６０２）。
【０１２３】
例えば、順序集合生成部４１１は、図２３のＲＯＷ＿ＮＵＭＢＥＲ関数に対して、図２５の状態３のように、ＯｒｄＳｅｔ［ｉ］を取得する。
【０１２４】
値生成部４１３は、数８式により、順序集合（ＯｒｄＳｅｔ［ｉ］）から、新たな列の各行の値（ｖａｌｕｅ）を生成（取得）する（ステップＳ６３１〜６３４）。
【０１２５】
【数８】
2017058939.tif 000010
【０１２６】
例えば、値生成部４１３は、図２５の状態４、５のように、新たな列「ＯＲＤＥＲ＿ＳＡＬＡＲＹ」の各行の値を取得する。
【０１２７】
カラム形式分析部４１は、分析関数（ＲＯＷ＿ＮＵＭＢＥＲ関数）の実行結果を含む検索結果を、分析実行制御部４２へ返却する（ステップＳ６４１）。
【０１２８】
例えば、カラム形式分析部４１は、図２３の実行結果のように、列「ＥＭＰ＿ＩＤ」、「ＤＥＰＴ＿ＩＤ」、「ＳＡＬＡＲＹ」、「ＯＲＤＥＲ＿ＳＡＬＡＲＹ」の値の組を、順番に出力する。
【０１２９】
＜ＳＵＭ関数の実行処理＞
次に、分析関数がＳＵＭ関数の場合の分析関数実行処理を説明する。
【０１３０】
ＳＵＭ関数は、対象列の各行について、カテゴリ内での順序に従って、値の累計値を取得するための関数である。
【０１３１】
図２６は、本発明の実施の形態における、ＳＵＭ関数を含む検索要求とその実行結果の例を示す図である。図２６の例では、カテゴリ毎に、対象列「ＳＡＬＡＲＹ」の値の累計値が、新たな列「ＳＵＭ＿ＳＡＬＡＲＹ」として示されている。
【０１３２】
図２７は、本発明の実施の形態における、ＳＵＭ関数に対する分析手順を示すフローチャートである。また、図２８は、本発明の実施の形態における、ＳＵＭ関数の実行例を示す図である。
【０１３３】
はじめに、順序集合生成部４１１は、カテゴリ別ＬＡＧ関数の場合（図１２）と同様に、順序集合（ＯｒｄＳｅｔ［ｉ］）を取得する（ステップＳ７０１、Ｓ７０２）。
【０１３４】
例えば、順序集合生成部４１１は、図２６のＳＵＭ関数に対して、図２８の状態３のように、ＯｒｄＳｅｔ［ｉ］を取得する。
【０１３５】
順序集合生成部４１１は、ステップＳ７０２で得た順序集合（ＯｒｄＳｅｔ［ｉ］）に対し、ＬＡＧ関数における新たな順序集合（ＮｅｗＯｒｄＳｅｔ［ｉ］）の生成（図９、ｎ＝１）と同様の処理を、カテゴリ毎に繰り返す（ステップＳ７１１、Ｓ７１２）。
ここで、順序集合生成部４１１は、カテゴリ毎に、ステップＳ１１１〜Ｓ１１４と同様の新たな順序集合（ＮｅｗＯｒｄＳｅｔ［ｉ］）の生成を、全ての行がｎｕｌｌになるまで繰り返す。これにより、行毎に、新たな順序集合（ＮｅｗＯｒｄＳｅｔ［ｉ］）の要素が複数設定される。
【０１３６】
例えば、順序集合生成部４１１は、図２８の状態４のように、ＮｅｗＯｒｄＳｅｔ［ｉ］を生成する。
【０１３７】
値生成部４１３は、数９式により、ＮｅｗＯｒｄＳｅｔ［ｉ］、対象列の値番号リスト６２（ＶＮｏ［ｉ］）、及び、対象列の値リスト６３（ＶＬ［ｉ］）から、新たな列の各行の値（ｖａｌｕｅ）を生成（取得）する（ステップＳ７３１、Ｓ７３２）。
【０１３８】
【数９】
2017058939.tif 000011
【０１３９】
ここで、Σは、各行ｉについて、複数のＮｅｗＯｒｄＳｅｔ［ｉ］に対して算出される値ＶＬを合計することを示す。
【０１４０】
例えば、値生成部４１３は、図２８の状態６のように、新たな列「ＳＵＭ＿ＳＡＬＡＲＹ」の各行の値を取得する。
【０１４１】
カラム形式分析部４１は、分析関数（ＳＵＭ関数）の実行結果を含む検索結果を、分析実行制御部４２へ返却する（ステップＳ７４１）。
【０１４２】
例えば、カラム形式分析部４１は、図２６の実行結果のように、列「ＥＭＰ＿ＩＤ」、「ＤＥＰＴ＿ＩＤ」、「ＳＡＬＡＲＹ」、「ＳＵＭ＿ＳＡＬＡＲＹ」の値の組を、順番に出力する。
【０１４３】
以上により、本発明の実施の形態の動作が完了する。
【０１４４】
次に、本発明の実施の形態の特徴的な構成を説明する。図１は、本発明の実施の形態の特徴的な構成を示すブロック図である。
【０１４５】
図１を参照すると、データベース装置１は、カラム形式格納部６（データ格納部）、及び、カラム形式分析部４１（分析部）を含む。
【０１４６】
カラム形式格納部６は、複数の行と１以上の列で表されるデータを、値番号リスト、値リスト、及び、順序集合により格納する。値リストは、１以上の列の各々についての、当該列の１以上の値の各々と当該値に当該列の１以上の値の順序に応じて付与された値番号とを関連付けたリストである。値番号リストは、１以上の列の各々についての、複数の行の各々と当該行の値の値番号とを関連付けたリストである。順序集合は、所定の列の値をもとに複数の行の行番号がソートされた集合である。カラム形式分析部４１は、データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、順序集合、値リスト、及び、値番号リストを用いて実行し、実行結果を出力する。
【０１４７】
次に、本発明の実施の形態の効果を説明する。
【０１４８】
本発明の実施の形態によれば、カラムストア型データベースにおける分析関数の処理性能を向上させることができる。その理由は、カラム形式分析部４１が、データの指定された列に係る行間の位置関係に依存した所定の演算を含む分析関数を、順序集合、値リスト、及び、値番号リストを用いて実行し、実行結果を出力するためである。
【０１４９】
これにより、カラムストア型データベースをリレーショナル型データベースで用いられるテーブル形式へ変換することなく、分析関数を実行できるため、一時的なデータや、不要な値リストの生成が抑制される。したがって、分析機能を利用した検索にかかる処理時間、及び、メモリ使用量が低減される。また、分析関数の実行において、カラムストア型データベースにおける基本機能である高速なソート手段やカテゴリ分類手段を用いることができるため、分析関数の実行がさらに高速化される。
【０１５０】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１５１】
本発明は、カラムストア型のデータベースシステム、或いは、あるデータ集合に含まれる要素の構成順序を番号の選択と並び替えにより一意に特定する検索装置等に、広く適用できる。例えば、本発明は、商品の売上データや機器のログデータ等、時系列に並べられた大量の情報をもとに、レコードの前後関係から関係性や法則を見つけるような情報分析システムに適用できる。
【符号の説明】
【０１５２】
１    データベース装置
２    問い合わせ処理部
２１    検索内容解析部
２２    検索結果取得部
３    データ管理部
４    分析関数実行部
４１    カラム形式分析部
４１１    順序集合生成部
４１２    値番号生成部
４１３    値生成部
４２    分析実行制御部
４３    分析手順格納部
４４    テーブル形式分析部
５    カラム形式検索部
５１    ソート部
５２    カテゴリ分類部
６    カラム形式格納部
６１    順序集合
６２    値番号リスト
６３    値リスト
７    テーブル形式格納部
８    形式変換部
１０１    ＣＰＵ
１０２    記憶デバイス
１０３    入出力デバイス
１０４    通信デバイス
【図１】
2017058939.tif 000012
【図２】
2017058939.tif 000013
【図３】
2017058939.tif 000014
【図４】
2017058939.tif 000015
【図５】
2017058939.tif 000016
【図６】
2017058939.tif 000017
【図７】
2017058939.tif 000018
【図８】
2017058939.tif 000019
【図９】
2017058939.tif 000020
【図１０】
2017058939.tif 000021
【図１１】
2017058939.tif 000022
【図１２】
2017058939.tif 000023
【図１３】
2017058939.tif 000024
【図１４】
2017058939.tif 000025
【図１５】
2017058939.tif 000026
【図１６】
2017058939.tif 000027
【図１７】
2017058939.tif 000028
【図１８】
2017058939.tif 000029
【図１９】
2017058939.tif 000030
【図２０】
2017058939.tif 000031
【図２１】
2017058939.tif 000032
【図２２】
2017058939.tif 000033
【図２３】
2017058939.tif 000034
【図２４】
2017058939.tif 000035
【図２５】
2017058939.tif 000036
【図２６】
2017058939.tif 000037
【図２７】
2017058939.tif 000038
【図２８】
2017058939.tif 000039