JP4331045B2 - データベースシステム、および、プログラム - Google Patents

データベースシステム、および、プログラム Download PDF

Info

Publication number
JP4331045B2
JP4331045B2 JP2004124487A JP2004124487A JP4331045B2 JP 4331045 B2 JP4331045 B2 JP 4331045B2 JP 2004124487 A JP2004124487 A JP 2004124487A JP 2004124487 A JP2004124487 A JP 2004124487A JP 4331045 B2 JP4331045 B2 JP 4331045B2
Authority
JP
Japan
Prior art keywords
execution
instruction
node
data
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004124487A
Other languages
English (en)
Other versions
JP2005309684A (ja
Inventor
公隆 宇山
勤也 藤塚
桂太 谷越
公久 近藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Data Corp
Original Assignee
NTT Data Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Data Corp filed Critical NTT Data Corp
Priority to JP2004124487A priority Critical patent/JP4331045B2/ja
Publication of JP2005309684A publication Critical patent/JP2005309684A/ja
Application granted granted Critical
Publication of JP4331045B2 publication Critical patent/JP4331045B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Description

本発明は、データベースシステム、および、プログラムに関し、特に、並列分散処理に好適なデータベースシステム、および、プログラムに関する。
共有ディスクを用いずに、データ(例えば、テーブルデータ)が複数のコンピュータ(ノード)に分散配置される方式(Shared Nothing Type)の並列データベースシステムにおいては、異なるノードに存在するテーブル間のデータを必要とする処理(主に結合演算処理)を実行する場合の方法として、例えば、それぞれのテーブルにハッシュをかけることで各ノードに分散させる方法が知られている(例えば、非特許文献1)。
例えば、全ノードに分散配置されているテーブル(分散テーブル)と、特定のノードにのみ存在するテーブル(特定テーブル)とを結合演算する場合、上記の方法では、結合演算の結合条件に基づいて結合キーが生成され、対象となるテーブルをそれぞれの結合キーでハッシュすることで、テーブルが再配置される。すなわち、分散テーブルと特定テーブルが各ノードに再配置される。分散テーブルと特定テーブルが各ノードに再配置されるので、これらを結合する結合演算を各ノードにおいて実行することができる。
この方法では、演算対象となるテーブルのそれぞれをハッシュして再配置するので、対象となるテーブルの数が多い場合、処理量が膨大となり、処理効率が低下してしまう。また、ノード間の通信負荷も大きい。
合田和生,他2名,「並列データベースカーネルDBKernelを用いた高速情報検索処理:TRECデータによる実験」,電子情報通信学会,第12回データ工学ワークショップ DEWS2001,平成13年3月9日
本発明は上記実状に鑑みてなされたもので、処理負荷が低く、高速に処理を実行することができるデータベースシステムを提供することを目的とする。
上記目的を達成するため、本発明の第1の観点にかかるデータベースシステムは、
複数のノードで並列分散処理をおこなうデータベースシステムにおいて、
前記複数のノードは、通信ネットワークを介して相互接続された、前記並列分散処理を統括する統括ノードと、データの蓄積および演算処理をおこなう複数の実行ノードと、から構成され、
前記統括ノードは、
各実行ノードでの演算処理の実行を指示する実行命令を生成する実行命令生成手段と、
前記実行命令で指示される演算処理で用いるデータの転送を前記各実行ノードに指示する転送命令を生成する転送命令生成手段と、
前記実行命令生成手段が生成した実行命令と、前記転送命令生成手段が生成した転送命令とを実行命令の実行に必要な転送命令が該実行命令に先立つようツリー構造に階層配置した命令情報を、前記通信ネットワークを介して前記複数の実行ノードに同報配信する命令配信手段と、
を備え、
前記実行ノードは、
前記統括ノードの命令配信手段から配信される命令情報を前記通信ネットワークを介して受信する命令受信手段と、
前記命令受信手段が受信した転送命令に基づき、前記通信ネットワークを介して他の実行ノードとの間でデータの送受信を行うデータ転送手段と、
前記命令受信手段が受信した実行命令に基づき、蓄積されているデータおよび前記データ転送手段が受信したデータを用いて演算処理を実行する演算手段と、
を備え
前記命令受信手段が受信したツリー構造の命令のうち、自身を対象とした前記実行命令および前記転送命令をツリー構造の最下位層から順に実行し、転送命令の実行においては、該転送命令がデータ送信であった場合は送信を実行して上位階層の命令に進み、該転送命令がデータ受信であった場合は他ノードからの送信を待って受信完了後に上位階層の命令に進む、
とを特徴とする。
上記データベースシステムにおいて、
前記転送命令生成手段は、データを送信すべき実行ノードと、データを受信すべき実行ノードと、を指定した転送命令を生成することが望ましい。
上記データベースシステムにおいて、
前記統括ノードは、
いずれの実行ノードにいずれのデータが格納されているかを示す配置情報を取得して記憶する配置情報取得手段をさらに備えていることが望ましく、この場合、
前記転送命令生成手段は、前記配置情報取得手段が記憶する配置情報に基づいて、前記転送命令を生成することができる。
上記目的を達成するため、本発明の第2の観点にかかるプログラムは、
並列分散処理をおこなうデータベースシステムを統括するコンピュータに、
前記データベースシステムを構成する複数のコンピュータのいずれに、いずれのデータが格納されているかを示す配置情報を取得して記憶するステップと、
前記複数のコンピュータそれぞれで実行させる演算処理の内容を示す情報と、当該演算処理で用いるデータを指定する情報と、を含んだ実行命令を生成するステップと、
前記配置情報に基づいて、他のコンピュータにデータを送信すべきコンピュータを示す情報と、他のコンピュータからデータを受信すべきコンピュータを示す情報と、を含んだ転送命令を生成するステップと、
前記生成された実行命令と転送命令とを、実行命令の実行に必要な転送命令が該実行命令に先立つようツリー構造に階層配置した命令情報を、通信ネットワークを介して前記複数のコンピュータにブロードキャストするステップと、
を実行させることを特徴とする。
上記目的を達成するため、本発明の第3の観点にかかるプログラムは、
並列分散処理をおこなうデータベースシステムを構成するコンピュータに、
演算処理に用いられるデータを蓄積するステップと、
前記データベースシステムを制御するコンピュータから配信される実行命令の実行に必要な転送命令が該実行命令に先立つようツリー構造に階層配置された命令情報通信ネットワークを介して受信するステップと、
受信した転送命令に基づき、前記通信ネットワークを介して他のコンピュータとの間でデータの送受信をおこなうステップと、
受信した実行命令に基づいて、蓄積しているデータおよび他のコンピュータから受信したデータを用いて演算処理を実行するステップと、
受信した前記ツリー構造の命令のうち、自身を対象とした前記実行命令および前記転送命令をツリー構造の最下位層から順に実行し、転送命令の実行においては、該転送命令がデータ送信であった場合は送信を実行して上位階層の命令に進み、該転送命令がデータ受信であった場合は他ノードからの送信を待って受信完了後に上位階層の命令に進むステップと、
を実行させることを特徴とする。
本発明によれば、並列分散処理をおこなうデータベースシステムにおいて、実行する処理を指示する命令と、処理に必要なデータの転送を指示する命令とを含んだ一の命令情報の配信により、処理の実行を指示することができるので、各ノードおよび通信ネットワークの負荷を軽減することができ、データベースシステム全体の処理効率を向上させることができる。
(第1の実施形態)
本発明にかかる実施の形態を、以下図面を参照して説明する。
図1は、本実施の形態にかかるデータベースシステム1の構成を模式的に示す図である。本実施の形態にかかるデータベースシステム1は、複数の情報処理装置(例えば、ワークステーションやパーソナルコンピュータなど)、すなわち「ノード」から構成される。データベースシステム1を構成する複数のノードは、図1に示すように、統括ノード100と、複数の実行ノード200から構成されており、各ノードは、所定の通信ネットワーク10を介して相互接続されている。
ここで、本実施の形態にかかるデータベースシステム1は、複数のノード(実行ノード200)にデータを分散配置し、各実行ノード200で所定の演算を実行する、いわゆるクラスタ環境の並列分散データベースである。そして、統括ノード100は、このような並列分散処理を統括するものであり、複数の実行ノード200から構成されているデータベースを管理するDBMS(DataBase Management System:データベース管理システム)として機能する。
通信ネットワーク10は、例えば、IEEE802.3などの通信規格に基づいた通信媒体であり、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)などの通信プロトコルに基づく各ノード間のデータ送受信を媒介する。
統括ノード100、および、実行ノード200の構成を図面を参照して以下説明する。
統括ノード100はデータベースシステム1における並列分散処理を統括するノード(コーディネータノード)であり、図2に示すような構成を有する。図示するように、統括ノード100は、制御部110と、通信制御部120と、入力制御部130と、出力制御部140と、プログラム格納部150と、記憶部160と、から構成される。
制御部110は、例えば、CPU(Central Processing Unit:中央演算処理装置)やワークエリアとなる所定の記憶装置(RAM(Random Access Memory)など)から構成され、統括ノード100の各部を制御するとともに、プログラム格納部150に格納されている所定の動作プログラムに基づいて後述する各処理を実行する。
通信制御部120は、例えば、NIC(Network Interface Card)などの所定の通信装置から構成され、統括ノード100と通信ネットワーク10とを接続し、実行ノード200との通信をおこなう。
入力制御部130は、例えば、キーボードやポインティング・デバイスなどの所定の入力装置13を接続し、入力装置13から入力された指示などを制御部110に伝達する。
出力制御部140は、例えば、ディスプレイ装置やプリンタなどの所定の出力装置14を接続し、制御部110の処理結果などを必要に応じて出力装置14に出力する。
プログラム格納部150は、例えば、ハードディスク装置やROM(Read Only Memory)などといった所定の記憶装置から構成され、制御部110が実行する種々の動作プログラムが格納されている。プログラム格納部150に格納される動作プログラムは、統括ノード100の基本動作を司る任意のOS(Operating System:基本ソフトウェア)の他に、OSと協働して後述する各処理を実現するための、以下に示すような動作プログラムが格納されているものとする。後述する統括ノード100による処理は、制御部110がこれらの動作プログラムを実行することで実現される。
(P1−1)「通信制御プログラム」:通信制御部120を制御し、通信ネットワーク10を介して実行ノード200と通信をおこなうためのプログラム
(P1−2)「DBMSプログラム」:各実行ノード200における出入力などを指示し、データベースシステム1における並列分散処理を統括・管理するためのプログラム
(P1−3):「命令生成プログラム」:並列分散処理を実施する際の各実行ノード200における動作を指示する命令を生成するプログラム
統括ノード100の制御部110が上記プログラムを実行することで、統括ノード100は下記の機能を実現する。
(F1−1)「実行命令生成機能」:入力制御部130などから入力されるクエリに基づいて、各実行ノード200で実行する並列処理の内容、および、当該処理で用いるデータを指定する共通の実行命令を生成する機能
(F1−2)「転送命令生成機能」:実行命令で指定する処理に用いられるデータを、いずれの実行ノード200からいずれの実行ノード200に転送すべきかを指定した転送命令を生成する機能
(F1−3)「命令配信機能」:実行命令と転送命令とを結合し、通信制御部120から通信ネットワーク10を介して実行ノード200に同報配信(ブロードキャスト)する機能
本実施の形態では、制御部110がプログラム格納部150に格納されているプログラムを実行することにより、いわゆるソフトウェア処理で上記機能を実現するが、これらの機能に特化した回路(いわゆる、ASIC(Application Specific Integrated Circuit))などを統括ノード100に構成することで、いわゆるハードウェア処理によって上記機能が実現されてもよい。
記憶部160は、例えば、RAMやハードディスク装置などといった所定の記憶装置から構成され、各実行ノード200に配信する情報や、実行ノード200から受信した情報などを格納する他、処理に用いるデータがいずれの実行ノード200に配置されているかを示した、図3(a)に示すような「データ配置情報」を格納する。
図示するように、「データ配置情報」には、データベースシステム1を構成する複数の実行ノード200を特定するための「ノードID」をキーとしたレコードに、当該ノードIDの実行ノード200に格納されているデータを特定するための「データID」が記録されている。「ノードID」は、例えば、IPアドレスなどといった、実行ノード200それぞれに割り当てられている一意の識別情報である。また「データID」は、データベースシステム1全体で蓄積している複数のデータそれぞれに一意に割り当てられている識別情報である。
このようなデータ配置情報は、例えば、入力制御部130を介してオペレータから入力される他、通信ネットワーク10を介して統括ノード100が各実行ノード200に問い合わせをおこなうことで、自動的に取得して蓄積するようにしてもよい。また、統括ノード100がデータを分割して各実行ノード200に配置するような場合には、その際に統括ノード100がデータ配置情報を生成して蓄積するようにしてもよい。
また、記憶部160には、実行ノード200に対して送信した命令を管理するための、図3(b)に示すような「命令管理テーブル」が作成される。図示するように、「命令管理テーブル」には、データベースシステム1を用いた並列分散処理の実行を指示する入力命令(クエリなど)毎に一意に割り当てられる命令IDをキーとするレコードが作成され、各レコードには、「入力命令」、「対象データ」、「対象ノード」、「転送命令」、「実行命令」、「配信命令」、「配信先ノード」、などの項目が用意される。
項目「入力命令」には、統括ノード100に入力された命令を示す情報が記録される。項目「対象データ」には、当該命令で指示される処理に用いるデータを特定するための情報(識別情報)が記録される。項目「対象ノード」には、当該命令で指示される処理を実行するノードを特定するための情報(ノードID)が記録される。項目「転送命令」および「実行命令」には、後述する「命令処理」で作成される転送命令と実行命令(詳細後述)を示す情報が記録される。項目「配信命令」には、実際に実行ノード200に配信される、転送命令と実行命令とが結合された命令が記録される。項目「配信先ノード」には、命令の配信先となった実行ノード200を示す情報が記録される。
さらに、記憶部160には、各実行ノード200の処理結果を格納するための、図3(c)に示すような「処理結果管理テーブル」が作成される。図示するように、「処理結果管理テーブル」には、「命令管理テーブル」の各入力命令に対応する処理結果に一意に割り当てられる「処理結果ID」(命令IDと同一でもよい)毎にレコードが作成され、各レコードには、「命令ID」、「個別処理結果」、「最終処理結果」、などの項目が用意される。項目「命令ID」には、当該処理の実行を指示した入力命令に割り当てられている命令IDが記録される。項目「個別処理結果」には、当該命令に基づいて実行ノード200で実行された処理結果が記録される。項目「最終処理結果」には、「個別処理結果」に記録されている個別処理結果を統合した最終処理結果が記録される。
なお、記憶部160には、データベースシステム1を構成する各ノードとの通信に必要な情報、例えば、通信ネットワーク10を介した通信での宛先となるIPアドレスやMACアドレスなどのアドレス情報が格納されているものとする。この場合、各ノードを示す識別情報と、当該ノードのアドレス情報とが対応付けられて記憶される。
次に実行ノード200の構成を説明する。実行ノード200はデータベースシステム1において分散配置されるデータを蓄積するとともに、統括ノードからの指示に基づいて演算処理を実行するノード(サブノード)であり、図4に示すような構成を有する。図示するように、実行ノード200は、制御部210と、通信制御部220と、入力制御部230と、出力制御部240と、プログラム格納部250と、記憶部260と、から構成される。
制御部210は、例えば、CPUやワークエリアとなる所定の記憶装置(RAMなど)から構成され、実行ノード200の各部を制御するとともに、プログラム格納部250に格納されている所定の動作プログラムに基づいて後述する各処理を実行する。
通信制御部220は、例えば、NICなどの所定の通信装置から構成され、当該実行ノード200と通信ネットワーク10とを接続し、統括ノード100および他の実行ノード200との通信をおこなう。
入力制御部230は、例えば、キーボードやポインティング・デバイスなどの所定の入力装置23を接続し、入力装置23から入力された指示などを制御部210に伝達する。
出力制御部240は、例えば、ディスプレイ装置やプリンタなどの所定の出力装置24を接続し、制御部210の処理結果などを必要に応じて出力装置24に出力する。
プログラム格納部250は、例えば、ハードディスク装置やROMなどといった所定の記憶装置から構成され、制御部210が実行する種々の動作プログラムが格納されている。プログラム格納部250に格納される動作プログラムは、実行ノード200の基本動作を司る任意のOSの他に、OSと協働して後述する各処理を実現するための、以下に示すような動作プログラムが格納されているものとする。後述する実行ノード200による処理は、制御部210がこれらの動作プログラムを実行することで実現される。
(P2−1)「通信制御プログラム」:通信制御部220を制御し、通信ネットワーク10を介して統括ノード100および他の実行ノード200と通信をおこなうためのプログラム
(P2−2)「処理実行プログラム」:統括ノード100からの命令に基づいて、実行ノード200に分散配置されたデータを用いて演算処理を実行するためのプログラム
実行ノード200の制御部210が上記プログラムを実行することで、実行ノード200は下記の機能を実現する。
(F2−1)「データ転送機能」:統括ノード100から受信した転送命令に基づいて、指定されたデータの他の実行ノード200への送信、もしくは、他の実行ノード200からの受信をおこなう機能
(F2−2)「処理実行機能」:統括ノード100から受信した実行命令に基づき、指定されたデータを用いて演算処理を実行する機能
本実施の形態では、制御部210がプログラム格納部250に格納されているプログラムを実行することにより、いわゆるソフトウェア処理で上記機能を実現するが、これらの機能に特化した回路(いわゆる、ASIC(Application Specific Integrated Circuit))などを実行ノード200に構成することで、いわゆるハードウェア処理によって上記機能が実現されてもよい。
記憶部260は、例えば、RAMやハードディスク装置などといった所定の記憶装置から構成され、データベースシステム1の並列分散処理で用いられるデータなどを蓄積する。
本実施の形態では、所定の表データ(テーブルデータ)TBを並列分散処理に用いるものとする。このような表データは複数の実行ノード200に分散配置されるが、表データTB毎に任意の分散方式が適用される。本実施の形態では、図5に示すように、複数の実行ノード200の内の特定の実行ノード200にのみ格納される表データ(以下、「特定テーブルST」とする)と、一の表データの内容が分割されて複数の実行ノード200に配置される表データ(以下、「分割テーブルPT」とする)を想定する。
分割テーブルPTは、当該表データの内容が分割されて複数の実行ノード200に配置されるものであるので、換言すれば、複数の実行ノード200に配置された分割テーブルPTを結合すると一のテーブルとなる。ここで、データベースシステム1に格納される表データが特定テーブルSTとなるか分割テーブルPTとなるかは、例えば、各表データのサイズなどによって決まる。すなわち、表データのサイズが比較的大きく、当該表データ全体を一のノードで処理するには相当の処理能力や処理時間を要するような表データは、その内容が分割されて複数の実行ノード200に配置される。一方、サイズが比較的小さく、一のノードによっても効率的に処理できる表データは、当該表データの全体を特定の実行ノード200に配置する。
また、各ノードには、それぞれを識別するための識別情報が付与されているが、理解を容易にするため、図5に示す例では、実行ノード200の数を「5」とし、各実行ノード200に1〜5の識別番号が付与されているものとする。そして、表データとしてテーブルTB1、テーブルTB2、テーブルTB3が用意されているものとする。「テーブルTB1」は、識別番号が「1」の実行ノード200のみに格納された特定テーブルSTである。「テーブルTB2」は、その内容が分割されて(TB2a〜TB2d)、識別番号が「1」〜「4」の実行ノード200に配置された分割テーブルPTである。「テーブルTB3」は、識別番号が「5」の実行ノード200のみに格納された特定テーブルSTである。換言すれば、識別番号「5」の実行ノード200は、テーブルTB3のみを格納している。
このような場合、統括ノード100の記憶部160に格納される「データ配置情報」には、実行ノード200の識別番号が「ノードID」に記録され、テーブルを特定する情報(「TB1」など)が「データID」として記録される。
なお、実行ノード200の記憶部260には、データベースシステム1を構成する各ノードとの通信に必要な情報、例えば、通信ネットワーク10を介した通信での宛先となるIPアドレスやMACアドレスなどのアドレス情報が格納されているものとする。この場合、各ノードを示す識別情報と、当該ノードのアドレス情報とが対応付けられて記憶される。
さらに、必要に応じて、実行ノード200による処理結果を示す情報が記憶部260に格納される。
このような構成を有するデータベースシステム1の動作を以下説明する。本実施の形態では、データベースシステム1の実行ノード200に分散配置されている異なる表データを結合演算する場合を想定する。本実施の形態では、テーブルTB1とテーブルTB2の間での結合演算をおこなうものとして以下説明する。
まず、データベースシステム1で実行される「並列分散処理」を図6に示すフローチャートを参照して説明する。
この「並列分散処理」では、まず、統括ノード100から実行ノード200へ処理実行を指示するための「命令処理」が実行される(ステップS100)。ここでは、並列分散処理のための各実行ノード200の動作が規定され、実行ノード200に指示する。そして、統括ノード100から指示を受けた実行ノード200は、指示に基づいた動作によって処理を遂行する「実行処理」を実行する(ステップS200)。そして、統括ノード100が、実行ノード200による処理結果を全体的な処理結果として集約する「統合処理」(ステップS300)を実行することで、データベースシステム1による並列分散処理が完了する。
各処理の詳細を以下図面を参照して説明する。まず、統括ノード100が実行する「命令処理」(ステップS100)の詳細を図7に示すフローチャートを参照して説明する。この「命令処理」は、データベースシステム1に蓄積されているデータを用いた並列分散処理を指示するクエリ(例えば、SQL文など)が、入力制御部130などから制御部110に入力されたことを契機に開始されるものとする。本実施の形態では、テーブルTB1とテーブルTB2との結合演算を指示するクエリが入力されるものとする。また、クエリが入力されると、制御部110は、記憶部160の「命令管理テーブル」に新規レコードを作成し、項目「入力命令」に入力されたクエリを記録する。
制御部110は、入力されたクエリを分析し、当該クエリで指示された処理に用いるデータ(以下、「対象データ」とする)を特定する(ステップS101)。本例では、テーブルTB1とテーブルTB2の結合演算が指示されているので、「テーブルTB1」と「テーブルTB2」が対象データとして特定される。また、特定された対象データを示す識別情報(「TB1」や「TB2」など)が記憶部160の「命令管理テーブル」に記録される。
対象データを特定すると、制御部110は、当該処理のために対象ノードが実行する処理動作を指示する「実行命令」を生成し(ステップS102)、記憶部160の「命令管理テーブル」に記録する。この「実行命令」は、「いずれのデータを用いて、どのような処理(演算)をおこなうか」を示す。すなわち、入力されたクエリと同様の情報とすることができる。換言すれば、処理全体の命令をそのまま各実行ノード200に対する共通の命令として用いることができる。本例のように、テーブルTB1とテーブルTB2を結合演算する処理の場合、例えば、SQL文によって「select * from TB1, TB2 where TB1.属性a = TB2.属性b;」などと記述することができる。例示した実行命令は、各対象ノードにおいて、「テーブルTB1とテーブルTB2から、テーブルTB1での属性aとテーブルTB2での属性bが一致する列を抽出せよ」という処理内容を指示する命令となる。このように、統括ノード100で生成される実行命令は、全実行ノード200に共通の一の命令で構成することができる。
実行命令を生成すると、制御部110は、記憶部160に格納されている「データ配置情報」を参照し、特定された対象データが格納されている実行ノード200(以下、「対象ノード」とする)を、対象データ毎に特定する(ステップS103)。図5に示す例では、テーブルTB1が識別番号「1」の実行ノード200に格納されているので、この実行ノード200が対象ノードとして特定される。同様に、テーブルTB2は、識別番号が「1」〜「4」の実行ノード200に格納されているので、これらの実行ノード200が対象ノードとして特定される。また、特定された対象ノードを示す識別情報が、記憶部160の「命令管理テーブル」に記録される。
対象ノードを特定すると、制御部110は、特定した対象ノードのすべてが対象データを取得するようにデータ転送経路を決定する。本実施の形態では、各実行ノード200で並列分散処理をおこなうため、対象ノードとなった実行ノード200のそれぞれが、処理に用いるデータを取得する必要がある。本実施の形態では、特定テーブルSTであるテーブルTB1を他の対象ノードに転送することとする。この場合、制御部110は、識別番号「1」の実行ノード200から、識別番号「2」〜「4」の実行ノード200にテーブルTB1を転送すべきであると分析する。
データ転送経路が決定されると、対象ノードに対するデータ転送を指示する「転送命令」(プリプラン)を生成し(ステップS104)、記憶部160の「命令管理テーブル」に記録する。この転送命令は、対象ノードでの処理(実行プラン)を実行する前に、各対象ノード間でのデータ転送の実行を指示するものであり、「いずれのノードが、いずれのノードに、いずれのデータを転送するか」を記述したものである。ここでは、ノードを示す情報としてノードIDが用いられ、データを示す情報としてデータIDが用いられるものとする。そして、データ転送の実行指示を示す所定の変数と組み合わされることで、転送命令が構成される。
例えば、「Data = TB1、sNode = 1、rNode = 2, 3, 4」などといった文字列情報が転送命令として生成される。この場合、変数「Data」は、転送すべきデータ(テーブル)を示し、変数「sNode」は、データを送信するノード(以下、「送信ノード」とする)を示し、変数「rNode」は、データを受信するノード(以下、「受信ノード」とする)を示す。したがって、上記に例示した転送命令は、「テーブルTB1を、識別番号が「1」の実行ノード200から、識別番号が「2」、「3」、「4」の実行ノード200に送信せよ」という命令となる。換言すれば、「識別番号が「2」、「3」、「4」の実行ノード200は、テーブルTB1を、識別番号が「1」の実行ノード200から受信せよ」という命令となる。
実行命令が生成されると、制御部110は、ステップS102で生成した実行命令とステップS104で生成した転送命令とを結合した「命令情報」を生成し、すべての実行ノード200に同報配信(ブロードキャスト)する(ステップS105)。すなわち、制御部110は通信制御部120を制御し、通信ネットワーク10を介して実行ノード200に命令情報を送信する。また、生成された命令情報、および、配信先となった実行ノード200を示す情報(識別情報)が記憶部160の「命令管理テーブル」に記録される。ここで、配信した命令情報には、記憶部160の命令管理テーブル上で割り当てられている命令IDが付加されているものとする。命令情報が実行ノード200に配信されると、「命令処理」を終了し、「並列分散処理」のメインフロー(図6)に戻る。
上記「命令処理」では、実行する並列分散処理に応じて、処理に用いるデータと、当該データが格納されているノードが特定されるので、いずれのノードにいずれのデータを転送すべきであるかが決定される。そして、この決定に基づく転送命令が生成され、処理の実行を指示する実行命令とともに実行ノード200にブロードキャストされる。ここで「実行命令」は、実行ノード200毎に個別に規定されるのではなく、1つの共通した情報であり、かつ、「転送命令」も、転送すべきデータとそのデータを送信するノードおよび受信するノードを示すのみの極めて単純な情報となる。さらに、このような実行命令と転送命令とを結合させ、一の情報として配信するので、命令の送信回数を1回とすることができる。したがって、統括ノード100の処理や通信ネットワーク10に負荷をかけることなく、並列分散処理を実行するための命令情報を実行ノード200に配信することができる。
「命令処理」によって命令情報が実行ノード200に配信されると、各実行ノード200では、配信された命令情報に基づいて、制御部210が「実行処理」を実行する(図6、ステップS200)。この「実行処理」の詳細を図8に示すフローチャートを参照して説明する。「実行処理」は、実行ノード200が命令情報を受信したことを契機に開始される。より詳細には、実行ノード200の通信制御部220が通信ネットワーク10を介して統括ノード100から命令情報を受信し、受信した命令情報を制御部210に入力したことを契機に開始される。
制御部210は、受信した「命令情報」から「転送命令」を抽出する(ステップS201)。制御部210は、抽出した転送命令に、当該実行ノード200が送信ノードとして指定されているか否かを判別する(ステップS202)。上述した転送命令の例では、送信ノードを示す変数「sNode」に、当該実行ノード200の識別情報が設定されているか否かによって判別することができる。
当該実行ノード200が送信ノードとして指定されている場合(ステップS202:Yes)、制御部210は、転送命令に指定されているデータ(以下、「転送対象データ」とする)を記憶部260から取得する(ステップS203)。すなわち、転送命令の変数「Data」に設定されている表データを記憶部260から取得する。例えば、「Data = TB1」と記述されている場合、制御部210は、テーブルTB1を転送対象データとして記憶部260から取得する。図5に示す例では、対象データであるテーブルTB1とテーブルTB2の内、特定テーブルSTとなっているテーブルTB1を格納している識別番号「1」の実行ノード200が、本処理をおこなうこととなる。
制御部210はさらに、通信制御部220を制御して、ステップS203で取得した表データ(転送対象データ)を、転送命令で「受信ノード」に指定されている実行ノード200に送信する(ステップS204)。上記転送命令の例では、変数「rNode」に設定されている実行ノード200を特定し、当該実行ノード200に表データを送信する。この場合、制御部210は、「rNode」に設定されている識別情報に対応するアドレス情報を記憶部260から取得し、当該アドレス宛に表データを送信する。なお、各ノードの識別情報をIPアドレスなどのアドレス情報としている場合は、転送命令に識別情報として設定されているアドレス宛に表データを送信する。
表データを送信すると、制御部210は、受信した命令情報から「実行命令」を抽出し(ステップS205)、抽出した実行命令に指定されているデータ(表データ)を用いて、指定された処理(結合演算など)を実行する(ステップS206)。ここでは、当該実行ノード200の記憶部260に格納されている表データを用いて処理を実行することとなる。当該ノードが送信ノードである場合は、対象データを予め有していることになるので、記憶部260に格納されている表データを用いて処理が実行される。図5に示す例では、識別番号「1」の実行ノード200が該当するので、記憶部260に格納されているテーブルTB1とテーブルTB2を用いて、例えば、結合演算を実行する。
指定された処理の実行が完了すると、制御部210は、実行結果を示す情報(以下、「個別結果情報」とする)を記憶部260もしくはワークエリアに格納するとともに、通信制御部220から当該個別結果情報を通信ネットワーク10を介して統括ノード100に送信する(ステップS207)。実行ノード200が送信する個別結果情報には、統括ノード100から受信した命令情報に付加されていた命令IDおよび当該実行ノード200の識別情報が付加されるものとする。統括ノード100に個別結果情報を配信すると、「実行処理」を終了し、「並列分散処理」のメインフロー(図6)に戻る。
一方、当該実行ノード200が送信ノードとして指定されていない場合(ステップS202:No)、制御部210は、当該実行ノード200が受信ノードとして転送命令に設定されているか否かを判別する(ステップS208)。上記転送命令の例では、変数「rNode」に当該実行ノード200を示す識別情報が設定されているか否かに基づいて判別される。
当該実行ノード200が受信ノードとして指定されている場合(ステップS208:Yes)、制御部210は、送信ノードとして設定されている実行ノード200から、対象データが送信されるのを待機する。
送信ノードから対象データを受信すると(ステップS209)、制御部210は、受信した対象データを記憶部260に格納する(ステップS210)。
他のノードから転送された対象データが記憶部260に格納されると、制御部210は、受信した命令情報から「実行命令」を抽出し(ステップS205)、抽出した実行命令に指定されているデータ(表データ)を用いて、指定された処理(結合演算など)を実行する(ステップS206)。当該ノードが受信ノードである場合は、分割テーブルPTとして予め有しているデータと、他のノードから転送されたデータが対象データとなる。図5に示す例では、識別番号が「2」、「3」、「4」の実行ノード200が該当するので、記憶部260に当初から格納されているテーブルTB2と、識別番号「1」の実行ノード200から転送されたテーブルTB1を用いて、例えば、結合演算を実行する。
指定された処理の実行が完了すると、制御部210は、実行結果を示す個別結果情報を記憶部260もしくはワークエリアに格納するとともに、通信制御部220から当該個別結果情報を通信ネットワーク10を介して統括ノード100に送信して(ステップS207)、「並列分散処理」のメインフロー(図6)に戻る。
一方、当該実行ノード200が送信ノードおよび受信ノードのいずれにも指定されていない場合(ステップS208:No)、制御部210は、何も処理をおこなわずに「並列分散処理」のメインフロー(図6)に戻る。すなわち、データの送信も受信も行うことなく「実行処理」を終了する。図5に示す例では、識別番号「5」の実行ノード200がこれに該当する。この実行ノード200は、テーブルTB3のみを格納しているので、テーブルTB1とテーブルTB2とが対象データである今回の並列分散処理には参加する必要がない。したがって、データ転送も演算もおこなうことなく「実行処理」が終了する。
このように、上記「実行処理」では、統括ノード100から配信された「転送命令」に基づいて、処理の実行に必要となるデータが各ノード間で転送される。すなわち、対象データが特定テーブルSTと分割テーブルPTである場合には、特定のノードにのみ格納されている特定テーブルSTが他のノードに転送される。これにより、並列分散処理を実行するすべてのノードが必要なデータを保持することとなる。このように、対象ノードにより必要な対象データが過不足なく保持されると、各対象ノードにて、対象データを用いた処理が実行される。上述したように、分割テーブルPTは、一のテーブルの内容を分割して複数の実行ノード200に分散配置しているので、各実行ノード200では、当該テーブルの全体よりも小さいサイズのテーブルデータを対象にして結合演算などの処理をおこなうので、効率的に処理することができる。
また、対象データを有していないノードではデータ転送がおこなわれない。すなわち、複数の実行ノード200の内、必要最小限のノード間のみでデータ転送がおこなわれるので、通信ネットワーク10のネットワーク負荷が過剰に大きくなることがない。
上記「実行処理」により、各実行ノード200で処理が実行されて処理結果が取得されると、統括ノード100にて、各実行ノード200からの処理結果を統合するための「統合処理」が実行される(図6、ステップS300)。この「統合処理」の詳細を図9に示すフローチャートを参照して説明する。「統合処理」は、統括ノード100が、対象ノードのいずれかから個別結果情報を受信したことを契機に開始される。より詳細には、統括ノード100の通信制御部120が、対象ノードとなっている実行ノード200が送信した個別結果情報を受信し、受信した個別結果情報が制御部110に入力されたことを契機に開始される。
対象ノードとなっている実行ノード200のいずれかから個別結果情報を受信すると、制御部110は、当該個別結果情報に付加されている命令IDに基づき、記憶部160の「処理結果管理テーブル」に、当該命令IDが記録されているレコードがあるか否かを検索する(ステップS301)。
当該命令IDを含むレコードがない場合(ステップS301:No)、制御部110は、処理結果IDを付与し、当該処理結果IDをキーとしたレコードを「処理結果管理テーブル」に新規作成し(ステップS302)、当該レコードの項目「個別処理結果」に、受信した個別結果情報を格納する(ステップS303)。すなわち、発した命令に対する処理結果が最初に到来した場合、新規レコードを作成して個別結果情報を格納する。
2番目以降に到来した処理結果については、既にレコードが作成されているため(ステップS301:Yes)、当該レコードに受信した個別結果情報を格納する(ステップS303)。
制御部110は、受信する個別結果情報に付加されている実行ノード200の識別情報と、記憶部160の「命令管理テーブル」に記録されている対象ノードを示す識別情報とに基づいて、すべての対象ノードから個別結果情報を受信したか否かを判別する(ステップS304)。
すべての対象ノードから個別結果情報を受信していない場合(ステップS304:No)、ステップS301に戻り、すべての対象ノードから個別結果情報を受信するまで「処理結果管理テーブル」に個別結果情報を蓄積する。
すべての対象ノードから個別結果情報を受信すると(ステップS304:Yes)、制御部110は、「処理結果管理テーブル」に蓄積された個別結果情報を統合し、最終処理結果情報を生成する(ステップS305)。すなわち、並列分散処理により、各実行ノード200で得られた処理結果を1つにまとめることで、当初の入力命令に対する処理結果とする。生成された最終処理結果情報は、記憶部160の「処理結果管理テーブル」に記録される。
制御部110は、生成した最終処理結果情報を、出力制御部140を介して出力装置14から出力して(ステップS306)、処理を終了する。
以上説明したように、上記実施の形態によれば、並列分散処理をおこなうデータベースシステム1において、複数の実行ノード200に対して発する命令の情報量を小さくすることができるので、命令を発する統括ノード100や命令を伝達する通信ネットワーク10に負荷をかけることなく、複数の実行ノード200に命令を発することができる。
また、命令情報の構成を極めて単純なものとすることができ、かつ、すべての実行ノード200に対して共通のものとすることができるので、命令情報を生成する統括ノード100、および、命令情報を認識する実行ノード200の処理負荷が軽減される。
さらに、実行すべき処理内容を指示する実行命令と、処理実行前に実施すべきデータ転送を指示する転送命令とを結合させた一の命令情報のみを送信すればよいので、命令送信回数が1回のみでよい。これにより、命令情報を送信する統括ノード100および命令情報を伝達する通信ネットワーク10に負荷をかけることなく、複数の実行ノード200に命令を発することができる。
また、データベースシステム1で格納しているデータの分散方式に応じて、処理に必要なデータを実行ノード200間で転送することで、処理を実行する実行ノード200自身が必要とするデータを取得するので、すべてのデータを取得して配信する特定のノードなどを設ける必要がない。すなわち、表データなどのサイズの大きなデータを特定のノードのみで処理する必要がないため、全体の処理効率を高くすることができる。また、処理を実行しないノードではデータの転送をおこなわないので、データ転送を媒介する通信ネットワーク10に必要以上の負荷をかけることなくデータ転送することができる。また、このようなデータ転送の実施を、上述のような極めて単純な構成の転送命令で実現することができる。
(第2の実施形態)
上記第1の実施形態では、理解を容易にするため、システム構成(ノード数)や対象データの構成、処理内容などを簡易にして説明したが、実際のデータベースシステムにおいては、ノード数やデータ量が膨大となる場合があり、かつ、データの分散形態も複雑となる場合がある。また、第1の実施形態で例示したような、2つのテーブルデータを結合させるだけの単純な処理ではない場合も多い。このような場合、実行命令や転送命令が複数必要となり、命令情報が複雑になってしまうこともある。このように命令が複雑となってしまう場合であっても効率的に処理をおこなう手法を、第2の実施形態として以下説明する。なお、本実施の形態におけるデータベースシステム1の構成は第1の実施形態と同様である。
上記第1の実施形態では、データの分散形態として、特定テーブルSTと分割テーブルPTを例示したが、本実施の形態では、これらに加え「分散テーブルAT」を想定する。分散テーブルATは、一のテーブルデータを分割せずに複数の実行ノード200に配置する形態である。すなわち、同一のテーブルデータが複数の実行ノード200に配置される。また、本実施の形態では、2種類の分割テーブル(PT1とPT2)を想定する。
すなわち、図10に示すように、本実施の形態では、以下のような4種類のテーブルデータを想定する。
・テーブルTB1:識別番号「1」の実行ノード200にのみ配置された特定テーブルST
・テーブルTB2:識別番号「1」〜「4」の実行ノード200に分割して配置された分割テーブルPT1
・テーブルTB3:識別番号「2」〜「5」の実行ノード200に分割して配置された分割テーブルPT2
・テーブルTB4:識別番号「1」〜「5」の実行ノード200に配置された分散テーブルAT
また、本実施の形態では、実行命令と転送命令とを結合させた命令情報をツリー構造(木構造)にし、このようなツリー構造の命令を各実行ノード200が再帰的に実行する。すなわち、「命令処理」(図7)のステップS105で統括ノード100が命令情報を生成する際に、図11に示すような、ツリー構造(階層構造)の命令情報を生成する。図11の例では、第1階層から第4階層までの4階層構造を有する。本実施の形態では、第1階層を最上位階層とする。
図11において、ツリー構造の第1階層にある「実行プランタグ」は、複数の実行命令と転送命令を含んだ一の命令情報(プラン)であることを示すものである。すなわち、複数の実行命令と転送命令がツリー状の階層構造で実行プランタグに続く。
第1階層の「実行命令1」は、直近下位の第2階層における「実行命令2」と「実行命令5」の実行結果を用いた処理(結合演算)の実行を指示する実行命令である。
第2階層の「実行命令2」は、例えば、テーブルTB1とテーブルTB2との結合演算の実行を指示する実行命令である。ここで、テーブルTB1は特定テーブルSTであり、テーブルTB2は分割テーブルPT1であるから、いずれも実行ノード200間での転送が必要となる。したがって、「実行命令2」には第3階層にて「転送命令1」と「転送命令2」が続く。
「転送命令1」は、テーブルTB1の転送を指示する転送命令であり、「転送命令2」は、テーブルTB2の転送を指示する転送命令である。転送命令の記述形式は第1の実施形態と同様である。すなわち、転送対象となるデータ、転送元のノード、転送先のノード、などが記述される。転送命令に続く実行命令は、転送命令の実行によって取得されたテーブルデータへのアクセス(テーブルスキャン)を指示するものである。図11の例では、「転送命令1」に続く「実行命令3」によって、テーブルTB1に対するテーブルスキャンの実行が指示され、「転送命令2」に続く「実行命令4」によって、テーブルTB2に対するテーブルスキャンの実行が指示される。
すなわち、実行ノード200間での転送が必要なテーブルデータに対する動作を指示する実行命令の直前の階層に、当該テーブルデータの転送を指示する転送命令が挿入される形となる。
一方、第2階層で「実行命令2」と並行する「実行命令5」についても、同様に適当な実行命令や転送命令が階層構造で続く。図11の例では、実行命令5は、例えば、テーブルTB4とテーブルTB3の結合演算の実行を指示する実行命令である。ここで、テーブルTB4は、すべての実行ノード200に配置されている分散テーブルATであるので、各実行ノード200間でテーブルTB4を転送する必要はない。したがって、実行命令5の直下に、テーブルTB4に対するテーブルスキャンを指示する「実行命令6」が続く。
また、実行命令5が対象とするテーブルTB3は、分割テーブルPT2であるため、実行ノード200間での転送が必要となる。したがって、実行命令5の下位階層である第3階層に、テーブルTB3の転送を指示する「転送命令3」が続く。転送命令3の直下には、転送命令3で取得されるテーブルTB3に対するテーブルスキャンの実行を指示する「実行命令7」が続く。
このようなツリー構造の命令情報を受信した実行ノード200の動作を以下説明する。
実行ノード200において、通信制御部220が統括ノード100から命令情報を受信すると、制御部210は、命令情報の最上位階層から下位方向に順次巡っていき、転送命令を実行していく。上述したように、本実施の形態においても、第1の実施形態で例示した転送命令と同様の転送命令であるので、制御部210は、転送命令の記述にしたがって、対象データの送受信をおこなう。すなわち、自身が送信ノードとして指定されている場合には、記憶部260に格納している対象データを他の実行ノード200に転送し、自身が受信ノードとして指定されている場合には、他の実行ノード200から転送される対象データを受信する。
図11における「実行命令2」以降を例にとると、直下の「転送命令1」を各実行ノード200が実行することで、テーブルTB1の転送が実行ノード200間でおこなわれる。また、同じく「実行命令2」の直下にある「転送命令2」を各実行ノード200が実行することで、テーブルTB2の転送が各実行ノード200間でおこなわれる。転送命令の実行においては、第1の実施形態と同様に、送信ノードに指定された実行ノード200は対象データを転送先に指定されている実行ノード200に送信し、受信ノードに指定された実行ノード200は対象データの転送を待機する。
転送命令の実行により対象データの転送が完了すると、各実行ノード200では、当該転送命令の直下の実行命令が実行される。転送命令の直下がテーブルスキャンを指示する実行命令である場合には、制御部210が、転送命令に指定されていたテーブルデータに対しテーブルスキャンをおこなうことで、データを取得する。そして、転送命令の直下の実行命令の実行後は、制御部210は、当該転送命令の直近上位の実行命令を実行する。すなわち、実行ノード200の制御部210は、受信したツリー構造の命令を再帰的に実行する。
図11における「実行命令2」以降を例にとると、制御部210は「転送命令1」(第3階層)の実行により転送されたテーブルTB1に対するテーブルスキャン(第4階層の「実行命令3」)と、「転送命令2」(第3階層)の実行により転送されたテーブルTB2に対するテーブルスキャン(第4階層の「実行命令4」)とを並列に実行して、テーブルTB1とテーブルTB2から必要な情報を取得すると、第2階層の「実行命令2」を実行して、取得したテーブルTB1とテーブルTB2との結合演算を実行する。すなわち、ツリー構造の各枝毎に、転送命令が実行命令より先行して実行されることになる。
図11における「実行命令5」以降も同様であり、転送命令が存在する場合には、転送命令が先に実行される。すなわち、制御部210は、実行命令5の直下の「転送命令3」を実行してテーブルTB3を転送すると、転送されたテーブルTB3に対してテーブルスキャンをおこなって内容を取得する(「実行命令7」)。これと並行して、制御部210は、分散テーブルATであるテーブルTB4をテーブルスキャンして内容を取得する(「実行命令6」)。そして、テーブルTB3とテーブルTB4が取得されると、制御部210は、「実行命令5」を再帰的に実行することで、テーブルTB3とテーブルTB4との結合演算をおこなう。
さらに、制御部210は、「実行命令1」を再帰的に実行することで、「実行命令2」による結合演算の結果と、「実行命令5」による結合演算の結果とを用いて結合演算をおこなうことで、最終的な個別処理結果を算出し、統括ノード100に送信する。
このように、命令情報をツリー構造とし、各実行ノード200で再帰的に実行させることにより、ノード数やデータ量が多かったり、データの分散形態が複雑であったり、実行する処理の内容が複雑であるような場合であっても、一の命令情報によって並列分散処理を実行することができる。
すなわち、本発明を上記各実施の形態の如く適用することにより、並列分散処理をおこなうデータベースシステムの処理効率を向上させることができる。
なお、上記実施の形態では、特定のノードのみに格納されている特定テーブルSTや、複数のノードに分割配置されている分割テーブルPT、あるいは、同一のテーブルデータが複数の実行ノード200に分散配置されている分散テーブルATを対象データとして結合演算する場合を例示したが、対象とするデータや実行する処理などは任意である。例えば、特定テーブルST同士の結合演算や、分割テーブルPT同士の結合演算などであっても、同様に処理することができる。また、データベースシステム1に格納するデータあるいは演算処理に用いるデータの種類は、例示した表データ(テーブルデータ)に限られず、任意のデータを取り扱うことができる。
また、転送命令を生成する際の転送経路の決定は、ノード毎の処理能力や各データの種類やサイズなどに応じて決定されることが望ましい。すなわち、第1の実施形態における転送経路の決定においては、一の実行ノード200にのみ配置されている特定テーブルSTを他の実行ノード200に転送するような転送経路としたが、逆に、複数の実行ノード200に格納されている分割テーブルPTを、特定テーブルSTを保持している実行ノード200に転送するようにしてもよい。すなわち、統括ノード100の制御部110が、例えば、統計情報などに基づいてコスト計算することで、最も効率的な転送経路を決定すればよい。この場合、例えば、統括ノード100の記憶部160に記憶される「データ配置情報」などに、各実行ノード200の処理能力を示す情報を記録してもよい。
また、上記実施の形態では、命令情報をすべての実行ノード200にブロードキャストするものとしたが、特定された対象ノードのみに配信するようにしてもよい。この場合、特定された対象ノードの識別情報に基づいてアドレスを特定し、特定したアドレス宛に命令情報を送信すればよい。これにより、命令配信時のネットワーク負荷をさらに軽減させることができる。
上記実施の形態にかかる統括ノード100および実行ノード200は、専用装置から構成可能であることはもとより、汎用のコンピュータ装置などを用いて構成することもできる。すなわち、このような汎用装置に上述したプログラムをインストールして実行させることで、上記実施の形態にかかる統括ノード100および実行ノード200として機能させることができる。
このようなプログラムの提供方法は任意であり、例えば、CD−ROMなどの記憶媒体に格納して配布可能であることはもとより、プログラムデータを搬送波に重畳することで、所定の通信媒体(例えば、インターネットなど)を介して配布することもできる。
本発明の実施の形態にかかる「データベースシステム」の構成を模式的に示す図である。 図1に示す「統括ノード」の構成を示すブロック図である。 図2に示す「記憶部」に記録される情報の例を示す図であり、(a)は「データ配置情報」の例を示し、(b)は「命令管理テーブル」の例を示し、(c)は「処理結果管理テーブル」の例を示す。 図1に示す「実行ノード」の構成を示すブロック図である。 図1に示す「実行ノード」に配置されるデータの分散方式を説明するための図である。 本発明の実施の形態「並列分散処理」を説明するためのフローチャートである。 図6に示す「並列分散処理」で実行される「命令処理」を説明するためのフローチャートである。 図6に示す「並列分散処理」で実行される「実行処理」を説明するためのフローチャートである。 図6に示す「並列分散処理」で実行される「統合処理」を説明するためのフローチャートである。 本発明の第2の実施形態にかかるデータの分散方式を説明するための図である。 本発明の第2の実施形態にかかるツリー構造の命令情報を説明するための図である。
符号の説明
1 データベースシステム
10 通信ネットワーク
100 統括ノード
200 実行ノード

Claims (5)

  1. 複数のノードで並列分散処理をおこなうデータベースシステムにおいて、
    前記複数のノードは、通信ネットワークを介して相互接続された、前記並列分散処理を統括する統括ノードと、データの蓄積および演算処理をおこなう複数の実行ノードと、から構成され、
    前記統括ノードは、
    各実行ノードでの演算処理の実行を指示する実行命令を生成する実行命令生成手段と、
    前記実行命令で指示される演算処理で用いるデータの転送を前記各実行ノードに指示する転送命令を生成する転送命令生成手段と、
    前記実行命令生成手段が生成した実行命令と、前記転送命令生成手段が生成した転送命令とを実行命令の実行に必要な転送命令が該実行命令に先立つようツリー構造に階層配置した命令情報を、前記通信ネットワークを介して前記複数の実行ノードに同報配信する命令配信手段と、
    を備え、
    前記実行ノードは、
    前記統括ノードの命令配信手段から配信される命令情報を前記通信ネットワークを介して受信する命令受信手段と、
    前記命令受信手段が受信した転送命令に基づき、前記通信ネットワークを介して他の実行ノードとの間でデータの送受信を行うデータ転送手段と、
    前記命令受信手段が受信した実行命令に基づき、蓄積されているデータおよび前記データ転送手段が受信したデータを用いて演算処理を実行する演算手段と、
    を備え
    前記命令受信手段が受信したツリー構造の命令のうち、自身を対象とした前記実行命令および前記転送命令をツリー構造の最下位層から順に実行し、転送命令の実行においては、該転送命令がデータ送信であった場合は送信を実行して上位階層の命令に進み、該転送命令がデータ受信であった場合は他ノードからの送信を待って受信完了後に上位階層の命令に進む、
    とを特徴とするデータベースシステム。
  2. 前記転送命令生成手段は、データを送信すべき実行ノードと、データを受信すべき実行ノードと、を指定した転送命令を生成する、
    ことを特徴とする請求項1に記載のデータベースシステム。
  3. 前記統括ノードは、
    いずれの実行ノードにいずれのデータが格納されているかを示す配置情報を取得して記憶する配置情報取得手段をさらに備え、
    前記転送命令生成手段は、前記配置情報取得手段が記憶する配置情報に基づいて、前記転送命令を生成する、
    ことを特徴とする請求項1または2に記載のデータベースシステム。
  4. 並列分散処理をおこなうデータベースシステムを統括するコンピュータに、
    前記データベースシステムを構成する複数のコンピュータのいずれに、いずれのデータが格納されているかを示す配置情報を取得して記憶するステップと、
    前記複数のコンピュータそれぞれで実行させる演算処理の内容を示す情報と、当該演算処理で用いるデータを指定する情報と、を含んだ実行命令を生成するステップと、
    前記配置情報に基づいて、他のコンピュータにデータを送信すべきコンピュータを示す情報と、他のコンピュータからデータを受信すべきコンピュータを示す情報と、を含んだ転送命令を生成するステップと、
    前記生成された実行命令と転送命令とを、実行命令の実行に必要な転送命令が該実行命令に先立つようツリー構造に階層配置した命令情報を、通信ネットワークを介して前記複数のコンピュータにブロードキャストするステップと、
    を実行させることを特徴とするプログラム。
  5. 並列分散処理をおこなうデータベースシステムを構成するコンピュータに、
    演算処理に用いられるデータを蓄積するステップと、
    前記データベースシステムを制御するコンピュータから配信される実行命令の実行に必要な転送命令が該実行命令に先立つようツリー構造に階層配置された命令情報通信ネットワークを介して受信するステップと、
    受信した転送命令に基づき、前記通信ネットワークを介して他のコンピュータとの間でデータの送受信をおこなうステップと、
    受信した実行命令に基づいて、蓄積しているデータおよび他のコンピュータから受信したデータを用いて演算処理を実行するステップと、
    受信した前記ツリー構造の命令のうち、自身を対象とした前記実行命令および前記転送命令をツリー構造の最下位層から順に実行し、転送命令の実行においては、該転送命令がデータ送信であった場合は送信を実行して上位階層の命令に進み、該転送命令がデータ受信であった場合は他ノードからの送信を待って受信完了後に上位階層の命令に進むステップと、
    を実行させることを特徴とするプログラム。
JP2004124487A 2004-04-20 2004-04-20 データベースシステム、および、プログラム Expired - Fee Related JP4331045B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004124487A JP4331045B2 (ja) 2004-04-20 2004-04-20 データベースシステム、および、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004124487A JP4331045B2 (ja) 2004-04-20 2004-04-20 データベースシステム、および、プログラム

Publications (2)

Publication Number Publication Date
JP2005309684A JP2005309684A (ja) 2005-11-04
JP4331045B2 true JP4331045B2 (ja) 2009-09-16

Family

ID=35438422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004124487A Expired - Fee Related JP4331045B2 (ja) 2004-04-20 2004-04-20 データベースシステム、および、プログラム

Country Status (1)

Country Link
JP (1) JP4331045B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017010569A (ja) * 2010-10-22 2017-01-12 株式会社インテック 分散型データベースシステムおよび分散型データ処理システム
WO2012070292A1 (ja) 2010-11-22 2012-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散データベースの負荷均衡のためのコネクション配分を実現する情報処理システム、情報処理装置、負荷均衡方法、データベース配置計画方法およびプログラム
JP2015072629A (ja) * 2013-10-03 2015-04-16 富士通株式会社 データ処理プログラム及びデータ処理方法
JP6328078B2 (ja) * 2015-07-22 2018-05-23 株式会社東芝 データベースシステムおよびデータベースシステム用プログラム
US20190370407A1 (en) * 2018-05-30 2019-12-05 Ab Initio Technology Llc Systems and methods for dataflow graph optimization
JP7489249B2 (ja) 2020-07-15 2024-05-23 株式会社日立製作所 データベースシステム、データ配備管理装置およびデータ配備管理方法

Also Published As

Publication number Publication date
JP2005309684A (ja) 2005-11-04

Similar Documents

Publication Publication Date Title
US8713182B2 (en) Selection of a suitable node to host a virtual machine in an environment containing a large number of nodes
JP5014399B2 (ja) 検索データ管理装置
US20020091559A1 (en) Work flow management method and work flow management system of controlling a work flow
CN102375837A (zh) 数据采集系统和方法
CN101640623A (zh) 在对等网络中搜索资源的方法和设备
CN106471501A (zh) 数据查询的方法、数据对象的存储方法和数据系统
KR101754618B1 (ko) 소프트웨어 정의 네트워크 기반의 가상 네트워크 동적 생성 방법 및 그 장치
CN103546572A (zh) 一种云存储装置以及多云存储联网系统和方法
JP4331045B2 (ja) データベースシステム、および、プログラム
Mseddi et al. On optimizing replica migration in distributed cloud storage systems
JP6303300B2 (ja) 制御依頼方法、情報処理装置、システム、およびプログラム
CN113127526A (zh) 一种基于Kubernetes的分布式数据存储和检索系统
JP2018147301A5 (ja)
CN107729421B (zh) 存储过程的执行方法、装置及存储介质
CN112235356B (zh) 一种基于集群的分布式pb级cfd仿真数据管理系统
KR20090065134A (ko) 작업 분산 병렬 처리 시스템 및 방법
CN113590652A (zh) 数据存储系统、数据处理方法、设备及存储介质
US11381642B2 (en) Distributed storage system suitable for sensor data
CN114731297A (zh) 用于计算设备对等方匹配的消息限制的自组织网络组
CN104537081A (zh) 文件管理系统和方法
JP4225354B2 (ja) 分散データベースのデータアクセス方法及び装置
JP2002183138A (ja) 情報収集システム、情報収集方法及び記憶媒体
JP2006268588A (ja) クライアントサーバシステムおよびクライアントサーバシステムのデータ処理方法
CN112765443B (zh) 基于历史操作数据的物联网数据查询方法及装置
US11188389B2 (en) Distributed system that promotes task-machine affinity

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090407

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090616

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090617

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees