(57)【要約】   データベースのハッシュ結合処理において、サーバ装置のメモリ溢れが発生した場合の処理性能の低下を抑えることを目的として、本発明は、ストレージ装置が、結合対象とするデータの選択処理、ハッシュ値の算出処理、ハッシュ表からのデータの選択処理、選択率の算出処理、及びハッシュ表の一部をテンポラリ領域に格納する処理を実行し、データベースの性能低下を抑制する。
2015155846.tif 000002
【特許請求の範囲】
【請求項１】
ハッシュ値に基づいて表の結合処理を実行するサーバ装置と該サーバ装置とネットワークを介して接続されるストレージ装置とを備えるシステムであって、  前記サーバ装置は、  前記表の結合処理を実行し、前記表における結合対象とするデータを指定する第一の情報と、前記表におけるハッシュ値の計算対象となるデータを指定する第二の情報と、前記ハッシュ値を指定する第三の情報と、が含まれるコマンドを生成する第一の処理部と、  前記コマンドを前記ネットワークを介して前記ストレージ装置に送信する第一の入出力部と、を有し、  前記ストレージ装置は、  複数の表が格納される格納部と、  前記コマンドを前記ネットワークを介して受信する第二の入出力部と、  前記第一の情報に基づいて前記表を構成するデータのうち結合対象とするデータを選択し、前記表を構成するデータのうち前記第二の情報で指定されたデータの前記ハッシュ値を算出し、前記第三の情報で指定された前記ハッシュ値を選択する、第二の処理部と、を有し、  前記第二の入出力部は、前記第三の情報に基づいて選択された前記ハッシュ値と、該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記ネットワークを介して前記サーバ装置に送信する、ことを特徴とするシステム。
【請求項２】
請求項１に記載のシステムであって、  前記ストレージ装置は、テンポラリ領域が確保されるメモリを有し、  前記第二の処理部は、前記第三の情報に未指定の前記ハッシュ値と該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記テンポラリ領域に格納する、ことを特徴とするシステム。
【請求項３】
請求項２に記載のシステムであって、  前記コマンドは前記テンポラリ領域の利用要否に関する第四の情報を含み、  前記第二の処理部は、前記第四の情報に基づいて、前記第三の情報に未指定の前記ハッシュ値と該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記テンポラリ領域に格納するか否かを決定する、ことを特徴とするシステム。
【請求項４】
請求項３に記載のシステムであって、  前記第二の処理部は、前記表を構成するデータのうち結合対象とするデータの割合である選択率を算出し、  前記第二の入出力部は前記選択率を前記サーバ装置に送信し、  前記第一の処理部は、前記選択率に基づいて前記テンポラリ領域の利用要否を決定する、ことを特徴とするシステム。
【請求項５】
ハッシュ値に基づいて表の結合処理を実行するサーバ装置とネットワークを介して接続されるストレージ装置であって、  複数の表が格納される格納部と、  前記表における結合対象とするデータを指定する第一の情報と、前記表における前記ハッシュ値の計算対象となるデータを指定する第二の情報と、前記ハッシュ値を指定する第三の情報と、が含まれるコマンドを前記ネットワークを介して前記サーバ装置から受信する入出力部と、  前記第一の情報に基づいて前記表を構成するデータのうち結合対象とするデータを選択し、前記表を構成するデータのうち前記第二の情報で指定されたデータのハッシュ値を算出し、前記第三の情報で指定された前記ハッシュ値を選択する、処理部と、を有し、  前記入出力部は、前記第三の情報に基づいて選択された前記ハッシュ値と、該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記ネットワークを介して前記サーバ装置に送信する、ことを特徴とするストレージ装置。
【請求項６】
請求項５に記載のストレージ装置であって、  テンポラリ領域が確保されるメモリを有し、  前記処理部は、前記第三の情報に未指定の前記ハッシュ値と該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記テンポラリ領域に格納する、ことを特徴とするストレージ装置。
【請求項７】
請求項６に記載のストレージ装置であって、  前記コマンドは前記テンポラリ領域の利用要否に関する第四の情報を含み、  前記処理部は、前記第四の情報に基づいて、前記第三の情報に未指定の前記ハッシュ値と該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記テンポラリ領域に格納するか否かを決定する、ことを特徴とするストレージ装置。
【請求項８】
請求項７に記載のストレージ装置であって、  前記処理部は、前記表を構成するデータのうち結合対象とするデータの割合である選択率を算出し、  前記入出力部は前記選択率を前記サーバ装置に送信する、ことを特徴とするストレージ装置。
【請求項９】
ハッシュ値に基づいて表の結合処理を実行するサーバ装置とストレージ装置におけるデータベース管理方法であって、  前記サーバ装置は、  前記表の結合処理を実行し、  前記表における結合対象とするデータを指定する第一の情報と、前記表におけるハッシュ値の計算対象となるデータを指定する第二の情報と、前記ハッシュ値を指定する第三の情報と、が含まれるコマンドを生成し、  前記コマンドを前記ネットワークを介して前記ストレージ装置に送信し、前記ストレージ装置は、  前記コマンドを受信し、  前記第一の情報に基づいて前記ストレージ装置が記憶する前記表を構成するデータのうち結合対象とするデータを選択し、  前記表を構成するデータのうち前記第二の情報で指定されたデータの前記ハッシュ値を算出し、  前記第三の情報で指定された前記ハッシュ値を選択し、  前記第三の情報に基づいて選択された前記ハッシュ値と、該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記サーバ装置に送信する、ことを特徴とするデータベース管理方法。
【請求項１０】
請求項９に記載のデータベース管理方法であって、  前記ストレージ装置は、  前記第三の情報に未指定の前記ハッシュ値と該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表をテンポラリ領域に格納する、ことを特徴とするデータベース管理方法。
【請求項１１】
請求項１０に記載のデータベース管理方法であって、  前記コマンドは前記テンポラリ領域の利用要否に関する第四の情報を含み、  前記ストレージ装置は、前記第四の情報に基づいて、前記第三の情報に未指定の前記ハッシュ値と該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記テンポラリ領域に格納するか否かを決定する、ことを特徴とするデータベース管理方法。
【請求項１２】
請求項１１に記載のデータベース管理方法であって、  前記ストレージ装置は、  前記表を構成するデータのうち結合対象とするデータの割合である選択率を算出し、  前記選択率を前記サーバ装置に送信し、  前記サーバ装置は、前記選択率に基づいて前記テンポラリ領域の利用要否を決定する、ことを特徴とするデータベース管理方法。
【請求項１３】
ハッシュ値に基づいて表の結合処理を実行するサーバ装置であって、  前記表の結合処理を実行し、前記表における結合対象とするデータを指定する第一の情報と、前記表におけるハッシュ値の計算対象となるデータを指定する第二の情報と、前記ハッシュ値を指定する第三の情報と、が含まれるコマンドを生成する第一の処理部と、  ストレージ装置と、  該ストレージ装置から受信したデータを格納するメモリと、を有し、  前記ストレージ装置は、  複数の表が格納される格納部と、  前記コマンドに含まれる前記第一の情報に基づいて前記表を構成するデータのうち結合対象とするデータを選択し、前記表を構成するデータのうち前記第二の情報で指定されたデータの前記ハッシュ値を算出し、前記第三の情報で指定された前記ハッシュ値を選択する、第二の処理部と、  前記第三の情報に基づいて選択された前記ハッシュ値と、該ハッシュ値に対応し前記第一の情報に基づいて選択されたデータと、から構成されるハッシュ表を前記メモリに送信させる第三の処理部と、を有することを特徴とするサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、データベースの処理をアシストする機能を有するストレージ装置およびシステムに関する。
【背景技術】
【０００２】  データベースを管理するデータベース管理システム（ＤＢＭＳ：ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）はデータの蓄積や分析を効率的に実行するためのソフトウェアである。ＤＢＭＳの一種であるリレーショナルデータベース管理システム（ＲＤＢＭＳ：Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）は，データの集合（以下，リレーションまたは表と呼ぶ）を用いてデータを管理する。ＲＤＢＭＳがデータの分析を実行する際には，リレーションの結合を行う。リレーションの結合とは，複数のリレーションを結合条件に従って一つにまとめて，新たなリレーションを作成する操作である。【０００３】  リレーションの結合では，ハッシュ結合と呼ばれる方式が広く用いられている。ハッシュ結合では，最初に一方のリレーション（以下，外表と呼ぶ）のハッシュ表を作成する。次に他方のリレーション（以下，内表と呼ぶ）のハッシュ表を作成する。外表のデータのハッシュ表と内表のデータのハッシュ表を照合することによって，外表と内表の結合を行う。ハッシュ結合に関しては，例えば，特許文献１に記載されている。【０００４】  ハッシュ結合では，サーバ装置のメモリ溢れと呼ばれる状況が発生する場合がある。サーバ装置のメモリ溢れは，外表のハッシュ表がサーバ装置のメモリに収まりきらない場合に発生する。サーバ装置のメモリ溢れが発生した場合，外表のハッシュ表をバケットと呼ばれる小区間に分割し，ハッシュ表をストレージ装置に書き出す。次に，内表のハッシュ表もバケットに分割しストレージ装置に書き出す。そして，ストレージ装置から，外表のバケットと内表のバケットをサーバ装置のメモリに読み込んで結合処理を実行する。サーバ装置のメモリ溢れに関しては，例えば，特許文献２に記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−３２６２１５号公報
【特許文献２】特開平１０−２６９２４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】  ハッシュ表を用いたデータの分析処理において、サーバ装置でメモリ溢れが発生すると、表のハッシュ表をバケットと呼ばれる小区間に分割してストレージ装置に書き出し、再度、ストレージ装置からハッシュ表を読み込む必要がある。そのため、メモリ溢れが発生しない場合に比べると、データの分析処理の性能が低下する。【０００７】  そこで、サーバ装置でのメモリ溢れの発生を防ぎ、データ分析処理の性能向上を目的とする。特に，ＲＤＢＭＳにおけるハッシュ結合によって発生するサーバ装置のメモリ溢れを防ぎ、サーバ装置のＣＰＵリソースの消費量や，サーバ装置とストレージ装置間のネットワークリソースの消費量を削減することなどにより、ＲＤＢＭＳの処理性能を向上することを目的とする。
【課題を解決するための手段】
【０００８】  本発明の一つの観点から、ハッシュ値に基づいて表の結合処理を実行するサーバ装置と当該サーバ装置とネットワークを介して接続されるストレージ装置とを備えるシステムが提供される。当該システムは、サーバ装置が、表の結合処理を実行し、表における結合対象とするデータを指定する第一の情報と、表におけるハッシュ値の計算対象となるデータを指定する第二の情報と、ハッシュ値を指定する第三の情報と、が含まれるコマンドを生成する第一の処理部と、コマンドをネットワークを介してストレージ装置に送信する第一の入出力部と、を有し、ストレージ装置は、複数の表が格納される格納部と、コマンドをネットワークを介して受信する第二の入出力部と、第一の情報に基づいて表を構成するデータのうち結合対象とするデータを選択し、表を構成するデータのうち第二の情報で指定されたデータのハッシュ値を算出し、第三の情報で指定されたハッシュ値を選択する、第二の処理部と、を有し、第二の入出力部は、第三の情報に基づいて選択されたハッシュ値と、当該ハッシュ値に対応し第一の情報に基づいて選択されたデータと、から構成されるハッシュ表をネットワークを介してサーバ装置に送信する。【０００９】  より好ましくは、ストレージ装置は、テンポラリ領域が確保されるメモリを有し、第二の処理部は、第三の情報に未指定のハッシュ値と当該ハッシュ値に対応し第一の情報に基づいて選択されたデータと、から構成されるハッシュ表をテンポラリ領域に格納する。【００１０】  更に好ましくは、コマンドはテンポラリ領域の利用要否に関する第四の情報を含み、第二の処理部は、第四の情報に基づいて、第三の情報に未指定のハッシュ値と当該ハッシュ値に対応し第一の情報に基づいて選択されたデータと、から構成されるハッシュ表をテンポラリ領域に格納するか否かを決定する。【００１１】  更に好ましくは、第二の処理部は、表を構成するデータのうち結合対象とするデータの割合である選択率を算出し、第二の入出力部は選択率をサーバ装置に送信し、第一の処理部は、選択率に基づいてテンポラリ領域の利用要否を決定する。【００１２】  本発明の別の観点によれば、ハッシュ値に基づいて表の結合処理を実行するサーバ装置とネットワークを介して接続されるストレージ装置が提供される。当該ストレージ装置は、複数の表が格納される格納部と、表における結合対象とするデータを指定する第一の情報と、表におけるハッシュ値の計算対象となるデータを指定する第二の情報と、ハッシュ値を指定する第三の情報と、が含まれるコマンドをネットワークを介してサーバ装置から受信する入出力部と、第一の情報に基づいて表を構成するデータのうち結合対象とするデータを選択し、表を構成するデータのうち第二の情報で指定されたデータのハッシュ値を算出し、第三の情報で指定されたハッシュ値を選択する、処理部と、を有し、入出力部は、第三の情報に基づいて選択されたハッシュ値と、当該ハッシュ値に対応し第一の情報に基づいて選択されたデータと、から構成されるハッシュ表をネットワークを介してサーバ装置に送信する。
【発明の効果】
【００１３】  本発明によれば、メモリ溢れの発生を防ぎ、データ分析処理の性能を向上させることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明のシステム構成の例を示す図である。
【図２】本発明の別のシステム構成の例を示す図である。
【図３】ＤＢＭＳの機能の例を示す図である。
【図４】表領域管理情報を例示する図である。
【図５】表構造情報を例示する図である。
【図６】データベース統計情報を例示する図である。
【図７】データベースのユーザの端末装置から受信するＳＱＬ文の例を示す図である。
【図８】ＳＱＬ実行結果の例を示す図である。
【図９】実行プラン作成部が作成した実行プランを例示する図である。
【図１０】本発明におけるサーバ装置とストレージ装置間で行われる通信フローの一例を示す図である。
【図１１】外表読み込みコマンドの例を示す図である。
【図１２】結合処理の決定の動作フローの例を示す図である。
【図１３】結合方式の判断に用いられる処理コストモデルの例を示す図である。
【図１４】本発明におけるサーバ装置とストレージ装置間で行われる通信フローの一例を示す図である。
【図１５】外表第一バケット読み込みコマンドの例を示す図である。
【図１６】ストレージ装置がデータの選択処理を実行する際に使用するコマンドの例を示す図である。
【図１７】ストレージ装置がハッシュ表の作成処理を実行する際に使用するコマンドの例を示す図である。
【図１８】ストレージ装置がハッシュ表からのデータの選択処理，ハッシュ表の一部をテンポラリ領域に格納する処理を実行する際に使用するコマンドの例を示す図である。
【図１９】コマンドを受信した場合に，ストレージ装置によって実行される処理のフローを例示する図である。
【図２０】データベースアシスト部の詳細を例示する図である。
【図２１】図１６に示すコマンドを受信した場合のデータベースアシスト部における動作フローの例を示す図である。
【図２２】図１７に示すコマンドを受信した場合のデータベースアシスト部における動作フローの例を示す図である。
【図２３】図１８に示すコマンドを受信した場合のデータベースアシスト部における動作フローの例を示す図である。
【図２４】外表ハッシュ表の例を示す図である。
【発明を実施するための形態】
【００１５】  本発明は，データベースの処理をアシストするデータベースアシスト部をストレージ装置に設けて，データベースの処理を効率化する。本発明において，ストレージ装置とは，サーバ装置とは別筐体の装置の場合と，サーバ装置の内部に接続される記憶媒体の場合の両方を含む。本発明のデータベースアシスト部は，ＣＰＵ装置を設置する実現方法と，ハードウェア回路を設置する実現方法と，ＣＰＵ装置とハードウェア回路の両方を設置する実現方法がある。
【００１６】  本発明のデータベースアシスト部は，リレーションからデータ分析に必要なデータを抽出し，抽出したデータのハッシュ値を計算し，ハッシュ値が特定範囲に含まれるデータをサーバ装置に送信する機能を有する。
【００１７】  また，本発明のデータベースアシスト部は，リレーションからデータ分析に必要なデータを抽出し，抽出したデータのハッシュ値を計算し，ハッシュ値が指定の範囲に含まれるデータをサーバ装置に送信し，ハッシュ値が指定の範囲に含まれないデータを，ストレージ装置のテンポラリ領域に格納する機能を有する。
【００１８】  また，本発明のデータベースアシスト部は，リレーションに含まれる全てのデータのうち，データ分析に必要な割合である選択率を算出し，選択率をサーバ装置に送信する機能を有する。
【００１９】  本発明では，上記のストレージ装置の機能を用いて結合処理を実行する方法を決定する結合方式決定部を設ける。結合方式決定部は，データベースアシスト部から受信した選択率をもとに，結合処理を実行する方法を決定する。
【００２０】  結合方式決定部は，データベースに含まれる実行計画作成部とデータベース統計情報から，ハッシュ結合の対象となるリレーションに関する情報を取得する。結合方式決定部は，データベースアシスト部から受信した選択率と，データベースから受信した情報をもとに，ストレージ装置に送信するコマンドを決定する。
【００２１】  結合方式決定部は，処理コストを算出するためのコストモデルを有する。結合方式決定部は，該コストモデルを用いて処理コストが最小になる方法を選択し，ストレージ装置に送信するコマンドを決定する。
【００２２】  図１は，本発明のシステム構成を例示する図である。図１に示すように，サーバ装置１０１の内部にストレージ装置１０２が設置され，サーバ装置１０１のＣＰＵ１０３とサーバ装置のメモリ１０４とストレージ装置１０２がサーバ装置１０１の内部ネットワーク１１１によって接続される。メモリ１０４にはＤＢＭＳ１０５が格納される。ＤＢＭＳ１０５はＣＰＵ１０３によって実行されるプログラムである。ストレージ装置１０２の内部には，ストレージ装置１０２のＣＰＵ１０６と，ストレージ装置１０２のメモリ１０８と，データベースアシスト部１０７と，フラッシュメモリ１１０が設置され，内部ネットワーク１１１によって接続される。メモリ１０８には，ストレージ制御プログラム１０９が格納される。ストレージ制御プログラム１０９はＣＰＵ１０６によって実行される。図１のシステム構成においては，情報記憶媒体としてフラッシュメモリ１１０を想定しているが，他の情報記憶媒体を用いてもよい。フラッシュメモリ１１０には複数の表が格納される。
【００２３】  図２は，図１とは別のシステム構成を例示する図である。図２に示すように，本発明は，サーバ装置１０１とストレージ装置１０２が入出力インターフェース２０２、２０３を介し、外部ネットワーク２０１によって接続した構成において実施することも可能である。
【００２４】  図１，図２では，データベースアシスト部１０７をハードウェアとして実装する構成図を示した。データベースアシスト部１０７は，プログラムとして実装し，メモリ１０８に格納してＣＰＵ１０６で実行する実施形態も可能である。
【００２５】  図３はＤＢＭＳ１０５の詳細を例示する図である。ＤＢＭＳ１０５は，端末装置からＤＢＭＳ１０５を備えるサーバ装置１０１に対して送信されるクエリ（データベースに対する処理要求）や当該クエリに基づく実行結果などのデータの送受信を行うユーザ送受信部３０１，クエリの記述に用いられるＳＱＬ文の解析を行うＳＱＬ解析部３０２，ＳＱＬ文の実行方法を決定する実行プラン作成部３０３，ＳＱＬ文の実行を制御する実行制御部３０４，ストレージ装置とのデータの送受信を行うストレージ送受信部３１０，表の格納領域情報を格納する表領域管理情報３０６と，表の構造情報を格納する表構造情報３０７，データベースの統計情報を格納するデータベース統計情報３０８，ストレージ装置１０２から受信した選択率と処理コストモデルをもとに結合方式を決定する結合方式決定部３０５，データベースの性能情報を格納するデータベース性能情報３０９，ストレージ装置１０２とのデータの送受信を実行するストレージ送受信部３１０を有する。
【００２６】  図４は，表領域管理情報３０６を例示する図である。表領域管理情報３０６には，表領域名４０１，表領域の開始アドレス４０２，表領域の終了アドレス４０３が格納される。開始アドレス４０２と終了アドレス４０３は，ストレージ装置１０２とのデータ入出力において使用するアドレスであり，ロジカルブロックアドレスと呼ばれる場合もある。
【００２７】  図５は，表構造情報３０７を例示する図である。表構造情報３０７には，表領域名４０１ごとに，列名５０１とデータ形式５０２が格納される。ここに，列名５０１は，表を構成するカラムの名称であり，データ形式５０２は，列のデータ型である。
【００２８】  図６は，データベース統計情報３０８を例示する図である。データベース統計情報３０８には，表領域名ごとに，行数６０１，平均行長６０２，索引有無６０３が格納される。ここに，行数６０１は表領域名４０１に格納されている行の個数であり，平均行長６０２は表領域名４０１に格納されている行の平均バイト数，索引有無６０３は，該当の表に対して索引が作成されているか否かを示す情報である。
【００２９】  データベース性能情報３０９には，データベース１０５が利用可能なメモリの容量や，ストレージ装置１０２の読み出し性能や，ストレージ装置１０２の書き出し性能が記載される。
【００３０】  図７はユーザ送受信部３０１が，データベースのユーザの端末装置から受信するＳＱＬ文の例である。図７に例示するＳＱＬ文７０１は，ＰＡＲＴ表とＬＩＮＥＩＴＥＭ表を結合して，ＰＡＲＴ表のＰ＿ＮＡＭＥのカラムと，ＬＩＮＥＩＴＥＭ表のＬ＿ＬＩＮＥＮＵＭＢＥＲのカラムを取り出す指示である。
【００３１】  図８はユーザ送受信部３０１が送信するＳＱＬ実行結果８０１の例である。ＳＱＬ実行結果８０１には，ＳＱＬ文７０１の指示に従ってデータベースで処理を実行した結果が記載される。
【００３２】  ＳＱＬ解析部３０２は，ユーザ送受信部３０１から受信したＳＱＬ文７０１の文法を検査し，ＳＱＬ文７０１を実行プラン作成部３０３に送信する。
【００３３】  実行プラン作成部３０３は，データベース統計情報３０８を参照して，受信したＳＱＬ文７０１の実行方法を決定する。
【００３４】  図９は実行プラン作成部３０３が作成した実行プラン９０１を例示する図である。実行プラン９０１は複数のステップ９０２で構成される。それぞれのステップ９０２を順に実行することで，ＳＱＬ文７０１に指定された処理が実行される。
【００３５】  実行プラン９０１のステップ１では，ＰＡＲＴ表をＲＥＡＤしＨＡＳＨ表を作成する処理が指定されている。この際の選択条件は「Ｐ＿ＳＩＺＥ＝３」であり，結合列は「Ｐ＿ＰＡＲＴＫＥＹ」，抽出列は「Ｐ＿ＮＡＭＥ」であることが記載されている。実行プラン９０１のステップ２では，ＬＩＮＥＩＴＥＭ表をＲＥＡＤしＨＡＳＨ表を作成する処理が指定されている。この際の選択条件は「Ｌ＿ＳＵＰＰＫＥＹ」であり抽出列は「Ｌ＿ＬＩＮＥＮＵＭＢＥＲ」であることが指定されている。実行プラン９０１のステップ３には，結合方式決定部３０５が結合方式を決定する処理を行うことが記載されている。実行プラン９０１のステップ４では，ＰＡＲＴ表とＬＩＮＩＴＥＭ表を結合する処理が指定されている。この際の結合条件は「Ｐ＿ＰＡＲＴＫＥＹ＝Ｌ＿ＰＡＲＴＫＥＹ」であり，抽出列はＰ＿ＮＡＭＥとＬ＿ＬＩＮＥＮＵＭＢＥＲであることが指定されている。
【００３６】  図１０は図９のＳＴＥＰ１及びＳＴＥＰ２を実行するために，サーバ装置１０１とストレージ装置１０２の間で行われる通信を示すフロー図である。外表読み込みコマンド１００１は，外表が格納されているアドレス，選択条件，ハッシュ値を検索するカラムの指定，カラムの抽出条件を含む。コマンド１００１や他のコマンドは実行制御部３０４により生成される。図１１は，外表読み込みコマンド１００１を例示する図である。開始アドレス１１０１と終了アドレス１１０２は，表領域管理情報３０６からＰＡＲＴ表が格納されているアドレスを参照することで決定する。選択条件１１０３は外表の選択条件「Ｐ＿ＳＩＺＥ＝３」を示しており，行データの先頭から１２３バイト目から１３１バイト目を「３」と比較することを示している。ハッシュ値を計算するカラム１１０４は，行データの０バイト目から７バイト目でハッシュ値を計算することを示している。抽出条件１１０５は，行データの８バイト目から６３バイト目を抽出することを示している。
【００３７】  コマンドを受信したストレージ装置１０２は，データ選択１００２とハッシュ値計算１００３を実行して，ハッシュ値と当該ハッシュ値に対応し抽出条件１１０５で抽出されたデータとから構成される外表ハッシュ表と選択率の送信１００４を実行する。送信１００４によって受信したデータはメモリ１０４に格納される。図２４に外表ハッシュ表の例では，結合列ハッシュ値はＰ＿ＰＡＲＴＫＥＹから算出されたハッシュ値が格納され，抽出されたデータには，該当行のＰ＿ＮＡＭＥの値が格納される。選択率とは、表に含まれる全ての行（又はデータ）のうち、結合の対象となる行（又はデータ）の割合、即ち、表に含まれる全ての行のうち選択条件１１０３に合致する行の割合のことをいう。ストレージ装置１０２の動作については，図１６以降で説明する。
【００３８】  内表読み込みコマンド１２１１は，内表が格納されているアドレス，選択条件，ハッシュ値を検索するカラムの指定，カラムの抽出条件を含む。コマンドを受信したストレージ装置１０２は，データ選択１２１２とハッシュ値計算１２１３を実行して，外表ハッシュ表と選択率の送信１２１４を実行する。送信１２１４によって受信したデータはメモリ１０４に格納される。ストレージ装置１０２の動作については，図１６以降で説明する。
【００３９】  ストレージ装置１０２から内表ハッシュ表と選択率を受信したサーバ装置１０１は，結合処理の決定１２１５を実行する。
【００４０】  図１２は，結合処理の決定１２１５を実行する結合方式決定部３０５の動作を示すフローチャートである。結合方式決定部３０５は，判断１２０２において，サーバ装置のメモリ溢れが発生するか否かを判定する。これは，データベース性能情報３０９に記載されたデータベースが利用できるメモリ容量と，外表ハッシュ表と選択率の送信１００４で受信したハッシュ表のサイズを比較することで判断する。メモリ溢れが発生すると判定した場合、結合方式決定部３０５は，処理１２０３において，バケット数を算出する。バケット数とは，ハッシュ表の容量が，ＤＢＭＳ１０５が利用可能なメモリ容量の何倍かを示す数値である。バケット数Ｘは，ＤＢＭＳ１０５が利用可能なメモリ容量Ｍと外表ハッシュ表のサイズＨを用いて，Ｘ＝↑Ｈ／Ｍ↑で計算される。ここに，↑・↑は整数値への繰り上げを表す。メモリ溢れが発生しないと判定した場合はＳＴＥＰ３の処理を終了し、受信した外表ハッシュ表と内表ハッシュ表を用いて結合処理１４１３を行う。
【００４１】  結合方式の決定１２０４において，結合方式決定部３０５は，処理コストモデルを用いて結合方式を決定する。図１３は，結合方式判断部３０５が用いる処理コストモデル１３０１の例である。処理コストモデル１３０１には，結合方式１３０２と，ＲＥＡＤ量１３０３とＷｒｉｔｅ量１３０４が記載される。結合方式１３０２としては，外表と内表に関して，テンポラリ領域を使用するか使用しないかの選択を行う。Ｒｅａｄ量は，該当方式を選択した場合に実行されるストレージ装置からＲｅａｄするデータ量である。Ｗｒｉｔｅ量は，該当方式を選択した場合に実行されるストレージ装置へのＷｒｉｔｅ量である。
【００４２】  図１３において，Ａは外表のサイズ，Ｂは内表のサイズを表す。これらは，表領域管理情報３０６を参照することで決定できる。Ｘはバケット数である。αは外表ハッシュ表と選択率の送信１００４によって受信した外表の選択率である。βは内表ハッシュ表と選択率の送信１２０４によって受信した内表の選択率である。
【００４３】  結合方式決定部３０５，図１３の処理コストモデル１３０１と，データベース性能情報３０８に記載されたストレージ装置１０２の読み出し性能や，ストレージ装置１０２の書き出し性能を参照して，処理コストが最小になる方式を選択する。例えば，読み出し性能と書き出し性能の比が１対１０であれば，処理コストモデル１３０１のＲｅａｄ量に1を乗じた値と，処理コストモデル１３０１のＷｒｉｔｅ量に１０を乗じた値を合算し，結合方式の処理コストを算出する。
【００４４】  図１４は図９のステップ４を実行するために，サーバ装置１０１とストレージ装置１０２の間で行われる通信を示すフロー図である。サーバ装置１０１は，外表第一バケット読み込みコマンド１４０１をサーバ装置１０２に送信する。
【００４５】  図１５は外表第一バケット読み込みコマンド１４０１の詳細を事例する図である。外表第一バケット読み込みコマンドには，外表の開始アドレス１５０１，外表の終了アドレス１５０２，外表の選択条件１５０３，ハッシュ値を計算するカラム１５０４，抽出条件１５０５，テンポラリ領域格納有無１５０６，テンポラリ領域開始アドレス１５０７，テンポラリ領域終了アドレス１５０８，ハッシュ値下限１５０９，ハッシュ値上限１５１０を記載する。
【００４６】  結合方式決定部３０５がテンポラリ領域使用ありを選択した場合は，テンポラリ領域格納有無１５０５にありを記載し，結合方法決定部３０５がテンポラリ領域使用なしを選択した場合には，テンポラリ領域格納有無１５０５になしを記載する。
【００４７】  外表第一バケット読み込みコマンド１４０１を受信したストレージ装置１０２は，データ選択１４０２，ハッシュ値計算１４０３，ハッシュ値選択１４０４，テンポラリ領域格納有無１５０６がありの場合はテンポラリ領域にハッシュ表を格納１４０５の動作を行う。ハッシュ値選択１４０４では，外表第一バケット読み込みコマンド１４０１に記載されたハッシュ値下限１５０９とハッシュ値上限１５１０に従い，この範囲のデータのハッシュ表はサーバ装置１０１に送信する（１４０６）。ハッシュ値の範囲に含まれないデータのハッシュ表に関しては，テンポラリ領域格納有無１５０５にありが記載されている場合にはテンポラリ領域に格納し，テンポラリ領域格納有無１５０５になしが記載されている場合には，テンポラリ領域に格納しない。
【００４８】  サーバ装置１０１は，内表第一バケット読み込みコマンド１４０７をストレージ装置に送信する。内表第一バケット読み込みコマンド１４０７の詳細は，外表第一バケット読み込みコマンド１４０１と同様である。結合方式判断部３０５がテンポラリ領域使用ありを選択した場合は，テンポラリ領域格納有無１５０５にありを記載し，結合方法判断部３０５がテンポラリ領域使用なしを選択した場合には，テンポラリ領域格納有無１５０５になしを記載する。
【００４９】  サーバ装置１０１は，外表ハッシュ表と内表ハッシュ表を用いて結合処理１４１３を行う。ハッシュ表を用いた結合処理に関しては，特許文献２などに記載されている。
【００５０】  以降，サーバ装置１０１は，バケットの個数だけ外表と内表の読み込みを繰り返す。但し，1回目の表の読み込みで，テンポラリ領域格納有無１５０５にありを指定した場合には，図１５に示したコマンドの開始アドレス１５０１と終了アドレス１５０２にテンポラリ領域のアドレスを指定する。外表や内表からハッシュ表を作成する必要はなく，テンポラリ領域に格納されているハッシュ表から必要な情報を取得することができる。
【００５１】  ストレージ装置１０２は，一般に，データのＲｅａｄやＷｒｉｔｅの処理を実行する。データのＲｅａｄとはフラッシュメモリ１１０に格納されたデータをサーバ装置１０１に送信する処理である。データのＷｒｉｔｅとは，サーバ装置１０１から受信したデータをフラッシュメモリ１０１に格納する処理である。
【００５２】  データのＲｅａｄとＷｒｉｔｅの処理に加えて，本発明のストレージ装置１０２は，データの選択処理，ハッシュ表の作成処理，ハッシュ表からのデータの選択処理，および，ハッシュ表の一部をテンポラリ領域に格納する処理，を実行する機能を備える。
【００５３】  これらの機能を実行するために，サーバ装置１０１がストレージ装置１０２に送信するコマンドの例を図１６，図１７，図１８に示す。図１６は，ストレージ装置１０２がデータの選択処理を実行する際に使用するコマンドの例である。図１６に示すように，コマンドには，オペレーションコード１６０１，選択対象データの開始アドレス１６０２，選択対象データの終了アドレス１６０３，選択条件１６０４，列を抽出するための列抽出条件１６０５，および，結果を格納するためのサーバ装置１０１のメモリアドレスである結果格納メモリアドレス１６０６が含まれる。
【００５４】  図１７は，ストレージ装置１０２がハッシュ表の作成処理を実行する際に使用するコマンドの例である。図１７に示すように，コマンドには，オペレーションコード１７０１，選択対象データの開始アドレス１７０２，選択対象データの終了アドレス１７０３，選択条件１７０４，ハッシュ値を計算するカラムを指定するハッシュ値を計算するカラム１７０５，列を抽出するための列抽出条件１７０６，および，結果を格納するためのサーバ装置１０１のメモリアドレスである結果格納メモリアドレス１７０６が含まれる。
【００５５】  図１８は，ストレージ装置１０２がハッシュ表からのデータの選択処理，および，ハッシュ表の一部をテンポラリ領域に格納する処理を実行する際に使用するコマンドの例である。図１８に示すように，コマンドには，オペレーションコード１８１２，選択対象データの開始アドレス１８０１，選択対象データの終了アドレス１８０２，選択条件１８０３，ハッシュ値を計算するカラムを指定するハッシュ値を計算するカラム１８０４，列を抽出するための列抽出条件１８０５，テンポラリ領域への格納をするかしないかを指定するテンポラリ領域格納有無１８０６，テンポラリ領域開始アドレス１８０７，テンポラリ領域終了アドレス１８０８，サーバ装置１０１に送信するハッシュ値の下限を指定するハッシュ値下限１８０９，サーバ装置１０１に送信するハッシュ値の上限を指定するハッシュ値上限１８１０，および，結果を格納するためのサーバ装置１０１のメモリアドレスである結果格納メモリアドレス１８１１が含まれる。
【００５６】  サーバ装置１０１からコマンドを受信したストレージ装置１０２はコマンドの内容に従った処理を実行する。コマンドがＲｅａｄ処理の場合，ストレージ制御プログラム１０９はコマンドに指定されたデータをフラッシュメモリ１１０から読み込み，サーバ装置１０１に送信する。コマンドがＷｒｉtｅ処理の場合，ストレージ制御プログラム１０９は，サーバから受信したデータをフラッシュメモリ１１０に格納する。
【００５７】  図１９は，ストレージ装置１０２がサーバ装置１０１からコマンドを受信した場合に，ストレージ制御プログラム１０９によって実行される処理のフローを例示する図である。ストレージ制御プログラム１０９は，判断１９０２において，コマンドがＲｅａｄ処理またはＷｒｉｔｅ処理かの判断を行う。コマンドがＲｅａｄ処理またはＷｒｉｔｅ処理の場合、ストレージ制御プログラム１０９は，処理１９０３においてＲｅａｄ処理またはＷｒｉｔｅ処理を実行する。コマンドがＲｅａｄ処理またはＷｒｉｔｅ処理ではない場合、ストレージ制御プログラム１０９は，処理１９０４において，コマンドをデータベースアシスト部１０７に送信する。ストレージ制御プログラム１０９は，処理１９０５において，コマンドに指定されたデータをデータベースアシスト部１０７に送信する。ストレージ制御プログラム１０９は，処理１９０６において，データベースアシスト部１０７に対して処理開始の指示を送信する。
【００５８】  図２０はデータベースアシスト部１０７の詳細を例示する図である。データベースアシスト部１０７は，ストレージ制御プログラム１０９から受信したデータを格納する入力データ格納メモリ２００１，ストレージ制御プログラム１０９から受信したコマンドを格納するコマンド格納メモリ２００２，コマンドに記載された選択条件に従ってデータを選択する行データ選択部２００３，行データ選択部２００３が選択したデータの割合を算出する選択率算出部２００４，コマンドに記載された列抽出条件に従ってデータから列データを抽出する列データ選択部２００５，コマンドに指定された列のハッシュ値を算出するハッシュ値算出部２００６，コマンドに記載された範囲のハッシュ値を選択するハッシュ値選択部２００７，サーバ装置１０１に送信するデータを格納するサーバ送信データ格納メモリ２００８，テンポラリ領域が確保されるテンポラリ領域格納メモリ２００９，処理終了を通知する処理終了通知部２０１０を有する。
【００５９】  図２１はデータベースアシスト部１０７が，ストレージ制御プログラム１０９から図１６に示すコマンドを受信した場合の動作を示すフローチャートである。処理２１０２において，行データ選択部２００３は入力データ格納メモリ２００１からデータを読み込む。処理２１０３において，行データ選択部２００３は選択条件に従い，処理２１０２で読み込んだデータから選択したデータを列抽出部２００５に送信する。処理２１０４において，列抽出部２００５は列抽出条件に従い，列データを抽出し，サーバ送信データ格納メモリ２００８に格納する。処理２１０５において，行データ選択部２００３は読み込んだデータの個数と，選択したデータの個数を選択率算出部２００４に送信する。処理２１０６において選択率算出部２００４は選択率を算出し，サーバ送信データ格納メモリ２００８に格納する。ここに，選択率は，選択したデータの個数を読み込んだデータの個数で除算して得られた値である。処理２１０７において，処理終了通知部２０１０がストレージ制御プログラム１０９に処理終了を通知する。処理終了の通知を受けたストレージ制御プログラム１０９は，サーバ送信データ格納メモリ２００８に格納されたデータをサーバ装置１０１に送信する。
【００６０】  図２２はデータベースアシスト部１０７が，ストレージ制御プログラム１０９から図１７に示すコマンドを受信した場合の動作を示すフローチャートである。処理２２０２において，行データ選択部２００３は入力データ格納メモリ２００１からデータを読み込む。処理２２０３において，行データ選択部２００３は選択条件に従い，処理２２０２で読み込んだデータから選択したデータを列抽出部２００５に送信する。処理２２０４において，列抽出部２００５は列抽出条件に従い，列データを抽出し，ハッシュ値算出部２００６に送信する。処理２２０５において，行データ選択部２００３は読み込んだデータの個数と，選択したデータの個数を選択率算出部２００４に送信する。処理２２０６において選択率算出部２００４は選択率を算出し，サーバ送信データ格納メモリ２００８に格納する。処理２２０７において，ハッシュ値算出部２００６はハッシュ値を算出する列の指定に従いハッシュ値を算出し，算出したハッシュ値と列データをサーバ送信データ格納メモリ２００８に格納する。ここにハッシュ値の算出とは，列のデータをあらかじめ設定された値で除算し剰余を算出する演算である。処理２２０８では，処理終了通知部２０１０がストレージ制御プログラム１０９に処理終了を通知する。処理終了の通知を受けたストレージ制御プログラム１０９は，サーバ送信データ格納メモリ２００８に格納されたデータをサーバ装置１０１に送信する。
【００６１】  図２３はデータベースアシスト部１０７が，ストレージ制御プログラム１０９から図１８に示すコマンドを受信した場合の動作を示すフローチャートである。処理２３０２において，行データ選択部２００３は入力データ格納メモリ２００１からデータを読み込む。処理２３０３において，行データ選択部２００３は選択条件に従い，処理２３０２で読み込んだデータから選択したデータを列抽出部２００５に送信する。処理２３０４において，列抽出部２００５は列抽出条件に従い，列データを抽出し，ハッシュ値算出部２００６に送信する。処理２３０５において，行データ選択部２００３は読み込んだデータの個数と，選択したデータの個数を選択率算出部２００４に送信する。処理２３０６において選択率算出部２００４は選択率を算出し，サーバ送信データ格納メモリ２００８に格納する。処理２３０７において，ハッシュ値算出部２００６はハッシュ値を算出する列の指定に従いハッシュ値を算出し，算出したハッシュ値と列データをハッシュ値算出部２００７に送信する。ここにハッシュ値の算出とは，列のデータをあらかじめ設定された値で除算し剰余を算出する演算である。処理２３０８において，ハッシュ値算出部は，ハッシュ値の上限と下限に従いサーバ装置１０１に送信するデータとハッシュ値をサーバ送信データ格納メモリ２００８に格納し，サーバ装置１０１に送信しないデータとハッシュ値をテンポラリ領域格納メモリ２００９に格納する。処理２３０９では，処理終了通知部２０１０がストレージ制御プログラム１０９に処理終了を通知する。処理終了の通知を受けたストレージ制御プログラム１０９は，サーバ送信データ格納メモリ２００８に格納されたデータをサーバ装置１０１に送信する。また、ストレージ装置１０２がサーバ装置１０１から受信したコマンドのテンポラリ領域格納有無１８０６に「あり」の指定が有る場合は、処理終了の通知を受けたストレージ制御プログラム１０９は，テンポラリ領域格納メモリ２００９のテンポラリ領域開始アドレス１８０７とテンポラリ領域終了アドレス１８０８に指定されたアドレスの範囲に格納されたデータを送信する。
【符号の説明】
【００６２】１０１…サーバ装置１０２…ストレージ装置１０３…ＣＰＵ１０４…メモリ１０５…データベース１０６…ＣＰＵ１０７…データベースアシスト部１０８…メモリ１０９…ストレージ制御プログラム１１０…フラッシュメモリ１１１…内部ネットワーク
【図１】
2015155846.tif 000003
【図２】
2015155846.tif 000004
【図３】
2015155846.tif 000005
【図４】
2015155846.tif 000006
【図５】
2015155846.tif 000007
【図６】
2015155846.tif 000008
【図７】
2015155846.tif 000009
【図８】
2015155846.tif 000010
【図９】
2015155846.tif 000011
【図１０】
2015155846.tif 000012
【図１１】
2015155846.tif 000013
【図１２】
2015155846.tif 000014
【図１３】
2015155846.tif 000015
【図１４】
2015155846.tif 000016
【図１５】
2015155846.tif 000017
【図１６】
2015155846.tif 000018
【図１７】
2015155846.tif 000019
【図１８】
2015155846.tif 000020
【図１９】
2015155846.tif 000021
【図２０】
2015155846.tif 000022
【図２１】
2015155846.tif 000023
【図２２】
2015155846.tif 000024
【図２３】
2015155846.tif 000025
【図２４】
2015155846.tif 000026
【国際調査報告】
2015155846.tif 000027
2015155846.tif 000028
2015155846.tif 000029