説明

分散データベース管理システム、分散データベース管理方法

【課題】分散データベースシステムにおけるデータ検索処理を迅速化する。
【解決手段】表データの分配先を示すスキーマ情報をバックエンドサーバ22,23,24それぞれに対して転送し、各バックエンドサーバ22,23,24に格納された結合キー列に含まれていない項目データがある場合に、この項目データを複製データとして対応するバックエンドサーバに対して補完的に格納するフロントサーバ21を有し、各バックエンドサーバ22,23,24は、検索要求が送り込まれた場合に、バックエンドサーバ内に分散格納されたカラムデータ相互の結合を行うことにより結合キー列から前記検索内容で必要とされる検索用列データを抽出し、この検索列データに対応する結合用データが分配された他のサーバに検索列データを送信して結合を行うことにより中間検索結果を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、異なるデータベースに記憶されたデータの管理を行う分散データベース管理システムに関する。
【背景技術】
【0002】
データベースで扱われるデータを全てメモリ上に展開した上で、データ検索などの計算処理を行うメモリデータベース管理システムが利用されている。
このメモリデータベース管理システムでは、大量データを一括で処理するバッチ用途や、大量のデータからデータマートを作成するようなシステムにおいては、集計や結合処理を高速化することにより、システム全体として高速な処理を実現することが可能となる。
【0003】
一方、ディスクベースのデータベースシステムでは、例えば、数千万件に渡るような大量のデータ処理を行う場合、夜間などのシステム停止時間に処理を行うことにより、これを可能としている。
しかしながら、大量のデータ処理内容として、複雑な結合処理や集計処理が含まれる場合には、システム停止時間内に処理が終わらない場合などが生じ得る。
このため、ディスクベースのデータベース管理システムに、上述のメモリデータメース管理システムを組み込むことによって、安定的なシステムを構築すると共に、処理時間の短縮を図る手法が利用されるようになってきている。
【0004】
メモリデータベース管理システムでは、計算処理対象のデータを半導体記憶装置であるメモリ内に読み込んで計算処理を行うため、システム内で扱うデータや演算途中の一次データのデータ量が、システム内に設けられたメモリ容量を超えてしまう場合、一般的にはディスク上の仮想メモリ領域を使用することとなる。
しかしながら、ディスクにおけるI/Oのデータ転送速度は、メモリにおけるデータ転送速度と比べて格段に遅いため、データ量がメモリ容量を超えてしまった場合には、データベースの処理性能(速度)が著しく劣化してしまうため、搭載メモリ量を超えてしまうような大容量のデータを処理する場合には、ディスクベースのデータベースシステムに対してメモリデータベース管理システムを組み込むことができないという不都合がある。
【0005】
例えば、サーバに数百ギガバイト級のメモリが搭載されたシステムで1件あたり数百バイトのデータが数十〜数百億件あるテーブルデータを処理する場合には、1つのサーバのメモリ上に全処理データを展開することはできない。
【0006】
また、Webのアクセスログデータやレシート単位・商品単位での販売実績データを扱いたい場合にも、上記データ量(データ件数)を超えてしまうことが想定され、この膨大な処理データをディスクベースのデータベースや仮想メモリ領域を用いて集計処理する場合には、処理時間が膨大となってしまうため、システム要件に合わなくなってしまうといった不都合が生じ得る。
【0007】
更には、通常のハードディスクなどのストレージを用いるディスクベースの分散データベース管理システムに対して複数のメモリデータベースサーバを使用して分散処理を行うメモリデータベースサーバ管理システムをそのまま代替適用することができない場合が多い。
例えば、通常の分散データベース管理システムでは、表データを行単位で分割する水平分割が用いられており、複数のサーバにまたがるクエリ処理、特にセミジョイン法などの結合処理を行うためには、各データベースサーバ間でデータの転送のために通信を行いながら処理を行う必要がある。
【0008】
しかしながら、メモリデータベースの場合は、この大量の通信による処理がメモリ上での演算処理に比較して長時間かかってしまうため、メモリデータベース特有の高速性が大きく損なわれるため、高速処理性能が求められるシステムには適さないという不都合がある。
【0009】
これに対する関連技術として、フロントメモリデータベースサーバの1台にインデックス形式の表として実データを集約し、それ以外の実データを複数の分散したサーバする方式が開示されている(特許文献1)。この場合、フロントメモリデータベースサーバ上で集計や結合処理が行われるため、通常の水平分散では必要となるサーバ間の通信量を削減することが可能となる。
【0010】
他の関連技術として、データ更新のタイミングが異なる複数のデータベースから同じ意味合いを有する項目列を含むテーブルを予めマージして、一つのデータベースとして保有し、最新の更新データを当該一つのデータベースに集約することにより、不必要なデータやデータベースを検索対象から除外し、これによりデータベースの運用効率、高速化を実現するシステムが開示されている(特許文献2)。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2010−085568号公報
【特許文献2】特開2006−268783号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、上記特許文献1に記載の関連技術では、フロントメモリデータベースサーバにインデックス形式のみを保有させる必要がある。この場合、通常の表データと比較してデータ量が圧縮されているとはいえ、1台のフロントメモリデータベースサーバに全ての表データを保持するため、数十台分のメモリを必要とするような大規模のデータ量では、フロントメモリサーバのメモリの上限を超えてしまうという不都合が生じ得る。
【0013】
また、上記特許文献2に記載の関連技術では、新たに発生した行単位のデータや列データの集合を優先的に更新し、複数のデータベースを統合することで、ユーザからの検索要求時に一つの表単位を検索対象として扱うことができる。
しかしながら、異なるデータベース内に格納された表データを対象として結合処理を行う場合に、データベース間で転送されるデータや、レプリケーションされるデータ量が膨大となってしまうため、一般的には一定サイズ以下の比較的小さいテーブルに限定されてしまうという不都合があり、さらには、通信トラフィックが膨大となり結合処理の迅速化が抑制されるといった不都合が生じ得る。
【0014】
[発明の目的]
本発明は、上記関連技術の有する不都合を改善し、異なるサーバ上にあるデータを対象とした参照、集計、検索処理をより迅速に行う分散データベース管理システム、分散データベース管理方法を提供することを、その目的とする。
【課題を解決するための手段】
【0015】
上記目的を達成するため、本発明に係る分散データベース管理システムは、予め設定された表データを異なる複数のデータベースサーバに列データとして分配すると共に、外部端末からの検索要求に対して当該検索要求に基づく検索結果を前記各データベースサーバから取得する要求データ処理装置を備えた分散データベース管理システムであって、前記要求データ処理装置は、前記列データの分配先を示すスキーマ情報を前記各データベースサーバに対して転送するスキーマ情報複製転送部と、前記各データベースサーバに格納された結合キー列に格納されていない項目データがある場合に、前記項目データを複製データとして前記バックエンドサーバに対して補完的に格納する結合キーデータ補完格納部とを備え、前記各データベースサーバは、要求データ処理装置から検索要求が送り込まれた場合に、前記結合キー列に基づき自己データベースサーバ内に分配された列データの結合を行うことにより前記結合キー列から前記検索要求で必要とされる検索用列データを抽出するデータ結合抽出部と、前記抽出された検索列データに対応する結合用データが分配された他のサーバを前記スキーマ情報に基づき特定する結合用サーバ特定部と、前記特定したデータベースサーバに対して前記検索列データを送信し前記結合用データと結合することにより前記検索結果を生成する検索結果結合生成部とを備えたことを特徴とする構成を有する。
【0016】
また、本発明に係る分散データベース管理方法は、予め設定された表データを異なる複数のデータベースサーバに列データとして分配する要求データ処理装置が、外部端末からの検索要求に応じて当該検索要求に基づく検索結果を前記各データベースサーバから取得する分散データベース管理方法であって、前記要求データ処理装置が前記列データの分配先を示すスキーマ情報を前記各データベースサーバに対して転送し、前記各データベースサーバに格納された結合キー列に格納されていない項目データがある場合に、この項目データを複製データとして前記バックエンドサーバに対して補完的に格納し、前記各データベースサーバは、前記要求データ処理装置から検索要求が送り込まれた場合に、前記結合キー列に基づき自己データベースサーバ内に分配されたデータとの結合を行うことにより、前記結合キー列から前記検索要求で必要とされる検索用列データを抽出し、前記抽出された検索列データに対応する結合用データが分配された他のサーバを前記スキーマ情報に基づき特定し、当該特定したデータベースサーバに対して前記検索列データを送信し前記結合用データと結合することにより前記検索結果を生成することを特徴としている。
【発明の効果】
【0017】
本発明は、上述したように、各データベースサーバに分散格納された結合キー列に格納されていない項目データがある場合に、この項目データを複製データとして補完的に格納する要求データ処理装置と、結合キー列に基づき自己データベースサーバ内に分配された列データ間の結合を行うことにより、結合キー列から検索要求で必要とされる検索用列データを抽出するデータベースサーバとを備えたことにより、異なるデータベースサーバ上にあるデータを対象とした参照、集計、検索処理をより迅速に行う分散データベース管理システム、分散データベース管理方法を提供することができる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態に係る分散データベース管理システムの一実施形態を示す概略ブロック図である。
【図2】図2(a)は、分散データベース管理システムにおけるA取扱商品テーブルの一例を示す説明図である。図2(b)は、分散データベース管理システムにおける売上げテーブルの一例を示す説明図である。図2(c)は、分散データベース管理システムにおける修理売上サマリテーブルの一例を示す説明図である。
【図3】図1で示した分散データベース管理システムにおけるカラムデータの配置状況の一例を示す説明図である。
【図4】図1で示した分散データベース管理システムにおけるカラムデータの配置状況の一例を示す説明図である。
【図5】図1で示した分散データベース管理システムにおけるスキーマ情報を転送する動作処理ステップを示すフローチャートである。
【図6】図1で示した分散データベース管理システムにおけるバックエンドサーバに対して表データの配置を行う動作処理ステップを示すフローチャートである。
【図7】図1で示した分散データベース管理システムにおけるバックエンドサーバ間における結合処理の動作処理ステップを示すフローチャートである。
【図8】図1で示した分散データベース管理システムにおけるバックエンドサーバにおける検索処理の動作処理ステップを示すフローチャートである。
【発明を実施するための形態】
【0019】
[実施形態]
本発明の実施形態である分散データベース管理システム100は、ユーザからの入力に基づき生成した要求やコマンドを送出するデータベースクライアント(外部端末)1と、データベースクライアント1からの検索要求に応じてデータベースの検索処理を行うと共に検索結果を生成する分散メモリデータベース管理システム2を備えている。
【0020】
分散メモリデータベース管理システム2は、予め登録された表データを構成するデータをカラム単位で実データとして記憶するバックエンドメモリデータベースサーバ(データベースサーバに対応)22,23,および24と、上記表データを列データ(カラム単位)に分割してバックエンドサーバ22,23,24それぞれに対して格納すると共に、データベースクライアント1から検索要求が送り込まれた場合に各バックエンドサーバ22,23,24それぞれから検索結果を取得し、これを統合した検索結果表データを生成するフロントメモリデータベースサーバ(要求データ処理装置)21を備えている。
【0021】
バックエンドメモリデータベースサーバ(以下、「バックエンドサーバ」という)22、23、24は、上述のように、それぞれにおける検索の結果を中間検索結果としてフロントサーバ(以下「フロントサーバ」という)21に返信する。これにより、フロントサーバ21のクエリ実行部211は、バックエンドサーバ22、23、24から送り込まれた中間検索結果をマージすることにより検索結果を生成し、この検索結果をデータベースクライアント1に対して返信する。
【0022】
尚、本実施形態における分散メモリデータベース管理システムでは、3台のバックエンドメモリデータベースサーバ22,23,24が、内部ネットワーク4を介してフロントサーバ21に対してそれぞれ並列に接続して設置された構成を示しているが、バックエンドメモリデータベースサーバは1台以上あればよい。
【0023】
データベースクライアント1およびフロントめもりデータベースサーバ21は、図1に示すように、通信回線を介して接続されており、同様にフロントサーバ21とバックエンドサーバ22、23、24の間は内部ネットワーク3によって接続されている。尚、上記通信回線を介しての通信プロトコルおよびサーバ間の通信プロトコルについては任意とする。
【0024】
フロントメモリデータベースサーバ21は、データベースクライアント1から送り込まれた検索の問い合わせ(検索要求)やメッセージの内容を解析すると共に、解析結果に基づき各バックサーバ22,23,24に対する問い合わせや操作要求(動作要求)を行うクエリ実行部211と、スキーマ情報を記憶するスキーマ情報管理部212と、送り込まれた中間結果を一時的に格納する一時保存メモリとしての一時保存メモリ領域213を備えた構成を有する。
【0025】
また、クエリ実行部211は、予め設定されたスキーマ情報に基づき、内部ネットワーク4を介して、表データをバックデータベースサーバ22,23,24それぞれに対して分配格納(パーティショニング)を行う。
【0026】
更に、クエリ実行部211は、スキーマ情報管理部212で管理されているスキーマ情報を各バックデータベースサーバ22,23,24に対して転送する(スキーマ情報転送機能)。これにより、スキーマ情報管理部222、232、242それぞれに格納されるスキーマ情報は共通となる(つまり、同一の情報がスキーマ情報として管理されている)。
【0027】
スキーマ情報管理部212は、クエリ実行部211からの問い合わせに対して、予め記憶したスキーマ情報に基づき問い合わせ先のバックエンドサーバ(22,23,24)を指示する(問い合わせ先指定機能)。
これにより、クエリ実行部211は、スキーマ情報管理部からの指示に基づき、バックエンドデータベースサーバ(バックエンドサーバ)22,23,24それぞれに対する問い合わせや、動作要求を行うことが可能となる。
【0028】
一時保存メモリ領域213は、バックエンドサーバ(22,23,24)それぞれから送り込まれた中間結果を格納する中間結果格納機能を有する。また、スキーマ情報管理部212における管理対象であるスキーマ情報も、このデータ保存メモリ領域213に記憶されているものとする。
【0029】
尚、バックエンドサーバ22,23,24はそれぞれデータベースとして機能するコンピュータであって、内部ネットワーク4を介してフロントサーバ21に対して接続し、クエリ実行部211からの要求に応じて、自己記憶メモリ領域内に設定されたデータベースの検索処理を行う。
また、バックエンドサーバ22,23,24は、同一の内部構成を有するため、ここでは、バックエンドサーバ22の内部構成について、説明する。この内部構成については、バックエンドサーバ23および24でも対応する同等の構成内容を備えているものとする。
【0030】
バックエンドサーバ22は、フロントサーバ21からの検索処理要求に応じて自己サーバ内におけるデータ検索処理を行うローカルクエリ管理部221と、ローカルクエリ実行部221からの問い合わせに応じてスキーマ情報を解析を行うスキーマ情報管理部222と、予め入力されたスキーマ情報に基づき生成された表データを保持するデータベース保存メモリ領域223を備えた構成を有する。
【0031】
クエリ実行部211とスキーマ情報管理部212とデータ保存メモリ領域213とを備えており、データベースクライアントからの問い合わせの受付をし、検索結果をデータベースクライアントに返却をするサーバである。
【0032】
クエリ実行部211は、データベースクライアントから発行された問い合わせや操作の内容を確認し、バックエンドデータベースサーバ(22,23,24)への問い合わせや操作を行う。
ただし、「表の定義」はスキーマ情報管理部212が管理しており、スキーマ情報管理部212にその情報を問い合わせることでバックエンドデータベースサーバへの問合せが可能となる。
【0033】
尚、スキーマ情報を、各バックエンドサーバ22,23,24にも転送し、フロントサーバ21のスキーマ情報管理部211とバックエンドサーバ(22,23,24)上のスキーマ情報管理部は同じ情報を管理しているものとする。
【0034】
また、クエリ実行部211は、バックエンドサーバ22,23,24から返却された中間結果を一時保存メモリ領域213に格納し、全ての演算結果がそろった段階で、これら中間結果をマージしてデータベースクライアント1へ返却する。
【0035】
スキーマ情報管理部212は、予め入力されたスキーマ情報を記憶・管理している。このスキーマ情報には、(1)表の定義情報(特に結合処理の際に使用される結合キーを示す結合キー指定情報)、(2)データ(カラムデータ)がどのバックエンドメモリデータベースサーバ(22,23,24)に含まれる(格納されている)か否かを示すカラムデータ格納先情報、(3)レンジパーティションやハッシュパーティションなどのパーティショニングにおけるルールを示すパーティショニング条件情報(「パーティショニングルール」という)が含まれる。
【0036】
データ保存メモリ領域213は、メモリ上にクエリ実行部211経由でバックエンドサーバ21、22、23から返却された中間結果を格納している。また、スキーマ情報管理部212で管理すべき各スキーマ情報もこのデータ保存メモリ領域に記憶されている。
【0037】
カラムデータ管理部221は、フロントサーバ21(クエリ実行部211)から送り込まれた問い合わせや要求に対して、カラムデータ保存メモリ領域223に予め保存されたデータの検索、格納されたデータの更新、を行う検索処理機能を備えている。
【0038】
カラムデータ保存メモリ領域223は、スキーマ情報管理部222が扱うスキーマ情報も記憶保持しているものとする。尚、カラムデータ保存メモリ領域223には、フロントサーバ21、および他のバックエンドサーバ23,24に格納されたスキーマ情報と同一のスキーマ情報が格納される。
【0039】
また、カラムデータ管理部221は、自己データベース内に格納されたカラムデータについて、結合処理を行うローカル結合処理機能と、他のバックエンドサーバ(23,24)に対して結合処理用のカラムデータを送信し、他のバックエンドサーバ内に格納されたカラムデータとの結合処理を行う通信結合処理機能を備えている。
【0040】
ここで、データベースクライアント1、フロントメモリデータベースサーバ21、バックエンドメモリデータベースサーバ22,23,24におけるスキーマ情報を転送する動作について、図5のフローチャートに基づき説明する。
【0041】
まず、データベース管理者やユーザなどがデータベースクライアント1を利用して、分散データベース構築に必要なスキーマ情報(定義)を作成すると共にこのスキーマ情報を分散データベース管理システム2に対して入力する。
また、データベースクライアント1は、実データの分散格納を分散メモリデータベース管理システム2に対して要求するコマンド送信を行う設定であってもよい(ステップS51:図5)。
【0042】
ここで、上記スキーマ情報は、利用者により入力されたコマンドと共に、格納対象のテーブル情報の属性を定義する表定義、表を構成するどの範囲のカラムデータがどのバックエンドサーバ22,23,24に格納されるかを指定するパーティショニングルールと、バックエンドサーバ間で相互に実施される、データベースの結合処理時に利用される列を示す結合キー指定情報と、参照側の表あるいは処理対象のテーブルを示すテーブル情報を含む。
【0043】
なお、データベースクライアント1は、ユーザにより設定された上述のスキーマ情報を、クエリ実行部211に対して入力する(ステップS51)。
【0044】
クエリ実行部211は、データベースクライアント1から入力されたスキーマ情報の内容を解析する(ステップS51)と共に、スキーマ情報管理部212にスキーマ情報を渡す(ステップS53)。
スキーマ情報管理部212は、このスキーマ情報を213に格納する(ステップS54)と共に、設定完了をクエリ実行部211に通知する(ステップS55)。
【0045】
次いで、クエリ実行部211は、結合キー列を示す結合キー指定情報、およびパーティショニングルールを含むスキーマ情報を複製すると共に、カラムデータの格納先である各バックエンドサーバ22,23,24それぞれに対してスキーマ情報を転送する(ステップS56へ)。
これにより、フロントサーバ21、およびバックエンドサーバ22,23,24で共通のスキーマ情報が保持されることとなる。
【0046】
ここで、スキーマ情報管理部221,231,241は、それぞれ、各バックエンドサーバ22,23,24内に設けられた半導体記憶装置のメモリ領域であって、転送されたスキーマ情報を記憶保持するものとする。
【0047】
バックエンドサーバ22,23,24のローカルクエリ実行部221、231,241は、それぞれ送り込まれたスキーマ情報をスキーマ情報管理部(222、232,242)に送信し、スキーマ情報管理部(222、232,242)は、これを保存する(ステップS58)。
これにより、バックエンドサーバ22,23,24には同一のスキーマ情報が設定された状態となる。
【0048】
次いで、ローカルクエリ実行部221、231,241は、スキーマ情報の設定が完了したことをクエリ実行部211に通知し、クエリ実行部211は、バックエンドサーバ全てからスキーマ情報の設定が完了したことが通知された場合に、データベースクライアント1にスキーマ情報の格納完了を通知する(ステップS60)。
【0049】
また、フロントサーバ21は、データベース管理者やユーザなどにより、分散データベース管理システム2に対して入力されたテーブル情報などの実データを、予め設定されたスキーマ情報の内容に基づき各バックエンドサーバ22,23,24それぞれに、処理対象の表データ(テーブル)をカラム単位に分散データ配置するパーティショニング分散配置機能を有する。
【0050】
尚、スキーマ情報には、データベースクライアント1からコマンドにより指定される表定義、格納対象である表におけるバックエンドサーバ22,23,24への分配ルールを示すパーティショニングルール、結合演算時の結合キー列を示す情報(結合キー指定情報)、対象の表データ、および、どの表が参照側の表であるかを示す情報などが含まれる。
また、上記スキーマ情報は、データベース管理者やユーザによりクエリ実行部211に対して入力された物であってもよい。
【0051】
クエリ実行部211は、一時保存メモリ領域213に記憶されたスキーマ情報の内容を解析すると共に、バックエンドサーバ22,23,24それぞれのスキーマ情報管理部222,232,242に対してスキーマ情報を展開する。
これにより、フロントサーバ21内に記憶されたスキーマ情報と同一内容のスキーマ情報が各バックエンドサーバ22,23,24のメモリ領域にも保存される。
【0052】
次に、スキーマ情報管理部222,232,242にスキーマ情報が格納された後、クエリ実行部211が実行するパーティショニング分散配置機能について、詳説する。
尚、パーティショニング分配機能における動作は以下に示す第一および第二段階に分かれる。
【0053】
[パーティショニング分散配置機能]
まず、パーティショニング分散配置機能の第一段階では、クエリ実行部211は、スキーマ情報における表定義とパーティショニングルールに基づき、バックエンドサーバへのデータ配置を行う。
【0054】
このとき、各バックエンドサーバ22,23,24に分散配置する際に、クエリ実行部211は、同一実データ列(カラム)内に含まれる実データの重複を排除し(正規化し)且つソートした状態で格納するものとする。
これにより、各バックエンドサーバ22,23,24では、重複排他的にソートした状態で実データが格納されるため、データに変更や修正があった場合にも、再計算を行う必要なく、格納されたデータの整合性が保つことができる。
【0055】
また、クエリ実行部211は、「実データ列」を格納した上で、各データ列を参照するインデックスから成るカラム単位の列データを示すインデックス列を生成し格納する(インデクス列生成機能)。
ただし、予め設定された結合の定義によって、ローカルに格納された2つ以上表の中に同一の結合キーがある場合は1つの実データ列に統合して配置する。
これにより、結合をつど行うことなく、インデックス列を参照することで、各バックエンドサーバローカルで結合処理を行うことが可能となる(第一段階終わり)。
【0056】
パーティショニング対象の表に対応する結合定義が予め設定されている場合、各バックエンドサーバ22,23,24それぞれに結合キー列のデータのうち分配によって各サーバの格納されていない(すなわち、各サーバが保有していない)データについて、他のサーバからレプリケーションを行い、結合キー列に含まれるすべてのデータを保有させる。
【0057】
これにより、結合処理時に結合キーを各サーバから集める動作工程を省くことができ、通信量を軽減することができる。
以下、パーティショニング分散配置機能について、具体的に説明する。
【0058】
ここでは、処理対象の表データとして、図2(a)〜(c)に示すように、A取扱商品テーブル(a)、売上テーブル(b)、および修理売上サマリテーブル(c)が設定されているものとする。
【0059】
ここで、A取扱商品テーブルは、図2(a)に示すように、カラムデータ列としての「商品ID」、「商品名」、「カテゴリ」、「製造会社」、「定価」を有する表データである。
また、売上げテーブルは、図2(b)に示すように、カラムデータ列としての「売上番号」、「年月日」、「商品ID」、「個数」、「売上金額」を有する表データである。
さらに、修理売上げサマリテーブルは、図2(c)に示すように、カラムデータ列としての「年度」、「期」、「商品ID」「累計個数」「累計売上」を有する表データである。
【0060】
また、スキーマ情報におけるパーティショニングルールとしては、以下に示す内容が予め定められているものとする。
【0061】
[パーティショニングルール]
A取扱商品テーブル(a)、および売上テーブル(b)については、
商品ID:10015以下はバックエンドサーバ22へ
商品ID:10015以下はバックエンドサーバ23へ
【0062】
修理売上サマリテーブル(c)については、
2007年度以前はバックエンドサーバ23へ
2008年度以降はバックエンドサーバ24へ
[パーティショニングルールおわり]
【0063】
すなわち、A取扱商品テーブル、および売上げテーブルにおいては、商品IDの値が10015以下である場合には、その行項目をカラム単位でバックエンドサーバ22に配置する。また、商品IDの値が10016以上である場合には、その行項目をカラム単位でバックエンドサーバ23に配置(レンジパーティショニング)することを示す。
【0064】
また、修理売上サマリテーブルにおいては、年度の値が2007以前である場合には、その行項目をカラム単位でバックエンドサーバ23に配置する。また、年度の値が2008以降である場合には、その行項目をカラム単位でバックエンドサーバ24に配置(レンジパーティショニング)することを示す。
【0065】
また、スキーマ情報における結合の定義として、以下に示す内容が予め定められているものとする。
【0066】
[結合の定義]
売上げテーブル(b)は、
参照元テーブル:A取扱商品テーブル
結合キー列:商品ID
【0067】
修理売上サマリテーブル(c)
参照元テーブル:A取扱商品テーブル
結合キー列:商品ID
【0068】
すなわち、売上テーブルでは、参照元のテーブルがA取扱商品テーブルであり、結合キー列を商品IDとする。また、修理売上サマリテーブルでは、参照元のテーブルがA取扱商品テーブルであり、結合キー列を商品IDであるものとする。
【0069】
フロントサーバ21のクエリ実行部211は、スキーマ情報における、上記パーティショニングルール、および結合の定義に基づき、図2(a〜c)の各テーブルをパーティショニングすると共に、バックエンドサーバ22,23,24に実データとして配置(ロード)する。
【0070】
ここで、図3に、クエリ実行部211によりパーティショニングされたA取扱商品テーブル、売上げテーブル、および修理売上げサマリテーブルのデータがバックエンドサーバ22,23,24に実データとしてロードされた状態を図3に示す。
【0071】
ここで、A取扱商品テーブル、売上げテーブル、および修理売上げサマリテーブルそれぞれのテーブルがバックエンドサーバ22,23,24に対して配置された後、クエリ実行部211は、バックエンドサーバ23と24に対して、参照元の結合キー列であるA取扱商品テーブルの商品IDの中で、配置されていない列データを、複製(レプリケーション)してレプリカ列としてロードする。
【0072】
ここで、クエリ実行部211は、A取扱商品テーブルと修理売上げサマリテーブルが商品IDで結合されるという定義に基づき、パーティショニングルールの対象が商品IDではないことから、結合キー列である商品IDの列データを各バックエンドメモリサーバからレプリケーションして配置する。
【0073】
これにより、結合処理に必要な結合キー列(ここでは、商品ID列(カラム))に含まれる全データを各バックエンドサーバそれぞれに対して予め格納される。このため、バックエンドサーバにおける検索処理時に生じる、結合処理のためにバックエンドサーバ間で行われるデータ転送量を有効に軽減することができる。
【0074】
一方、バックエンドメモリサーバ22では、A取扱商品テーブルと売上げテーブルの結合キー列である、商品IDについて全てのデータを保有しているため、クエリ実行部211はレプリケーションを行わない。
【0075】
これは、A取扱商品テーブルと売上げテーブルのパーティショニングルールが結合キー列である商品IDを対象としており、更には、その条件(すなわち、商品IDの値が10015以下である場合はバックエンドサーバ22へ、商品IDの値が10015以下である場合はバックエンドサーバ23へ)も同一であるため、他のサーバに結合キーを参照する必要がないためである。
【0076】
以上のように、本実施形態は、カラムストアデータベースという特性から、カラム方向でデータを格納しているため、水平分割している場合と比較した場合に、カラム内のデータ重複があった場合にデータを圧縮格納することがかのうであり、これにより、データ格納時におけるメモリ使用量を有効に抑制することが可能となる。
【0077】
[変形例]
尚、上記実施形態における、スキーマ情報における「結合の定義」で、結合キー列に含まれる項目(行)に対応する、集計処理や検索条件の対象となる列データ(「対象列データ」という)を合わせて指定する設定であってもよい。
【0078】
これにより、A取扱商品テーブル、売上げテーブル、および修理売上げサマリテーブルそれぞれのテーブルがバックエンドサーバ22,23,24に対して配置された後、クエリ実行部211が、バックエンドサーバ23、24それぞれに配置されていない結合キー列のデータを、レプリカ列としてバックエンドサーバ23と24に対してロードする際に、結合キー列だけでなく、結合の定義で指定された対応列データも合わせてレプリケーションしてロードするものとする。
【0079】
これにより、図3では、レプリケーションされているのが結合キー(商品ID)だけであったのに対し、この変形例では、結合キー列に係り集計処理や検索条件の対象となるデータとして指定された対応列データである「価格」列も同時にレプリケーションされている。
これにより、結合時に必要な各バックエンドサーバから取得可能なデータを予めローカルサーバに保有しているため、バックエンドサーバ間での通信データ量をより軽減することが可能となり、検索処理をより迅速化することができる。
【0080】
[実施形態の動作説明]
次に、上記の実施形態の全体的な動作について説明する。
【0081】
フロントサーバ(要求データ処理装置)21が表データの分配先を示すスキーマ情報をバックエンドサーバ(データベースサーバ)22,23,24それぞれに対して転送し(スキーマ情報複製転送工程)、各バックエンドサーバ22,23,24に格納された結合キー列に格納されていない項目データがある場合に当該項目データを複製データとして前記バックエンドサーバに対して補完的に格納する(結合キーデータ補完格納工程)。
次いで、フロントサーバ(要求データ処理装置)21から検索要求が送り込まれた場合に、各バックエンドサーバ22,23,24は、自己バックエンドサーバ内に分散格納されたカラムデータ相互の結合を行うことにより、前記結合キー列から前記検索内容で必要とされる検索用列データを抽出し(検索用列データ抽出工程)、前記抽出された検索列データに対応する結合用データが分配された他のサーバを特定し、検索列データを送信し前記結合用データと結合することにより中間検索結果を生成する(検索結果結合取得工程)。
【0082】
ここで、上記スキーマ情報複製転送工程、結合キーデータ補完格納工程、検索用列データ抽出工程、および検索結果結合取得工程については、その実行内容をプログラム化し、分散メモリデータベース管理システム2の備えたコンピュータに実行させる構成としてもよい。
【0083】
次に、本実施形態の動作について詳説する。
ここでは、まず、クエリ実行部211によるバックエンドサーバ22,23,24に対してカラムデータの分配(ロード)を行う動作について、図6のフローチャートに基づき説明する。
【0084】
ここでは、データベースクライアント1からバックエンドサーバ22,23,24に対するデータの分配(ロード)を要求するメッセージが入力されることにより、フロントサーバ21におけるカラムデータの分配機能が実行されるものとする(ステップS71:データロード開始)。
【0085】
[第一段階]
ここで、フロントサーバ21のクエリ実行部211が、入力された表データをスキーマ情報に基づき解析する(ステップS72)。
ここでは、スキーマ情報管理部212が、予め管理しているスキーマ情報の表定義、およびパーティショニングルールを確認する(ステップS73)。
【0086】
ここで、パーティショニングルールに基づき分割されたカラム情報をパーティショニングルールで指定された各バックエンドサーバ22,23,24に対して転送配置する(ステップS74:レンジパーティショニング)。
尚、上記表データをどのように分割するか、また、分割されたカラム情報をどのバックエンドサーバに対して分配するかは、スキーマ情報のパーティショニングルールに予め定義されているものとする。
【0087】
次いで、各バックエンドサーバ22,23,24それぞれに設置されたローカルクエリ管理部221,231,241それぞれが分散配置されたカラムデータを取得すると共に、各バックエンドサーバ内におけるデータベース保存メモリ領域(「保存メモリ」という)223,233,243にそれぞれ格納する(ステップS75)。
【0088】
ここで、各ローカルクエリ管理部221,231,241は、送り込まれたカラムデータを実データとして、項目どうしの重複を排除し、且つ昇順ソートした形式(実データ列)で、保存メモリ内に保存するものとする。
【0089】
また、ローカルクエリ管理部221,231,241は、各実データ列の各項目(値)に対応した
インデックスから成るインデクス列(インデックス形式)を生成し、各バックエンドサーバ内における上記保存メモリ内に格納する。
【0090】
尚、各バックエンドサーバに格納されたスキーマ情報に含まれる結合の定義に基づき、結合対象となる異なる2つ以上の表の中に共通の結合キー列が存在する場合は、1つの実データ列に統合して、各保存メモリ内に配置されるものとする。
これにより、各バックエンドサーバ内でインデックス列を参照することにより、結合処理を行うことが可能となる。
【0091】
次いで、フロントサーバ21のクエリ実行部211が、カラムデータの配置が完了したか否かの判定を行う(ステップS76:送信完了を確認)。ここで、上記表データの含まれるカラムデータのうち配置されていないカラムデータがある場合には、パーティショニングルールに基づき分割されたカラム情報をパーティショニングルールで指定された各バックエンドデータベース22,23,24に対して転送配置する(ステップS74へ)。
【0092】
一方、上記表データの含まれるカラムデータのうち配置されていないカラムデータがない場合には(データ残なし)、以下に示す第二段階に移行する(第一段階終了)。
【0093】
次に、フロントサーバ21の211がカラムデータを分配ロードする動作の第二段階について、図6のフローチャートに基づき詳説する。
【0094】
[第二段階]
ここで、バックエンドサーバ22,23,24に対する配置対象である表データのスキーマ情報に予め結合定義が設定されている場合に、クエリ実行部211は、結合キー列に含まれるデータのうち、各バックエンドサーバ22,23,24に配置されていないデータがあるか否かを判定する。
【0095】
保有されていない結合キー列のデータがある(つまり、データ欠けがある)と判定された場合に、クエリ実行部211は、結合キー列の配置データ欠けがあるバックエンドサーバ22,23,または24に対して、保有されていないデータの複製(レプリケーション)を生成し、転送する(ステップS78:レプリケーションを展開通知)。
これにより、各バックエンドサーバ22,23,24では、結合キー列の全ての行のデータが保有される。
【0096】
次いで、バックエンドサーバ22のローカルクエリ実行部221は、他のバックエンドサーバ23,24に配置された表から参照される結合キー列があるか否かをスキーマ情報に基づき判断し、他のバックエンドサーバ23,24に配置された表から参照される結合キー列がある場合に、対象となる列データを転送する(ステップS79)。
【0097】
次に、クエリ実行部211は、バックエンドサーバ22,23,24における結合処理に必要な結合キー列(商品ID)に含まれる全データが各バックエンドサーバ22,23,24それぞれに対して格納されたか否かを確認する(ステップS80、81)。
結合処理に必要な結合キー列(商品ID)に含まれる全データが各バックエンドサーバ22,23,24それぞれに対して格納されたことが確認された場合に、クエリ実行部211は、バックエンドサーバ22,23,24に対するパーティショニングされたデータの配置(ロード)の終了をデータベースクライアント1に通知する(ステップS82)
【0098】
データベースクライアント1は、ロード終了通知を取得し(ステップS83)、分散メモリデータベース管理システム2は、この時点で検索処理要求の待機状態に設定される。
【0099】
[バックエンドサーバ相互間における結合処理]
次に、異なるバックエンドサーバ間でカラムデータを通信することにより結合処理を行う動作について、図7のフローチャートに基づき説明する。
ここでは、バックエンドサーバAをバックエンドサーバ23、結合キーの参照元データを保有するバックエンドサーバBがバックエンドサーバ24であるものとして、説明する(図7)。
【0100】
まず、バックエンドサーバ23のローカルクエリ実行部231が、スキーマ情報を解析する(ステップS91)。
スキーマ情報管理部232が、結合キー列(ここでは、商品ID列であるものとする)に含まれる全てのデータを、バックエンドサーバ23が保有していることを確認する(ステップS92)。
次いで、バックエンドサーバ23は、結合キー列のみを利用して結合処理を行う(ステップS93:結合キーのみで結合処理を実施)。
【0101】
スキーマ情報におけるパーティショニングルールを確認し、参照元のデータ(表)が配置されたサーバ(ここでは、バックエンドサーバ24)を特定すると共に、バックエンドサーバ24に結合列データ(列データ)と結合処理を要求するコマンド(結合コマンド)を送信する(ステップS94)。
【0102】
次いで、バックエンドサーバ24のローカルクエリ実行部241が送り込まれた列データと結合コマンドに基づき結合処理を行い(ステップS95)、結合処理結果である結合データをバックエンドサーバ23に対して返す(ステップS96:結合データを返却)
【0103】
次いで、バックエンドサーバ23は、結合キー列に含まれる全てのデータについて結合データが揃ったか否かを確認し、重複なく結合データが揃ったことが確認された場合に処理を完了する(ステップS97)。
【0104】
一般的に、分散データベースシステムでは、結合のために必要であるデータをサーバ間で送信し合うセミジョイン法が利用されている。
しかしながら、通常のセミジョイン法では、結合に使う結合キー列を、例えば、サーバAから取り出し、サーバBに送信し、サーバBで結合を行い、その結果をサーバAに送り返し、サーバAで結合を完成させる。
【0105】
これに対して、本実施形態では、上記ステップS94の時点で、結合キー列に含まれるデータのうち結合に必要なデータを特定し、この特定されたデータのみを上記サーバに対して送信して結合処理を行うことが可能となる。
また、対象の結合列が(スキーマ情報管理部で管理されている)パーティションルールに該当する場合は更なる結合処理に利用されるデータ(結合用データ)をさらに絞込む(限定する)ことができ、これにより、さらなる通信データ量の軽減が可能となる。
【0106】
[検索処理]
次に、データベースクライアント1からデータ検索の要求(検索問い合わせ)があった場合の分散メモリデータベース管理システム2の動作(検索処理動作)について、具体的に説明する。
【0107】
ここで、検索対象であるカラムデータは、各バックエンドサーバ22,23,24内に図3に示すようにパーティショニングされているものとする。
このとき、以下に示すSQL文がデータベースクライアント1からクエリ実行部211に入力され、このSQL文に基づき分散メモリデータベース管理システム2における検索動作が行われる。
【0108】
[SQL文]
SELECT 商品ID,年度,期,累計個数*定価
FROM A取扱商品,修理売上げサマリ
WHERE A取扱商品.商品ID=修理売上げサマリ.商品ID
AND累計個数*定価>300000
【0109】
まず、クエリ実行部211が、スキーマ情報管理部212に対して、バックエンドサーバ22,23,24の内のどのバックエンドサーバに、上記SQL文で指定されたカラムデータが配置されているかを、問い合わせる。
ここで、スキーマ情報管理部212は、スキーマ情報に基づき、「修理売上げサマリ」と「A取扱商品」がバックエンドサーバ23と24に格納されていることを特定し、これをクエリ実行部211に通知する。
【0110】
クエリ実行部211は、スキーマ情報管理部212からの通知に基づき、バックエンドサーバ23,24それぞれのローカルクエリ実行部231、241に対して、上記SQLに基づく検索用のコマンドを発行する。
【0111】
以下、各バックエンドサーバ23、24は、それぞれクエリ実行部211から送り込まれた検索用のコマンドに応じての同様の検索処理を実施する。
ここではバックエンドサーバ24における動作内容について、図8のフローチャートに基づき説明する。尚、ローカルクエリ実行部241は、スキーマ情報管理部242を介してデータベース保存メモリ領域243に格納されたデータを参照可能であるものとする(図3)。
尚、ここでも、上述と同様に、バックエンドサーバAをバックエンドサーバ23、結合キーの参照元データを保有するバックエンドサーバBがバックエンドサーバ24であるものとして、説明する(図8)。
【0112】
ローカルクエリ実行部241は、スキーマ情報に含まれる結合条件に基づき結合処理を行う。
ここでは、ローカルクエリ実行部241は、修理売上げサマリテーブルのインデックス列における商品ID列とインデックス列であるA取扱商品テーブル(レプリカ列)のインデックス列における商品ID列とが等しいという結合条件に基づき、結合処理を行う(ステップS103)。
これにより、ローカルクエリ実行部241は、共通の値の集合{4、8}を抽出する。
【0113】
次いで、ローカルクエリ実行部241は、インデックス列における結合処理で抽出した集合{4、8}に基づき、実データ列である商品ID列の、対応する4番目と8番目の値の集合である{10013、10030}を得る。
【0114】
これにより、本実施形態では、通常のセミジョイン法では結合処理時に転送されてしまう「修理売上げサマリテーブル」のインデックス番号=5(商品ID=10015)を転送することなく、各バックエンドサーバ内のデータを優先して利用することにより結合処理を行うことができる。
【0115】
ここで、ローカルクエリ実行部241は、結合に必要なデータとしての商品ID{10013、10030}に対応する「定価」データがバックエンドサーバ24ローカル内には分配(格納)されていないため(ステップS105:結合に必要なデータが足りない場合)、当該対応する「定価」データを他のバックエンドサーバから取得する。このとき、ローカルクエリ実行部241は、スキーマ情報管理部242を介してA取扱商品テーブルのパーティショニングルールを参照する。
【0116】
ローカルクエリ実行部241は、商品IDのパーティショニングルールに基づき、「商品ID:10013」に対応する定価を示すデータはバックエンドメモリサーバ22に格納されており、また、「商品ID:10030」に対応する定価を示すデータはバックエンドサーバ23に格納されていることを特定する。
ここで、ローカルクエリ実行部241は、対応する列データと、この列データに対応する「定価」データを要求する処理コマンドを、バックエンドメモリサーバ22、23それぞれに対して転送する(ステップS106)。
【0117】
次いで、バックエンドサーバ22,23それぞれでは、ローカルクエリ実行部221,231が、送り込まれた処理コマンドに基づき、商品ID:10013または、商品ID:10030に対応する定価の値を検索し、商品ID:10013、または10030と対応する、検索取得した定価の値との結合処理を行い(ステップS107)、これにより生成した結合データをそれぞれバックエンドサーバ24に返す(ステップS108)。
【0118】
次いで、バックエンドサーバ24のローカルクエリ実行部241は、バックエンドサーバ22および23それぞれから送り込まれた結合データを取得し、フロントサーバ21から検索要求に対するデータである結合データがそろったことを確認し、バックエンドサーバ22および23それぞれから送り込まれた結合データを結合した、商品IDおよび定価からなる中間検索結果をクエリ実行部211に返す。
【0119】
クエリ実行部241は、各バックエンドサーバ23,24から戻ってきた中間処理結果を一時メモリ領域213に格納して、全ての処理結果がそろったことを確認した場合に、中間検索結果をマージし、これにより生成したテーブル情報を最終検索結果としてデータベースクライアント1に返信する(ステップS109)。
【0120】
以上のように、本実施形態では、結合処理を行うためのレプリケーションデータを結合キー列のデータに限定することにより、異なるデータベースに格納されたデータ(テーブル)の結合処理を行うために各サーバ上で利用されるメモリ量を抑制することができる。
【0121】
特にメモリデータベースではディスクの場合と比較してデータ上限が制限されるため、本実施形態におけるメモリデータベースでは、結合キー列に限定して、その全レコードを各データベースを備えたサーバ(バックエンドサーバ)が保有する構成としたことにより、メモリ上におけるデータ格納に必要なメモリ領域を軽減することが可能になる。
【0122】
次に、スキーマ情報における結合の定義で、結合キー列に含まれる項目(行)に対応する、検索要求で指定された集計や検索条件に含まれる列データ(「対応列データ」という)が指定された場合(上記変形例の場合)の分散メモリデータベース管理システム2における動作(検索処理動作)について、具体的に説明する。
【0123】
このとき、クエリ実行部211は、上述のように、各バックエンドサーバ22,23,24に対するデータのレプリケーションをする際に、結合キー列だけでなく、結合の定義で指定された対応列データを結合キー列と共にレプリケーションする。
これにより、図2(a)〜(c)のテーブルデータは、カラムデータとして各バックエンドサーバ22,23,24に、図4に示すようにパーティショニング(分配)される。
【0124】
このとき、以下に示すSQL文がデータベースクライアント1からクエリ実行部211に入力され、このSQL文に基づき分散メモリデータベース管理システム2における検索動作が行われる場合について説明する。
【0125】
[SQL文]
SELECT 商品ID,年度,期,累計個数*定価
FROM A取扱商品,修理売上げサマリ
WHERE A取扱商品.商品ID=修理売上げサマリ.商品ID
AND累計個数*定価>300000
【0126】
ここで、上述と同様に、クエリ実行部211が、スキーマ情報管理部212に対して、バックエンドサーバ22,23,24の内のどのバックエンドサーバに、上記SQL文で指定されたカラムデータが配置されているかを、問い合わせ、スキーマ情報管理部212は、スキーマ情報に基づき、「修理売上げサマリ」と「A取扱商品」がバックエンドサーバ23と24に格納されていることを特定し、これをクエリ実行部211に通知する。
【0127】
クエリ実行部211は、スキーマ情報管理部212からの通知に基づき、バックエンドサーバ23,24それぞれのローカルクエリ実行部231、241に対して、上記SQLに基づく検索用のコマンドを発行する。
【0128】
以下、各バックエンドサーバ23、24は、それぞれクエリ実行部211から送り込まれた検索用のコマンドに応じての同様の検索処理を実施するため、上述と同様に、バックエンドサーバ24における動作内容について説明する。
【0129】
ローカルクエリ実行部241は、上述と同様に(図8)、スキーマ情報に含まれる結合条件に基づき結合処理を行う。ここでは、ローカルクエリ実行部241は、修理売上げサマリテーブルのインデックス列における商品ID列とインデックス列であるA取扱商品テーブル(レプリカ列)のインデックス列における商品ID列とが等しいという結合条件に基づき、結合処理を行い、共通の値の集合{4、8}を抽出する。
【0130】
ここで、ローカルクエリ実行部241は、結合キー商品IDのインデックス列の{4、8}が抽出された後、A取扱商品テーブル(レプリカ表)を確認することで、同じ行に格納されている「価格」のインデックスも同様に判定できる。
また、実データに関しても自己であるバックエンドサーバ24に格納されているため、「価格」のデータ取得のために他のバックエンドサーバとの通信を行ってデータ取得を行うといった必要がない。
【0131】
これにより、バックエンドサーバ24は、他サーバ(バックエンドサーバ23)に対する結合号用の通信を行うことなく、検索結果を生成しクエリ実行部211に返すことができる。
【0132】
バックエンドサーバ23においても同様に、検索結果をクエリ実行部211に返すことができ、クエリ実行部211は、各バックエンドサーバから返された全ての検索結果がそろった場合にこれらをマージして最終検索結果としてデータベースクライアント1に返送することが可能となる。
【0133】
以上のように、上記変形例の場合、結合に必要な列を合わせてレプリケーションすることで、データベース間の通信量をさらに軽減することができ、このため、検索処理の高速性をさらに向上させることができる。
【0134】
上述した実施形態については、その新規な技術的内容の要点をまとめると、以下のようになる。
尚、上記の実施形態の一部又は全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【0135】
(付記1)
予め設定された表データを異なる複数のデータベースサーバに列データとして分配すると共に、外部端末からの検索要求に対して当該検索要求に基づく検索結果を前記各データベースサーバから取得する要求データ処理装置を備えた分散データベース管理システムであって、
前記要求データ処理装置は、
前記列データの分配先を示すスキーマ情報を前記各データベースサーバに対して転送するスキーマ情報複製転送部と、
前記各データベースサーバに格納された結合キー列に格納されていない項目データがある場合に、前記項目データを複製データとして前記バックエンドサーバに対して補完的に格納する結合キーデータ補完格納部とを備え、
前記各データベースサーバは、
要求データ処理装置から検索要求が送り込まれた場合に、前記結合キー列に基づき自己データベースサーバ内に分配された列データの結合を行うことにより前記結合キー列から前記検索要求で必要とされる検索用列データを抽出するデータ結合抽出部と、
前記抽出された検索列データに対応する結合用データが分配された他のサーバを前記スキーマ情報に基づき特定する結合用サーバ特定部と、
前記特定したデータベースサーバに対して前記検索列データを送信し前記結合用データと結合することにより前記検索結果を生成する検索結果結合生成部とを備えたことを特徴とする分散データベース管理システム。
【0136】
(付記2)
付記1に記載の分散データベース管理システムにおいて、
結合キーデータ補完格納部は、前記検索要求の内容に基づき特定される検索処理対象の列データで且つ前記結合キー列の項目データに対応する列データを対象列データとして特定し、当該対象列データを対応する前記バックエンドサーバに対して前記複製データとして格納する対象列格納機能を備えたことを特徴とする分散データベース管理システム。
【0137】
(付記3)
付記1に記載の分散データベース管理システムにおいて、
前記要求データ処理装置は、前記各データベースサーバに対して分配する列データに含まれる項目データを重複排他的に正規化するデータ配置管理手段を備えたことを特徴とする分散データベース管理システム。
【0138】
(付記4)
付記1に記載の分散データベース管理システムにおいて、
前記各データベースサーバは、自己データベースサーバ内に分配された列データの各項目行に対応する参照用のインデックスデータから成るインデックス列を生成するインデックス列生成手段を備え、
前記データ結合抽出部は、前記インデックス列に基づく結合を行うことにより前記検索要求で必要とされる検索用列データの抽出を行うことを特徴とする分散データベース管理システム。
【0139】
(付記5)
予め設定された表データを異なる複数のデータベースサーバに列データとして分配する要求データ処理装置が、外部端末からの検索要求に対して当該検索要求に基づく検索結果を前記各データベースサーバから取得する分散データベース管理方法であって、
前記要求データ処理装置は前記列データの分配先を示すスキーマ情報を前記各データベースサーバに対して転送し、前記各データベースサーバに格納された結合キー列に格納されていない項目データがある場合に、前記項目データを複製データとして前記バックエンドサーバに対して補完的に格納し、
前記各データベースサーバは、
前記要求データ処理装置から検索要求が送り込まれた場合に、前記結合キー列に基づき自己データベースサーバ内に分配されたデータとの結合を行うことにより、前記結合キー列から前記検索要求で必要とされる検索用列データを抽出し、前記抽出された検索列データに対応する結合用データが分配された他のサーバを前記スキーマ情報に基づき特定し、当該特定したデータベースサーバに対して前記検索列データを送信し前記結合用データと結合することにより前記検索結果を生成することを特徴とした分散データベース管理方法。
【産業上の利用可能性】
【0140】
本発明は、大量のデータベースからデータを抽出してデータマートを作成するシステムに対して有効に適用することができる。
【符号の説明】
【0141】
1 データベースクライアント
2 分散メモリデータベース管理システム
4 内部ネットワーク
21 フロントメモリデータベースサーバ(フロントサーバ)
22,23,24 バックエンドメモリデータベースサーバ(バックエンドサーバ)
211 クエリ実行部
212,222,232,242 スキーマ情報管理部
213 一時保存メモリ領域
221,231,241 ローカルクエリ実行部
223,233,243 データベース保存メモリ領域

【特許請求の範囲】
【請求項1】
予め設定された表データを異なる複数のデータベースサーバに列データとして分配すると共に、外部端末からの検索要求に対して当該検索要求に基づく検索結果を前記各データベースサーバから取得する要求データ処理装置を備えた分散データベース管理システムであって、
前記要求データ処理装置は、
前記列データの分配先を示すスキーマ情報を前記各データベースサーバに対して転送するスキーマ情報複製転送部と、
前記各データベースサーバに格納された結合キー列に格納されていない項目データがある場合に、前記項目データを複製データとして前記バックエンドサーバに対して補完的に格納する結合キーデータ補完格納部とを備え、
前記各データベースサーバは、
要求データ処理装置から検索要求が送り込まれた場合に、前記結合キー列に基づき自己データベースサーバ内に分配された列データの結合を行うことにより前記結合キー列から前記検索要求で必要とされる検索用列データを抽出するデータ結合抽出部と、
前記抽出された検索列データに対応する結合用データが分配された他のサーバを前記スキーマ情報に基づき特定する結合用サーバ特定部と、
前記特定したデータベースサーバに対して前記検索列データを送信し前記結合用データと結合することにより前記検索結果を生成する検索結果結合生成部とを備えたことを特徴とする分散データベース管理システム。
【請求項2】
請求項1に記載の分散データベース管理システムにおいて、
結合キーデータ補完格納部は、前記検索要求の内容に基づき特定される検索処理対象の列データで且つ前記結合キー列の項目データに対応する列データを対象列データとして特定し、当該対象列データを対応する前記バックエンドサーバに対して前記複製データとして格納する対象列格納機能を備えたことを特徴とする分散データベース管理システム。
【請求項3】
請求項1に記載の分散データベース管理システムにおいて、
前記要求データ処理装置は、前記各データベースサーバに対して分配する列データに含まれる項目データを重複排他的に正規化するデータ配置管理手段を備えたことを特徴とする分散データベース管理システム。
【請求項4】
請求項1に記載の分散データベース管理システムにおいて、
前記各データベースサーバは、自己データベースサーバ内に分配された列データの各項目行に対応する参照用のインデックスデータから成るインデックス列を生成するインデックス列生成手段を備え、
前記データ結合抽出部は、前記インデックス列に基づく結合を行うことにより前記検索要求で必要とされる検索用列データの抽出を行うことを特徴とする分散データベース管理システム。
【請求項5】
予め設定された表データを列データに分割して異なる複数のデータベースサーバに配置する要求データ処理装置が、外部端末からの検索要求に対して当該検索要求に基づく検索結果を前記各データベースサーバから取得する分散データベース管理方法であって、
前記要求データ処理装置は前記列データの分配先を示すスキーマ情報を前記各データベースサーバに対して転送し、前記各データベースサーバに格納された結合キー列に格納されていない項目データがある場合に、前記項目データを複製データとして前記バックエンドサーバに対して補完的に格納し、
前記各データベースサーバは、
前記要求データ処理装置から検索要求が送り込まれた場合に、前記結合キー列に基づき自己データベースサーバ内に分配されたデータとの結合を行うことにより、前記結合キー列から前記検索要求で必要とされる検索用列データを抽出し、前記抽出された検索列データに対応する結合用データが分配された他のサーバを前記スキーマ情報に基づき特定し、当該特定したデータベースサーバに対して前記検索列データを送信し前記結合用データと結合することにより前記検索結果を生成することを特徴とした分散データベース管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate