(57)【要約】【課題】データベース処理システムにおいて、データの入出力に要する時間を短縮する。【解決手段】受け付けられた問合せ要求に基づいてデータを出力する計算機と、当該データを格納する記憶装置を備えるストレージシステムと、を含むデータベース処理システムで、記憶装置には、データの格納位置を示すインデックスが格納され、インデックスは、複数の部分インデックスによって構成され、記憶装置に格納されたデータは、当該データの格納位置に基づいてグループ化されて、複数のデータグループを構成し、部分インデックスは、データグループに含まれるデータの格納位置を示し、計算機は、データの問合せ要求を受け付け、部分インデックスを取得し、データの問合せ要求及び取得された部分インデックスに基づいて、要求されたデータが格納された位置を特定し、特定された位置に格納されたデータの取得要求をストレージシステムに送信する。【選択図】図１
2010266996.tif 000002
【特許請求の範囲】
【請求項１】
受け付けられた問合せ要求に基づいてデータを出力する計算機と、前記計算機によって出力されるデータを格納するストレージシステムと、を含むデータベース処理システムにおけるデータベース処理方法であって、
前記計算機は、前記ストレージシステムに接続される第１インターフェースと、前記第１インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ストレージシステムは、前記計算機に接続される第２インターフェースと、前記第２インターフェースに接続される制御装置と、前記データを格納する記憶装置と、を備え、
前記記憶装置には、前記データの格納位置を示すインデックスが格納され、
前記インデックスは、複数の部分インデックスによって構成され、
前記記憶装置に格納されたデータは、当該データの格納位置に基づいてグループ化されて、複数のデータグループを構成し、
前記部分インデックスは、前記データグループに含まれるデータの格納位置を示し、
前記方法は、
前記プロセッサが、前記記憶装置に格納されたデータの問合せ要求を受け付け、
前記プロセッサが、前記インデックスから前記部分インデックスを取得し、
前記プロセッサが、前記データの問合せ要求及び前記取得された部分インデックスに基づいて、前記要求されたデータが格納された位置を特定し、
前記プロセッサが、前記特定された位置に格納されたデータの取得要求を、前記ストレージシステムに送信することを特徴とするデータベース処理方法。
【請求項２】
前記方法は、
前記プロセッサが、前記データの格納位置情報を取得し、
前記プロセッサが、前記取得されたデータの格納位置情報に基づいて、前記記憶装置の所定の範囲内に格納されたデータをグループ化して、複数のデータグループを構成し、
前記プロセッサが、前記データグループに含まれるデータの格納位置情報を前記部分インデックスとして、前記記憶装置に格納することを特徴とする請求項１に記載のデータベース処理方法。
【請求項３】
前記データの格納位置情報は、前記記憶装置に含まれる記憶媒体の物理的な位置情報であることを特徴とする請求項１に記載のデータベース処理方法。
【請求項４】
前記各部分インデックスの容量は、前記メモリに割り当てられた前記部分インデックスを記憶するための領域の容量よりも小さいことを特徴とする請求項１に記載のデータベース処理方法。
【請求項５】
前記インデックスには、前記データと前記部分インデックスとの対応情報を含むメタインデックスを含み、
前記方法は、前記プロセッサが、前記データの問合せ要求及び前記メタインデックスに基づいて、前記インデックスから前記部分インデックスを取得することを特徴とする請求項１に記載のデータベース処理方法。
【請求項６】
前記方法は、
前記プロセッサが、前記データの追加要求を受け付けた場合には、前記要求されたデータを前記記憶装置に格納し、
前記プロセッサが、前記インデックスにおいて最後に作成された部分インデックスを特定し、
前記プロセッサが、前記追加されたデータの格納位置情報に基づいて、前記最後に作成された部分インデックスに、前記追加されたデータを追加するか否かを判定し、
前記最後に作成された部分インデックスに前記追加されたデータの格納位置情報を追加する場合には、前記プロセッサが、前記最後に作成された部分インデックスに前記追加されたデータの格納位置情報を追加し、
前記最後に作成された部分インデックスに前記追加されたデータを追加しない場合には、前記プロセッサが、前記部分インデックスを新たに作成し、
前記プロセッサが、前記新たに作成された部分インデックスに前記追加されたデータの格納位置情報を追加することを特徴とする請求項２に記載のデータベース処理方法。
【請求項７】
前記方法は、
前記プロセッサが、前記データの問合せ要求に基づいて、並列して実行可能な複数のタスクを生成し、
前記プロセッサが、前記生成されたタスクごとに、前記要求されたデータの取得要求を前記ストレージシステムに送信することを特徴とする請求項１に記載のデータベース処理方法。
【請求項８】
前記方法は、前記選択された部分インデックスに含まれるすべてのデータについて検索が開始された後、前記プロセッサが、次に選択される前記部分インデックスに基づく検索を開始することを特徴とする請求項７に記載のデータベース処理方法。
【請求項９】
前記記憶装置は、複数の記憶媒体を含み、
前記方法は、
前記プロセッサが、対応するデータが別の記憶媒体に格納されている部分インデックスを選択し、
前記プロセッサが、前記選択された部分インデックスに基づいて前記要求されたデータを検索するタスクを並列して実行することを特徴とすることを特徴とする請求項７に記載のデータベース処理方法。
【請求項１０】
前記方法は、
前記複数の問合せ要求を受け付けた場合には、前記プロセッサが、前記複数の問合せ要求を同じ部分インデックスを利用して処理することが可能か否かを判定し、
前記複数の問合せ要求を同じ部分インデックスを利用して処理することが可能な場合には、前記プロセッサが、前記部分インデックスごとに前記複数の問合せ要求を処理するための問合せ実行プランをそれぞれ生成し、
前記プロセッサが、前記生成された各問合せ実行プランを、前記部分インデックスごとに処理することを特徴とする請求項１に記載のデータベース処理方法。
【請求項１１】
受け付けられた問合せ要求に基づいてデータを出力する計算機と、前記計算機によって出力されるデータを格納するストレージシステムと、を含むデータベース処理システムであって、
前記計算機は、前記ストレージシステムに接続される第１インターフェースと、前記第１インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ストレージシステムは、前記計算機に接続される第２インターフェースと、前記第２インターフェースに接続される制御装置と、前記データを格納する記憶装置と、を備え、
前記記憶装置には、前記データの格納位置を示すインデックスが格納され、
前記インデックスは、複数の部分インデックスによって構成され、
前記記憶装置に格納されたデータは、当該データの格納位置に基づいてグループ化されて、複数のデータグループを構成し、
前記部分インデックスは、前記データグループに含まれるデータの格納位置を示し、
前記計算機は、
前記記憶装置に格納されたデータの問合せ要求を受け付け、
前記インデックスから前記部分インデックスを取得し、
前記データの問合せ要求及び前記取得された部分インデックスに基づいて、前記要求されたデータが格納された位置を特定し、
前記特定された位置に格納されたデータの取得要求を、前記ストレージシステムに送信することを特徴とするデータベース処理システム。
【請求項１２】
前記計算機は、
前記データの格納位置情報を取得し、
前記取得されたデータの格納位置情報に基づいて、前記記憶装置の所定の範囲内に格納されたデータをグループ化して、複数のデータグループを構成し、
前記部分データグループに含まれるデータの格納位置情報を前記部分インデックスとして、前記記憶装置に格納することを特徴とする請求項１１に記載のデータベース処理システム。
【請求項１３】
前記各部分インデックスの容量は、前記メモリに割り当てられた前記部分インデックスを記憶するための領域の容量よりも小さいことを特徴とする請求項１１に記載のデータベース処理システム。
【請求項１４】
前記計算機は、
前記データの問合せ要求に基づいて、並列して実行可能な複数のタスクを生成し、
前記生成されたタスクごとに、前記要求されたデータの取得要求を前記ストレージシステムに送信することを特徴とする請求項１１に記載のデータベース処理システム。
【請求項１５】
前記記憶装置は、複数の記憶媒体を含み、
前記計算機は、
対応するデータが別の記憶媒体に格納されている部分インデックスを選択し、
前記選択された部分インデックスに基づいて前記要求されたデータを検索するタスクを並列して実行することを特徴とする請求項１４に記載のデータベース処理システム。
【請求項１６】
受け付けられた問合せ要求に基づいて、ストレージシステムに格納されたデータを出力するデータベースサーバであって、
前記ストレージシステムに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ストレージシステムには、前記データの格納位置を示すインデックスが格納され、
前記インデックスは、複数の部分インデックスによって構成され、
前記ストレージシステムに格納されたデータは、当該データの格納位置に基づいてグループ化されて、複数のデータグループを構成し、
前記部分インデックスは、前記データグループに含まれるデータの格納位置を示し、
前記プロセッサは、
前記ストレージシステムに格納されたデータの問合せ要求を受け付け、
前記インデックスから前記部分インデックスを取得し、
前記データの問合せ要求及び前記取得された部分インデックスに基づいて、前記要求されたデータが格納された位置を特定し、
前記特定された位置に格納されたデータの取得要求を、前記ストレージシステムに送信することを特徴とするデータベースサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースによって管理されているデータを、インデックスを用いて処理する技術に関する。
【背景技術】
【０００２】
近年、ＲＦＩＤ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）の登場によってトランザクションデータ及びトレーサビリティデータなどを格納するためのデータベースの規模が急速に拡大している。また、このような大規模データベースを対象に業務分析又は販売分析を行い、業務に活用するニーズも増大している。データ規模は、１００ＴＢを超え、ＰＢ規模になると予測される。
【０００３】
また、業務分析又は販売分析は様々な視点で行われるため、データベース処理システムには、大規模データに対する非定型な問い合わせを高速に処理することが求められる。このような要求に対し、大規模データに対する非定型的な問合せを効率よく処理することが可能なデータベース処理システムが特許文献１に開示されている。
【０００４】
特許文献１に開示されたデータベース処理システムでは、問合せ実行時に動的にタスクを生成し、生成された複数のタスクを並列実行する。そして、複数のＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのディスク装置によって構成される二次記憶装置に格納されたデータを高速に読み出すために、並列実行された複数のタスクが、入出力要求（以下、「Ｉ／Ｏ要求」）をそれぞれ発行する。
【０００５】
各タスクによって発行されたＩ／Ｏ要求は、二次記憶装置を構成する複数のディスク装置にて並列実行されるため、短時間で処理可能である。また、多重に発行されたＩ／Ｏ要求は、Ｉ／Ｏ要求が発行された順序だけでなく、ＨＤＤの読出しヘッドの位置及び読出し要求対象のデータが格納されている位置を考慮して、シーク時間及び回転待ち時間が短くなるようにスケジューリングされる。したがって、さらにＩ／Ｏ要求の処理時間を短縮することが可能となる。
【０００６】
また、非特許文献１には、データベース処理システム又はオペレーティングシステムが複数のＩ／Ｏ要求をキューイングし、キューイングされたＩ／Ｏ要求をスケジューリングすることによってＩ／Ｏ要求の処理時間を短縮する技術が開示されている。具体的には、キューイングされた複数のＩ／Ｏ要求ごとにアクセス先ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）を特定し、ＨＤＤのシーク時間及び回転待ち時間が短くなるように出力順序を変更する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−３４４１４号公報
【非特許文献】
【０００８】
【非特許文献１】Ｄａｎｉｅｌ  Ｐ．Ｂｏｖｅｔ他著、「Ｕｎｄｅｒｓｔａｎｄｉｎｇ  ｔｈｅ  ＬＩＮＵＸ  ＫＥＲＮＥＬ  ＴＨＩＲＤ  ＥＤＩＴＩＯＮ」、Ｏ‘ＲＥＩＬＬＹ社、ｐ.５６０−５９８
【発明の概要】
【発明が解決しようとする課題】
【０００９】
データベース処理システムにおいて、表形式で格納されているデータから特定のデータを検索する場合、検索処理に伴って発行されるＩ／Ｏ要求を削減して検索時間を短縮するためにインデックスを作成する。しかし、大容量のデータを扱う場合には、インデックスを利用して検索しても、発行されるＩ／Ｏ要求の数は膨大な数になる。
【００１０】
Ｉ／Ｏ要求処理時間を短縮するために、Ｉ／Ｏ要求をキューイングしてスケジューリングする場合には、検索処理に必要なすべてのＩ／Ｏ要求をキューイングし、キューイングされたすべてのＩ／Ｏ要求をスケジューリングすると効果的である。しかし、すべてのＩ／Ｏ要求をキューイングするためには相応の時間を必要とし、また、膨大な数のＩ／Ｏ要求をスケジューリングするためには、さらに多大な時間を要してしまう。
【００１１】
一方、検索処理に必要なすべてのＩ／Ｏ要求ではなく、一部のＩ／Ｏ要求のみを対象に、順次スケジューリングする技術も開示されている。例えば、データベース処理システムから発行されたＩ／Ｏ要求を、順次ディスク装置に備えられたキューに蓄積し、当該キューに蓄積された一部のＩ／Ｏ要求を順次スケジューリングする。しかし、この方法では一部のＩ／Ｏ要求のみに着目したスケジューリング処理となるため、必ずしも全体のＩ／Ｏ要求処理時間を短縮することができない。
【００１２】
本発明は、以上の問題を鑑みてなされたものであり、データベース処理システムがＩ／Ｏ要求の発行順序を制御することによって、Ｉ／Ｏ要求を処理するために必要な時間を短縮することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の代表的な一形態によれば、受け付けられた問合せ要求に基づいてデータを出力する計算機と、前記計算機によって出力されるデータを格納するストレージシステムと、を含むデータベース処理システムにおけるデータベース処理方法であって、前記計算機は、前記ストレージシステムに接続される第１インターフェースと、前記第１インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、前記ストレージシステムは、前記計算機に接続される第２インターフェースと、前記第２インターフェースに接続される制御装置と、前記データを格納する記憶装置と、を備え、前記記憶装置には、前記データの格納位置情報を含むインデックスが格納され、前記データは、当該データの格納位置情報に基づいてグループ化され、前記インデックスは、前記グループごとに作成され、前記グループ化されたデータの格納位置情報を含む複数の部分インデックスを含み、前記方法は、前記プロセッサが、前記記憶装置に格納されたデータの問合せ要求を受け付け、前記プロセッサが、前記インデックスから前記部分インデックスを取得し、前記プロセッサが、前記データの問合せ要求及び前記取得された部分インデックスに基づいて、前記要求されたデータが格納された位置を特定し、前記プロセッサが、前記特定された位置に格納されたデータの取得要求を、前記ストレージシステムに送信する。
【発明の効果】
【００１４】
本発明の一形態によれば、データの格納位置に基づいて作成された部分インデックスごとにデータの取得要求をストレージシステムに送信することで、記憶装置に備えられたスケジューリング機能を活用し、データの入出力に要する時間を短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態の計算機システムの構成を示すブロック図である。
【図２Ａ】本発明の第１の実施の形態のインデックスを作成する手順を示すフローチャートである。
【図２Ｂ】本発明の第１の実施の形態の局所性を判定する手順を示すフローチャートである。
【図３】本発明の第１の実施の形態のインデックス検索の手順を示すフローチャートである。
【図４】本発明の第１の実施の形態の格納用外部記憶装置の構成情報の一例である論理アドレスと物理アドレスとの対応表を示す図である。
【図５】本発明の第１の実施の形態の部分インデックスを作成する商品販売履歴表の一例を示す図である。
【図６】本発明の第１の実施の形態のインデックス情報ファイルの一例を示す図である。
【図７】本発明の第１の実施の形態のインデックスと商品販売履歴表との関係を説明する図である。
【図８】本発明の第２の実施の形態の計算機システムの構成を示すブロック図である。
【図９Ａ】本発明の第２の実施の形態のインデックスを作成する手順を示すフローチャートである。
【図９Ｂ】本発明の第２の実施の形態の局所性を判定する手順を示すフローチャートである。
【図１０】本発明の第２の実施の形態の格納用外部記憶装置の構成情報の一例である論理アドレスと物理アドレスとの対応表を示す図である。
【図１１】本発明の第２の実施の形態のディスク別最終アドレス保存表の一例を示す図である。
【図１２】本発明の第３の実施の形態の局所性を判定する手順を示すフローチャートである。
【図１３】本発明の第５の実施の形態の計算機システムの構成を示すブロック図である。
【図１４】本発明の第５の実施の形態のインデックスと商品販売履歴表との関係を説明する図である。
【図１５】本発明の第５の実施の形態のインデックス検索の手順を示すフローチャートである。
【図１６】本発明の第５の実施の形態の部分インデックス格納場所管理表を作成する手順を示すフローチャートである。
【図１７】本発明の第５の実施の形態の部分インデックス格納場所管理部に保持される部分インデックス格納場所管理表の一例を示す図である。
【図１８】本発明の第７の実施の形態の計算機システムの構成を示すブロック図である。
【図１９】本発明の第７の実施の形態の格納用外部記憶装置の構成情報の一例である論理アドレスと物理アドレスとの対応表を示す図である。
【図２０】本発明の第７の実施の形態のインデックスと商品販売履歴表との関係を説明する図である。
【図２１】本発明の第８の実施の形態の計算機システムの構成を示すブロック図である。
【図２２】本発明の第８の実施の形態のメタインデックス及びインデックスと、商品販売履歴表との関係を説明する図である。
【図２３】本発明の第８の実施の形態のインデックス検索の手順を示すフローチャートである。
【図２４】本発明の第８の実施の形態のメタインデックスを作成する手順を示すフローチャートである。
【図２５】本発明の第９の実施の形態の計算機システムの構成を示すブロック図である。
【図２６Ａ】本発明の第９の実施の形態の同時に発行される問合せの一例を示す図である。
【図２６Ｂ】本発明の第９の実施の形態の同時に発行される問合せの一例を示す図である。
【図２６Ｃ】本発明の第９の実施の形態の同時に発行される問合せの一例を示す図である。
【図２７】本発明の第９の実施の形態のインデックス検索の手順を示したフローチャートである。
【図２８】本発明の第１０の実施の形態の計算機システムの構成を示すブロック図である。
【図２９】本発明の第１０の実施の形態のアプリケーションプログラムからデータベース管理システムに発行される更新要求の一例を示す図である。
【図３０】本発明の第１０の実施の形態のインデックスと商品在庫管理表との関係を説明する図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本発明の実施の形態を説明する。
【００１７】
（第１の実施の形態）
図１は、本発明の第１の実施の形態の計算機システムの構成を示すブロック図である。
【００１８】
本発明の実施の形態の計算機システムは、データベースサーバ１００、格納用外部記憶装置１５０及び作業用外部記憶装置１６０を含む。データベースサーバ１００は、データベース管理システムが動作する。格納用外部記憶装置１５０は、データベース管理システムによって管理されるデータを格納する。作業用外部記憶装置１６０は、データベース管理システムによる処理の過程で生成されるデータを一時的に格納する。
【００１９】
データベースサーバ１００、格納用外部記憶装置１５０及び作業用外部記憶装置１６０は、ネットワーク１７０を介して互いに接続される。ネットワーク１７０は、例えば、ファイバーチャネル（ＦＣ）プロトコルが適用されるストレージエリアネットワーク（ＳＡＮ）であるが、その他の任意の形態のネットワークであってもよい。例えば、ネットワーク１７０がインターネットプロトコル（ＩＰ）ネットワークであり、データベースサーバ１００、格納用外部記憶装置１５０及び作業用外部記憶装置１６０がｉＳＣＳＩプロトコルによって互いに通信するように構成してもよい。
【００２０】
格納用外部記憶装置１５０は、インターフェース１５１、制御装置１５２、及び記憶装置１５５を備える。格納用外部記憶装置１５０は、データベースサーバ１００から受け付けたＩ／Ｏ要求に従って、記憶装置１５５に格納されたデータを読み書きする。
【００２１】
インターフェース１５１は、ネットワーク１７０に接続する。制御装置１５２は、データベースサーバ１００から送信されたＩ／Ｏ要求を処理する。
【００２２】
記憶装置１５５は、データベースサーバ１００によって読み書きされるデータを格納する。具体的には、ＨＤＤ、光ディスクドライブ、半導体記憶装置又はその他の記憶装置である。また、記憶装置１５５には、データベースサーバ１００が処理対象とするデータである表１５４及びインデックス１５３が格納される。
【００２３】
なお、図１には３つの記憶装置１５５が示されているが、格納用外部記憶装置１５０に備えられる記憶装置１５５の数は、任意の数である。また、複数の記憶装置１５５によってディスクアレイを構成してもよい。
【００２４】
また、格納用外部記憶装置１５０には、ＨＤＤの読出しヘッドの位置及び読出し要求対象データが格納位置を考慮して、シーク時間及び回転待ち時間が短くなるように、データのＩ／Ｏ要求をスケジューリングする機能が搭載されている。
【００２５】
作業用外部記憶装置１６０も、格納用外部記憶装置１５０と同様に、インターフェース１６１、制御装置１６２及び記憶装置１６３を備える。インターフェース１６１及び制御装置１６２の機能は、格納用外部記憶装置１５０のインターフェース１５１及び制御装置１５２と同様である。記憶装置１６３には、データベースサーバ１００における処理に必要なデータが一時的に格納される。
【００２６】
データベースサーバ１００は、メモリ１０１、プロセッサ１０２、及びインターフェース１０３を備える。
【００２７】
メモリ１０１は、プロセッサ１０２によって実行されるプログラム及び当該プログラムの実行に必要なデータを格納する。メモリ１０１に格納されるプログラム及びデータについては後述する。
【００２８】
プロセッサ１０２は、メモリ１０１に記憶されたプログラムを実行する。インターフェース１０３は、ネットワーク１７０に接続するインターフェースである。例えば、ネットワーク１７０がストレージエリアネットワーク（ＳＡＮ）である場合には、ホストバスアダプタ（ＨＢＡ）となる。
【００２９】
メモリ１０１には、アプリケーションプログラム１０４、データベース管理システム１０５及びオペレーティングシステム１０６が格納される。アプリケーションプログラム１０４は、データベース管理システム１０５にデータの問合せを発行し、問合せ結果を受信する。
【００３０】
データベース管理システム１０５は、アプリケーションプログラム１０４からのデータの問合せ要求を処理し、問合せ結果を応答する。具体的には、受け付けた問合せ要求に基づいて、必要に応じてオペレーティングシステム１０６を介して格納用外部記憶装置１５０又は作業用外部記憶装置１６０に格納されたデータを読み書きする。
【００３１】
オペレーティングシステム１０６は、データベース管理システム１０５からの要求を受け付け、格納用外部記憶装置１５０又は作業用外部記憶装置１６０に対してデータの読み書きを要求する。また、オペレーティングシステム１０６は、データベースサーバ１００のプロセッサ１０２及びメモリ１０１を管理する。
【００３２】
本発明の第１の実施の形態では、アプリケーションプログラム１０４が、データベース管理システム１０５と同一の計算機で実行されているが、ネットワークを介して接続された別の計算機で実行されてもよい。
【００３３】
データベース管理システム１０５は、格納用外部記憶装置１５０に格納されたデータを、与えられた問合せ要求に従ってデータを抽出及び加工し、問合せ結果を応答する。関係モデルをベースとした関係データベース管理システム（ＲＤＢＭＳ）では、レコードと呼ばれるデータを表１５４に格納し、少量のＩ／Ｏ要求でレコードにアクセスするためのデータ構造であるインデックス１５３を有する。インデックス１５３のデータ構造は、Ｂ木又はハッシュなどである。データの問合せはＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）によって記述される。
【００３４】
本発明の第１の実施の形態では、データベース管理システム１０５は、ネットワーク１７０を介して接続された格納用外部記憶装置１５０に、表１５４及びインデックス１５３を格納しているが、データベースサーバ１００に備えられた記憶装置に格納するようにしてもよい。
【００３５】
データベース管理システム１０５は、問合せ実行制御部１１０及び部分インデックス作成部１２０を備える。問合せ実行制御部１１０は、アプリケーションプログラム１０４から要求された問合せを受け付け、問合せを処理して結果を応答する。部分インデックス作成部１２０は、データの格納位置に基づいて、局所性を有するデータの集合に対応する部分インデックスを作成する。局所性とは、後述するように、データが記憶装置の所定の範囲内に格納されていることである。所定の範囲は、物理アドレスに基づいて設定されてもよいしトラック又はセクタ単位で設定されてもよい。
【００３６】
部分インデックス作成部１２０は、インデックスデータ取得部１２１、インデックス情報ファイル保存領域１２２、インデックス作成部１２３、及び部分インデックス作成管理部１３０を備える。
【００３７】
インデックスデータ取得部１２１は、表に格納されたレコード集合から、インデックスを作成するために必要なデータを取得する。インデックス情報ファイル保存領域１２２は、取得したデータをファイルとして保存するための領域である。
【００３８】
インデックス作成部１２３は、インデックスデータ取得部１２１などによって取得されたデータに基づいてインデックスを作成する。また、インデックスを作成する過程で生成されるデータを一時的に保持するインデックス作成用作業領域１２４を備える。
【００３９】
部分インデックス作成管理部１３０は、外部記憶装置構成情報取得部１３１及び局所性判定基準指定受付部１３２を備える。外部記憶装置構成情報取得部１３１は、表１５４及びインデックス１５３を格納する格納用外部記憶装置１５０の構成情報を取得し、取得された構成情報を保持する。局所性判定基準指定受付部１３２は、ユーザによって指定された局所性判定基準の入力を受け付ける。
【００４０】
なお、本発明の第１の実施の形態では、局所性判定基準はユーザによって入力されるが、メモリ１０１の容量などのシステム環境に基づいて自動的に設定されるようにしてもよい。局所性判定基準を自動的に設定する方法については第４の実施の形態にて説明する。
【００４１】
なお、インデックス情報ファイル保存領域１２２及びインデックス作成用作業領域１２４に格納されるデータの容量がメモリ１０１に格納可能な容量を超えた場合には、作業用外部記憶装置１６０に一時的に当該データを格納し、必要に応じて、再度メモリ１０１に読み出すようにする。
【００４２】
問合せ実行制御部１１０は、問合せ受付部１１１、問合せ実行プラン生成部１１２、問合せ実行部１１３、ＤＢバッファ１１４、及び実行タスク管理部１１５を備える。
【００４３】
問合せ受付部１１１は、アプリケーションプログラム１０４から要求された問合せを受け付ける。
【００４４】
問合せ実行プラン生成部１１２は、受け付けた問合せを処理する手順（問合せ実行プラン）を作成する。問合せ実行プランとは、問合せ結果を作成するために必要なデータベースオペレーションを組み合わせた処理手順である。
【００４５】
問合せ実行部１１３は、作成された問合せ実行プランに従って動的にタスクを生成し、生成された複数のタスクを並行して実行する。問合せ実行部１１３は、問合せ結果を生成するための基本的なデータベースオペレーションを備えている。
【００４６】
ＤＢバッファ１１４は、問合せ処理を高速化するために、処理の過程で利用されたデータが一時的に格納される。
【００４７】
実行タスク管理部１１５は、問合せ実行部１１３によって実行されたタスクを管理する。また、実行タスク管理部１１５は、部分インデックス検索制御部１１６を備える。部分インデックス検索制御部１１６は、部分インデックスによる検索処理を制御する。
【００４８】
このように、本発明の第１の実施の形態では、複数のタスクを生成し、生成されたタスクを並列して実行することによって、要求された問合せを高速に処理することができる。また、各タスクで独立してデータの入出力（Ｉ／Ｏ）が要求される。このとき、入出力されるデータの格納位置が局所的にデータのＩ／Ｏ要求が発行されるように制御することによって、記憶装置に備えられたスケジューリング機能をより効果的に機能させることができる。
【００４９】
以下、本発明の第１の実施の形態のデータベース管理システムにおける処理手順について説明する。図２Ａ及び図２Ｂには、部分インデックスを作成するための手順を示し、図３には、部分インデックスを利用した検索手順を示す。図４には、部分インデックスを作成するために必要な局所性を判定するための格納用外部記憶装置１５０の構成情報の一例を示す。図５には、部分インデックスを作成する手順を説明するためのデータの一例である商品販売履歴表５００を示す。図６には、作成されたインデックス情報ファイル６００の一例を示す。まず、本発明の第１の実施の形態による部分インデックスの作成元となる商品販売履歴表５００について説明する。
【００５０】
図５は、本発明の第１の実施の形態の部分インデックスを作成する商品販売履歴表５００の一例を示す図である。
【００５１】
商品販売履歴表５００は、店舗における商品販売履歴の例であり、格納用外部記憶装置１５０に格納された表１５４の一例である。商品販売履歴表５００は、販売ＩＤ５０１、購入者ＩＤ５０２、商品ＩＤ５０３及び個数５０４を含む。
【００５２】
販売ＩＤ５０１は、商品の販売履歴を識別する識別子である。購入者ＩＤ５０２は、商品を購入した客の識別子である。商品ＩＤ５０３は、購入された商品の識別子である。個数５０４は、商品ＩＤ５０３によって識別される商品が購入された数である。
【００５３】
以下、図５に示した商品販売履歴表５００の商品ＩＤ５０３に部分インデックスを作成する手順を説明する。
【００５４】
図２Ａは、本発明の第１の実施の形態のインデックスを作成する手順を示すフローチャートである。
【００５５】
本処理は、データベースサーバ１００のプロセッサ１０２が部分インデックス作成部１２０を処理することによって実行される。
【００５６】
プロセッサ１０２は、まず、外部記憶装置構成情報取得部１３１を実行することによって、格納用外部記憶装置１５０の構成情報を取得する（ステップ２０１）。図４にステップ２０１の処理で取得された構成情報の一例を示す。
【００５７】
図４は、本発明の第１の実施の形態の格納用外部記憶装置１５０の構成情報の一例である論理アドレスと物理アドレスとの対応表４００を示す図である。
【００５８】
本発明の第１の実施の形態では、格納用外部記憶装置１５０には３つのＨＤＤが備えられており、各ＨＤＤによって提供される記憶領域の先頭から１ＫＢずつストライピングされている。なお、ここに示す構成に限らず、記憶領域は１つ又は複数の記憶装置によって構成されていればよい。
【００５９】
対応表４００は、データベースサーバ１００によって認識される論理アドレス４０１と、当該論理アドレス４０１に対応する物理アドレス４０２によって構成される。物理アドレス４０２は、ＨＤＤの識別情報であるＨＤＤ番号と、当該ＨＤＤのＣＨＳ（Ｃｙｌｉｎｄｅｒ／Ｈｅａｄ／Ｓｅｃｔｏｒ）で構成される。
【００６０】
構成情報は、外部記憶装置構成情報取得部１３１を実行することによって、格納用外部記憶装置１５０から取得されるようにしてもよいが、格納用外部記憶装置１５０が当該情報を出力する管理用コマンドを備えていれば、当該コマンドを利用するようにしてもよい。また、格納用外部記憶装置１５０を設定したデータベース設計者が、対応表４００を含むファイルをあらかじめ作成し、外部記憶装置構成情報取得部１３１が当該ファイルを読み出すようにしてもよい。さらに、管理者がＧＵＩなどのユーザインターフェースを介して外部記憶装置構成情報取得部１３１に入力するようにしてもよい。また、該構成情報を任意のタイミングで再取得し、対応表４００を再作成しても良い。
【００６１】
ここで、図２Ａの部分インデックスを作成する手順の説明に戻る。
【００６２】
プロセッサ１０２は、次に、商品販売履歴表５００のレコードを１ページ分読み出す。そして、インデックスデータ取得部１２１を実行することによって、インデックスを作成するために必要な各レコードの商品ＩＤ及び当該レコードのポインタの組によって構成されるインデックス情報を抽出する（ステップ２０３）。
【００６３】
なお、本発明の第１の実施の形態では、記憶装置１５５に格納された表１５４に対してインデックス１５３を生成する方法について説明するが、表１５４にデータを挿入する処理と並行してインデックス１５３を作成するようにしてもよい。この場合には、表１５４にデータを挿入する処理と並行してインデックス情報を抽出する。
【００６４】
プロセッサ１０２は、読み出したページが商品販売履歴表５００の最終ページであるか否かを判定する（ステップ２０４）。読み出したページが商品販売履歴表５００の最終ページでない場合には（ステップ２０４の結果が「Ｎｏ」）、インデックス情報ファイルに含まれるレコード集合に対してインデックス情報が抽出されたレコードが、格納用外部記憶装置１５０において局所性を有するか否かを判定する（ステップ２０５）。
【００６５】
レコード集合とインデックス情報が抽出されたレコードが局所性を有しているか否かを判定する基準は、局所性判定基準指定受付部１３２によってユーザから受け付けた指示に基づく。本発明の第１の実施の形態では、記憶装置１５５において、指定された範囲の領域に格納されたレコードが局所性を有するとしている。ステップ２０５の処理では、インデックス情報が抽出されたレコードが格納された位置が、インデックス情報ファイルに含まれるレコード集合に対応する領域に含まれるか否かを判定する。作成中のインデックス情報ファイルに対応するレコード集合に、インデックス情報が抽出されたレコードを追加した後の領域が指定された範囲内であるか否かを判定してもよい。
【００６６】
具体的に説明すると、外部記憶装置構成情報取得部１３１に保存されている対応表４００によって、データベース管理システム１０５によって認識されるレコードの論理アドレスと、記憶装置１５５の物理アドレスとを対応させることで判定する。すなわち、物理的に近い位置に格納されているか否かを判定する。なお、局所性の判定基準は、アドレス以外にも、前述のように、各ＨＤＤのヘッドの移動距離が所定の閾値以下の範囲としてもよく、任意の基準を指定してよい。また、レコード格納位置のＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）に基づいて局所性判定を行ってもよく、その場合は、対応表４００の物理アドレス４０２はＬＢＡ形式としても良い。
【００６７】
図２Ｂは、本発明の第１の実施の形態の局所性を判定する手順を示すフローチャートである。
【００６８】
本処理は、図２Ａに示したフローチャートのステップ２０５の処理で実行される処理である。
【００６９】
プロセッサ１０２は、インデックス情報が抽出されたレコードの格納位置を特定する。そして、図４に示した対応表４００に基づいて、インデックス情報が抽出されたレコードが追加されたレコード集合が指定されたサイズの領域内に格納されているか否かを判定する（ステップ２５１）。
【００７０】
プロセッサ１０２は、レコード集合が指定されたサイズの領域内に格納されている場合には（ステップ２５１の結果が「Ｙｅｓ」）、インデックス情報が追加された後のレコード集合が局所性を有すると判定する（ステップ２５２）。
【００７１】
一方、プロセッサ１０２は、レコード集合が指定されたサイズの領域内に格納されていない場合には（ステップ２５１の結果が「Ｎｏ」）、インデックス情報追加後のレコード集合が局所性を有していないと判定する（ステップ２５３）。
【００７２】
ここで、図２Ａの部分インデックスを作成する手順の説明に戻る。
【００７３】
プロセッサ１０２は、インデックス情報ファイルに含まれるレコード集合に対してインデックス情報が抽出されたレコードが局所性を有している場合には（ステップ２０５の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する（ステップ２１１）。
【００７４】
プロセッサ１０２は、インデックス情報ファイルに含まれるレコード集合とインデックス情報が抽出されたレコードが局所性を有していない場合には（ステップ２０５の結果が「Ｎｏ」）、新たに別のインデックス情報ファイルをインデックス情報の出力先とし、抽出されたインデックス情報を出力する（ステップ２０６）。
【００７５】
さらに、プロセッサ１０２は、インデックス作成を実行するスレッドを新たに生成し、切り替えられたインデックス情報ファイルに基づいて部分インデックスを作成する（ステップ２０７）。本発明の第１の実施の形態では、インデックス作成時間を短縮するために、部分インデックスを作成するためのスレッドを新たに生成し、インデックス情報ファイル作成処理と部分インデックス作成処理を並列実行している。なお、すべての処理を１スレッドで順番に実行するようにしてもよい。
【００７６】
プロセッサ１０２は、ステップ２０７の処理が終了すると、次のレコードについてステップ２０３以降の処理を実行する。
【００７７】
プロセッサ１０２は、読み出したページが商品販売履歴表５００の最終ページであった場合には（ステップ２０４の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する（ステップ２０８）。さらに、インデックス情報を抽出する処理とは別スレッドで、部分インデックスを作成する処理を実行する（ステップ２０９）。
【００７８】
以上の処理によって、局所性を有するインデックス情報ファイルが作成され、対応する部分インデックスが作成される。図６には、局所性を有するレコードのインデックス情報が格納されたインデックス情報ファイルの一例が示されている。
【００７９】
図６は、本発明の第１の実施の形態のインデックス情報ファイル６００の一例を示す図である。
【００８０】
図６に示すインデックス情報ファイル６００には、局所性を有するレコード集合ごとに生成された３つのファイルが示されている。本発明の第１の実施の形態では、前述のように、所定の範囲に格納されているレコードが局所性を有するレコード集合に対応してインデックス情報ファイルが作成される。また、各インデックス情報ファイルは、格納されるインデックス情報が他のインデックス情報ファイルに格納されるインデックス情報と重複しないように作成される。
【００８１】
ここで、作成された部分インデックスと、作成元となった商品販売履歴表５００との関係をさらに説明する。
【００８２】
図７は、本発明の第１の実施の形態のインデックス７００と商品販売履歴表５００との関係を説明する図である。
【００８３】
本発明の第１の実施の形態では、図２Ａ及び図２Ｂに示した手順によって、図６に示した３つのインデックス情報ファイルが作成され、対応する部分インデックス００１〜００３（７０２〜７０４）を含むインデックス７００が生成される。前述のように、部分インデックス００１〜００３（７０２〜７０４）は、レコードが重複することなく作成される。また、各部分インデックスには、インデックスの対象となる項目（商品ＩＤ）でソートされて格納される。
【００８４】
最後に、複数の部分インデックスを含むインデックス７００を利用した検索処理の手順について説明する。
【００８５】
検索処理は、前述のように、プロセッサ１０２が問合せ実行制御部１１０を処理することによって実行される。
【００８６】
前述のように、プロセッサ１０２は、検索処理を実行すると、動的に複数のタスクを生成する。生成されたタスクは、実行タスク管理部１１５によって管理される。生成されたタスクがそれぞれＩ／Ｏ要求を発行することによって、データベースサーバ１００から格納用外部記憶装置１５０にＩ／Ｏ要求が多重に発行される。このとき、インデックス７００を利用して検索する手順を図３を参照しながら説明する。
【００８７】
図３は、本発明の第１の実施の形態のインデックス検索の手順を示すフローチャートである。
【００８８】
プロセッサ１０２は、まず、検索対象の部分インデックスを示すカウンタＮの値を初期化する。具体的には、カウンタＮの値を１に設定する（ステップ３０１）。
【００８９】
プロセッサ１０２は、続いて、部分インデックス検索制御部１１６によって、インデックス７００に含まれるＮ番目の部分インデックスを利用して検索を実行する（ステップ３０２）。このとき、当該部分インデックスに対応するデータを取得するタスクを複数生成し、集中的に並列して検索を実行する。
【００９０】
プロセッサ１０２は、Ｎ番目の部分インデックスによる検索が終了すると、Ｎ番目の部分インデックスが最後の部分インデックスであるか否かを判定する（ステップ３０３）。Ｎ番目の部分インデックスが最後の部分インデックスである場合には（ステップ３０３の結果が「Ｙｅｓ」）、検索処理を終了する。
【００９１】
一方、Ｎ番目の部分インデックスが最後の部分インデックスでない場合には（ステップ３０３の結果が「Ｎｏ」）、カウンタの値をＮからＮ＋１に更新し（ステップ３０４）、Ｎ＋１番目の部分インデックスについて同様に検索を実行する。
【００９２】
以上のように、本発明の第１の実施の形態によれば、局所性を有するレコード集合に対応する部分インデックスごとに検索を実行することによって、記憶装置上で局所的な場所に格納されたデータに対するＩ／Ｏ要求が集中的に発行される。したがって、記憶装置に備えられたＩ／Ｏ要求のスケジューリング機能によって、Ｉ／Ｏ要求処理時間を短縮させることができる。
【００９３】
また、本発明の第１の実施の形態によれば、インデックスを作成する場合にも、部分インデックスごとに並列して作成することが可能となるため、インデックスの作成時間を短縮させることができる。
【００９４】
（第２の実施の形態）
本発明の第１の実施の形態では、表１５４が連続した記憶領域に格納されていたが、第２の実施の形態では、表１５４が連続した記憶領域に格納されていない場合について説明する。
【００９５】
なお、第２の実施の形態以降の説明では、第１の実施の形態との相違点を中心に説明し、第１の実施の形態と共通する構成及び処理については、同一の符号を付与して説明を省略する。
【００９６】
図８は、本発明の第２の実施の形態の計算機システムの構成を示すブロック図である。
【００９７】
本発明の第２の実施の形態では、第１の実施の形態と部分インデックス作成部１２０が相違する。具体的には、第２の実施の形態の部分インデックス作成部１２０には、第１の実施の形態の構成に加え、ディスク別最終アドレス保存部８３３が備えられる。
【００９８】
ディスク別最終アドレス保存部８３３は、インデックス情報ファイルに書き込まれたインデックスに対応するレコードの最終アドレスをＨＤＤごとに保存する。ディスク別最終アドレス保存部８３３は、最後に読み出されたデータのアドレスがディスクごとに記録されるディスク別最終アドレス保存表１１００を含む。ディスク別最終アドレス保存表１１００の詳細については、図１１にて後述する。
【００９９】
その他の構成については、第１の実施の形態と同様であり、インデックスを作成する手順及び局所性を判定する手順が相違する。図９Ａ及び図９Ｂを参照しながら各手順について説明する。
【０１００】
図９Ａは、本発明の第２の実施の形態のインデックスを作成する手順を示すフローチャートである。
【０１０１】
本処理は、データベースサーバ１００のプロセッサ１０２が部分インデックス作成部１２０を処理することによって実行される。
【０１０２】
プロセッサ１０２は、まず、第１の実施の形態と同様に、外部記憶装置構成情報取得部１３１を実行することによって、格納用外部記憶装置１５０の構成情報を取得する（ステップ２０１）。図１０にステップ２０１の処理で取得された構成情報を示す。
【０１０３】
図１０は、本発明の第２の実施の形態の格納用外部記憶装置１５０の構成情報の一例である論理アドレスと物理アドレスとの対応表１０００を示す図である。対応表１０００の構成は、第１の実施の形態の対応表４００の構成と同じである。
【０１０４】
本発明の第２の実施の形態では、第１の実施の形態と同様に、格納用外部記憶装置１５０には３個のＨＤＤが備えられている。しかし、第１の実施の形態のように、連続した領域にレコードが格納されているとは限らず、図１０を参照すると、ＨＤＤ番号が「０１」のＨＤＤでは、アドレスが「００００００〜００００ｆｆ」」の領域にレコードが記録され、続いて「００５０００〜００５０ｆｆ」の領域にレコードが記録される。
【０１０５】
ここで、図９Ａの部分インデックスを作成する手順の説明に戻る。
【０１０６】
プロセッサ１０２は、次に、第１の実施の形態と同様に、商品販売履歴表５００のレコードを１ページ分読み出す。そして、インデックスデータ取得部１２１を実行することによって、インデックスを作成するために必要な各レコードの商品ＩＤ及び当該レコードのアドレスの組で構成されるインデックス情報を抽出する（ステップ２０３）。
【０１０７】
プロセッサ１０２は、読み出したページが商品販売履歴表５００の最終ページであるか否かを判定する（ステップ２０４）。読み出したページが商品販売履歴表５００の最終ページでない場合には（ステップ２０４の結果が「Ｎｏ」）、インデックス情報ファイルに含まれるレコード集合に対してインデックス情報が抽出されたレコードが、格納用外部記憶装置１５０において局所性を有するか否かを判定する（ステップ２０５）。
【０１０８】
本発明の第２の実施の形態では、レコード集合が記憶装置１５５において指定された範囲の領域内に格納されていることに加え、さらに、隣接するレコードの格納位置が指定された値以上離れていない場合に、レコード集合が局所性を有すると判定する。
【０１０９】
図９Ｂは、本発明の第２の実施の形態の局所性を判定する手順を示すフローチャートである。
【０１１０】
プロセッサ１０２は、インデックス情報が抽出されたレコードの格納位置を特定し、インデックス情報が抽出されたレコードが追加されたレコード集合が指定されたサイズの領域内に格納されているか否かを判定する（ステップ２５１）。
【０１１１】
プロセッサ１０２は、レコード集合が指定されたサイズの領域内に格納されている場合には（ステップ２５１の結果が「Ｙｅｓ」）、さらに、表データの物理アドレスとディスクごとに管理している最終アドレスが指定された値以上離れていないか否かを判定する（ステップ９５３）。図１１には、ディスクごとに管理している最終アドレスを格納するディスク別最終アドレス保存表１１００の一例が示されている。
【０１１２】
図１１は、本発明の第２の実施の形態のディスク別最終アドレス保存表１１００の一例を示す図である。
【０１１３】
ディスク別最終アドレス保存表１１００には、ＨＤＤごとに最後に読み出されたレコードのアドレスが記録される。ディスク別最終アドレス保存表１１００は、ＨＤＤを識別するＨＤＤ番号１１０１及び最後に読み出されたレコードに対応するアドレスが記録される最終アドレス１１０２を含む。
【０１１４】
プロセッサ１０２は、表データの物理アドレスとディスクごとに管理している最終アドレスが指定された値以上離れていない場合には（ステップ９５３の結果が「Ｎｏ」）、インデックス情報追加後のレコード集合が局所性を有すると判定する（ステップ２５２）。
【０１１５】
一方、プロセッサ１０２は、レコード集合が指定されたサイズの領域内に格納されていない場合（ステップ２５１の結果が「Ｎｏ」）、又は表データの物理アドレスとディスクごとに管理している最終アドレスが指定された値以上離れている場合には（ステップ９５３の結果が「Ｙｅｓ」）、インデックス情報追加後のレコード集合が局所性を有していないと判定する（ステップ２５３）。
【０１１６】
ここで、図９Ａの部分インデックスを作成する手順の説明に戻る。
【０１１７】
プロセッサ１０２は、インデックス情報ファイルに含まれるレコード集合に対してインデックス情報が抽出されたレコードが局所性を有している場合には（ステップ２０５の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する。さらに、追記対象のインデックスに対応するレコードの論理アドレスから図１０に示した対応表１０００に基づいてＨＤＤ上の物理アドレスを取得し、ディスク別最終アドレス保存表１１００を更新する（ステップ９１２）。
【０１１８】
プロセッサ１０２は、インデックス情報ファイルに含まれるレコード集合とインデックス情報が抽出されたレコードが局所性を有していない場合には（ステップ２０５の結果が「Ｎｏ」）、新たに別のインデックス情報ファイルをインデックス情報の出力先とし、抽出されたインデックス情報を出力する（ステップ２０６）。
【０１１９】
さらに、プロセッサ１０２は、追記対象のインデックスに対応するレコードの論理アドレスから図１０に示した対応表１０００に基づいてＨＤＤ上の物理アドレスを取得し、ディスク別最終アドレス保存表１１００を更新する（ステップ９０７）。続いて、インデックス作成を実行するスレッドを新たに生成し、切り替えられたインデックス情報ファイルに基づいて部分インデックスを作成する（ステップ２０７）。
【０１２０】
プロセッサ１０２は、ステップ２０７の処理が終了すると、次のレコードについてステップ２０３以降の処理を実行する。
【０１２１】
プロセッサ１０２は、読み出したページが商品販売履歴表５００の最終ページであった場合には（ステップ２０４の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する（ステップ２０８）。さらに、インデックス情報を抽出する処理とは別スレッドで、部分インデックスを作成する処理を実行する（ステップ２０９）。
【０１２２】
本発明の第２の実施の形態によれば、表を格納するＨＤＤの記憶領域が、図１０に示すように、「００００００〜００００ｆｆ」と「００５０００〜００５０ｆｆ」のように連続していない場合に、その境界で別の部分インデックスを作成することが可能となる。したがって、表データが連続した領域に格納されていない場合であっても、第１の実施の形態と同様の効果を得られ、記憶装置に備えられたＩ／Ｏ要求のスケジューリング機能によって、Ｉ／Ｏ要求を処理する時間を短縮することができる。
【０１２３】
（第３の実施の形態）
本発明の第３の実施の形態では、外部記憶装置の構成情報に加え、部分インデックス作成処理が計算機のメモリ上で処理可能な場合に局所性を有すると判定する。こうすることによって、インデックス作成時に作業用外部記憶装置１６０にアクセスする必要がなくなるため、インデックスを作成する時間を短縮することができる。
【０１２４】
本発明の第３の実施の形態の計算機システムは、第１の実施の形態の計算機システムの構成から作業用外部記憶装置１６０を除いた構成となっている。なお、作業用外部記憶装置１６０が不要なのはインデックス作成時であるため、検索実行時など、他の処理で作業用外部記憶装置１６０が必要な場合が想定される場合には、第１の実施の形態の計算機システムと同じ構成としてもよい。
【０１２５】
また、インデックスを作成する手順についても、基本的な手順は第１の実施の形態と同じであり、局所性を判定する処理が相違する。インデックスの作成手順を簡単に説明しながら局所性を判定する処理について説明する。
【０１２６】
本発明の第３の実施の形態のインデックスを作成する手順は、第１の実施の形態と同様である。そこで、図２Ａに示した第１の実施の形態のインデックス作成手順を示すフローチャートを参照しながら第３の実施の形態のインデックス作成手順について説明する。
【０１２７】
プロセッサ１０２は、まず、外部記憶装置構成情報取得部１３１によって、格納用外部記憶装置１５０の構成情報を取得する（ステップ２０１）。次に、商品販売履歴表５００のレコードを１ページ分読み出し、インデックス情報を抽出する（ステップ２０３）。
【０１２８】
プロセッサ１０２は、読み出したページが商品販売履歴表５００の最終ページであるか否かを判定する（ステップ２０４）。読み出したページが商品販売履歴表５００の最終ページでない場合には（ステップ２０４の結果が「Ｎｏ」）、インデックス情報が抽出されたレコードが局所性を有するか否かを判定する（ステップ２０５）。ここで、図１２を参照しながら局所性を判定する手順について説明する。
【０１２９】
図１２は、本発明の第３の実施の形態の局所性を判定する手順を示すフローチャートである。
【０１３０】
プロセッサ１０２は、インデックス情報が抽出されたレコードの格納位置を特定し、インデックス情報が抽出されたレコードが追加されたレコード集合が指定されたサイズの領域内に格納されているか否かを判定する（ステップ２５１）。
【０１３１】
大規模データベースシステムでは、表１５４に格納されるレコード数が非常に多い場合、インデックス情報を保持するインデックス情報ファイルのサイズがインデックス情報ファイル保存領域１２２よりも大きくなってしまう可能性がある。
【０１３２】
このとき、第１の実施の形態では、適宜溢れた分を作業用外部記憶装置１６０に保存する。しかし、メモリ上に記憶されたデータにのみアクセスして処理を実行する場合と比較して、外部記憶装置に記憶されたデータにアクセスしながら処理を実行する場合には多くの処理時間を要する。そこで、第３の実施の形態では、インデックス情報ファイルがインデックス情報ファイル保存領域１２２に格納できなくなった時点で、レコード集合が局所性を有していないと判定する。
【０１３３】
プロセッサ１０２は、レコード集合が指定されたサイズの領域内に格納されている場合には（ステップ２５１の結果が「Ｙｅｓ」）、さらに、インデックス情報ファイルをメモリ１０１に格納できるか否かを判定する（ステップ１４５３）。すなわち、インデックス情報ファイルのサイズがインデックス情報ファイル保存領域１２２のサイズよりも小さいか否かを判定する。インデックス情報ファイルをメモリ１０１に格納できる場合には（ステップ１４５３の結果が「Ｙｅｓ」）、インデックス情報が抽出されたレコードが追加された後のレコード集合が局所性を有すると判定する（ステップ２５２）。
【０１３４】
一方、プロセッサ１０２は、レコード集合が指定されたサイズの領域内に格納されていない場合（ステップ２５１の結果が「Ｎｏ」）、又はインデックス情報ファイルに新たにインデックス情報を追記することによってメモリ１０１に保持できないサイズになった場合には（ステップ１４５３の結果が「Ｎｏ」）、インデックス情報追加後のレコード集合が局所性を有していないと判定する（ステップ２５３）。
【０１３５】
ここで、図２Ａの部分インデックスを作成する手順の説明に戻る。
【０１３６】
プロセッサ１０２は、インデックス情報が抽出されたレコードが局所性を有している場合には（ステップ２０５の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する（ステップ２１１）。
【０１３７】
また、インデックス情報が抽出されたレコードが局所性を有していない場合には（ステップ２０５の結果が「Ｎｏ」）、新たに別のインデックス情報ファイルをインデックス情報の出力先とし、抽出されたインデックス情報を出力する（ステップ２０６）。その後、部分インデックスを作成するスレッドを新たに生成し、切り替えられたインデックス情報ファイルに基づいて部分インデックスを作成する（ステップ２０７）。
【０１３８】
プロセッサ１０２は、ステップ２０７の処理が終了すると、次のレコードについてステップ２０３以降の処理を実行する。
【０１３９】
プロセッサ１０２は、読み出したページが商品販売履歴表５００の最終ページであった場合には（ステップ２０４の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する（ステップ２０８）。さらに、インデックス情報を抽出する処理とは別スレッドで、部分インデックスを作成する（ステップ２０９）。
【０１４０】
以上の手順によって部分インデックスを作成することによって、作業用外部記憶装置１６０にメモリ１０１に格納しきれなかったデータを格納する必要がなくなる。したがって、外部記憶装置にアクセスする必要がなくなるため、部分インデックスの作成に要する時間を短縮することができる。
【０１４１】
インデックスを作成する処理には、インデックス情報ファイルに含まれるデータをキー値順にソートする処理が含まれる。ソート処理を実行する際に、一時データをメモリ１０１に格納する必要がある。このとき、メモリ１０１の容量が不足すると、ソート処理を実行するために、作業用外部記憶装置１６０にデータを入出力する必要が生じるため、出力される一時データのサイズも考慮して、局所性を判定するためのインデックス情報ファイルのサイズを設定する。
【０１４２】
本発明の第３の実施の形態によれば、インデックス情報ファイルがメモリ１０１に格納可能であり、作業用外部記憶装置１６０にデータを入出力せずに、部分インデックスを作成することが可能である。すなわち、インデックス情報ファイルのサイズをオンメモリで部分インデックスを作成可能な大きさにすることによって、作業用外部記憶装置へのデータの入出力によるオーバヘッドを削減し、インデックスの作成に要する時間を短縮することができる。
【０１４３】
（第４の実施の形態）
本発明の第１から第３の実施の形態では、レコード集合の局所性判定基準をユーザの指定によって設定していたが、第４の実施の形態では、システム環境などに基づいて、レコード集合の局所性判定基準を、データベース管理システム１０５が自動的に決定する。
【０１４４】
本発明の第４の実施の形態では、第１の実施の形態の部分インデックス作成管理部１３０に、局所性判定基準指定受付部１３２の替わりに局所性判定基準作成部を備える。
【０１４５】
局所性判定基準作成部は、格納用外部記憶装置１５０の構成情報、ネットワーク１７０及びインターフェース１０３の負荷情報、オペレーティングシステム１０６によって取得可能な情報などを参照して、局所性の判定基準を生成する。作成された基準に基づいて、第１の実施の形態に示した手順と同様に、部分インデックスを作成する。
【０１４６】
局所性の判定基準を生成する一例としては、ストライピングされている記憶領域のサイズに基づいて決定してもよい。
【０１４７】
また、インデックス情報ファイルを作成するために作業用外部記憶装置１６０にアクセスする必要のないサイズを取得し、局所性の判定基準としてもよい。このとき、取得されるサイズは、オペレーティングシステム１０６などから取得される利用可能なメモリ量に基づいて算出してもよいし、インデックス情報ファイル保存領域１２２のサイズとしてもよい。取得されたサイズを、レコード集合を格納する領域のサイズとすることによって、本発明の第３の実施の形態と同様の効果を得ることができる。
【０１４８】
また、論理アドレスと物理アドレスの対応表に基づいて、同一ＨＤＤ番号を有する領域が連続しているか否かを判定し、連続していない場合には、領域間の物理アドレスの間隔を取得する。取得された領域間の間隔に基づいて、例えば、第２の実施の形態の図９Ｂのステップ９５３の処理で指定されている値を設定することによって、第２の実施の形態の効果を得ることができる。
【０１４９】
本発明の第４の実施の形態によれば、ユーザの指定によらずに局所性の判定基準を自動的に設定することができる。したがって、ユーザの手間を減らすだけでなく、長期間の運用によって、外部記憶装置が拡張された場合など、環境の変化に応じた局所性判定基準を適用することができる。
【０１５０】
（第５の実施の形態）
本発明の第５の実施の形態では、表１５４が複数の外部記憶装置に分割して格納されている場合にインデックス検索を実行する方法について説明する。
【０１５１】
図１３は、本発明の第５の実施の形態の計算機システム構成を示すブロック図である。
【０１５２】
本発明の第５の実施の形態では、第１の実施の形態の実行タスク管理部１１５に、部分インデックス格納場所管理部１５１７を備えている。その他の構成については第１の実施の形態と同様である。
【０１５３】
部分インデックス格納場所管理部１５１７は、各部分インデックスに含まれるレコード集合が格納されている記憶装置１５５の番号を保持する部分インデックス格納場所管理表を含む。部分インデックス格納場所管理部１５１７は、部分インデックス格納場所管理表の作成及び更新などを行う。部分インデックス格納場所管理表の詳細については、図１８にて後述する。
【０１５４】
本発明の第５の実施の形態の対応表の構成は、第１の実施の形態の対応表４００と同じである。図４に示すように、３つのＨＤＤによって表１５４が格納される。
【０１５５】
図１４は、本発明の第５の実施の形態のインデックス１７００と商品販売履歴表５００との関係を説明する図である。
【０１５６】
図４を参照すると、論理アドレスが０ｘ００００００００から０ｘ０００００ｆｆｆの記憶領域は、ＨＤＤ番号が０１の記憶装置によって提供され、論理アドレスが０ｘ００００１０００から０ｘ００００１ｆｆｆの記憶領域は、ＨＤＤ番号が０２の記憶装置によって提供される。したがって、部分インデックス００３に対応するレコードに対応するデータは、ＨＤＤ番号が０１及び０２の記憶装置に記憶される。
【０１５７】
図１７は、本発明の第５の実施の形態の部分インデックス格納場所管理部１５１７に保持される部分インデックス格納場所管理表１９００の一例を示す図である。
【０１５８】
部分インデックス格納場所管理表１９００は、部分インデックスとＨＤＤとの対応を含み、部分インデックスが格納されているＨＤＤの識別子が記録される。部分インデックス格納場所管理表１９００は、部分インデックス番号１９０１及びＨＤＤ番号１９０２を含む。部分インデックス番号１９０１は、部分インデックスを識別する番号である。ＨＤＤ番号１９０２は、ＨＤＤを識別する番号である。
【０１５９】
本発明の第５の実施の形態では、問合せが実行されると、問合せ実行制御部１１０によって動的に複数のタスクが生成される。また、生成されたタスクは、実行タスク管理部１１５によって管理される。そして、各タスクがそれぞれＩ／Ｏ要求を発行することによって、データベースサーバ１００から格納用外部記憶装置１５０にＩ／Ｏ要求が多重に発行される。
【０１６０】
図１５は、本発明の第５の実施の形態のインデックス検索の手順を示すフローチャートである。
【０１６１】
プロセッサ１０２は、まず、部分インデックス格納場所管理表１９００が作成済みか否かを判定する（ステップ１８０６）。部分インデックス格納場所管理表１９００が作成済みでない場合には（ステップ１８０６の結果が「Ｙｅｓ」）、新たに部分インデックス格納場所管理表１９００を作成する（ステップ１８０７）。
【０１６２】
プロセッサ１０２は、次に、部分インデックス格納場所管理表１９００を参照し、各記憶装置について、格納されているレコードを含む部分インデックスを１つずつ選択する（ステップ１８０１）。図１７に示した部分インデックス格納場所管理表１９００では、ＨＤＤ番号１９０２が０１であるＨＤＤに格納されているレコードを含む部分インデックス００１と、０２であるＨＤＤに格納されているレコードを含む部分インデックス００３が選択される。
【０１６３】
プロセッサ１０２は、選択された各部分インデックスについて、複数のタスクを生成し、生成されたタスクによって検索を開始する（ステップ１８０２）。
【０１６４】
その後、プロセッサ１０２は、すべての部分インデックスについて検索を開始したか否かを判定する（ステップ１８０３）。すべての部分インデックスについて検索を開始した場合には（ステップ１８０３の結果が「Ｙｅｓ」）、インデックス検索を終了する。
【０１６５】
プロセッサ１０２は、未検索の部分インデックスが残っている場合には（ステップ１８０３の結果が「Ｎｏ」）、各記憶装置について、格納されているレコードを含む部分インデックスであって、かつ、検索が開始されていない部分インデックスを選択する（ステップ１８０４）。そして、選択された部分インデックスについて、複数のタスクを生成し、生成されたタスクによって検索を開始する（ステップ１８０２）。図１７に示した部分インデックス格納場所管理表１９００では、ＨＤＤ番号１９０２が０１であるＨＤＤに格納されているレコードを含む部分インデックスであって、かつ、検索が開始されていない部分インデックス００２が選択され、検索が開始される。以上の処理をすべての部分インデックスの検索が開始されるまで繰り返す。
【０１６６】
続いて、部分インデックス格納場所管理表１９００を作成する処理について説明する。
【０１６７】
図１６は、本発明の第５の実施の形態の部分インデックス格納場所管理表１９００を作成する手順を示すフローチャートである。
【０１６８】
本処理は、部分インデックス格納場所管理部１５１７を処理することによって実行される。
【０１６９】
プロセッサ１０２は、まず、処理対象の部分インデックスを示すカウンタを初期化する。具体的には、カウンタＮの値を１に設定する（ステップ１８５１）。
【０１７０】
プロセッサ１０２は、Ｎ番目の部分インデックスについて、対応するレコードを格納している記憶装置番号を取得する。具体的には、部分インデックスに対応するレコードポインタに基づいて格納場所の論理アドレスを特定し、さらに、図４に示した外部記憶装置構成情報取得部１３１によって取得された対応表４００を参照して、当該部分インデックスに含まれるレコード集合が格納されているＨＤＤを識別する番号を取得する。そして、取得されたＨＤＤを識別する番号と部分インデックスを識別する番号とを部分インデックス格納場所管理表１９００に保存する（ステップ１８５２）。
【０１７１】
プロセッサ１０２は、Ｎ番目の部分インデックスに対する処理が終了すると、Ｎ番目の部分インデックスが最後の部分インデックスであるか否かを判定する（ステップ１８５３）。Ｎ番目の部分インデックスが最後の部分インデックスである場合には（ステップ１８５３の結果が「Ｙｅｓ」）、部分インデックス格納場所管理表作成処理を終了する。
【０１７２】
一方、Ｎ番目の部分インデックスが最後の部分インデックスでない場合には（ステップ１８５３の結果が「Ｎｏ」）、カウンタをＮからＮ＋１に更新し（ステップ１８５４）、Ｎ＋１番目の部分インデックスについて同様に処理する。
【０１７３】
なお、本発明の第５の実施の形態では、作成済の部分インデックスに対して部分インデックス格納場所管理表１９００を作成する手順を説明したが、部分インデックス作成処理と並行して部分インデックス格納場所管理表１９００を作成するようにしてもよい。
【０１７４】
本発明の第５の実施の形態によれば、各部分インデックスごとに検索を実行し、各記憶装置で格納場所が局所的になるようにＩ／Ｏ要求を集中して発行することに加え、複数の記憶装置にまたがって表１５４が格納されている場合には、各記憶装置にそれぞれＩ／Ｏ要求が並列して発行される。したがって、各記憶装置においてＩ／Ｏ要求が並列して処理されるため、さらに、Ｉ／Ｏ要求を処理する時間を短縮することができる。
【０１７５】
（第６の実施の形態）
本発明の第６の実施の形態では、表にデータを追加した際に、追加したデータに対応するインデックスを作成する処理について説明する。なお、以下の説明では、表にデータを追加した後に、追加したデータに対するインデックスを作成する方法を説明しているが、表に追加データを挿入する処理と並列して追加データに対応するインデックス作成処理を実行してもよい。
【０１７６】
本発明の第６の実施の形態の計算機システムの構成は、図１に示した第１の実施の形態と同様である。また、インデックスの構成などについても第１の実施の形態と同様である。以下、表にデータを追加した際に、追加したデータに対応するインデックスを作成する処理について説明する。
【０１７７】
プロセッサ１０２は、まず、格納用外部記憶装置１５０に、追加データを格納する領域が存在するかを判定する。追加データを格納する領域が不足している場合には、記憶装置を追加するなどして領域を拡張し、外部記憶装置構成情報取得部１３１によって、追加した領域を含む格納用外部記憶装置１５０の構成情報を取得し、保存する。
【０１７８】
次に、プロセッサ１０２は、表にデータを追加した際に、追加したデータに対応するインデックスを新たな部分インデックスとして作成するか、もしくは、追加したデータの一部に対応するインデックスを既存の最新部分インデックスに追加し、残りのデータに対応するインデックスを新たな部分インデックスとして作成するかを決定する。この決定は、最新の部分インデックスのサイズなどの情報に基づいて、部分インデックス作成管理部１３０が自動的に決定してもよく、また、ユーザが部分インデックス作成管理部１３０に指示してもよい。
【０１７９】
追加したデータのインデックスを新たな部分インデックスとして作成する場合は、図２に示す部分インデックス作成手順に従って、インデックスデータ取得部１２１によって追加したデータのインデックス情報を取得し、部分インデックスを作成する。
【０１８０】
追加したデータの一部に対応するインデックスを既存の最新の部分インデックスに追加し、残りのデータに対応するインデックスを新たな部分インデックスとして作成する場合には、以下に示す手順に従ってインデックスを作成する。以下に示す手順は、追加したデータのインデックス情報、既存の部分インデックスに含まれるデータのインデックス情報、外部記憶装置構成情報取得部１３１に保存されている対応表４００、及び局所性判定基準指定受付部１３２にて受け付けた局所性判定基準に基づいて実行される。
【０１８１】
プロセッサ１０２は、まず、既存の部分インデックスに含まれるデータのインデックス情報を、インデックス情報ファイルとしてインデックス情報ファイル保存領域１２２に保存する。
【０１８２】
次に、プロセッサ１０２は、図２Ａに示した部分インデックスを作成する手順に従って、インデックスを作成する。
【０１８３】
プロセッサ１０２は、追加したデータを１ページ分読み出し、インデックスデータ取得部１２１によって、インデックスの作成に必要なインデックス情報を抽出する（ステップ２０３）。
【０１８４】
プロセッサ１０２は、読み出したページが追加したデータの最終ページであるか否かを判定する（ステップ２０４）。読み出したページが追加したデータの最終ページでない場合には（ステップ２０４の結果が「Ｎｏ」）、インデックス情報ファイルに含まれるレコード集合に対してインデックス情報が抽出されたレコードが、格納用外部記憶装置１５０において局所性を有するか否かを判定する（ステップ２０５）。
【０１８５】
プロセッサ１０２は、インデックス情報ファイルに含まれるレコード集合に対してインデックス情報が抽出されたレコードが局所性を有している場合には（ステップ２０５の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する（ステップ２１１）。
【０１８６】
プロセッサ１０２は、インデックス情報ファイルに含まれるレコード集合とインデックス情報が抽出されたレコードが局所性を有していない場合には（ステップ２０５の結果が「Ｎｏ」）、新たに別のインデックス情報ファイルをインデックス情報の出力先とし、抽出されたインデックス情報を出力する（ステップ２０６）。
【０１８７】
さらに、プロセッサ１０２は、インデックスを作成するスレッドを新たに生成し、切り替えられたインデックス情報ファイルに基づいて部分インデックスを作成する（ステップ２０７）。
【０１８８】
プロセッサ１０２は、ステップ２０７の処理が終了すると、次のレコードについてステップ２０３以降の処理を実行する。
【０１８９】
プロセッサ１０２は、読み出したページが追加したデータの最終ページであった場合には（ステップ２０４の結果が「Ｙｅｓ」）、抽出したインデックス情報をインデックス情報ファイル６００に追記する（ステップ２０８）。さらに、インデックス情報を抽出する処理とは別スレッドで、部分インデックスを作成する処理を実行する（ステップ２０９）。
【０１９０】
本発明の第６の実施の形態によれば、外部記憶装置において格納位置が局所性を有するレコード集合ごとに部分インデックスを作成することができる。また、既存の部分インデックスに対する修正を最小限に抑えて追加されたデータのインデックスを高速に作成することができる。
【０１９１】
（第７の実施の形態）
本発明の第７の実施の形態では、複数の記憶装置又は格納用外部記憶装置によって分散して提供された領域を統合し、当該統合された領域に表のデータを格納する場合について説明する。
【０１９２】
図１８は、本発明の第７の実施の形態の計算機システムの構成を示すブロック図である。
【０１９３】
本発明の第７の実施の形態のデータベースサーバ１００は、ネットワーク１７０を介して１つ又は複数の格納用外部記憶装置１５０と接続されている。また、外部記憶装置構成情報取得部１３１は、接続されている１つ又は複数の格納用外部記憶装置１５０のそれぞれの構成情報を取得する。さらに、接続されている１つ又は複数の格納用外部記憶装置１５０に作成された領域相互の構成情報を取得する格納領域間構成情報取得部２０３３を備えている。
【０１９４】
図１９は、本発明の第７の実施の形態の格納用外部記憶装置１５０の構成情報の一例である論理アドレスと物理アドレスとの対応表２１００を示す図である。
【０１９５】
対応表２１００は、データベースサーバ１００によって認識される論理アドレス２１０１と、当該論理アドレス２１０１に対応する物理アドレス２１０２によって構成される。論理アドレス２１０１については、第１の実施の形態の対応表４００の論理アドレス４０１と同じである。物理アドレス２１０２は、第１の実施の形態の物理アドレス４０２の構成に加えて、外部記憶装置の識別情報である外部記憶装置番号が追加されている。
【０１９６】
図２０は、本発明の第７の実施の形態のインデックス２２００と商品販売履歴表２２０１との関係を説明する図である。
【０１９７】
以下、第７の実施の形態のインデックス作成処理の手順について説明する。
【０１９８】
プロセッサ１０２は、まず、外部記憶装置構成情報取得部１３１によって、データベースサーバ１００に接続されている１つ又は複数の格納用外部記憶装置１５０のそれぞれの構成情報を取得する。さらに、格納領域間構成情報取得部２０３３によって、データベースサーバ１００に接続されている１つ又は複数の格納用外部記憶装置１５０によって提供されている記憶領域の構成情報を取得し、対応表２１００を作成する。
【０１９９】
例えば、接続されている１つ又は複数の格納用外部記憶装置１５０に作成された複数のＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）を、データベースサーバ１００のオペレーティングシステム１０６によってＬＶＭ（Ｌｏｇｉｃａｌ  Ｖｏｌｕｍｅ  Ｍａｎａｇｅｒ）を利用して１つの論理ボリュームを作成する場合には、各格納用外部記憶装置１５０から取得した各ＬＵの構成情報と、オペレーティングシステム１０６から取得したＬＶＭ構成情報に基づいて、対応表２１００を作成する。
【０２００】
データベースサーバ１００に接続されている１つ又は複数の格納用外部記憶装置１５０によって提供される記憶領域の構成情報は、オペレーティングシステム１０６によって管理用コマンドが提供されている場合には、当該コマンドを利用して取得してもよい。また、データベースサーバ１００に接続されている１つ又は複数の格納用外部記憶装置１５０を設計したデータベース設計者が対応表２１００を記載したファイルを作成し、格納領域間構成情報取得部２０３３に通知してもよい。さらに、ＧＵＩを利用したインターフェースによって格納領域間構成情報取得部２０３３に必要な情報を通知してもよい。
【０２０１】
以降、プロセッサ１０２は、図２Ａに示した第１の実施の形態のインデックス作成手順にしたがって部分インデックスを作成する。局所性の判断は、例えば、対応表２１００に基づいて、外部記憶装置番号及びＨＤＤ番号が一致する領域に格納されているレコードが局所性を有しているとすればよい。
【０２０２】
本発明の第７の実施の形態によれば、複数の外部記憶装置に格納されたデータに対して、各記憶装置において局所的な位置に格納されるレコード集合ごとに部分インデックスが作成されるため、複数の外部記憶装置によって構成されるデータベース処理システムにおいても、検索時のＩ／Ｏ処理時間短縮が可能である。
【０２０３】
（第８の実施の形態）
本発明の第８の実施の形態では、部分インデックスを利用したインデックス検索を実行する際に、検索対象の部分インデックスを絞り込むための情報を保持するメタインデックスを作成することによって、インデックス検索を高速化する。
【０２０４】
図２１は、本発明の第８の実施の形態の計算機システムの構成を示すブロック図である。
【０２０５】
本発明の第８の実施の形態の計算機システムでは、第１の実施の形態の構成に加え、実行タスク管理部１１５にメタインデックス管理部２４１７が備えられる。メタインデックス管理部２４１７は、部分インデックスを利用したインデックス検索を実行する際に、検索対象の部分インデックスを絞り込むためのメタインデックスを作成及び管理する。具体的な手順については、図２３及び図２６にて後述する。
【０２０６】
図２２は、本発明の第８の実施の形態のメタインデックス２５０６及びインデックス２５００と、商品販売履歴表２５０１との関係を説明する図である。
【０２０７】
メタインデックス２５０６は、インデックスの対象となる商品ＩＤと、当該商品ＩＤに対応するレコードが格納されたレコードのインデックスが格納されている部分インデックスの識別情報が格納されている。具体的には、商品ＩＤ「Ｉｔｅｍ００１」に対応するレコードのインデックスが格納されている部分インデックスが「００１」及び「００４」であることがわかる。
【０２０８】
本発明の第８の実施の形態では、インデックス検索の実行時に、まず、メタインデックス２５０６を検索し、検索対象のレコードに対応する部分インデックスを特定してからレコードを取得する。こうすることによって、すべての部分インデックスを検索する必要がなくなり、インデックス検索を高速化することができる。以下、本発明の第８の実施の形態のインデックス検索処理の手順について説明する。
【０２０９】
図２３は、本発明の第８の実施の形態のインデックス検索の手順を示すフローチャートである。
【０２１０】
プロセッサ１０２は、まず、メタインデックスが作成済みか否かを判定する（ステップ２６０６）。メタインデックスが作成済みでない場合には（ステップ２６０６の結果が「Ｙｅｓ」）、メタインデックス管理部２４１７によって、新たにメタインデックスを作成する（ステップ２６０７）。メタインデックスを作成する処理を、図２４に示す。
【０２１１】
図２４は、本発明の第８の実施の形態のメタインデックスを作成する手順を示すフローチャートである。
【０２１２】
プロセッサ１０２は、まず、処理対象の部分インデックスを示すカウンタを初期化する。具体的には、カウンタＮの値を１に設定する（ステップ２６５１）。
【０２１３】
プロセッサ１０２は、Ｎ番目の部分インデックスについてメタインデックスを作成する（ステップ２６５２）。メタインデックス作成処理では、１つの部分インデックスについて、当該部分インデックスに含まれるレコードのメタインデックスを作成するキーカラムを特定し、当該キーカラムに対応する値を取得する。
【０２１４】
例えば、図２２の商品販売履歴表２５０１のインデックス２５００について、商品ＩＤをキーカラムとしてメタインデックス２５０６を作成する場合には、部分インデックス００１に含まれるレコードの商品ＩＤの値を取得する。その結果、部分インデックス００１に含まれるレコードの商品ＩＤの値として、「Ｉｔｅｍ００１」と「Ｉｔｅｍ００３」が取得される。
【０２１５】
以上の処理で取得された値に基づいて、プロセッサ１０２は、キーカラムの値であるＩｔｅｍ００１と部分インデックス番号である００１の組である（Ｉｔｅｍ００１，００１）、及び（Ｉｔｅｍ００３，００１）をメタインデックス２５０６に登録する。
【０２１６】
プロセッサ１０２は、Ｎ番目の部分インデックスに対する処理が終了すると、Ｎ番目の部分インデックスが最後の部分インデックスであるか否かを判定する（ステップ２６５３）。Ｎ番目の部分インデックスが最後の部分インデックスである場合には（ステップ２６５３の結果が「Ｙｅｓ」）、部分インデックス格納場所管理表作成処理を終了する。
【０２１７】
一方、Ｎ番目の部分インデックスが最後の部分インデックスでない場合には（ステップ２６５３の結果が「Ｎｏ」）、カウンタをＮからＮ＋１に更新し（ステップ２６５４）、Ｎ＋１番目の部分インデックスについて同様に処理する。
【０２１８】
以上の手順をすべての部分インデックスに対して実行し、メタインデックスを作成する。なお、本発明の第８の実施の形態では、作成済の部分インデックスに対してメタインデックス２５０６を作成する手順を説明したが、部分インデックス作成処理を実行する際に並行してメタインデックス２５０６を作成するようにしてもよい。
【０２１９】
ここで、図２３のインデックス検索処理を示すフローチャートの説明に戻る。
【０２２０】
プロセッサ１０２は、メタインデックスを参照し、検索対象の部分インデックスを選択する（ステップ２６０１）。図２２の例では、「“商品ＩＤ＝Ｉｔｅｍ００１”の販売履歴を検索する」場合には、まず、メタインデックス２５０６を参照し、部分インデックス００１が、Ｉｔｅｍ００１の販売履歴を含む部分インデックスであることを特定し、部分インデックス００１を選択する。そして、複数のタスクを動的に生成し、選択された部分インデックス００１についての検索処理を実行する（ステップ２６０２）。
【０２２１】
プロセッサ１０２は、さらにメタインデックスを参照し、検索対象の部分インデックスで、検索処理が未実行の部分インデックスを選択する（ステップ２６０３）。図２２の例では、Ｉｔｅｍ００１の販売履歴を含む部分インデックスであって、検索処理が未実行である部分インデックス００４を選択する。そして、同様に複数のタスクを動的に生成し、選択された部分インデックス００４についての検索処理を開始する（ステップ２６０２）。
【０２２２】
プロセッサ１０２は、さらにメタインデックスを参照し、検索対象の部分インデックスであって、検索処理が未実行の部分インデックスが残っているか否かを判定する（ステップ２６０４）。図２２の例では、商品ＩＤが「Ｉｔｅｍ００１」であるレコードに対応する部分インデックスは、部分インデックス００１と部分インデックス００４であり、他に選択される部分インデックスがないため（ステップ２６０４の結果が「Ｎｏ」）、インデックス検索を終了する。
【０２２３】
本発明の第８の実施の形態によれば、メタインデックスを利用し、検索対象の部分インデックスを絞り込むことによって、検索処理時間を短縮することができる。特に、部分インデックスの数が大きい場合など、レコード数の多い大規模データベースで効果的である。
【０２２４】
（第９の実施の形態）
本発明の第９の実施の形態では、アプリケーションプログラム１０４がデータベース管理システム１０５に複数の問合せを同時に要求した場合に、部分インデックスを利用して検索する手順について説明する。
【０２２５】
図２５は、本発明の第９の実施の形態の計算機システムの構成を示すブロック図である。
【０２２６】
アプリケーションプログラム１０４は、プロセッサ１０２に実行され、各種業務を処理する。業務を処理する際に、データベース管理システム１０５に問合せを発行し、問合せ結果を受信する。本発明の第９の実施の形態では、アプリケーションプログラム１０４は、データベース管理システム１０５に検索条件の引数のみが異なるような問合せを同時に大量に発行する。このような問合せの具体例については図２６Ａから図２６Ｃを参照しながら説明する。
【０２２７】
本発明の第９の実施の形態のデータベース管理システム１０５は、複数問合せ実行制御部２７４０を含む。
【０２２８】
複数問合せ実行制御部２７４０は、複数問合せ受付部２７４１、部分インデックス検索制御部２７４２、及び問合せ実行制御部１１０を備える。
【０２２９】
複数問合せ受付部２７４１は、アプリケーションプログラム１０４から要求された同時に複数の問合せを受け付ける。部分インデックス検索制御部２７４２は、複数の問合せに対する部分インデックスによる検索処理を制御する。
【０２３０】
問合せ実行制御部１１０は、要求された問合せを１件ずつ処理する。また、問合せ実行制御部１１０は、第１の実施の形態と同様に、問合せ受付部１１１、問合せ実行プラン生成部１１２、問合せ実行部１１３、及びＤＢバッファ１１４を含む。問合せ実行制御部１１０に含まれる各構成は、第１の実施の形態と同様である。問合せ実行部１１３は、前述のように、問合せ結果を生成するための基本的なデータベースオペレーションを備えている。問合せ実行プランとは、問合せ結果を作成するために、データベースオペレーションを組み合わせた処理手順である。
【０２３１】
図２６Ａから図２６Ｃは、本発明の第９の実施の形態の同時に発行される問合せの一例を示す図である。
【０２３２】
図２６Ａから図２６Ｃに示すように、本発明の第９の実施の形態では、ＳＱＬによって問合せが記述されている。また、アプリケーションプログラム１０４からデータベース管理システム１０５に発行される問合せは、参照されるインデックスが共通となるような問合せであって、前述のように、検索条件の引数のみが相違するような問合せである。
【０２３３】
具体的には、図２６Ａから図２６Ｃに示すように、それぞれ検索条件の引数がＩｔｅｍ００１、Ｉｔｅｍ００２、Ｉｔｅｍ００３のように異なるのみであって、他の検索条件の指定が同じ問合せが示されている。
【０２３４】
なお、インデックスについては、図２０に示した本発明の第７の実施の形態のインデックス２２００と同様である。以下、図２６Ａから図２６Ｃに示すような複数の問合せを処理する手順について、図２７を参照しながら説明する。
【０２３５】
図２７は、本発明の第９の実施の形態のインデックス検索の手順を示したフローチャートである。
【０２３６】
プロセッサ１０２は、アプリケーションプログラム２７０４から、同じ部分インデックスを利用可能な複数の検索要求が同時に発行されると、データベース管理システム１０５の複数問合せ受付部２７４１によって検索要求を受け付ける。
【０２３７】
プロセッサ１０２は、受け付けた複数の問合せについて、それぞれ問合せ実行プランを作成する。具体的には、まず、受け付けた複数の問合せのカウンタＮに１を設定し、初期化する（ステップ２９０１）。続いて、問合せ実行プラン生成部１１２によって、Ｎ番目の問合せについて問合せ実行プランを作成する（ステップ２９０２）。
【０２３８】
プロセッサ１０２は、受け付けられたすべての問合せについて問合せ実行プランを作成したか否かを判定する（ステップ２９０３）。作成されていない場合には(ステップ２９０３の結果が「Ｎｏ」)、カウンタＮに１を加算し（ステップ２９０４）、残りの問合せについて問合せ実行プランを作成する（ステップ２９０２）。
【０２３９】
プロセッサ１０２は、受け付けられたすべての問合せについて問合せ実行プランを作成すると（ステップ２９０３の結果が「Ｙｅｓ」）、各問合せの処理を開始する。本発明の第９の実施の形態の検索処理では、部分インデックスごとに各問合せを実行する。
【０２４０】
プロセッサ１０２は、問合せに対応するカウンタＮ及び部分インデックスに対応するカウンタＭを初期化する（ステップ２９０５）。そして、Ｍ番目の部分インデックスについて、Ｎ番目の問合せを開始する（ステップ２９０６）。
【０２４１】
図２０のインデックス情報及び図２６Ａから図２６Ｃの問合せを参照しながら具体的に説明すると、まず、部分インデックス００１（２２０２）について、１番目の検索要求２８００の処理を開始する（ステップ２９０６）。続いて、部分インデックス００１（２２０２）について、２番目の検索要求２８０１の処理を開始し（ステップ２９０８、ステップ２９０６）、さらに、３番目の検索要求２８０２の処理を開始する。
【０２４２】
このとき、部分インデックス００１（２２０２）について、３番目（最後）の検索要求２８０２まで処理を開始したため（ステップ２９０７の結果が「Ｙｅｓ」）、続いて、部分インデックス００２（２２０３）について、１番目の検索要求２８００から処理を開始する（ステップ２９０９、ステップ２９１０及びステップ２９１１）。続いて、部分インデックス００２について、２番目の検索要求２８０１の処理を開始する。以降、同様の手順によって、部分インデックス００４まで、３つの検索要求を実行する。
【０２４３】
以上のように、本発明の第９の実施の形態によれば、検索条件の引数のみが異なるような検索要求を複数実行する場合には、複数問合せ実行制御部２７４０によって部分インデックスへの入出力を集約し、記憶装置の局所的な場所に格納されたデータを対象とするＩ／Ｏ要求をまとめて発行することが可能となる。したがって、記憶装置に備えられたＩ／Ｏ要求のスケジューリング機能によって、Ｉ／Ｏ要求を処理する時間を短縮することができる。
【０２４４】
（第１０の実施の形態）
本発明の第１０の実施の形態では、データベースに格納されたデータを更新する際の処理について説明する。
【０２４５】
図２８は、本発明の第１０の実施の形態の計算機システムの構成を示すブロック図である。
【０２４６】
問合せ実行制御部１１０の実行タスク管理部１１５は、更新要求の結果を格納用外部記憶装置１５０に反映する処理を制御する更新書込み制御部３１１７を備える。
【０２４７】
図２９は、本発明の第１０の実施の形態のアプリケーションプログラム１０４からデータベース管理システム１０５に発行される更新要求の一例を示す図である。
【０２４８】
図２９に示す更新要求は、商品ＩＤが「Ｉｔｅｍ００１」の商品が買い占められ、各倉庫の在庫を０に更新する処理に対応する。
【０２４９】
図３０は、本発明の第１０の実施の形態のインデックス３３００と商品在庫管理表３３０１との関係を説明する図である。
【０２５０】
図２９の更新要求が実行されると、商品在庫管理表３３０１において商品ＩＤがＩｔｅｍ００１のレコードが更新され、各レコードの在庫数が０になる。具体的には、レコードポインタの値が０ｘ００００００００、０ｘ００００３０００及び０ｘ０００１００００のレコードの在庫数が０となる。
【０２５１】
以下、本発明の第１０の実施の形態のデータ更新処理について説明する。
【０２５２】
プロセッサ１０２は、アプリケーションプログラム１０４からデータベース管理システム１０５に更新要求３２００が発行されると、問合せ実行制御部１１０の問合せ受付部１１１が更新要求３２００を受け付ける。
【０２５３】
プロセッサ１０２は、問合せ実行プラン生成部１１２によって、受け付けた更新要求３２００を処理する問合せ実行プランを作成する。さらに、問合せ実行部１１３によって動的にタスクを生成し、作成された問合せ実行プランに従って処理を実行する。
【０２５４】
更新要求３２００では、まず、商品ＩＤがＩｔｅｍ００１のレコードを検索する。検索対象のレコードがＤＢバッファ１１４に保存されている場合には、ＤＢバッファ１１４から該レコードを取得する。当該レコードがＤＢバッファ１１４に保存されていない場合には、格納用外部記憶装置１５０からレコードを取得する。格納用外部記憶装置１５０からレコードを検索する手順は、第１の実施の形態で説明した手順と同様である。
【０２５５】
プロセッサ１０２は、該当するレコードを取得すると、その在庫数を０に更新し、結果をＤＢバッファ１１４に保存する。商品ＩＤがＩｔｅｍ００１のレコードすべてについて、在庫数の更新処理を実行する。第１の実施の形態で説明した手順と同様の手順によって、格納用外部記憶装置１５０からレコードを検索するため、部分インデックス順に部分インデックスに含まれるレコードが取得され、その結果、取得されたレコード集合は、取得された順に記憶装置１５５にて局所性を有する。
【０２５６】
問合せ実行制御部１１０は、アプリケーションプログラム１０４から指示された時点、もしくは、ＤＢバッファ１１４に保存された更新後のレコード数がデータベース設計者によって事前に設定された値を超えた場合などを契機として、ＤＢバッファ１１４に保存された更新済みのレコード集合を格納用外部記憶装置１５０に上書きする。
【０２５７】
本発明の第１０の実施の形態によれば、取得されたレコード集合が取得された順に記憶装置１５５にて局所性を有するため、データの更新処理（書込み処理）についても記憶装置１５５の局所的な位置にまとめて実行することができる。その結果、検索処理と同様に、データの更新処理に要する時間を短縮することができる。
【符号の説明】
【０２５８】
１００    データベースサーバ
１０１    メモリ
１０２    プロセッサ
１０３    インターフェース
１０４    アプリケーションプログラム
１０５    データベース管理システム
１０６    オペレーティングシステム
１１０    問合せ実行制御部
１１１    問合せ受付部
１１２    問合せ実行プラン生成部
１１３    問合せ実行部
１１４    ＤＢバッファ
１１５    実行タスク管理部
１１６    部分インデックス検索制御部
１２０    部分インデックス作成部
１２１    インデックスデータ取得部
１２２    インデックス情報ファイル保存領域
１２３    インデックス作成部
１２４    インデックス作成用作業領域
１３０    部分インデックス作成管理部
１３１    外部記憶装置構成情報取得部
１３２    局所性判定基準指定受付部
１５０    格納用外部記憶装置
１５１    インターフェース
１５２    制御装置
１５３    インデックス
１５４    表
１５５    記憶装置
１６０    作業用外部記憶装置
１６１    インターフェース
１６２    制御装置
１６３    記憶装置
１７０    ネットワーク
【図２Ａ】
2010266996.tif 000003
【図２Ｂ】
2010266996.tif 000004
【図３】
2010266996.tif 000005
【図４】
2010266996.tif 000006
【図５】
2010266996.tif 000007
【図６】
2010266996.tif 000008
【図７】
2010266996.tif 000009
【図９Ａ】
2010266996.tif 000010
【図９Ｂ】
2010266996.tif 000011
【図１０】
2010266996.tif 000012
【図１１】
2010266996.tif 000013
【図１２】
2010266996.tif 000014
【図１４】
2010266996.tif 000015
【図１５】
2010266996.tif 000016
【図１６】
2010266996.tif 000017
【図１７】
2010266996.tif 000018
【図１９】
2010266996.tif 000019
【図２０】
2010266996.tif 000020
【図２２】
2010266996.tif 000021
【図２３】
2010266996.tif 000022
【図２４】
2010266996.tif 000023
【図２６Ａ】
2010266996.tif 000024
【図２６Ｂ】
2010266996.tif 000025
【図２６Ｃ】
2010266996.tif 000026
【図２７】
2010266996.tif 000027
【図２９】
2010266996.tif 000028
【図３０】
2010266996.tif 000029
【図１】
2010266996.tif 000030
【図８】
2010266996.tif 000031
【図１３】
2010266996.tif 000032
【図１８】
2010266996.tif 000033
【図２１】
2010266996.tif 000034
【図２５】
2010266996.tif 000035
【図２８】
2010266996.tif 000036