(57)【要約】      （修正有）【課題】検索結果の再利用と共有とを行うことによって、データベースシステム全体のメモリ使用量を削減し、検索の性能を向上させるデータベース管理システムを提供する。【解決手段】データを格納するデータベースと、データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出し、実行する処理を判断する問い合わせ処理手段１０と、問い合わせ処理手段１０の判断に従って、データベースに格納されたデータによって構成される少なくとも一つの順序集合を作成するとともに、検索条件を満たすデータの集合間で重複するデータを共有化させて構成した部分集合と、ソート条件に従ったデータのソート順序とを順序集合に対応させて管理するデータ管理手段２０とを備えるデータ管理装置と、がネットワークを介して接続されて構成される。【選択図】図１
2016062522.tif 000002
【特許請求の範囲】
【請求項１】
データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出して実行する処理を判断する問い合わせ処理手段と、
前記問い合わせ処理手段の判断に従って、前記データベースに格納されたデータによって構成される順序集合を作成するとともに、前記検索条件を満たす前記データの集合間で重複する前記データを共有化させて構成した部分集合と、前記ソート条件に従った前記データのソート順序とを前記順序集合に対応させて管理するデータ管理手段とを備えるデータベース管理システム。
【請求項２】
前記問い合わせ処理手段は、
前記検索内容を解析することによって前記検索条件および前記ソート条件を取り出す条件解析手段と、
前記条件解析手段による解析結果に従って前記データ管理手段に実行させる処理を判断する結果取得判断手段とを含み、
前記データ管理手段は、
前記検索条件または前記ソート条件に従って前記データによって構成される前記順序集合を作成する順序集合作成手段と、
前記順序集合作成手段によって作成された前記順序集合を管理する管理テーブルを更新する管理テーブル格納手段と、
前記データベースから検索対象の前記データを検索するテーブル検索手段とを含む請求項１に記載のデータベース管理システム。
【請求項３】
前記データ管理手段は、
前記データの値を重複排除してソート済みの形で値番号を付与して格納する値リストと、前記値番号を前記データの値に付与されたデータ識別子に対応させて格納する値番号リストと、前記データ識別子の集合である順序集合とによって構成される情報成分に分割して前記データを格納するテーブルデータベースと、
前記検索条件を満たす前記データの値に対応する前記データ識別子が重複して含まれないように構成された前記部分集合を前記検索条件ごとにサブセット識別子を付与して管理する部分集合管理テーブルと、前記データのソート順序を前記ソート条件ごとにソート識別子を付与して管理するソート情報管理テーブルと、それぞれの前記順序集合に対応する前記サブセット識別子および前記ソート識別子を前記順序集合に関連付けて管理する順序集合管理テーブルとを格納する管理テーブルデータベースとを参照して前記データを管理する請求項２に記載のデータベース管理システム。
【請求項４】
前記条件解析手段によって前記検索内容から前記検索条件および前記ソート条件が取り出されると、
前記結果取得判断手段は、
前記検索条件に従って前記ソート条件管理テーブルを検証した結果、前記ソート条件管理テーブルに前記ソート条件が含まれていない場合、前記ソート情報管理テーブルを更新する処理を前記データ管理手段に実行させると判断し、
前記順序集合作成手段は、
前記結果取得判断手段の判断に応じて、前記順序集合作成手段によって、ソート対象の前記データの前記値番号リストに関して前記値番号をキーとしてソートすることによって並び替えた前記データ識別子に変換番号を付与した変換用順序集合を作成し、作成した前記変換用順序集合に関して前記データ識別子をキーとしてソートすることによって並び替えた配列に前記ソート順序を示すソート番号を付与した変換配列を作成し、
前記管理テーブル格納手段によって、前記順序集合作成手段によって作成された前記変換配列を構成する前記変換番号を前記ソート条件に対応させた前記ソート順序で並べて前記ソート情報管理テーブルに登録する請求項３に記載のデータベース管理システム。
【請求項５】
前記条件解析手段によって前記検索内容から取り出された前記ソート条件の全てが前記ソート条件管理テーブルに格納されると、
前記結果取得判断手段は、
前記検索条件に含まれる条件に従って、前記部分集合管理テーブルを更新する処理を前記データ管理手段に実行させることを判断し、
前記データ管理手段は、
取り出された前記検索条件に含まれる条件のうち前記部分集合管理テーブルに登録されていない条件を前記部分集合管理テーブルに部分集合として登録し、前記部分集合管理テーブルに登録された異なる前記部分集合同士が共通の前記データ識別子を含む場合は、前記共通する識別子を含む部分集合を抽出し、抽出された前記共通する識別子からなる部分集合に付与された前記サブセット識別子を前記共通のデータ識別子を含んでいた前記部分集合に子サブセット識別子として登録することによって、前記共通のデータ識別子を含んでいた前記部分集合に登録されていた前記共通のデータ識別子が重複しないように前記部分集合管理テーブルを更新する請求項４に記載のデータベース管理システム。
【請求項６】
前記順序集合作成手段は、
前記検索内容から取り出した前記検索条件に該当する前記部分集合に含まれる前記データ識別子を前記部分集合管理テーブルから取り出し、前記検索条件に従った集合演算を実行することによって前記検索条件に対応する部分集合を作成し、
前記検索内容から取り出した前記ソート条件に該当する前記変換配列を前記ソート情報管理テーブルに含まれる前記ソート順序を基に取り出し、取り出した前記変換配列を前記変換番号によってソートし、前記検索条件に対応する部分集合に含まれる前記データ識別子に対応する前記変換番号をデータ識別子とする順序集合を作成し、
前記テーブル検索手段は、
前記テーブルデータベースから、前記変換番号をデータ識別子とする順序集合に含まれる前記データ識別子が付与された前記データを取得して統合した結果を検索結果として出力する請求項５に記載のデータベース管理システム。
【請求項７】
前記部分集合管理テーブルに含まれる部分集合の少なくとも一部と、前記ソート情報管理テーブルに含まれるソート情報とをあらかじめ作成するアプリケーションを含む請求項２乃至５のいずれか一項に記載のデータベース管理システム。
【請求項８】
データを格納するデータベースと、
前記データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出し、実行する処理を判断する問い合わせ処理手段と、前記問い合わせ処理手段の判断に従って、前記データベースに格納されたデータによって構成される少なくとも一つの順序集合を作成するとともに、前記検索条件を満たす前記データの集合間で重複する前記データを共有化させて構成した部分集合と、前記ソート条件に従った前記データのソート順序とを前記順序集合に対応させて管理するデータ管理手段とを備えるデータ管理装置とがネットワークを介して接続されて構成されるデータベースシステム。
【請求項９】
データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出して実行する処理を判断し、
前記データベースに格納されたデータによって構成される順序集合を作成するとともに、前記検索条件を満たす前記データの集合間で重複する前記データを共有化させて構成した部分集合と、前記ソート条件に従った前記データのソート順序とを前記順序集合に対応させて管理するデータベース管理方法。
【請求項１０】
データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出して実行する処理を判断する処理と、
前記データベースに格納されたデータによって構成される順序集合を作成するとともに、前記検索条件を満たす前記データの集合間で重複する前記データを共有化させて構成した部分集合と、前記ソート条件に従った前記データのソート順序とを前記順序集合に対応させて管理する処理とをコンピュータによって実行させるデータベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを管理するデータベース管理システム、データベースシステム、データベース管理方法およびデータベース管理プログラムに関する。特に、カラムストア型データベースを管理するデータベース管理システム、データベースシステム、データベース管理方法およびデータベース管理プログラムに関する。
【背景技術】
【０００２】
これまで、データベース管理システムによって管理されるデータベースのデータ構造としては、複数のデータをテーブル形式で表現し、テーブルに格納されたデータを行単位で処理するリレーショナル型データベースが多く用いられてきた。リレーショナル型データベース（以下、ＲＤＢ）では、特定の行に対する更新や削除といったトランザクション処理に優れているという特徴がある（ＲＤＢ：Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ）。一方で、ＲＤＢは、特定の列に対して行う抽出や集計といった処理に不向きであるという問題点があった。
【０００３】
近年、列ごとの処理に向いているカラムストア型データベース（以下、カラムストアＤＢ）が注目されている（ＤＢ：Ｄａｔａｂａｓｅ）。カラムストアＤＢでは、データを列ごとに分離して管理しているため、特定の列に対する処理を高速に行うことができる。一般的なカラムストアＤＢでは、ある条件で検索（抽出）やソートした結果を、順序集合と呼ばれるベクトル成分で管理する。順序集合は、検索やソートの処理ごとに作成されるものであり、同一あるいは類似する条件での検索やソートにおいても、その都度作り直される必要がある。また、一般的なカラムストアＤＢでは、検索を続けることによって、順序集合の管理領域が増加し続ける。
【０００４】
実際のデータベースシステム運用を鑑みると、データウェアハウスのような用途においては、検索条件となる値が過去のものと同一あるいは類似する場合が多い。カラムストアＤＢを適用するデータベースシステムでは、全ての状況で初めから検索を行うと、システム全体として処理が重複して無駄が発生することになる。また、全ての検索を行う度に順序集合を作成していくとなると、結果を管理するための記憶領域が大量に必要になってしまう。昨今、参照系のデータベースにおいても、要求されるデータ処理量や参照頻度が増加しつつあるため、カラムストアＤＢでもより効率的なデータ検索や結果管理方法が求めている。
【０００５】
特許文献１には、検索条件に該当するファイルを整理する検索フォルダの管理方法が開示されている。特許文献１の管理方法では、ファイルおよび検索フォルダを管理する機能と、ファイルの検索機能とを有するファイル管理システムに、整理処理実行部を設ける。整理処理実行部は、ユーザによって新たに検索条件が指定された場合に、指定された検索条件がいずれの既存の検索フォルダに係る検索条件とも一致しなければ、指定された検索条件を示す新たな検索フォルダを生成し、一致すれば検索フォルダを生成しない。その結果、フォルダの無駄な増加を抑えることができる。
【０００６】
特許文献２には、頻繁に問い合わせられる検索式に対する検索結果をユーザに速やかに提示するため、格納しておく検索結果キャッシュを応答性の高い場所として利用する情報検索装置について開示されている。特許文献２の情報検索装置は、条件式と転置リストからなるキャッシュを取得し、入力された検索式に包含されるキャッシュをキャッシュＤＢから検索するためのキャッシュ索引木を生成する。そして、ユーザから検索式を受け付けると、情報検索装置は、キャッシュ索引木を参照して、入力された検索式に包含されるキャッシュの格納位置をキャッシュＤＢから取得し、取得したキャッシュの最適な組み合わせを探索する。この際、情報検索装置は、キャッシュ組み合わせに対応する第１の転置リストを取得するとともに、キャッシュ組み合わせに対応しない第２の転置リストを取得し、取得した第１および第２の転置リストを統合して検索結果とする。
【０００７】
特許文献３には、データを分担して管理している複数のデータベースに対する横断的な検索を効率的に行う検索方法について開示されている。検索結果管理テーブルには、データベース別の検索条件の各々について、過去の検索において当該検索結果にヒットしたヒット件数と検索回数とが格納される。複数のデータベースは、ヒット件数が所定数以下のデータベースが先行検索データベース、それ以外が後続データベースに分類分けされる。特許文献３の検索方法によれば、先行検索データベースを先に検索して識別情報を絞り込んだ形で、後続検索データベースを検索できる。その結果、後続検索データベースの検索結果において、検索結果として提供されない無駄なデータの割合が少なくなり、各検索結果をマージする時間が短縮され、効率的に横断検索ができるようになる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１８７４４２号公報
【特許文献２】特開２００９−１７５８９６号公報
【特許文献３】特開２０１０−２１８１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１の管理方法によれば、検索フォルダが生成される条件を管理し、検索フォルダを構成するファイルが重複する場合には包含関係で検索フォルダを整理することができる。しかしながら、特許文献１の管理方法では、検索の実行処理と、検索フォルダの整理処理とが乖離しており、各処理を動的に実行することができないという問題点があった。
【００１０】
特許文献２の情報検索装置によれば、検索条件が完全一致しない場合においても、一部の条件による検索結果を利用して検索を高速化することはできる。しかしながら、特許文献２の情報検索装置は、キャッシュＤＢに格納されていない検索条件に基づく結果を保持する機構や、キャッシュＤＢに格納される値の共通部分を用いて管理する機構を有していない。そのため、キャッシュＤＢに格納されていない検索条件を用いる処理に関しては、検索を高速化できないという問題点があった。
【００１１】
特許文献３によれば、検索の対象データベースや順番の絞り込みに使用する情報を管理することはできる。しかしながら、検索結果を構成する要素の集合や集合間の関係を定義できないことに加えて、共通部分を排除することができないという問題点がある。
【００１２】
本発明の目的は、上述した課題を解決するため、データベースシステム全体のメモリ使用量を削減し、検索の性能を向上させるデータベース管理システムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明のデータベース管理システムは、データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出して実行する処理を判断する問い合わせ処理手段と、問い合わせ処理手段の判断に従って、データベースに格納されたデータによって構成される少なくとも一つの順序集合を作成するとともに、検索条件を満たすデータの集合間で重複するデータを共有化させて構成した部分集合と、ソート条件に従ったデータのソート順序とを順序集合に対応させて管理するデータ管理手段とを備える。
【００１４】
本発明のデータベースシステムは、データを格納するデータベースと、データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出し、実行する処理を判断する問い合わせ処理手段と、問い合わせ処理手段の判断に従って、データベースに格納されたデータによって構成される少なくとも一つの順序集合を作成するとともに、検索条件を満たすデータの集合間で重複するデータを共有化させて構成した部分集合と、ソート条件に従ったデータのソート順序とを順序集合に対応させて管理するデータ管理手段とを備えるデータ管理装置とがネットワークを介して接続されて構成される。
【００１５】
本発明のデータベース管理方法においては、データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出して実行する処理を判断し、データベースに格納されたデータによって構成される少なくとも一つの順序集合を作成するとともに、検索条件を満たすデータの集合間で重複するデータを共有化させて構成した部分集合と、ソート条件に従ったデータのソート順序とを順序集合に対応させて管理する。
【００１６】
本発明のデータベース管理プログラムは、データベースを利用するアプリケーションから取得した検索内容を解析して検索条件およびソート条件を取り出して実行する処理を判断する処理と、データベースに格納されたデータによって構成される少なくとも一つの順序集合を作成するとともに、検索条件を満たすデータの集合間で重複するデータを共有化させて構成した部分集合と、ソート条件に従ったデータのソート順序とを順序集合に対応させて管理する処理とをコンピュータによって実行させる。
【発明の効果】
【００１７】
本発明のデータベース管理システムによれば、検索結果の再利用と共有とを行うことによって、データベースシステム全体のメモリ使用量を削減し、検索の性能を向上させることが可能になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態に係るデータベース管理システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るデータベース管理システムの機能構成を示すブロック図である。
【図３】カラムストアデータベースで扱うデータ構造（ＦＡＳＴ構造）を説明するための概念図である。
【図４】一般的なカラムストアデータベースにおいてデータを格納する例について説明するための概念図である。
【図５】一般的なカラムストアデータベースにおいて用いられる順序集合の情報の一例である。
【図６】本発明の第１の実施形態に係るデータベース管理システムで扱う管理テーブルの一例である。
【図７】本発明の第１の実施形態に係るデータベース管理システムにおけるソート情報管理テーブル更新処理に関するフローチャートである。
【図８】本発明の第１の実施形態に係るデータベース管理システムにおけるソート情報管理テーブル更新処理の一例を示す概念図である。
【図９】本発明の第１の実施形態に係るデータベース管理システムにおける部分集合管理テーブル更新処理に関するフローチャートである。
【図１０】本発明の第１の実施形態に係るデータベース管理システムにおける部分集合管理テーブル更新処理の一例を示す概念図である。
【図１１】本発明の第１の実施形態に係るデータベース管理システムにおける部分集合管理テーブル更新処理の一例を示す概念図である。
【図１２】本発明の第１の実施形態に係るデータベース管理システムにおける部分集合管理テーブル更新処理の一例を示す概念図である。
【図１３】本発明の第１の実施形態に係るデータベース管理システムにおける管理テーブル参照処理に関するフローチャートである。
【図１４】本発明の第１の実施形態に係るデータベース管理システムにおける管理テーブル参照処理の一例を示す概念図である。
【図１５】本発明の第１の実施形態に係るデータベース管理システムにおける管理テーブル参照処理の一例を示す概念図である。
【図１６】本発明の第１の実施形態に係るデータベース管理システムにおける検索結果取得処理に関するフローチャートである。
【図１７】本発明の第１の実施形態に係るデータベース管理システムにおける検索結果取得処理の一例を示す概念図である。
【図１８】本発明の第２の実施形態に係るデータベース管理システムの機能構成を示すブロック図である。
【図１９】本発明の第３の実施形態に係るデータベース管理システムの管理テーブル格納手段の機能構成を示すブロック図である。
【図２０】本発明の第４の実施形態に係るデータベースシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００２０】
（第１の実施形態）
まず、図面を参照しながら、本発明の第１の実施形態に係るデータベース管理システムについて説明する。
【００２１】
（構成）
図１および図２は、本発明の第１の実施形態に係るデータベース管理システム１の構成を示すブロック図である。図１はデータベース管理システム１の全体構成を示し、図２はデータベース管理システム１の機能構成を示す。
【００２２】
本発明の第１の実施形態に係るデータベース管理システム１は、データベースを利用するアプリケーションから受け付けた問い合わせ要求を処理する問い合わせ処理手段１０と、実データの検索や検索結果の格納を行うデータ管理手段２０とを備える。データベースを利用するアプリケーションは、問い合わせ処理手段１０を経由してデータ管理手段２０にアクセスすることによってデータを参照する。
【００２３】
＜データ構造＞
ここで、本実施形態に係るデータベース管理システム１で扱うデータのデータ構造について、図３および図４の例を用いて説明する。なお、これ以降は、本実施形態に係るデータベース管理システム１では、カラムストアデータベース（以下、カラムストアＤＢ）を用いることを前提として説明する（ＤＢ：Ｄａｔａｂａｓｅ）。
【００２４】
カラムストアＤＢにおけるデータ保持で用いられるデータ構造の一例としては、ＦＡＳＴ構造が挙げられる（ＦＡＳＴ：Ｆｉｌｔｅｒ  Ａｒｒａｙ  Ｓｔｒｕｃｔｕｒｅ）。ＦＡＳＴ構造では、データの基本形式をテーブルとし、３つの情報成分（表現、位置および値）に分解して保持する。ＦＡＳＴ構造のデータを取り扱う際には、ＬＦＭなどの適当なアルゴリズムを用いることが好ましい（ＬＦＭ：Ｌｉｎａｅｒ  Ｆｉｌｔｅｒ  Ｍｅａｔｈｏｄ）。
【００２５】
例えば、図３のテーブルＤ１においては、左から１列目が各データ（各行）の行番号（データ識別子とも呼ぶ）である。各データ（各行）は、各列のヘッダ行に示された属性に対する属性値を含む。なお、データがテーブルＤ１のようなテーブル形式になっていない場合は、各データに対応するデータ識別子を付与すればよい。
【００２６】
本実施形態に係るデータベース管理システムにおいては、図３のテーブルＤ１のように記録された各行のデータに関して、列ごとに「値リスト」、「値番号リスト」および「順序集合」の三つの情報成分に分解して表現する。
【００２７】
値リストは、各列のヘッダに対応する各データの値を重複排除してソート済みの形で格納する情報成分である。値リストに格納された各値は、ソートの規則に従って並べられる。ソートの規則に従って並べられた各値には、各値を特定するための固有の番号として値番号が付与される。
【００２８】
値番号リストは、値リストに記録された各値に対応する値番号を各データの行番号（データ識別子）に対応させる情報成分である。
【００２９】
順序集合は、検索条件を満たす値に対応する行番号（データ識別子）の集合となる情報成分である。
【００３０】
ここで、一般的なＦＡＳＴ構造のデータにおける検索例について説明する。図３は、５列×８行のテーブルＤ１（データ）を、ＦＡＳＴ構造のデータ１１０に分解する例である。これ以降、図３のテーブルＤ１を具体例として説明をしていく。
【００３１】
図３のテーブルＤ１の一行目には、名前、性別、年齢および身長という四つの属性が記録されている。また、テーブルＤ１の一列目は各レコードの番号であり、二〜五列目のレコードには各属性に対応する値が記録されている。
【００３２】
図３のデータ１１０は、値番号リストと値リストとの対（ペアとも呼ぶ）を含む。値番号リストおよび値リストは、それぞれ２列からなるリスト形式をもつ。値番号リストにおいて、左側の列が行番号（データ識別子）であり、右側の列が各行番号に対応する値番号である。値リストにおいて、左側の列が値番号であり、左側の列が各値番号に対応する値である。以下に、各ペアについて個別に説明する。
【００３３】
ペアＰ１は、テーブルＤ１の「名前」の列の値を「あいうえお順」でソートした値リストと、対応する値番号リストとのペアである。ペアＰ２は、テーブルＤ１の「性別」の列の値を性別ごとにソートした値リストと、対応する値番号リストとのペアである。ペアＰ３は、テーブルＤ１の「年齢」の列の値を昇順にソートした値リストと、対応する値番号リストとのペアである。ペアＰ４は、テーブルＤ１の「身長」の列の値を昇順にソートした値リストと、対応する値番号リストとのペアである。
【００３４】
ＦＡＳＴ構造のデータに関して、ある値で検索を行う際には、以下の順番に従って検索結果を表す順序集合が得られる。
【００３５】
第１に、値リストから検索したい値の値番号を取得する。
【００３６】
例えば、図３の例において、「いけだ」という値で検索する場合、ペアＰ１の値リストから「いけだ」の値番号である「１」が取得される。
【００３７】
第２に、値番号リストから値番号に対応する行番号を取得する。
【００３８】
例えば、図３の例においては、取得された「１」の値番号に対応する行番号である「３」が取得される。
【００３９】
すなわち、「いけだ」という値で検索すると、「３」が順序集合として取得されることになる。
【００４０】
また、複数の値で検索を行う場合は、前の検索で得られた順序集合に対して、第１および第２の処理を繰り返すことによって、最終的な結果を表す順序集合を得ることができる。
【００４１】
図４は、複数の値（「男」かつ「２０代」）で検索を行う場合における検索結果を示す例である。図４の例において、まず、性別の値リストから「男」が検索されると、値リストの「男」の行番号に対応する「２」、「５」、「７」が順序集合として取得される。次に、年齢の値リストから「２０代」が検索される。年齢のペアＰ３からは、値リストの「２０代」の年齢に該当する行番号「２」、「３」、「４」に対応する「１」、「３」、「５」、「７」のうち、「男」で検索されなかった「１」と「３」を除く「５」と「７」が順序集合として取得される。すなわち、「男」かつ「２０代」という検索によって、「５」と「７」が順序集合として得られる。
【００４２】
以上が、一般的なＦＡＳＴ構造のデータにおける検索例である。
【００４３】
本実施形態に係るデータベース管理システムでは、下記の二つの方法によって、値リストおよび値番号リストの参照回数と順序集合の作成回数を抑制し、検索性能の向上とメモリ使用量の削減とを図る。
【００４４】
一つ目の方法は、既存の検索やソートの結果データである既存順序集合を用いて検索やソートを行う方法を追加することである。二つ目の方法は、一つ目の方法に伴う順序集合の管理方法を改良することである。
【００４５】
以下に、上述の検索性能の向上とメモリ使用量の削減とを図る二つの方法について説明する。
【００４６】
（１）既存順序集合を用いて検索やソートを行う方法の追加
順序集合は、行番号を要素に持つ集合に、ソートした結果を組み合わせたものであるため、行番号の選択に対する操作と並び替えの操作に分けて、検索やソートを実施する。それに対し、順序を持たない行番号の集合である非順序集合では、和集合や差集合、共通部分を含む集合演算のみで複数の検索条件に該当する行番号の集合を作成する。
【００４７】
ソートでは、ルートセットから順序を並べ替えるための情報を作成する。そして、任意の行番号を持つ非順序集合と、作成したソート情報とを組み合わせることによって、求める順序集合を作成する。なお、ルートセットとは、全ての行番号を要素に持ち、１から昇順で並んだ状態の順序集合のことを示す。
【００４８】
（２）順序集合の管理方法の改良
作成された各順序集合は、それぞれが全ての行番号とその順番を保持するのではなく、非順序集合とソート情報とを用いても構成できるようにする。さらに、構成する非順序集合に共通の行番号が含まれる場合は、それぞれをいくつかの部分集合に分割し、共通の行番号を持つ部分集合を共有することによって、記憶域として必要となるメモリ使用量を削減する。
【００４９】
続いて、図２を用いて、本実施形態に係るデータベース管理システム１の詳細な構成について説明する。
【００５０】
（データ管理手段）
データ管理手段２０は、管理テーブル格納処理手段３１、順序集合作成手段３２およびテーブル検索手段４１を含む。また、データ管理手段２０は、管理テーブルデータベース３３（以下、管理テーブルＤＢ３３）、テーブルデータベース４２（以下、テーブルＤＢ４２）を含む。なお、管理テーブル格納処理手段３１、順序集合作成手段３２、管理テーブルＤＢ３３およびテーブルＤＢ４２の一部（順序集合）は、順序集合管理手段３０として機能する。順序集合管理手段３０は、順序集合の格納・作成を管理する機能を有する。なお、管理テーブルＤＢ３３およびテーブルＤＢ４２は、データ管理手段２０によって参照できさえすればよく、データ管理手段２０の構成に含まれなくてもよい。
【００５１】
データ管理手段２０は、実データをＦＡＳＴ構造で格納し、データを保持するテーブルごとに値番号と値リストを含む。値番号と値リストとは、一対一の組（ペア）を成す。
【００５２】
データ管理手段２０は、検索処理の結果を格納する順序集合を含む。順序集合は、検索やソートの結果ごとに存在し、セットＩＤ（セット識別子とも呼ぶ）によって一意に管理される（ＩＤ：Ｉｄｅｎｔｉｆｉｅｒ）。
【００５３】
図５は、一般的なＦＡＳＴ構造の管理方法によって管理される順序集合をまとめたテーブルの一例（順序集合情報３４０）である。一般的なＦＡＳＴ構造の管理方法では、順序集合ごとにセットＩＤを設定し、セットＩＤごとに複数の行番号を格納して管理する。一般的なＦＡＳＴ構造の管理方法では、全ての検索を行う度に順序集合を作成していくことになり、結果を管理するための大量の記憶領域が必要になる。
【００５４】
順序集合管理手段３０は、順序集合管理テーブル３３１、部分集合管理テーブル３３２およびソート情報管理テーブル３３３を格納する管理テーブルＤＢ３３を参照する。なお、各管理テーブルは、それぞれ個別のデータベースとして分散させて構築されてもよいし、単一のデータベースとして構築されてもよい。また、順序集合管理手段３０は、管理テーブルＤＢ３３を含んでいてもよい。
【００５５】
順序集合管理テーブル３３１は、順序集合の構成を管理するための管理テーブルである。部分集合管理テーブル３３２は、順序集合に含まれる行番号を検索条件に対応させて格納するテーブルである。ソート情報管理テーブル３３３は、ソート条件に従ったソート順序でソートされた行番号をソートＩＤに対応させて格納するテーブルである。
【００５６】
図６は、各管理テーブル、各管理テーブル同士の関係を説明するための一例である。なお、これ以降、図面中の各管理テーブルの値が変化した場合であっても、同じテーブルには同じ符号を付していく。
【００５７】
順序集合管理テーブル３３１には、順序集合を管理するためのセットＩＤとともに、各セットＩＤに対応させて、サブセットＩＤ（サブセット識別子とも呼ぶ）およびソートＩＤ（ソート識別子とも呼ぶ）が記録される。
【００５８】
サブセットＩＤは、部分集合管理テーブル３３２に格納されたサブセット（行）を一意に識別するための識別子である。なお、順序集合管理テーブル３３１にサブセットＩＤが記録されていないセットＩＤの順序集合には、全ての行番号が要素として含まれる。
【００５９】
図６の例では、順序集合管理テーブル３３１のセットＩＤが２〜４の順序集合が、部分集合管理テーブル３３２のサブセットＩＤが１〜３の部分集合にそれぞれ対応することを示す。また、順序集合管理テーブル３３１のセットＩＤが１および５の順序集合には、１〜７の全ての行番号が含まれる。
【００６０】
ソートＩＤは、ソート情報管理テーブル３３３に格納されたソート順序（行）を一意に識別するための識別子である。なお、順序集合管理テーブル３３１にソートＩＤが記録されていない場合は、行番号が昇順に並んでいることを示す。
【００６１】
図６の例では、順序集合管理テーブル３３１のセットＩＤが３および５の順序集合が、ソート情報管理テーブル３３３のソートＩＤが１および２のレコードにそれぞれ対応することを示す。また、ソートＩＤが記録されていない順序集合管理テーブル３３１の順序集合（セットＩＤが１、２および４）においては、行番号が昇順にソートされている。
【００６２】
また、順序集合管理手段３０は、管理テーブル格納処理手段３１と、順序集合作成手段３２とを有する。
【００６３】
管理テーブル格納処理手段３１は、各管理テーブルへ情報を格納する機能をもつ。管理テーブル格納処理手段３１は、検索によって作成された順序集合の情報を、順序集合管理テーブル３３１、部分集合管理テーブル３３２またはソート情報管理テーブル３３３に分割して格納する。
【００６４】
順序集合作成手段３２は、管理テーブルの情報から順序集合を作成する。順序集合作成手段３２は、重複する条件の検索が行われた場合、順序集合管理テーブル３３１、部分集合管理テーブル３３２およびソート情報管理テーブル３３３の情報を組み合わせて検索結果である順序集合を作成する。
【００６５】
テーブル検索手段４１は、テーブルＤＢ４２に格納された各テーブルを検索する手段である。
【００６６】
テーブルＤＢ４２は、値番号リスト、値リストおよび順序集合を格納するデータベースである。なお、テーブルＤＢ４２は、それぞれのテーブルごとに異なる媒体を割り当てるように構築されてもよいし、全てのテーブルを同一の媒体に割り当てるように構築されてもよい。
【００６７】
（問い合わせ処理手段）
問い合わせ処理手段１０は、条件解析手段１１と、結果取得判断手段１２とを有する。
【００６８】
条件解析手段１１は、アプリケーションから送信された検索内容を解析して検索条件またはソート条件を取得する。また、条件解析手段１１は、結果取得判断手段１２を介して、検索条件を満たすデータの検索をデータ管理手段２０に要求する。さらに、条件解析手段１１は、検索結果をアプリケーションに送信する機能も有する。条件解析手段１１は、一般的なデータベースのパーサーと呼ばれる機能を有する。
【００６９】
結果取得判断手段１２は、条件解析手段１１の解析結果を踏まえ、データ管理手段２０に処理を実行させる。このとき、結果取得判断手段１２は、検索条件に従って、テーブルＤＢ４２に格納された値番号リストおよび値リストを基に順序集合を作成するか、順序集合管理手段３０の持つ順序集合作成手段３２を用いて順序集合を作成するかの判断を行う。すなわち、結果取得判断手段１２は、検索条件に従って順序集合の作成主体を判断する。また、結果取得判断手段１２は、ソート条件に従って、順序集合作成手段３２にソートを実行させ、順序集合を作成させる。
【００７０】
以上が、本実施形態に係るデータベース管理システム１の構成についての説明である。
【００７１】
（動作）
続いて、本実施形態に係るデータベース管理システム１の動作について説明する。
【００７２】
ここでは、図３のようなＦＡＳＴ構造のデータに基づいて、順序集合管理手段３０が有する各管理テーブルを用いてどのような処理が行われるかについて説明する。
【００７３】
（管理テーブル格納処理）
図７および図９は、管理テーブルＤＢ３３に管理テーブルを格納する処理（以下、管理テーブル格納処理）に関するフローチャートである。
【００７４】
管理テーブル格納処理においては、検索内容からソート条件と検索条件とを取り出し、それぞれの処理結果を別々に分けて格納する。図７および図９に示す管理テーブル格納処理は、システム運用上は一連の処理として実行できるが、以下の二つの処理内容に分解できる。なお、処理内容とは、アプリケーションから送信される検索内容のことを意味する。処理内容からソート条件や検索条件を取り出す処理は、一般的なデータベースにおいて、ＳＱＬから条件句（例えば、ＷＨＥＲＥ句やＯＲＤＥＲ  ＢＹ句）の中身を取り出す処理に相当する。
【００７５】
一つ目は、処理内容からソート条件を取り出し、ソート条件に基づいた処理を行うことによってソート情報管理テーブル３３３を更新するソート情報管理テーブル更新処理である（図７）。
【００７６】
二つ目は、処理内容から検索条件を取り出し、検索条件に基づいた処理を行うことによって部分集合管理テーブル３３２を更新し、部分集合管理テーブル３３２において共通する行番号やサブセットを共有化する部分集合管理テーブル更新処理である（図９）。なお、管理テーブル格納処理手段３１が順序集合の要素の共通部分と差集合とを集合演算処理によって求めることを「共通する行番号やサブセットを共有化する」と表現する。例えば、「性別＝男」の順序集合をＡ、「年齢＝２０代」の順序集合をＢとすると、共通部分は「ＡかつＢ」、差集合は「Ａ−Ｂ」および「Ｂ−Ａ」で表される。
【００７７】
以下においては、ソート情報管理テーブル更新処理（図７）と、部分集合管理テーブル更新処理（図９）とを別々に説明する。
【００７８】
＜ソート情報管理テーブル更新処理＞
図７は、ソート情報を更新するソート情報管理テーブル更新処理に関するフローチャートである。
【００７９】
図７において、まず、条件解析手段１１は、処理内容からソート条件を取り出す（ステップＳ１１）。
【００８０】
ここで、結果取得判断手段１２は、取り出したソート条件がソート情報管理テーブル３３３にあるか否かによって、順序集合を作成する主体を判断する（ステップＳ１２）。
【００８１】
取り出したソート条件がソート情報管理テーブル３３３にない場合（ステップＳ１２でＮｏ）、結果取得判断手段１２は、順序集合作成手段３２によってソートすべき対象のソートを実行させると判断する。順序集合作成手段３２は、結果取得手段１２の判断に従って順序集合Ｓを作成させる（ステップＳ１３）。
【００８２】
次に、順序集合作成手段３２は、以下の式１を用いて、順序集合Ｓを変換配列Ｔに変換する（ステップＳ１４）。
Ｔ［Ｓ［ｉ］］＝ｉ…（１）
なお、式１において、ｉは１〜ｎの自然数である（ｎは行番号の最大値）。つまり、変換配列Ｔは、順序集合Ｓの第一列目（第１の列）と第二列目（第２の列）とを入れ替えた配列に関して、入れ替えた後の第一列目（第２の列）の値で昇順にソートした配列となる。
【００８３】
そして、管理テーブル格納処理手段３１は、変換配列Ｔの内容および条件をソート情報管理テーブル３３３に登録する（ステップＳ１５）。ここで、図７の処理は終了とし、図９の処理に移行する。
【００８４】
ところで、ステップＳ１２において、取り出したソート条件がソート情報管理テーブル３３３にある場合（ステップＳ１２でＹｅｓ）、図７の処理は終了とし、図９の処理に移行する。
【００８５】
以上が、ソート情報管理テーブル更新処理についての説明である。
【００８６】
ここで、図８を用いて、ソート情報管理テーブル更新処理の具体例について説明する。図８は、図３のデータに関して、「年齢」（ペアＰ３）をソートキーとして昇順で並べる例である。
【００８７】
「年齢」をソートキーとして昇順で並べる場合、順序集合作成手段３２は、年齢データ（図３のペアＰ３）の値番号リストに関して、値番号（右側列）をキーとして昇順でソートすることによって行番号（左側列）を並び替える。その結果、順序集合作成手段３２は、行番号（左側列）を並び替えた順序集合Ｓ＝［４、１、７、３、５、６、２］を得る。なお、図８においては、順序集合Ｓを構成する行番号に対して番号（以下、変換番号）を付与している。
【００８８】
順序集合作成手段３２は、得られた順序集合Ｓ（変換用順序集合とも呼ぶ）を、式１に従って変換配列Ｔに変換する。式１の変換により、変換配列Ｔ＝［２、７、４、１、５、６、３］が得られる。なお、図８においては、変換配列Ｔを構成する変換番号に対して、ソート順序を示す番号（以下、ソート番号）を付与している。
【００８９】
管理テーブル格納処理手段３１は、変換配列Ｔの内容をソート条件とともにソート情報管理テーブル３３３に登録する。
【００９０】
以上が、ソート情報管理テーブル更新処理の具体例についての説明である。
【００９１】
＜部分集合管理テーブル更新処理＞
図９は、検査条件を満たす行番号の部分集合（サブセットとも呼ぶ）を更新する部分集合管理テーブル更新処理に関するフローチャートである。
【００９２】
図９において、まず、条件解析手段１１は、処理内容から検索条件を取り出す（ステップＳ２０１）。
【００９３】
ここで、結果取得判断手段１２は、検索条件が複数個の組み合わせであるか否かを判断する（ステップＳ２０２）。
【００９４】
検索条件が複数個の組み合わせである場合（ステップＳ２０２でＹｅｓ）、条件解析手段１１は、検索条件の一部を取り出す（ステップＳ２０３）。
【００９５】
ここで、結果取得判断手段１２は、取り出した条件が部分集合管理テーブル３３２にあるか否かを判断する（ステップＳ２０４）。
【００９６】
部分集合管理テーブル３３２に条件がある場合（ステップＳ２０４でＹｅｓ）、ステップＳ２０８に進む。部分集合管理テーブル３３２に条件がない場合（ステップＳ２０４でＮｏ）、ステップＳ２０２に戻る。
【００９７】
ところで、ステップＳ２０２において、検索条件が単一であった場合（ステップＳ２０２でＮＯ）、結果取得判断手段１２は、部分集合管理テーブル３３２に条件があるか否かを判断する（ステップＳ２０５）。
【００９８】
部分集合管理テーブル３３２に条件がある場合（ステップＳ２０５でＹｅｓ）、ステップＳ２０８に進む。
【００９９】
一方、ステップＳ２０５において、取り出した条件が部分集合管理テーブル３３２にない場合（ステップＳ２０５でＮｏ）、順序集合作成手段３２は、検索を実行し、順序集合を作成する（ステップＳ２０６）。
【０１００】
そして、管理テーブル格納処理手段３１は、作成した順序集合に対応する条件と、作成した順序集合とを部分集合管理テーブル３３２に登録する（ステップＳ２０７）。この後、ステップＳ２０８に進む。
【０１０１】
ここで、結果取得判断手段１２は、残りの検索条件があるか否かを判断する（ステップＳ２０８）。すなわち、結果取得判断手段１２は、処理内容に他の検索内容が含まれているか否かを確認する。ステップＳ２０８において、残りの検索条件がある場合（ステップＳ２０８でＹｅｓ）、ステップＳ２０３に戻る。
【０１０２】
ステップＳ２０８において、部分集合管理テーブル３３２に残りの検索条件がない場合（ステップＳ２０８でＮｏ）、管理テーブル格納処理手段３１は、順序集合と、順序集合に対応する条件とを部分集合管理テーブル３３２に登録する（ステップＳ２０９）。
【０１０３】
最後に、管理テーブル格納処理手段３１は、共通の行番号やサブセットを共有化する（ステップＳ２１０）。
【０１０４】
以上が、部分集合管理テーブル更新処理についての説明である。
【０１０５】
ここで、図１０〜図１２を用いて、部分集合管理テーブル更新処理の具体例について説明する。図１０〜図１２は、「性別＝男かつ年齢＝２０代」という条件を満たすレコードを抽出する例である。
【０１０６】
図１０において、「性別＝男」を検索条件としてレコードを抽出する場合、値リストを参照すると、値が「男」である値番号は２である。ここで、値番号リストを参照すると、値番号が２となる行番号［２、５、７］が順序集合として得られる。管理テーブル格納処理手段３１は、得られた行番号［２、５、７］を検索条件（性別＝男）とともに、部分集合管理テーブル３３２へ登録する。
【０１０７】
同様に、図１１において、「年齢＝２０代」を検索条件としてレコードを抽出する場合、値リストを参照すると、値が「２０代」である値番号は［２、３、４］である。ここで、値番号リストを参照すると、値番号が［２、３、４］である行番号［１、３、５、７］が順序集合として得られる。管理テーブル格納処理手段３１は、得られた行番号［１、３、５、７］を検索条件（年齢＝２０代）とともに、部分集合管理テーブル３３２へ登録する。
【０１０８】
このように、「性別＝男」と「年齢＝２０代」とを値としてもつデータの行番号をそれぞれ得た後、図１２のように、複数条件組合せの結果を集合演算により求める。
【０１０９】
図１２において、「性別＝男」かつ「年齢＝２０代」は、［２、５、７］と［１、３、５、７］のＡＮＤ演算により［５、７］と求められる。図１２には、２つの順序集合（［２、５、７］、［１、３、５、７］）の共通部分として、［５、７］が得られる様子を示す。
【０１１０】
さらに、部分集合管理テーブル３３２において、行番号の一部が共通するサブセットが存在する場合、管理テーブル格納処理手段３１は、格納領域を縮小するために子サブセットを用いて行番号を共有化する。
【０１１１】
図１２では、ＡＮＤ演算で得られた共通部分［５、７］を子サブセットとして共有する。その結果、サブセットＩＤが１のレコードには、子サブセットＩＤ（子サブセット識別子とも呼ぶ）として３が付与され、順序集合［２、５、７］と共通部分［５、７］との差集合［２］が行番号として残る。すなわち、サブセットＩＤが１の行には、共有化された子サブセットＩＤ＝３と、共有化されなかった行番号［２］が条件（性別＝男）と共に記録される。
【０１１２】
同様に、サブセットＩＤが２のレコードには、子サブセットＩＤとして３が付与され、順序集合［１、３、５、７］と共通部分［５、７］との差集合［１、３］が行番号として残る。すなわち、サブセットＩＤが２の行には、共有化された子サブセットＩＤ＝３と、共有化されなかった行番号［１、３］が条件（年齢＝２０代）と共に記録される。
【０１１３】
以上が、部分集合管理テーブル更新処理の具体例についての説明である。
【０１１４】
（管理テーブル参照処理）
次に、管理テーブルを参照して検索結果となる順序集合を得る管理テーブル参照処理について説明する。管理テーブル参照処理では、検索内容から検索条件とソート条件を取り出し、それぞれの条件に該当する情報を管理テーブルから取り出し、取り出した結果を組み合わせることによって最終的な結果である順序集合を作成する。
【０１１５】
図１３は、管理テーブル参照処理に関する参照処理フローチャートである。
【０１１６】
図１３において、まず、順序集合作成手段３２は、処理内容から検索条件を取り出す（ステップＳ３１）。
【０１１７】
順序集合作成手段３２は、部分集合管理テーブル３３２から検索条件に該当するサブセットＩＤに含まれる行番号を取り出す（ステップＳ３２）。
【０１１８】
順序集合作成手段３２は、取り出した行番号に関する集合演算を実行し、部分集合を作成する（ステップＳ３３）。
【０１１９】
順序集合作成手段３２は、処理内容からソート条件を取り出す（ステップＳ３４）。
【０１２０】
順序集合作成手段３２は、式１を用いて、ソート情報管理テーブル３３３からソート条件に該当する変換配列Ｔを取り出す（ステップＳ３５）。
【０１２１】
順序集合作成手段３２は、以下の式２を用いて、変換配列Ｔから順序集合Ｕを作成する（ステップＳ３６）。なお、式２において、ｉは部分集合の行番号である。
Ｕ［Ｔ［ｉ］］＝ｉ・・・（２）
以上が、管理テーブル参照処理についての説明である。
【０１２２】
ここで、管理テーブル参照処理の具体例について説明する。
【０１２３】
図１４は、部分集合管理テーブル３３２から、条件に該当するレコードを抽出する例である。
【０１２４】
「性別＝男かつ年齢＝２０代」（ＡＮＤ条件）を満たすレコードを抽出する場合、「性別＝男」と「年齢＝２０代」とを満たす行番号をそれぞれ取り出し、取り出した行番号の共通部分を取ることによって検索対象のレコードが抽出される。
【０１２５】
図１４においては、「性別＝男」の条件を満たす部分集合として、部分集合管理テーブル３３２のサブセットＩＤが１のレコードから、行番号［２、５、７］が抽出される。また、「性別＝２０代」の条件を満たす部分集合として、部分集合管理テーブル３３２のサブセットＩＤが２のレコードから、行番号［１、３、５、７］が抽出される。「性別＝男かつ年齢＝２０代」（ＡＮＤ条件）を満たすレコードとしては、抽出された２つの部分集合の共通部分である［５、７］が抽出される。その結果として、図３のテーブルＤ１の５および７行目のレコードを含むＡＮＤ条件検索結果テーブル３０１が得られる。
【０１２６】
同様に、「性別＝男または年齢＝２０代」（ＯＲ条件）を満たすレコードを抽出する場合、「性別＝男」と「年齢＝２０代」とを満たすレコードの行番号をそれぞれ取り出し、取り出した行番号の和集合をとることによって検索対象のレコードが抽出される。
【０１２７】
図１４においては、「性別＝男または年齢＝２０代」（ＯＲ条件）を満たすレコードとして、抽出された２つの部分集合（［２、５、７］、［１、３、５、７］）の和集合である［１、２、３、５、７］が抽出される。その結果、図３のテーブルＤ１の１〜３、５および７行目のレコードを含むＯＲ条件検索結果テーブル３０２が得られる。
【０１２８】
図１５は、レコードの抽出とソートとを組み合わせる場合の例である。
【０１２９】
「性別＝男」を満たすレコードを「年齢」が昇順となるように取り出す場合、まず、検索条件として「性別＝男」を満たす部分集合［２、５、７］を部分集合管理テーブル３３２から取り出す。
【０１３０】
そして、年齢：昇順に該当するソート情報（変換配列Ｔ＝［２、７、４、１、５、６、３］）をソート情報管理テーブル３３３から取り出し、式２に従って順序集合Ｕに変換する。変換の結果は、順序集合Ｕ＝［−、−、７、−、５、−、２］となる。ただし、「性別＝男」を満たす部分集合［２、５、７］に含まれない要素には、ＮＵＬＬ値（「−」：未設定）を対応させ、データ取り出しの対象外とする。
【０１３１】
その結果、図３のテーブルＤ１の７、５および２行目のレコードが、年齢をキーとして昇順にソートされたテーブル３０３が得られる。
【０１３２】
（検索結果取得処理）
図１６は、結果取得判断手段１２によって、与えられた検索条件から実際のデータを含む検索結果を取得する検索結果取得処理のフローチャートである。
【０１３３】
図１６において、まず、管理テーブル格納処理手段３によって、検索条件を満たす情報を管理テーブルに格納する（ステップＳ４１）。
【０１３４】
次に、順序集合作成手段３２によって、検索結果となる順序集合Ｕを作成する（ステップＳ４２）。
【０１３５】
次に、テーブル検索手段４１により、順序集合Ｕから、データを含む結果を取得する（ステップＳ４３）。
【０１３６】
最後に、項目ごとに、値番号ＶＮｏおよび値リストＶＬから、ＶＬ［ＶＮｏ［Ｕ［ｉ］］］（ｉ＝１〜行番号の最大値、かつＵ［ｉ］≠ＮＵＬＬ）の値を求めることによって実際のデータを取得する（ステップＳ４４）。テーブル検索手段４１は、取得されたデータを統合し、統合した結果を検索結果として出力する。
【０１３７】
ここで、図１７を用いて、検索結果取得処理の具体例について説明する。図１７の例では、順序集合Ｕ［７、５、２］が得られている。得られている順序集合Ｕ［７、５、２］のうち、「７」を値番号ＶＮｏとする値リストＶＬを各ペアから抽出すると、図３のテーブルＤ１の７行目のレコードが抽出される。同様に、順序集合Ｕ［７、５、２］に含まれる「５」および「２」についても、図３のテーブルＤ１の５行目および２行目のレコードが抽出される。その結果、図１７のデータを含む検索結果として検索結果テーブル４０１が得られる。
【０１３８】
（効果）
以上のように、本実施形態に係るデータベース管理システムは、検索結果である順序集合を構成する行番号とソート順序とを共有して管理することにより、多数の順序集合が存在する場合でも重複部分を排除される。そのため、本実施形態に係るデータベース管理システムによれば、検索結果を格納する領域として必要なメモリ量を削減することができるという効果が得られる。
【０１３９】
また、本実施形態に係るデータベース管理システムでは、検索条件が過去の検索結果と完全一致、または部分的に一致する場合に、重複する検索内容に対しての再検索が不要となる。そのため、本実施形態に係るデータベース管理システムによれば、データベースシステム全体としての検索性能が向上するという効果が得られる。
【０１４０】
（第２の実施形態）
第２の実施形態に係るデータベース管理システム２は、図２の第１の実施形態に係るデータベース管理システム１に、アプリケーション５０を追加した構成をもつ（図１８）。なお、第２の実施形態に係るデータベース管理システム２に関して、アプリケーション５０以外は、第１の実施形態に係るデータベース管理システム１と同様の構成をもつ。
【０１４１】
アプリケーション５０は、データベース管理システム２によって管理されるデータベースを利用するアプリケーションである。アプリケーション５０は、利用するデータベースにアクセスするための検索条件を問い合わせ手段１０の条件解析手段１１に送信する。また、アプリケーション５０は、送信した検索結果に対する応答となる検索結果を条件解析手段１１から取得する。
【０１４２】
アプリケーション５０は、検索が行われる前に、代表的な部分集合やソート情報をあらかじめ作成しておく。なお、代表的な部分集合とは、利用頻度が高い部分集合や、特定の優先度を持つ部分集合などを指す。一方、第１の実施形態においては、検索が行われたタイミングで管理テーブルの内容を更新していた。
【０１４３】
そして、第２の実施形態に係るデータベース管理システムは、管理テーブル格納処理（図７、図９）や管理テーブル参照処理（図１３）を実行する。
【０１４４】
すなわち、第１の実施形態では管理テーブルＤＢ３３が空の状態で運用を開始するのに対し、第２の実施形態ではあらかじめアプリケーション５０によっていくつかの検索を行っておく。その結果、管理テーブルＤＢ３３に情報を蓄積した状態で運用を開始することになるので、初期の検索性能を向上させることができる。
【０１４５】
第２の実施形態に係るデータベース管理システムによれば、第１の実施形態と比較して、検索やソート処理の性能を向上させることが可能となる。
【０１４６】
（第３の実施形態）
第３の実施形態に係るデータベース管理システムは、第１または第２の実施形態の管理テーブル格納処理手段３１に包含関係確認機能３１１を追加した構成をもつ（図１９）。なお、第３の実施形態は、管理テーブル格納処理手段３１に包含関係確認機能３１１が含まれる点以外は、第１または第２の実施形態と同様の構成をもつ。
【０１４７】
包含関係確認機能３１１に係るデータベース管理システムは、部分集合管理テーブル３３２に既に格納されている条件と、部分集合管理テーブル３３２に格納する条件と、の間の包含関係を確認する。すなわち、包含関係確認機能３１１は、管理テーブル格納処理手段３１が部分集合管理テーブル３３２に条件を格納する際に、「格納する条件」と「既に格納されている条件」の包含関係を確認する。そして、「格納する条件」と「既に格納されている条件」とのどちらか一方が他方に包含されるようであれば、包含関係確認機能３１１は、その共通部分と差集合を求めて、部分集合管理テーブル３３２を更新する。
【０１４８】
第３の実施形態によれば、部分集合管理テーブル３３２によって管理する検索の条件として、第１の実施形態における「性別＝男」や「年齢＝２０代」のような固定条件に加えて、「年齢≦３０」のような範囲条件を取り入れることができる。この場合、「年齢＝２０代」は「年齢≦３０」の部分集合に該当するため、子サブセットによる表現が可能となり、部分集合管理テーブル３３２へ格納する行番号がより共有化しやすくなる。
【０１４９】
すなわち、第３の実施形態によれば、第１または第２の実施形態と比較して、さらにメモリ使用量を削減することが可能となる。
【０１５０】
（第４の実施形態）
図２０は、第４の実施形態に係るデータベースシステム４の概念図である。本実施形態に係るデータベースシステム４は、第１の実施形態に係るデータベース管理システム１に含まれる問い合わせ手段１０およびデータ管理手段２０の内部構成に含まれる要素がネットワークを介して接続される構成をもつ。なお、データベースシステム４において、第１の実施形態に係るデータベース管理システム１として、第２または第３の実施形態に係るデータベース管理システムを適用することができる。
【０１５１】
データベース管理装置１００は、問い合わせ手段１０、データ管理手段２０に含まれる管理テーブル格納手段３１、順序集合作成手段３２およびテーブル検索手段４１を含むように構成される。また、ストレージ装置２００は、データベース管理システム１のデータ管理手段２０に含まれる管理テーブルＤＢ３３と、テーブルＤＢ４２とを含むように構成される。なお、ストレージ装置２００は、複数のストレージから構成されていてもよい。データベース管理装置１００とストレージ装置２００とは、ネットワーク３００によって接続される。
【０１５２】
データベース管理装置１００は、例えば、一般的なコンピュータシステムやサーバシステムなどをハードウェアとしてもつ装置によって実現される。データベース管理装置１００は、第１の実施形態に係るデータベース管理システム１におけるデータベース管理方法を用いて、ストレージ装置２００内の各データベースをネットワーク３００経由で管理する。
【０１５３】
ストレージ装置２００は、例えば、少なくとも一つのハードディスクドライブ（以下、ＨＤＤ）を含む記憶装置によって実現される。ストレージ装置２００に含まれるデータベースは、ネットワーク３００を介してデータベース管理システム１によって管理される。また、データベースシステム４を利用するアプリケーションは、データベース管理装置１００を介してストレージ装置２００にアクセスする。
【０１５４】
ネットワーク３００は、データベース管理装置１００とストレージ装置２００とを接続するデータ通信網である。例えば、ネットワーク３００は、インターネットやＬＡＮ、ＷＡＮなどとして構築される（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、）。また、ネットワーク３００は、データベース管理装置１００とストレージ装置２００とが同一の装置内部に構成される場合、データベース管理装置１００とストレージ装置２００とを接続する装置内部のデータ伝送経路として実現してもよい。なお、ネットワーク３００は、上述のデータ通信網以外の構成を利用してもよい。また、ネットワーク３００は、本実施形態に係るデータベースシステム４に含まれていなくてもよい。
【０１５５】
第４の実施形態に係るデータベースシステム４によれば、第１〜第３の実施形態に係るデータベース管理システムの構成を含むデータベースシステムをネットワークシステムとして構築することが可能となる。
【０１５６】
以上が、第４の実施形態に係るデータベースシステムに関する説明である。
【０１５７】
本発明の実施形態に係るデータベース管理システムは、パーソナルコンピュータやワークステーション、サーバシステムなどの情報処理装置によって実現される。本実施形態に係るデータベース管理システムを実現する情報処理装置は、例えば、中央演算処理装置や不揮発性メモリ、揮発性メモリ、補助記憶装置、入出力インターフェース、ネットワークインターフェースなどのハードウェアを含む構成とすることができる。また、本実施形態に係るデータベース管理システムを実現する情報処理装置には、ユーザの操作を受け付けるキーボードやタッチパネル、マウスなどの入力機器、操作画面を表示するためのディスプレイなどの表示機器といった周辺機器を接続できる。また、本実施形態に係るデータベース管理システムを実現する情報処理装置は、適切なオペレーティングシステムの制御によって動作する。
【０１５８】
本発明の実施形態に係るデータベース管理方法をコンピュータに実行させるデータベース管理プログラムも本発明の範囲に含まれる。また、本発明の実施形態に係るデータベース管理プログラムを記録するプログラム記録媒体も本発明の範囲に含まれる。
【０１５９】
本発明の実施形態に係る手法は、構成要素を一意に特定する番号の選択と並び替えにより結果を与える検索装置においても利用可能である。特に、本実施形態に係る手法は、多数のアプリケーションから類似する条件の検索が行われる場合、検索結果を構成するレコードの重複度が高い場合に有効である。
【０１６０】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１６１】
１、２    データベース管理システム
４    データベースシステム
１０    問い合わせ処理手段
１１    条件解析手段
１２    結果取得判断手段
２０    データ管理手段
３０    順序集合管理手段
３１    管理テーブル格納処理手段
３２    順序集合作成手段
３３    管理テーブルデータベース
４１    テーブル検索手段
４２    テーブルデータベース
５０    アプリケーション
１００    データベース管理装置
２００    ストレージ装置
３００    ネットワーク
３１１    包含関係確認機能
３３１    順序集合管理テーブル
３３２    部分集合管理テーブル
３３３    ソート情報管理テーブル
【図１】
2016062522.tif 000003
【図２】
2016062522.tif 000004
【図３】
2016062522.tif 000005
【図４】
2016062522.tif 000006
【図５】
2016062522.tif 000007
【図６】
2016062522.tif 000008
【図７】
2016062522.tif 000009
【図８】
2016062522.tif 000010
【図９】
2016062522.tif 000011
【図１０】
2016062522.tif 000012
【図１１】
2016062522.tif 000013
【図１２】
2016062522.tif 000014
【図１３】
2016062522.tif 000015
【図１４】
2016062522.tif 000016
【図１５】
2016062522.tif 000017
【図１６】
2016062522.tif 000018
【図１７】
2016062522.tif 000019
【図１８】
2016062522.tif 000020
【図１９】
2016062522.tif 000021
【図２０】
2016062522.tif 000022