(57)【特許請求の範囲】
【請求項１】
番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、データ管理部と、
データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、処理実行部と、を備え、
前記処理実行部は、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、
ことを特徴とするデータベース装置。
【請求項２】
前記処理実行部が、
行毎に１又は２以上のデータ値を登録するテーブルから、前記テーブルの列毎に、前記データ値を抽出して、値リストとそれに対応する値番号リストを作成し、
更に、前記値リストの作成の際に、抽出した前記データ値それぞれ毎に、当該データ値の抽出回数を特定し、特定した抽出回数を、当該データ値の前記登録回数として、作成した前記値番号リストに付加する、
請求項１に記載のデータベース装置。
【請求項３】
前記処理実行部が、複数のデータ値が指定された場合は、指定された複数のデータ値それぞれ毎に、前記値番号リストでの登録回数を特定し、指定された複数のデータ値それぞれについて、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、
請求項１または２に記載のデータベース装置。
【請求項４】
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数に加えて、当該データ値の前記値番号リストにおける最先の登録順位が付加されており、
前記処理実行部は、前記登録順位の位置から、特定した番号と前記値番号リストとの照合を開始する、請求項１〜３のいずれかに記載のデータベース装置。
【請求項５】
（ａ）番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、ステップと、
（ｂ）データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、ステップと、を有し、
前記（ｂ）のステップでは、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、ことを特徴とするデータ管理方法。
【請求項６】
コンピュータに、
（ａ）番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、ステップと、
（ｂ）データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、ステップと、を実行させ、
前記（ｂ）のステップでは、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カラムストア型のデータベース装置、データ管理方法、及びこれらを実現するためのプログラムに関する。
【背景技術】
【０００２】
従来、データベースとしては、主に、テーブルに格納されたデータを行単位で処理するリレーショナルデータベースが知られている。リレーショナルデータベースは、特定のデータに対する更新及び削除といったトランザクション処理に優れている一方、特定の列に対して行う処理（必要項目のみの抽出や集計処理）を苦手としている。
【０００３】
このため、近年、リレーショナルデータベースが苦手とする列毎の処理を得意とするデータベース、いわゆる「カラムストア型データベース」が注目されている（例えば、特許文献１参照）。カラムストア型データベースは、列毎に情報を保持しているため、特定の列に対して、高速に処理を行うことができる。
【０００４】
カラムストア型データベースにおけるデータ保持構造の一つとして、列データを値番号と値リストとで管理するＦＡＳＴ（Filter Array STructure）構造が知られている。図２２は、従来からのＦＡＳＴ構造の一例を示す図である。また、図２２（ａ）は、ＦＡＳＴ構造の元になるテーブルを示し、図２２（ｂ）は、図２２（ａ）のテーブルから作成された値番号リスト及び値リストを示している。図２２の例では、列として、「日付」、「顧客ＩＤ」、「商品名」を有するテーブルが、ＦＡＳＴ構造によって保持されている。更に、列毎に、値番号リストと値リストとが構築されている。
【０００５】
図２２（ｂ）に示すように、各値リストには、実データの値が、重複が排除された状態で格納されている。各値番号リストには、該当箇所の値を格納している値リストの番号が格納されている。このようなＦＡＳＴ構造では、ある値を検索したい場合、以下のように各処理が実行される。図２３は、図２２に示すＦＡＳＴ構造での処理を模式的に示す図である。
【０００６】
［値リストからのリスト番号の取得処理］
図２３に示すように、最初に、検索対象となる値が入力されると、値リストから、検索対象となる値のリスト番号が取得される。具体的には、例えば、顧客ＩＤとして「１０２」が入力されると、図２３の例では、値リストの番号「２」が取得される。
【０００７】
［値番号リストからの番号の取得処理］
次に、値番号リストから、先に取得されたリスト番号を保持している番号（以下「値番号リスト番号」と表記する。）が取得される。具体的には、図２３の例では、取得された値リストの番号が「２」であるので、値番号リストからは、値番号リスト番号として、「２」と「５」が取得される。
【０００８】
そして、対応する日付及び商品名のデータも一緒に検索対象となる場合は、日付及び商品名それぞれの値番号リストから、値番号リスト番号「２」及び「５」それぞれに格納されている値リストの番号（値）が取得される（図２２（ｂ）参照）。次に、値リストから、取得された値リストの番号に対応する実データが取得される。具体的には、本例では、「２０１４／３／１、１０２、ｂａｎａｎａ」と、「２０１４／３／３、１０２、ｂａｎａｎａ」とが取得される。
【０００９】
但し、上述のカラムストア型データベースでは、上述した処理を行なうために、取得対象となる実データの値リスト番号と値番号リストとの比較が、値番号リストのサイズ分だけ行なわれることになる。即ち、値番号リストに登録されているデータの件数が、例えば１０億件であれば、比較処理は１０億回繰り返して行なわれる。このため、カラムストア型データベースには、検索効率が低く、検索に多くの時間がかかるという問題がある。このため、カラムストア型データベースにおいては、検索速度の向上が求められている。
【００１０】
ところで、一般なデータベースでは、データの格納場所を速く見つけるために、インデックス（索引）の作成が行なわれている。そして、カラムストア型データベースにおいても、インデックスを作成しておくことで、検索速度の向上が図られると考えられる。このようなインデックスの代表例としては、Ｂ−ＴＲＥＥ構造を採用したインデックスが挙げられる。
【００１１】
また、特許文献２は、ハッシュテーブルを用いたインデックスを開示している。更に、特許文献３は、頻繁に行なわれるインデックスの更新処理にかかる時間を短縮するため、索引管理装置によって更新処理をまとめて実行するシステムを開示している。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１３−２２８９９９号公報
【特許文献２】特開２００９−１４０３０２号公報
【特許文献３】特開２０１１−０５３８６８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、Ｂ−ＴＲＥＥ構造を採用したインデックスを用いる場合は、更新処理の度に、ツリー構造を再構築する必要があり、更新処理に時間がかかってしまうという問題がある。
【００１４】
一方、特許文献２に開示されたインデックスを用いた場合は、Ｂ−ＴＲＥＥ構造を採用したインデックスの問題を解消できる。更に、この場合、Ｂ−ＴＲＥＥ構造を採用したインデックスに比べてアクセス回数を少なくすることができるので、検索速度の向上も期待できる。
【００１５】
しかしながら、特許文献２に開示されたインデックスでは、実データがソートされた順に格納されないため、このインデックスをカラムストア型データベースに適用した場合は、逆に検索速度が低下してしまうおそれがある。
【００１６】
また、特許文献３に開示されたシステムを用いた場合も、Ｂ−ＴＲＥＥ構造を採用したインデックスの問題を解消できるが、このシステムでは、索引管理装置を構築する必要があり、システムの構築にかかるコストが大きいという問題がある。
【００１７】
このため、カラムストア型データベースにおいては、インデックスの作成を行なうことなく、検索速度の向上を図ることが求められている。
【００１８】
本発明の目的の一例は、上記問題を解消し、インデックスの作成を行なうことなく、検索速度の向上を図り得る、データベース装置、データ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
上記目的を達成するため、本発明の一側面におけるデータベース装置は、
番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、データ管理部と、
データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、処理実行部と、を備え、
前記処理実行部は、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、
ことを特徴とする。
【００２０】
また、上記目的を達成するため、本発明の一側面におけるデータ管理方法は、
（ａ）番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、ステップと、
（ｂ）データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、ステップと、を有し、
前記（ｂ）のステップでは、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、ことを特徴とする。
【００２１】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、
コンピュータに、
（ａ）番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、ステップと、
（ｂ）データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、ステップと、を実行させ、
前記（ｂ）のステップでは、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、ことを特徴とする。
【発明の効果】
【００２２】
以上のように、本発明によれば、インデックスの作成を行なうことなく、検索速度の向上を図ることができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明で用いられるデータ保持構造の一例を示す図である。
【図２】図２は、図１に示したデータ構造を用いた検索処理を説明する説明図である。
【図３】図３は、本発明の実施の形態１におけるデータベース装置の概略構成を示すブロック図である。
【図４】図４は、本発明の実施の形態１におけるデータベース装置の具体的構成を示すブロック図である。
【図５】図５は、本発明の実施の形態１におけるデータベース装置のリスト作成処理時の動作を示すフロー図である。
【図６】図６は、本発明の実施の形態１におけるデータベース装置の検索処理時の動作を示すフロー図である。
【図７】図７は、本発明の実施の形態１におけるデータベース装置の更新処理時の動作を示すフロー図である。
【図８】図８は、本発明の実施の形態１における更新処理の一例を説明するための図である。
【図９】図９は、本発明の実施の形態２におけるデータベース装置の具体的構成を示すブロック図である。
【図１０】図１０は、本発明の実施の形態２におけるデータベース装置の検索処理時の動作を示すフロー図である。
【図１１】図１１（ａ）及び（ｂ）は、従来からのカラムストア型データベースにおける検索対象値が２つである場合の検索処理を説明するための図である。
【図１２】図１２は、本発明の実施の形態２におけるデータベース装置における検索対象値が２つである場合の検索処理を説明するための図である。
【図１３】図１３は、本発明の実施の形態２におけるデータベース装置の具体的構成を示すブロック図である。
【図１４】図１４は、本発明の実施の形態３におけるデータベース装置のリスト作成処理時の動作を示すフロー図である。
【図１５】図１５は、本発明の実施の形態３において作成された値番号リスト及び値リストの一例を示す図である。
【図１６】図１６は、本発明の実施の形態３におけるデータベース装置の検索処理時の動作を示すフロー図である。
【図１７】図１７は、本発明の実施の形態３における検索処理を説明するための図である。
【図１８】図１８は、本発明の実施の形態３におけるデータベース装置の更新処理時の動作を示すフロー図である。
【図１９】図１９は、本発明の実施の形態３における更新処理の前半部分を説明するための図である。
【図２０】図２０は、本発明の実施の形態３における更新処理の後半部分を説明するための図である。
【図２１】図２１は、本発明の実施の形態１〜３におけるデータベース装置を実現するコンピュータの一例を示すブロック図である。
【図２２】図２２は、従来からのＦＡＳＴ構造の一例を示す図である。
【図２３】図２３は、図２２に示すＦＡＳＴ構造での処理を模式的に示す図である。
【発明を実施するための形態】
【００２４】
（発明の概要）
最初に、図１及び図２を用いて、本発明の概要について説明する。図１は、本発明で用いられるデータ保持構造の一例を示す図である。図２は、図１に示したデータ構造を用いた検索処理を説明する説明図である。
【００２５】
図１に示すように、本発明でも、データ保持構造としてＦＡＳＴ構造が採用されたカラムストア型データベースが利用される。図１の例でも、図２２（ａ）及び（ｂ）に示した従来例と同様に、「日付」、「顧客ＩＤ」、「商品名」のデータを有するテーブルが、値番号リストと値リストとで保持されている。
【００２６】
また、図１の例でも、各値リストには、番号（以下「値リスト番号」と表記する。）が付加された実データの値（以下「データ値」と表記する。）が、重複が排除された状態で登録されている。各値番号リストには、値リスト番号が、対応するデータ値の出現順に登録されている。
【００２７】
但し、図１に示すように、本発明では、図２２に示した従来例と異なり、値リストに、データ値（値リスト番号）の値番号リストでの「登録回数」を登録する領域が追加されている。「登録回数」は、値番号リスト内に登録されている各値リスト番号をカウントすることによって得られる値である。なお、図１の例では、項目数は３、値リストの行数は３又は４、値番号リストの行数は７であるが、本発明は、この例に限定されるものではない。本発明は、あらゆるデータに対して適用可能である。
【００２８】
このため、本発明では、値番号の検索時においては、検索によって特定された対象値の個数が、予め登録されている「登録回数」と一致するまで、検索が行なわれる。つまり、対象値を見つけた回数と、値リストの「登録回数」とが一致すれば、対象となる値番号リストには、それ以上の対象値が存在していないことを意味するため、値番号の検索は終了することになる。
【００２９】
例えば、図２に示すように、対象値が「１０２」である場合は、「登録回数」は２であるため、値番号リストから、「１０２」の値リスト番号（２）が２回見つかると、検索は終了する。このように、本発明では、値番号リストを毎回最後まで検索する必要が無いため、システム全体としての検索性能の向上が図られることになる。
【００３０】
また、本発明では、値リストに格納される実データの値の「登録回数」のカウントは、値リストの作成時に行なわれ、その初期値は、例えば「０」に設定される。更に、ＦＡＳＴ構造の構築時においては、必ず、値リストの作成が必要な各項目にどのようなデータ値が存在しているのかを、元になるテーブルの全データについて確認する必要がある。従って、データ値の「登録回数」のカウントは、この値リストの作成時に実行できるので、「登録回数」は、システムにおいて大きな負担となることなく、取得可能である。
【００３１】
（実施の形態１）
以下、本発明の実施の形態１における、データベース装置、データ管理方法、及びプログラムについて、図３〜図７を参照しながら説明する。
【００３２】
［装置構成］
最初に、本実施の形態１におけるデータベース装置の構成について図３を用いて説明する。図３は、本発明の実施の形態１におけるデータベース装置の概略構成を示すブロック図である。
【００３３】
図３に示すように、本実施の形態１におけるデータベース装置１００は、データ管理部１０と、処理実行部３０とを備えている。このうち、データ管理部１０は、番号順にデータ値が登録された値リストと、値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、データ値を管理している（図１参照）。
【００３４】
処理実行部２０は、データ値が指定された場合に、まず、指定されたデータ値について値リストの番号を特定し、更に、特定した番号と値番号リストとを照合して、特定した番号の登録順位を抽出する。次いで、処理実行部２０は、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する。
【００３５】
また、処理実行部２０は、値リストに、それに登録されているデータ値それぞれ毎の、値番号リストでの登録回数が付加されている場合は、指定されたデータ値について、値番号リストでの登録回数を特定する（図２参照）。そして、この場合は、処理実行部２０は、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と値番号リストとの照合を停止する（図２参照）。
【００３６】
このように、データベース装置１００では、値リストに、各データ値の値番号リストでの登録回数を付加することで、指定されたデータ値の値リストでの番号と、値番号リストとの照合を最小限にすることができる。このため、データベース装置１００によれば、値番号リストを常に最後まで検索する必要がないので、インデックスの作成を行なうことなく、検索速度の向上を図ることができる。
【００３７】
ここで、図４を用いて、本実施の形態１におけるデータベース装置１００の構成を更に具体的に説明する。図４は、本発明の実施の形態１におけるデータベース装置の具体的構成を示すブロック図である。
【００３８】
図４に示すように、本実施の形態１では、データベース装置１００は、データ管理部１０及び処理実行部２０に加え、更に処理受信部３０を備えている。処理受信部３０は、ネットワーク３００を介して、クライアント２１０及びＡＰ（Access Point）２２０といった外部の装置に接続され、外部の装置によって要求された処理（検索処理、更新処理等）を受け付ける。なお、このとき要求された処理には、処理対象となるデータ値の指定も含まれている。
【００３９】
また、本実施の形態１では、処理実行部２０は、処理種別解析部２１と、検索処理部２２と、更新処理部２３と、リスト作成部２４とを備えている。このうち、処理種別解析部２１は、処理受信部３０によって受け付けられた処理がどのような処理であるのか、例えば、検索処理及び更新処理のいずれであるのかを解析する。また、処理種別解析部２１は、処理対象となるデータ値を特定する。
【００４０】
また、リスト作成部２４は、行毎に１又は２以上のデータ値を登録するテーブルから、テーブルの列毎に、データ値を抽出して、値リスト１１とそれに対応する値番号リスト１２とを作成する。更に、リスト作成部２４は、値リスト１１の作成の際に、抽出したデータ値毎に、各データ値の抽出回数を特定し、特定した抽出回数を、各データ値の登録回数として、値リスト１１に付加する。
【００４１】
検索処理部２２は、図１を用いて説明したように、処理対象となるデータ値の値番号リストでの番号（値番号リスト番号）を特定し、更に、特定した値番号リスト番号における値番号リストでの登録順位を抽出する。また、このときの登録順位の抽出は、値番号リストに付加されている登録回数の数だけ行なわれる。そして、検索処理部２２が、抽出した登録順位に基づいて検索処理を実行する。更新処理部２３は、要求された処理が更新処理の場合に、値リスト１１及び値番号リスト１２に格納されている値に対して、更新処理を実行する。
【００４２】
データ管理部１０は、本実施の形態１では、データ値をＦＡＳＴ構造によって格納及び管理している。具体的には、データ管理部１０は、値リスト１１と、値番号リスト１２とを格納し、これらを管理している。また、図４の例では、１組みの値リスト１１及び値番号リスト１２のみが図示されているが、実際には、項目の数に応じて、値リスト１１及び値番号リスト１２が格納されている。
【００４３】
また、値リスト１１には、各データ値と、各データ値に付加された番号（値リスト番号）と、各データ値の登録回数とが登録されている。値番号リスト１２には、データ値の登録順位を表す値番号と、各値番号に対応付けられた値リスト番号とが登録されている。
【００４４】
また、本実施の形態では、データ管理部１０は、値リスト１１及び値番号リスト１２に加えて、抽出回数情報１３を格納及び管理している。抽出回数情報１３は、処理対象の値リスト番号についての、現時点における登録順位の抽出回数を特定する情報である。従って、検索処理部２２及び更新処理部２３は、抽出回数情報１３を確認することにより、値番号リスト１２から、処理対象となるデータ値が今いくつ見つかっているかを特定できる。
【００４５】
［装置動作］
次に、本実施の形態１におけるデータベース装置１００の動作について図５〜図８を用いて説明する。また、本実施の形態１では、データベース装置１００を動作させることによって、データ管理方法が実施される。よって、本実施の形態１におけるデータ管理方法の説明は、以下のデータ管理装置１００の動作説明に代える。また、以下の説明では、適宜、図１〜図４を参酌する。
【００４６】
リスト作成処理：
最初に、図５を用いて、値番号リスト及び値リストの作成処理について説明する。図５は、本発明の実施の形態１におけるデータベース装置のリスト作成処理時の動作を示すフロー図である。また、以下においては、図２２（ａ）に示したテーブルから、図１に示した値番号リスト及び値リストを作成する場合について説明する。
【００４７】
図５に示すように、最初に、リスト作成部２４は、データ管理部１０の記憶領域において、値リスト１１及び値番号リスト１２に使用する領域を確保し、テーブルに登録されている項目の１つを選択する（ステップＡ１）。
【００４８】
次に、リスト作成部２４は、選択した項目のテーブルにおける行数を表すパラメータｉの値を初期値に設定する（ステップＡ２）。ステップＡ２における初期値としては、「１」が挙げられる。
【００４９】
次に、リスト作成部２４は、テーブル（図２２（ａ）参照）から、ステップＡ１で選択された項目のｉ行目のデータ値を取得する（ステップＡ３）。次に、リスト作成部２４は、ステップＡ３で取得したｉ行目のデータ値が、値リスト１１に存在しているかどうかを判定する（ステップＡ４）。
【００５０】
ステップＡ４の判定の結果、ｉ行目のデータ値が値リスト１１に存在している場合は、リスト作成部２４は、値リスト１１において、このデータ値の登録回数に１を加算する（ステップＡ６）。
【００５１】
一方、ステップＡ４の判定の結果、ｉ行目のデータ値が値リスト１１に存在していない場合は、リスト作成部２４は、ｉ行目のデータ値を値リスト１１に追加し（ステップＡ５）、その後、ステップＡ６を実行する。また、ステップＡ５では、リスト作成部２４は、ｉ行目のデータ値に値リスト番号を付加すると共に、付加した値リスト番号も、値リスト１１に追加する。
【００５２】
次に、ステップＡ６の実行後、リスト作成部２４は、値番号リスト１２において、値番号として、ｉ番を追加する。更に、リスト作成部２４は、ｉ番に対応する値リスト番号として、ステップＡ３で取得されたデータ値に付加されている値リスト番号（ステップＡ５が実行された場合は、そのときに付加された値リスト番号）を追加する（ステップＡ７）。
【００５３】
次に、リスト作成部２４は、ｉの値に１を加算し（ステップＡ８）、その後、加算後のｉの値がテーブル（データ値）の行数以下であるかどうかを判定する（ステップＡ９）。
【００５４】
ステップＡ９の判定の結果、ｉの値がテーブル（データ値）の行数以下である場合は、リスト作成部２４は、再度、ステップＡ３を実行する。一方、ステップＡ９の判定の結果、ｉの値がテーブル（データ値）の行数以下でない場合は、リスト作成部２４は、全ての項目について値番リスト１１及び値番号リスト１２が作成済みであるかどうかを判定する（ステップＡ１０）。
【００５５】
ステップＡ１０の判定の結果、全ての項目について値番リスト１１及び値番号リスト１２が作成済みでない場合は、リスト作成部２４は、再度ステップＡ１を実行する。一方、ステップＡ１０の判定の結果、全ての項目について値番リスト１１及び値番号リスト１２が作成済みである場合は、リスト作成部２４は、処理を終了する。
【００５６】
ここで、ステップＡ１において、項目として「日付」が選択された場合の処理について具体的に説明する（図２２（ａ）参照）。まず、ｉ＝１であるとすると、リスト作成部２４は、１行目のデータ値「２０１４／３／１」を取得する。
【００５７】
そして、リスト作成部２４は、「２０１４／３／１」が値リストに存在しないため、値リストの１行目に、データ値「２０１４／３／１」を追加し、更に、このデータ値に対して値リスト番号「１」を付加する。また、リスト作成部２４は、データ値「２０１４／３／１」の登録回数に１を加算する。
【００５８】
更に、リスト作成部２４は、値番号リスト１２において、値番号として、１番を追加し、更に、値番号「１」に対応する値リスト番号「１」を追加する。
【００５９】
次に、ｉ＝２となると、リスト作成部２４は、２行目のデータ値「２０１４／３／１」を取得する。このデータ値は、既に値リストに存在するため、リスト作成部２４は、値リスト１１のデータ値「２０１４／３／１」の登録回数に１を加算する。また、リスト作成部２４は、値番号リス１２トにおいて、値番号として、２番を追加し、更に、値番号「２」に対応する値リスト番号「１」を追加する。
【００６０】
次に、ｉ＝３となると、リスト作成部２４は、３行目のデータ値「２０１４／３／１」を取得する。この場合も、データ値は、既に値リストに存在するため、リスト作成部２４は、値リストのデータ値「２０１４／３／１」の登録回数に１を加算する。また、リスト作成部２４は、値番号リスト１２において、値番号として、３番を追加し、更に、値番号「３」に対応する値リスト番号「１」を追加する。
【００６１】
次に、ｉ＝４となると、リスト作成部２４は、４行目のデータ値「２０１４／３／２」を取得する。このデータ値「２０１４／３／２」は値リストに存在しないため、リスト作成部２４は、値リストの２行目に、データ値「２０１４／３／２」を追加し、更に、このデータ値に対して値リスト番号「２」を付加する。また、リスト作成部２４は、データ値「２０１４／３／２」の登録回数に１を加算する。
【００６２】
更に、リスト作成部２４は、値番号リスト１２において、値番号として、４番を追加し、更に、値番号「４」に対応する値リスト番号「２」を追加する。
【００６３】
そして、リスト作成部２４は、同様の処理を、ｉ＝７まで繰り返し、「日付」について、図１に示す値リスト及び値番号リストを作成する。また、リスト作成部２４は、項目「顧客ＩＤ」と項目「商品名」とについても、ｉ＝１〜ｉ＝７までの処理を実行し、これらの項目についても図１に示す値リスト及び値番号リストを作成する。
【００６４】
検索処理：
続いて、図６を用いて、値番号リスト及び値リストを利用した検索処理について説明する。図６は、本発明の実施の形態１におけるデータベース装置の検索処理時の動作を示すフロー図である。また、以下においては、図１に示した値番号リスト及び値リストを用いる場合について説明する。
【００６５】
図６に示すように、最初に、検索処理部２２は、検索対象となるデータ値（以下「検索対象値」と表記する。）の値リスト番号を取得する（ステップＢ１）。次に、検索処理部２２は、値リストに格納されている、検索対象値の登録回数を取得する（ステップＢ２）。
【００６６】
次に、検索処理部２２は、値番号リストの行数を示すパラメータｊの値を初期値の「１」に設定し、更に、対象データ一致カウンタｋの値を初期値の「０」に設定する（ステップＢ３）。なお、対象データ一致カウンタｋは、検索対象値の値リスト番号が値番号リストにおいて一致した回数を示すパラメータである。また対象データ一致カウンタｋの値は、抽出回数情報１３として、データ管理部１０に格納される。
【００６７】
次に、検索処理部２２は、ｋの値が、ステップＢ２で取得された検索対象値の登録回数より小さいかどうかを判定する（ステップＢ４）。ステップＢ４の判定の結果、ｋの値が、ステップＢ２で取得された検索対象値の登録回数より小さくない場合は、検索処理部２２は、処理を終了する。
【００６８】
一方、ステップＢ４の判定の結果、ｋの値が、ステップＢ２で取得された検索対象値の登録回数より小さい場合は、検索処理部２２は、ｊの値が、値番号リストの全行数以下であるかどうかを判定する（ステップＢ５）。
【００６９】
ステップＢ５の判定の結果、ｊの値が、値番号リストの全行数以下でない場合は、検索処理部２２は、処理を終了する。一方、ｊの値が、値番号リストの全行数以下である場合は、検索処理部２２は、値番号リストの値番号ｊに対応付けられている値リスト番号を取得する（ステップＢ６）。
【００７０】
次に、検索処理部２２は、ステップＢ６で取得された、値番号ｊに対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する（ステップＢ７）。
【００７１】
ステップＢ７の判定の結果、値番号ｊに対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致していない場合は、検索処理部２２は、ｊの値に１を加算し（ステップＢ８）、その後、再度ステップＢ６を実行する。
【００７２】
一方、ステップＢ７の判定の結果、値番号ｊに対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致している場合は、検索処理部２２は、値番号リストの値番号ｊを、検索対象値の登録順位として取得する（ステップＢ９）。
【００７３】
次に、検索処理部２２は、ｊの値に１を加算し、更に、ｋの値にも１を加算する（ステップＢ１０）。その後、検索処理部２２は、再度、ステップＢ４を実行する。
【００７４】
ここで、検索対象値が顧客ＩＤ「１０２」である場合の検索処理について具体的に説明する（図１参照）。まず、検索処理部２２は、顧客ＩＤの値リストから、検索対象である「１０２」の値リスト番号を取得する。検索対象値「１０２」は、値リストの２行目に格納されているので、検索処理部２２は、値リスト番号として「２」を取得する（図１参照）。更に、検索処理部２２は、検索対象値「１０２」の登録回数として、「２」を取得する（図１参照）。
【００７５】
次に、検索処理部２２は、値番号リストの値番号「１」に対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する。この場合、前者は「１」で、後者は「２」であるので、検索処理部１０２は、一致していないと判断し、ｊの値に１を加算する。
【００７６】
次に、検索処理部２２は、値番号リストの値番号「２」に対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する。この場合は、前者は「２」で、後者も「２」であるので、検索処理部２２は、一致していると判断する。よって、検索処理部２２は、値番号リストの値番号「２」を、検索対象値の登録順位として取得し、更に、ｊの値とｋの値とのそれぞれに１を加算する。
【００７７】
次に、検索処理部２２は、値番号リストの値番号「３」に対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する。この場合、前者は「１」で、後者は「２」であるので、検索処理部２２は、一致していないと判断し、ｊの値に１を加算する。
【００７８】
次に、検索処理部２２は、値番号リストの値番号「４」に対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する。この場合も、前者は「１」で、後者は「２」であるので、検索処理部１０２は、一致していないと判断し、ｊの値に１を加算する。
【００７９】
次に、検索処理部２２は、値番号リストの値番号「５」に対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する。この場合は、前者は「２」で、後者も「２」であるので、検索処理部２２は、一致していると判断する。よって、検索処理部１０２は、値番号リストの値番号「５」を、検索対象値の登録順位として取得し、更に、ｊの値とｋの値とのそれぞれに１を加算する。
【００８０】
そして、この結果、ｋの値が検索対象値の登録回数と同じとなり、ステップＢ４の判定がＮｏとなるので、検索処理部２２は処理を終了する。
【００８１】
また、登録順位として、値番号「２」と値番号「５」とが取得されているので、検索処理部２２は、他の項目についての検索も指示されている場合は、これらの値番号を用いて、指示の対象となった項目の値番号リストと値リストとを検索する。このように、本実施の形態１では、値番号リストを全て検索することなく、検索対象値を取得することが可能となっている。
【００８２】
更新処理：
続いて、図７を用いて、値番号リスト及び値リストの更新処理について説明する。図７は、本発明の実施の形態１におけるデータベース装置の更新処理時の動作を示すフロー図である。また、以下においては、図１に示した値番号リスト及び値リストを用いる場合について説明する。
【００８３】
図７に示すように、最初に、更新処理部２３は、要求された更新処理において更新対象となっているデータ値（以下「更新前データ値」と表記する。）を特定し、その値リスト番号を取得する（ステップＣ１）。
【００８４】
次に、更新処理部２３は、値リストに格納されている、更新前データ値の登録回数を取得し（ステップＣ２）、更に、取得した登録回数から１を減算し、得られた値で、値リストに格納されている当該登録回数を更新する（ステップＣ３）。
【００８５】
次に、更新処理部２３は、要求された更新処理で指定されている更新後のデータ値（以下「更新後データ値」と表記する。）を特定し、特定した更新後データ値が値リストに存在するかどうかを判定する（ステップＣ４）。
【００８６】
ステップＣ４の判定の結果、更新後データ値が値リストに存在する場合は、更新処理部２３は、値リストに格納されている、更新後データ値に対応する登録回数を取得する（ステップＣ５）。次に、更新処理部２３は、ステップＣ５で取得した登録回数に１を加算し、得られた値で、値リストに格納されている当該登録回数を更新する（ステップＣ６）。
【００８７】
一方、ステップＣ４の判定の結果、更新後データ値が値リストに存在しない場合は、更新処理部２３は、値リストに、更新後データ値を新たなデータ値として格納する（ステップＣ７）。また、更新処理部２３は、更新後データ値に新たな値リスト番号を付加する。次に、更新処理部２３は、新たなデータ値の登録回数として「１」を格納する。
【００８８】
次に、ステップＣ６又はＣ８の実行後、更新処理部２３は、更新後データ値の値リスト番号を、値番号リストの更新箇所に格納する（ステップＣ９）。これにより、更新前データ値の更新がなされたことになる。
【００８９】
次に、更新処理部２３は、全ての更新前データ値について更新処理が終了しているかどうかを判定する（ステップＣ１０）。ステップＣ１０の判定の結果、全ての更新前データ値について更新処理が終了していない場合は、更新処理部２３は、再度、ステップＣ１を実行する。一方、ステップＣ１０の判定の結果、全ての更新前データ値について更新処理が終了している場合は、更新処理部２３は、処理を終了する。
【００９０】
ここで、図８を用いて、「２０１４／３／２」に「ｌｅｍｏｎ」を買った顧客のＩＤを「１０３」に更新する場合の更新処理について具体的に説明する（図１参照）。図８は、本発明の実施の形態１における更新処理の一例を説明するための図である。
【００９１】
まず、図８に示すように、更新処理部２３は、「２０１４／３／２」に「ｌｅｍｏｎ」を購入した顧客のＩＤを検索する。本例では、値番号リストにおいて、日付「２０１４／３／２」に対応する値番号は「４」である。
【００９２】
よって、更新処理部２３は、顧客ＩＤの値番号リストの値番号「４」に対応する値リスト番号が「１」であるので、値リスト番号「１」が付加されているデータ値（「１０１」）を、更新前データ値として特定する。また、更新処理部２３は、更新前データ値「１０１」の登録回数を４から１減算し、「３」とする。
【００９３】
次に、更新処理部２３は、更新後データ値「１０３」が、値リストに存在するかどうかを判定する。本例では、更新後データ値は、値リストに存在し、その値リスト番号は「３」であるので、対応する登録回数に１を加算し、「２」とする。更に、更新処理部２３は、値番号リストの更新箇所（値番号「４」の値リスト番号）に、新たに値リスト番号「３」を格納する。
【００９４】
更新箇所が複数存在する場合は、更新処理部２３は、上述の処理を必要なだけ実行する。また、値リストのデータ値に紐付けられている登録回数が変更されても、本実施の形態１では、既存の値番号リストと値リストとはそのまま使用できる。このため、本実施の形態１では、従来からのインデックスを用いる場合と異なり、更新が入る度に、各リストを作成し直す必要はない。
【００９５】
［プログラム］
本実施の形態１におけるプログラムは、コンピュータに、図５に示すステップＡ１〜Ａ１０、図６に示すステップＢ１〜Ｂ１０、図７に示すステップＣ１〜Ｃ１０を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態１におけるデータベース装置１００とデータ管理方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、処理実行部２０及び処理受信部３０として機能し、処理を行なう。また、データ管理部１０は、コンピュータに備えられたハードディスク等の記憶装置によって実現できる。
【００９６】
［実施の形態１による効果］
以上のように、本実施の形態１によれば、検索処理において、値番号リストを常に最後まで検索する必要がなく、検索対象値が見つかった時点で、値番号リストの検索処理が終了する。このため、検索にかかる時間が従来例に比べて平均すると半分程度になると予想され、検索速度の向上が図られる。
【００９７】
また、本実施の形態１では、データ値の削除が行なわれた場合は、対応する登録回数がゼロとなるため、削除されたデータ値が検索対象となったときは、検索処理が実行されない状態となる。よって、この点からも検索速度の向上が期待される。
【００９８】
更に、本実施の形態１では、従来例のように、インデックスが作成されないため、更新処理の実行中に別の更新処理が要求されても、既に実行されている更新処理の継続は可能となる。また、インデックスが作成されないので、インデックスの再生成も不要となる。よって、インデックスの再作成に時間がかかることが無いので、システム全体としての性能も向上する。
【００９９】
（実施の形態２）
次に、本発明の実施の形態２における、データベース装置、データ管理方法、及びプログラムについて、図９〜図１２を参照しながら説明する。
【０１００】
［装置構成］
最初に、本実施の形態２におけるデータベース装置の構成について図９を用いて説明する。図９は、本発明の実施の形態２におけるデータベース装置の具体的構成を示すブロック図である。
【０１０１】
図９に示すように、本実施の形態２におけるデータベース装置１０１は、実施の形態１において図２に示したデータベース装置１００と同様に、データ管理部４０と、処理実行部５０と、処理受信部６０とを備えている。但し、本実施の形態２は、処理実行部５０の機能と、データ管理部４０に格納される情報とにおいて、実施の形態１と異なっている。以下、相違点について具体的に説明する。
【０１０２】
まず、本実施の形態２では、処理実行部５０における検索処理部５２は、複数のデータ値が指定されると、指定されたデータ値（検索対象値）毎に、値番号リストでの登録回数を特定する。そして、検索処理部５２は、各検索対象値について、対応する登録回数の数だけ登録順位が抽出できた時点で、値リスト番号と値番号リストとの照合を停止する。また、検索処理部５２は、各検索対象値の値リスト番号を特定し、特定した値リスト番号を格納した「検査対象列」を作成し、これをデータ管理部４０に出力する。
【０１０３】
本実施の形態２では、このように、検索対象値毎に検索処理が行なわれるため、データ管理部４０は、検索対象値の数だけ、抽出回数情報４３を格納及び管理する。また、データ管理部４０は、出力されてきた検査対象列を特定する検査対象列情報４４も格納及び管理する。
【０１０４】
なお、上述した相違点を除けば、本実施の形態２におけるデータベース装置１０１は、実施の形態１において図２に示したデータベース装置１０１と同様に構成されている。
【０１０５】
［装置動作］
次に、本実施の形態２におけるデータベース装置１０１の動作について図１０を用いて説明する。また、本実施の形態２でも、データベース装置１０１を動作させることによって、データ管理方法が実施される。よって、本実施の形態２におけるデータ管理方法の説明も、以下のデータ管理装置１０１の動作説明に代える。また、以下の説明では、適宜、図９を参酌する。
【０１０６】
図１０は、本発明の実施の形態２におけるデータベース装置の検索処理時の動作を示すフロー図である。また、以下においては、図１に示した値番号リスト及び値リストを用いる場合について説明する。なお、本実施の形態２において、リスト作成処理及び更新処理は、実施の形態１と同様であるので、これらの処理の説明については省略する。
【０１０７】
図１０に示すように、最初に、検索処理部５２は、複数の検索対象値それぞれについて、値リスト番号を取得する（ステップＤ１）。また、ステップＤ１では、検索処理部５２は、取得した各値リスト番号を格納した「検索対象列」を作成し、これを検索対象列情報４４として、データ管理部４０に格納する。
【０１０８】
次に、検索処理部２２は、検索対象値毎に、値リストに格納されている、検索対象値の登録回数を取得する（ステップＤ２）。
【０１０９】
次に、検索処理部２２は、値番号リストの行数を示すパラメータｊの値を初期値の「１」に設定し、更に、対象データ一致カウンタｋ１、ｋ２、・・・ｋｎ（ｎ：自然数）それぞれの値を初期値の「０」に設定する（ステップＤ３）。なお、対象データ一致カウンタｋ１、ｋ２、・・・ｋｎ、それぞれは、検索対象値毎の、値リスト番号が値番号リストにおいて一致した回数を示すパラメータである。また、対象データ一致カウンタｋ１、ｋ２、・・・ｋｎ、それぞれは、抽出回数情報４３として、データ管理部１０に格納される。
【０１１０】
次に、検索処理部５２は、ｋ１〜ｋｎの全ての値が、ステップＤ２で取得された対応する検索対象値の登録回数より小さいかどうかを判定する（ステップＤ４）。ステップＤ４の判定の結果、ｋ１〜ｋｎの全ての値が、対応する検索対象値の登録回数より小さい場合は、検索処理部５２は、ステップＤ７を実行する。
【０１１１】
一方、ステップＤ４の判定の結果、ｋ１〜ｋｎの全ての値が、対応する検索対象値の登録回数より小さくない場合（１つでも登録回数以上となっている場合）は、検索処理部５２は、登録回数以上となっている対象データ一致カウンタｋを特定する。そして、検索処理部５２は、検索対象列情報から、特定した対象データ一致カウンタｋに対応する検索対象地の値リスト番号を削除する（ステップＤ５）。
【０１１２】
次に、ステップＤ５の実行後、検索処理部５２は、検索対象列情報に未だ値リスト番号が存在しているかどうかを判定する（ステップＤ６）。ステップＤ６の判定の結果、検索対象列情報に未だ値リスト番号が存在していない場合は、検索処理部５２は、処理を終了する。一方、ステップＤ６の判定の結果、検索対象列情報に未だ値リスト番号が存在している場合は、検索処理部５２は、ステップＤ７を実行する。
【０１１３】
次に、ステップＤ４でＹｅｓと判定された場合、又はステップＤ６が実行された場合は、検索処理部５２は、ｊの値が、値番号リストの全行数以下であるかどうかを判定する（ステップＤ７）。
【０１１４】
ステップＤ７の判定の結果、ｊの値が、値番号リストの全行数以下でない場合は、検索処理部５２は、処理を終了する。一方、ｊの値が、値番号リストの全行数以下である場合は、検索処理部５２は、値番号リストの値番号ｊに対応付けられている値リスト番号を取得する（ステップＤ８）。
【０１１５】
次に、検索処理部５２は、検索対象列情報において、ステップＤ８で取得された値番号ｊに対応付けられた値リスト番号と一致する、値リスト番号が存在しているかどうかを判定する（ステップＤ９）。
【０１１６】
ステップＤ９の判定の結果、値番号ｊに対応付けられた値リスト番号に一致する値リスト番号が存在していない場合は、検索処理部５２は、ｊの値に１を加算し（ステップＤ１０）、その後、再度ステップＤ８を実行する。
【０１１７】
一方、ステップＤ９の判定の結果、値番号ｊに対応付けられた値リスト番号に一致する値リスト番号が存在している場合は、検索処理部５２は、値番号リストの値番号ｊを、検索対象値の登録順位として取得する（ステップＤ１１）。
【０１１８】
次に、検索処理部５２は、ｊの値に１を加算し、更に、値番号ｊに対応付けられた値リスト番号を持つ検索対象値を特定し、特定した検索対象値の対象データ一致カウンタｋの値にも１を加算する（ステップＤ１２）。その後、検索処理部５２は、再度、ステップＤ４を実行する。
【０１１９】
ここで、２つの検索対象値を一度に検索する場合の具体例について図１１及び図１２を用いて説明する（図１参照）。図１１（ａ）及び（ｂ）は、従来からのカラムストア型データベースにおける検索対象値が２つである場合の検索処理を説明するための図である。図１２は、本発明の実施の形態２におけるデータベース装置における検索対象値が２つである場合の検索処理を説明するための図である。
【０１２０】
図１１（ａ）に示すように、従来からのカラムストア型データベースにおいて、検索対象値として「２０１４／３／１」と「２０１４／３／３」とが入力されたとする。この場合、まず、「２０１４／３／１」について、値リストからの値リスト番号の取得、取得した値リスト番号と値番号リストの全値番号との比較が行なわれる。次いで、「２０１４／３／３」について、値リストからの値リスト番号の取得、取得した値リスト番号と値番号リストの全値番号との比較が行なわれる。
【０１２１】
また、図１１（ｂ）に示すように、従来からのカラムカラムストア型データベースでは、２つの検索対象値について、順に値リスト番号を取得したのち、２つの値リスト番号を、同時に、値番号リストに照合することもできる。但し、この場合であっても、取得した２つの値リスト番号と値番号リストの全値番号との比較は必要となる。
【０１２２】
これに対して、図１２に示すように、本実施の形態２におけるデータベース装置１０１では、２つの検索対象値の２つの値リスト番号を、同時に、値番号リストに照合でき、更に、各検索対象値について値番号リストを常に最後まで検索する必要もない。このように、本実施の形態２では、２つの検索対象値について同時に検索を行なう場合において、検索範囲を縮小させることが可能であり、検索速度の向上が図られる。
【０１２３】
［プログラム］
本実施の形態２におけるプログラムは、コンピュータに、図１０に示すステップＤ１〜Ｄ１２、図５に示すステップＡ１〜Ａ１０、図７に示すステップＣ１〜Ｃ１０を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態２におけるデータベース装置１０１とデータ管理方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、処理実行部５０及び処理受信部６０として機能し、処理を行なう。また、データ管理部４０は、コンピュータに備えられたハードディスク等の記憶装置によって実現できる。
【０１２４】
（実施の形態３）
次に、本発明の実施の形態３における、データベース装置、データ管理方法、及びプログラムについて、図１３〜図２０を参照しながら説明する。
【０１２５】
［装置構成］
最初に、本実施の形態３におけるデータベース装置の構成について図１３を用いて説明する。図１３は、本発明の実施の形態２におけるデータベース装置の具体的構成を示すブロック図である。
【０１２６】
図１３に示すように、本実施の形態３におけるデータベース装置１０２は、実施の形態１において図２に示したデータベース装置１００と同様に、データ管理部７０と、処理実行部８０と、処理受信部９０とを備えている。但し、本実施の形態３は、処理実行部８０の機能と、データ管理部７０に格納される情報とにおいて、実施の形態１と異なっている。以下、相違点について具体的に説明する。
【０１２７】
まず、処理実行部８０におけるリスト作成部８４は、実施の形態１及び２と同様に、値リスト７１に、それに登録されているデータ値７１ｂ毎に、値番号リスト７１での登録回数を付加する。そして、本実施の形態３では、リスト作成部８４は、各データ値の値番号リスト７１における最先の登録順位（以下「先頭位置」とも表記する。）も付加する（後述の図１７参照）。
【０１２８】
また、値リスト７１の先頭位置７１ｄにより、処理実行部８０における検索処理部８２は、検索処理時において、先頭位置から、検索対象値の値リスト番号と値番号リストとの照合を開始することができる。このため、本実施の形態３によれば、検索の開始位置を狭めることができるので、よりいっそうの検索速度の向上が図られる。
【０１２９】
なお、上述した相違点を除けば、本実施の形態３におけるデータベース装置１０２は、実施の形態１において図２に示したデータベース装置１０１と同様に構成されている。
【０１３０】
［装置動作］
次に、本実施の形態３におけるデータベース装置１０２の動作について図１４〜図２０を用いて説明する。また、本実施の形態１では、データベース装置１００を動作させることによって、データ管理方法が実施される。よって、本実施の形態１におけるデータ管理方法の説明は、以下のデータ管理装置１００の動作説明に代える。また、以下の説明では、適宜、図１３を参酌する。
【０１３１】
リスト作成処理：
最初に、図１４を用いて、値番号リスト及び値リストの作成処理について説明する。図１４は、本発明の実施の形態３におけるデータベース装置のリスト作成処理時の動作を示すフロー図である。また、以下においては、図２２（ａ）に示したテーブルから、図１５に示す値番号リスト及び値リストを作成する場合について説明する。
【０１３２】
図１４に示すように、最初に、リスト作成部８４は、データ管理部７０の記憶領域において、値リスト７１及び値番号リスト７２に使用する領域を確保し、テーブルに登録されている項目の１つを選択する（ステップＥ１）。
【０１３３】
次に、リスト作成部８４は、選択した項目のテーブルにおける行数を表すパラメータｉの値を初期値に設定する（ステップＥ２）。ステップＥ２における初期値としては、「１」が挙げられる。
【０１３４】
次に、リスト作成部８４は、テーブル（図２２（ａ）参照）から、ステップＥ１で選択された項目のｉ行目のデータ値を取得する（ステップＥ３）。次に、リスト作成部８４は、ステップＥ３で取得したｉ行目のデータ値が、値リスト７１に存在しているかどうかを判定する（ステップＥ４）。
【０１３５】
ステップＥ４の判定の結果、ｉ行目のデータ値が値リスト７１に存在している場合は、リスト作成部８４は、値リスト７１において、このデータ値の登録回数に１を加算する（ステップＥ７）。
【０１３６】
一方、ステップＥ４の判定の結果、ｉ行目のデータ値が値リスト７１に存在していない場合は、リスト作成部８４は、ｉ行目のデータ値を値リスト７１に追加する（ステップＥ５）。また、ステップＥ５では、リスト作成部８４は、ｉ行目のデータ値に値リスト番号を付加すると共に、付加した値リスト番号も、値リスト７１に追加する。
【０１３７】
続いて、リスト作成部８４は、値リスト７１において、ｉ行目のデータ値の先頭位置として、ｉを追加し（ステップＥ６）、その後、ステップＥ７を実行する。
【０１３８】
次に、ステップＥ７の実行後、リスト作成部８４は、値番号リスト７２において、値番号として、ｉ番を追加する。更に、リスト作成部２４は、ｉ番に対応する値リスト番号として、ステップＥ３で取得されたデータ値に付加されている値リスト番号（ステップＥ５が実行された場合は、そのときに付加された値リスト番号）を追加する（ステップＥ８）。
【０１３９】
次に、リスト作成部８４は、ｉの値に１を加算し（ステップＥ９）、その後、加算後のｉの値がテーブル（データ値）の行数以下であるかどうかを判定する（ステップＥ１０）。
【０１４０】
ステップＥ１０の判定の結果、ｉの値がテーブル（データ値）の行数以下である場合は、リスト作成部８４は、再度、ステップＥ３を実行する。一方、ステップＥ１０の判定の結果、ｉの値がテーブル（データ値）の行数以下でない場合は、リスト作成部８４は、全ての項目について値番リスト１１及び値番号リスト１２が作成済みであるかどうかを判定する（ステップＥ１１）。
【０１４１】
ステップＥ１１の判定の結果、全ての項目について値番リスト１１及び値番号リスト１２が作成済みでない場合は、リスト作成部８４は、再度ステップＥ１を実行する。一方、ステップＥ１１の判定の結果、全ての項目について値番リスト１１及び値番号リスト１２が作成済みである場合は、リスト作成部８４は、処理を終了する。
【０１４２】
ここで、図１５を用いて、ステップＥ１において、項目として「日付」が選択された場合の処理について具体的に説明する。図１５は、本発明の実施の形態３において作成された値番号リスト及び値リストの一例を示す図である。まず、ｉ＝１であるとすると、リスト作成部２４は、１行目のデータ値「２０１４／３／１」を取得する。
【０１４３】
そして、リスト作成部８４は、「２０１４／３／１」が値リストに存在しないため、値リストの１行目に、データ値「２０１４／３／１」を追加し、更に、このデータ値に対して値リスト番号「１」を付加する。また、リスト作成部２４は、データ値「２０１４／３／１」の登録回数に１を加算し、先頭位置として「１」を追加する。
【０１４４】
また、ｉ＝４となったとき、リスト作成部８４は、４行目のデータ値「２０１４／３／２」を取得する。このデータ値「２０１４／３／２」は値リストに存在しないため、リスト作成部２４は、値リストの２行目に、データ値「２０１４／３／２」を追加し、更に、このデータ値に対して、値リスト番号「２」と先頭位置「４」とを付加する。また、リスト作成部２４は、データ値「２０１４／３／２」の登録回数に１を加算する。
【０１４５】
同様に、ｉ＝５になったときは、リスト作成部８４は、５行目のデータ値「２０１４／３／３」の先頭位置として、「５」を追加する。ｉ＝７になったときは、リスト作成部８４は、７行目のデータ値「２０１４／３／４」の先頭位置として、「７」を追加する。
【０１４６】
検索処理：
続いて、図１６を用いて、値番号リスト及び値リストを利用した検索処理について説明する。図１６は、本発明の実施の形態３におけるデータベース装置の検索処理時の動作を示すフロー図である。また、以下においては、図１５に示した値番号リスト及び値リストを用いる場合について説明する。
【０１４７】
図１６に示すように、最初に、検索処理部８２は、検索対象となるデータ値（以下「検索対象値」と表記する。）の値リスト番号を取得する（ステップＦ１）。次に、検索処理部８２は、値リストに格納されている、検索対象値の登録回数を取得する（ステップＦ２）。更に、検索処理部８２は、値リストに格納されている、検索対象値の先頭位置も取得する（ステップＦ３）。
【０１４８】
次に、検索処理部８２は、値番号リストの行数を示すパラメータｊの値を、ステップＦ３で取得した先頭位置に設定し、更に、対象データ一致カウンタｋの値を初期値の「０」に設定する（ステップＦ４）。対象データ一致カウンタｋの値は、抽出回数情報７３として、データ管理部７０に格納されている。
【０１４９】
次に、検索処理部８２は、ｋの値が、ステップＦ２で取得された検索対象値の登録回数より小さいかどうかを判定する（ステップＦ５）。ステップＦ５の判定の結果、ｋの値が、ステップＦ２で取得された検索対象値の登録回数より小さくない場合は、検索処理部８２は、処理を終了する。
【０１５０】
一方、ステップＦ５の判定の結果、ｋの値が、ステップＦ２で取得された検索対象値の登録回数より小さい場合は、検索処理部８２は、ｊの値が、値番号リストの全行数以下であるかどうかを判定する（ステップＦ６）。
【０１５１】
ステップＦ６の判定の結果、ｊの値が、値番号リストの全行数以下でない場合は、検索処理部８２は、処理を終了する。一方、ｊの値が、値番号リストの全行数以下である場合は、検索処理部８２は、値番号リストの値番号ｊに対応付けられている値リスト番号を取得する（ステップＦ７）。
【０１５２】
次に、検索処理部８２は、ステップＦ７で取得された、値番号ｊに対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する（ステップＦ８）。
【０１５３】
ステップＦ８の判定の結果、値番号ｊに対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致していない場合は、検索処理部８２は、ｊの値に１を加算し（ステップＦ９）、その後、再度ステップＦ７を実行する。
【０１５４】
一方、ステップＦ８の判定の結果、値番号ｊに対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致している場合は、検索処理部８２は、値番号リストの値番号ｊを、検索対象値の登録順位として取得する（ステップＦ１０）。
【０１５５】
次に、検索処理部２２は、ｊの値に１を加算し、更に、ｋの値にも１を加算する（ステップＦ１１）。その後、検索処理部２２は、再度、ステップＦ５を実行する。
【０１５６】
ここで、図１７を用いて、検索対象値が顧客ＩＤ「１０２」である場合の検索処理について具体的に説明する（図１参照）。図１７は、本発明の実施の形態３における検索処理を説明するための図である。
【０１５７】
図１７にしめすように、まず、検索処理部８２は、顧客ＩＤの値リストから、検索対象である「１０２」の値リスト番号を取得する。検索対象値「１０２」は、値リストの２行目に格納されているので、検索処理部２２は、値リスト番号として「２」を取得する（図１参照）。更に、検索処理部２２は、検索対象値「１０２」の登録回数として、「２」を取得し、先頭位置として「２」を取得する。
【０１５８】
次に、検索処理部８２は、ｊの初期値が「２」に設定されているので、値番号リストの値番号「１」ではなく、値番号「２」に対応付けられた値リスト番号と、検索対象値の値リスト番号とが一致しているかどうかを判定する。この場合は、前者は「２」で、後者も「２」であるので、検索処理部２２は、一致していると判断する。よって、検索処理部２２は、値番号リストの値番号「２」を、検索対象値の登録順位として取得し、更に、ｊの値とｋの値とのそれぞれに１を加算する。
【０１５９】
また、検索処理部８２は、ｊ＝５となったときも、値リスト番号と、検索対象値の値リスト番号とが一致しているので、値番号リストの値番号「５」を、検索対象値の登録順位として取得し、更に、ｊの値とｋの値とのそれぞれに１を加算する。そして、この結果、ｋの値が検索対象値の登録回数と同じとなり、ステップＥ５の判定がＮｏとなるので、検索処理部８２は処理を終了する。
【０１６０】
このように、本実施の形態３では、登録回数に加えて先頭位置も用いられるので、検索範囲がより絞り込まれるので、検索速度の更なる向上が図られる。
【０１６１】
更新処理：
続いて、図１８を用いて、値番号リスト及び値リストの更新処理について説明する。図１８は、本発明の実施の形態３におけるデータベース装置の更新処理時の動作を示すフロー図である。また、以下においては、図１５に示した値番号リスト及び値リストを用いる場合について説明する。
【０１６２】
図１８に示すように、最初に、更新処理部８３は、要求された更新処理での更新前データ値を特定し、その値リスト番号を取得する（ステップＧ１）。
【０１６３】
次に、更新処理部８３は、値リストに格納されている、更新前データ値の登録回数及び先頭位置を取得し（ステップＧ２）、更に、取得した登録回数から１を減算し、得られた値で、値リストに格納されている当該登録回数を更新する（ステップＧ３）。
【０１６４】
次に、更新処理部８３は、更新前データ値の値番号とステップＧ２で取得された先頭位置とを比較し、両者が一致しているかどうかを判定する（ステップＧ４）。ステップＧ４の判定の結果、両者が一致していない場合は、更新処理部８３は、ステップＧ７を実行する。
【０１６５】
一方、ステップＧ４の判定の結果、両者が一致している場合は、更新処理部８３は、値番号リストから、更新前データ値の値リスト番号と同じ値リスト番号が次に登録されている値番号を取得する（ステップＧ５）。そして、更新処理部８３は、値リストにおける更新前データ値の先頭位置を、ステップＧ５で取得した値番号で更新する（ステップＧ６）。
【０１６６】
次に、更新処理部８３は、要求された更新処理で指定されている更新後データ値を特定し、特定した更新後データ値が値リストに存在するかどうかを判定する（ステップＧ７）。
【０１６７】
ステップＧ７の判定の結果、更新後データ値が値リストに存在する場合は、更新処理部８３は、値リストに格納されている、更新後データ値に対応する登録回数を取得する（ステップＧ８）。次に、更新処理部８３は、ステップＧ８で取得した登録回数に１を加算し、得られた値で、値リストに格納されている当該登録回数を更新する（ステップＧ９）。
【０１６８】
次に、更新処理部８３は、値番号リストにおいて、更新前データ値の値番号が、値リストにおける更新後データ値の先頭位置より小さいかどうかを判定する（ステップＧ１０）。ステップＧ１０の結果、更新後データ値の値番号が、値リストにおける更新後データ値の先頭位置より小さくない場合は、更新処理部８３は、ステップＧ１５を実行する。
【０１６９】
一方、ステップＧ１０の結果、更新後データ値の値番号が、値リストにおける更新後データ値の先頭位置より小さい場合は、更新処理部８３は、値リストにおける更新後データ値の先頭位置を、更新後データ値の値番号で更新する（ステップＧ１１）。また、その後、更新処理部８３は、ステップＧ１５を実行する。
【０１７０】
また、上述のステップＧ７の判定の結果、更新後データ値が値リストに存在しない場合は、更新処理部８３は、値リストに、更新後データ値を新たなデータ値として格納する（ステップＧ１２）。また、更新処理部８３は、更新後データ値に新たな値リスト番号を付加する。次に、更新処理部８３は、値リストに、新たなデータ値の登録回数として「１」を格納し、その後、ステップＧ１５を実行する。
【０１７１】
次に、ステップＧ１０でＮｏ判定の後、ステップＧ１１の実行後、又はステップＧ１４の実行後、更新処理部８３は、更新後データ値の値リスト番号を、値番号リストの更新箇所に格納する（ステップＧ１５）。これにより、更新前データ値の更新がなされたことになる。
【０１７２】
次に、更新処理部８３は、全ての更新前データ値について更新処理が終了しているかどうかを判定する（ステップＧ１６）。ステップＧ１６の判定の結果、全ての更新前データ値について更新処理が終了していない場合は、更新処理部８３は、再度、ステップＧ１を実行する。一方、ステップＧ１６の判定の結果、全ての更新前データ値について更新処理が終了している場合は、更新処理部８３は、処理を終了する。
【０１７３】
ここで、図１９及び図２０を用いて、更新処理の具体例について説明する（図１参照）。図１９は、本発明の実施の形態３における更新処理の前半部分を説明するための図である。図２０は、本発明の実施の形態３における更新処理の後半部分を説明するための図である。
【０１７４】
図１９及び図２０は、値番号リストの値番号２に対応するデータ値（顧客ＩＤ）を、「１０２」から「１０３」に更新する場合を示している。図２０に示すように、更新処理部８３は、値番号リストにおいて更新前データ値「１０２」が対応している値番号「２」と、値リストに格納されている更新前データ値「１０２」の先頭位置とを比較する。
【０１７５】
本例では、両者は等しいため、更新処理部８３は、値番号リストから、更新前データ値の値リスト番号と同じ値リスト番号が次に登録されている値番号として、値番号「５」を取得する。そして、図１９に示すように、更新処理部８３は、値リストにおける更新前データ値「１０２」の先頭位置を「２」から「５」に更新する。
【０１７６】
また、更新後データ値「１０３」は既に値リストに存在し、その値リスト番号は「３」である。よって、図２０に示すように、更新処理部８３は、対応する登録回数に１を加算し、「２」とする。
【０１７７】
そして、更新処理部８３は、値番号リストにおいて、更新前データ値の値番号「２」が、値リストにおける更新後データ値「１０３」の先頭位置より小さいかどうかを判定する。本例では、更新後データ値「１０３」の先頭位置は「６」であり、更新前データ値の値番号の方が小さいので、図２０に示すように、更新処理部８３は、更新後データ値「１０３」の先頭位置を「６」から「２」に更新する。
【０１７８】
更に、更新処理部２３は、図２０に示すように、値番号リストの更新箇所（値番号「２」の値リスト番号）に、新たに値リスト番号「３」を格納する。
【０１７９】
また、図１９及び図２０には図示していないが、更新後データ値が値リストに存在しない場合は、更新処理部８３は、値リストに、この更新後データ値を追加すると共に、新たな値リスト番号を付与する。また、更新処理部８３は、その登録回数を「１」とすると共に、その先頭位置として、更新前データ値の値番号を格納する。
【０１８０】
このように、本実施の形態３では、更新後データ値が値リストに存在する場合だけでなく、存在しない場合であっても、その先頭位置は保持される。従って、本実施の形態３によれば、従来のデータベースのように更新の度にインデックスを再作成する必要がないため、更新処理における処理速度も向上される。
【０１８１】
［プログラム］
本実施の形態３におけるプログラムは、コンピュータに、図１４に示すステップＥ１〜Ｅ１１、図１６に示すステップＦ１〜Ｆ１１、図１８に示すステップＧ１〜Ｇ１６を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態１におけるデータベース装置１０２とデータ管理方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、処理実行部８０及び処理受信部９０として機能し、処理を行なう。また、データ管理部７０は、コンピュータに備えられたハードディスク等の記憶装置によって実現できる。
【０１８２】
（物理構成）
ここで、実施の形態１〜３におけるプログラムを実行することによって、データベース装置を実現するコンピュータについて図２１を用いて説明する。図２１は、本発明の実施の形態１〜３におけるデータベース装置を実現するコンピュータの一例を示すブロック図である。
【０１８３】
図２１に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【０１８４】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【０１８５】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【０１８６】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【０１８７】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【０１８８】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１２）によって表現することができるが、以下の記載に限定されるものではない。
【０１８９】
（付記１）
番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、データ管理部と、
データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、処理実行部と、を備え、
前記処理実行部は、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、
ことを特徴とするデータベース装置。
【０１９０】
（付記２）
前記処理実行部が、
行毎に１又は２以上のデータ値を登録するテーブルから、前記テーブルの列毎に、前記データ値を抽出して、値リストとそれに対応する値番号リストを作成し、
更に、前記値リストの作成の際に、抽出した前記データ値それぞれ毎に、当該データ値の抽出回数を特定し、特定した抽出回数を、当該データ値の前記登録回数として、作成した前記値番号リストに付加する、
付記１に記載のデータベース装置。
【０１９１】
（付記３）
前記処理実行部が、複数のデータ値が指定された場合は、指定された複数のデータ値それぞれ毎に、前記値番号リストでの登録回数を特定し、指定された複数のデータ値それぞれについて、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、
付記１または２に記載のデータベース装置。
【０１９２】
（付記４）
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数に加えて、当該データ値の前記値番号リストにおける最先の登録順位が付加されており、
前記処理実行部は、前記登録順位の位置から、特定した番号と前記値番号リストとの照合を開始する、付記１〜３のいずれかに記載のデータベース装置。
【０１９３】
（付記５）
（ａ）番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、ステップと、
（ｂ）データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、ステップと、を有し、
前記（ｂ）のステップでは、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、ことを特徴とするデータ管理方法。
【０１９４】
（付記６）
（ｃ）行毎に１又は２以上のデータ値を登録するテーブルから、前記テーブルの列毎に、前記データ値を抽出して、値リストとそれに対応する値番号リストを作成し、
更に、前記値リストの作成の際に、抽出した前記データ値それぞれ毎に、当該データ値の抽出回数を特定し、特定した抽出回数を、当該データ値の前記登録回数として、作成した前記値番号リストに付加する、ステップを更に有する、
付記５に記載のデータ管理方法。
【０１９５】
（付記７）
前記（ｂ）のステップにおいて、複数のデータ値が指定された場合は、指定された複数のデータ値それぞれ毎に、前記値番号リストでの登録回数を特定し、指定された複数のデータ値それぞれについて、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、
付記５または６に記載のデータ管理方法。
【０１９６】
（付記８）
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数に加えて、当該データ値の前記値番号リストにおける最先の登録順位が付加されており、
前記（ｂ）のステップにおいて、前記登録順位の位置から、特定した番号と前記値番号リストとの照合を開始する、付記５〜７のいずれかに記載のデータ管理方法。
【０１９７】
（付記９）
コンピュータに、
（ａ）番号順にデータ値が登録された値リストと、前記値リストの番号が、対応するデータ値の出現順に登録された値番号リストとを用いて、前記データ値を管理する、ステップと、
（ｂ）データ値が指定された場合に、指定されたデータ値について前記値リストの番号を特定し、更に、特定した番号と前記値番号リストとを照合して、特定した番号の前記値番号リストでの登録順位を抽出し、抽出した登録順位に基づいて、指定されたデータ値に関する検索処理を実行する、ステップと、を実行させ、
前記（ｂ）のステップでは、
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数が付加されている場合は、
指定されたデータ値について、前記値番号リストでの登録回数を特定し、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、プログラム。
【０１９８】
（付記１０）
前記コンピュータに、
（ｃ）行毎に１又は２以上のデータ値を登録するテーブルから、前記テーブルの列毎に、前記データ値を抽出して、値リストとそれに対応する値番号リストを作成し、
更に、前記値リストの作成の際に、抽出した前記データ値それぞれ毎に、当該データ値の抽出回数を特定し、特定した抽出回数を、当該データ値の前記登録回数として、作成した前記値番号リストに付加する、ステップを更に実行させる、
付記９に記載のプログラム。
【０１９９】
（付記１１）
前記（ｂ）のステップにおいて、複数のデータ値が指定された場合は、指定された複数のデータ値それぞれ毎に、前記値番号リストでの登録回数を特定し、指定された複数のデータ値それぞれについて、特定した登録回数の数だけ登録順位が抽出できた時点で、特定した番号と前記値番号リストとの照合を停止する、
付記９または１０に記載のプログラム。
【０２００】
（付記１２）
前記値リストに、それに登録されている前記データ値それぞれ毎の、前記値番号リストでの登録回数に加えて、当該データ値の前記値番号リストにおける最先の登録順位が付加されており、
前記（ｂ）のステップにおいて、前記登録順位の位置から、特定した番号と前記値番号リストとの照合を開始する、付記９〜１１のいずれかに記載のプログラム。
【産業上の利用可能性】
【０２０１】
以上のように、本発明によれば、インデックスの作成を行なうことなく、検索速度の向上を図ることができる。本発明は、データベース、特には、カラムストア型データベースに有用である。
【符号の説明】
【０２０２】
１０、４０、７０  データ管理部
１１、４１、７１  値リスト
１２、４２、７２  値番号リスト
１３、４３、７３  抽出回数情報
２０、５０、８０  処理実行部
２１、５１、８１  処理種別解析部
２２、５２、８２  検索処理部
２３、５３、８３  更新処理部
２４、５４、８４  リスト作成部
３０、６０、９０  処理受信部
４４  検索対象列情報
１００  データベース装置（実施の形態１）
１０１  データベース装置（実施の形態２）
１０３  データベース装置（実施の形態３）
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
0006402600.tif 000002
【図２】
0006402600.tif 000003
【図３】
0006402600.tif 000004
【図４】
0006402600.tif 000005
【図５】
0006402600.tif 000006
【図６】
0006402600.tif 000007
【図７】
0006402600.tif 000008
【図８】
0006402600.tif 000009
【図９】
0006402600.tif 000010
【図１０】
0006402600.tif 000011
【図１１】
0006402600.tif 000012
【図１２】
0006402600.tif 000013
【図１３】
0006402600.tif 000014
【図１４】
0006402600.tif 000015
【図１５】
0006402600.tif 000016
【図１６】
0006402600.tif 000017
【図１７】
0006402600.tif 000018
【図１８】
0006402600.tif 000019
【図１９】
0006402600.tif 000020
【図２０】
0006402600.tif 000021
【図２１】
0006402600.tif 000022
【図２２】
0006402600.tif 000023
【図２３】
0006402600.tif 000024