JP5203733B2 - コーディネータサーバ、データ割当方法及びプログラム - Google Patents

コーディネータサーバ、データ割当方法及びプログラム Download PDF

Info

Publication number
JP5203733B2
JP5203733B2 JP2008022761A JP2008022761A JP5203733B2 JP 5203733 B2 JP5203733 B2 JP 5203733B2 JP 2008022761 A JP2008022761 A JP 2008022761A JP 2008022761 A JP2008022761 A JP 2008022761A JP 5203733 B2 JP5203733 B2 JP 5203733B2
Authority
JP
Japan
Prior art keywords
database
data
server
allocation
registration
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
JP2008022761A
Other languages
English (en)
Other versions
JP2009181546A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008022761A priority Critical patent/JP5203733B2/ja
Priority to US12/361,708 priority patent/US8271523B2/en
Publication of JP2009181546A publication Critical patent/JP2009181546A/ja
Application granted granted Critical
Publication of JP5203733B2 publication Critical patent/JP5203733B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、記憶するデータベースを各々有する複数のデータベースサーバと接続されて分散データベースを構成し、各データベースにデータを割り当てるコーディネータサーバ、データ割当方法及びプログラムに関する。
近年では、巨大なデータに対応するため、複数のデータベースから構成される分散データベースが構築されている。このような分散データベースでは、データを複数のデータベースに分割配置する必要がある。データを分割配置する手法としては、キーレンジ分割、ハッシュ分割などが知られている(例えば、特許文献1〜2参照)。キーレンジ分割やハッシュ分割では、テーブルの1カラム値を使用する場合と、表の複数のカラム値を使用する場合とがある。
キーレンジ分割とは、分割に使用するキーの値をあらかじめ決めておき、その値に割り当てられたデータベースにデータを分割格納するというものである。データの格納先を分割することで、データの検索処理を並列化し、スループットの向上を図る。例えば、大量の売上データを扱う場合に、年月日の「月」をキーにして別々のデータベース(ディスク)に格納することで、並列処理を行う際のスループット向上を図る。
このようにしてデータの分割(データ分割)を行うと、負荷は集中するものの、対象カラムに対する範囲条件つきの検索では無関係なデータベースにアクセスする非効率を回避することができる。さらに、対象カラムでの自然結合を含む検索では、異なるデータベース間の結合が不要となるので、性能を大幅に改善することができる。
特開平6−139119号公報 特開平6−314299号公報
しかし、分散データベースでは、均衡がとれたデータ分割を行わないと、検索時に特定のデータベースに負荷が集中する恐れがある。このため、分散化の効果を発揮することが困難である。しかし、データベースに登録されるデータの傾向の変化により、各データベースに登録されているデータのサイズは不均衡になる可能性がある。従って、事前に決められたデータ分割ルールではこのような不均衡を回避することが困難である。そのため、キーレンジを動的に変更する、ハッシュ値を変更するなどの改善手法が提案されてきた。しかし、このような改善手法では、キーレンジやハッシュ値の変更に伴うデータの移動などの処理負担が大きくなる恐れがある。
本発明は、上記に鑑みてなされたものであって、処理負担を抑えて、データベースに記憶されるデータの不均衡を回避可能なコーディネータサーバ、データ割当方法及びプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、コーディネータサーバであって、複数のデータを含むテーブルを所定の分割手法により複数のデータベースに分割して記憶させる場合に各データの登録先のデータベースの決定に用いる割当情報を、割当変更コマンドが発行された場合に変更する変更手段と、変更される前に用いられた割当情報である割当履歴情報を記憶する履歴記憶手段と、新たなデータの登録を要求する登録要求をクライアントから受信する受信手段と、前記登録要求に応じて、前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、登録先のデータベースを決定する決定手段と、決定されたデータベースを有するデータベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する送信手段とを備え、前記データは、少なくとも1つのカラムを有し、当該カラムのうち、登録先のデータベースの決定に用いられる対象のカラムが予め定められており、前記決定手段は、前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、前記複数のデータベースのうち、前記対象のカラムの値が同一であるデータを記憶している可能性のある第1データベースを少なくとも1つ割り出すデータベース割出手段と、前記第1データベースを有する第1データベースサーバに対して、前記対象のカラムの値が同一であるデータの検索を要求する検索要求を送信する要求送信手段と、前記検索要求に応じて前記第1データベースサーバが検索した結果該当したデータの件数を示すものとして送信した検索結果を受信する結果受信手段と、前記第1データベースサーバのうち、所定の件数以上を示す検索結果を送信した第2データベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する登録送信手段とを有することを特徴とする。
また、本発明は、変更手段と、複数のデータを含むテーブルを所定の分割手法により複数のデータベースに分割して記憶させる場合に各データの登録先のデータベースの決定に用いる割当情報であり、変更される前に用いられた割当情報である割当履歴情報を記憶する履歴記憶手段と、受信手段と、決定手段と、送信手段とを備えるコーディネータサーバにおいて実現される方法であって、前記データは、少なくとも1つのカラムを有し、当該カラムのうち、登録先のデータベースの決定に用いられる対象のカラムが予め定められており、前記割当情報を、割当変更コマンドが発行された場合に変更する変更ステップと、新たなデータの登録を要求する登録要求をクライアントから受信する受信ステップと、前記登録要求に応じて、前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、登録先のデータベースを決定する決定ステップと、前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、前記複数のデータベースのうち、前記対象のカラムの値が同一であるデータを記憶している可能性のある第1データベースを少なくとも1つ割り出すデータベース割出ステップと、前記第1データベースを有する第1データベースサーバに対して、前記対象のカラムの値が同一であるデータの検索を要求する検索要求を送信する要求送信ステップと、前記検索要求に応じて前記第1データベースサーバが検索した結果該当したデータの件数を示すものとして送信した検索結果を受信する結果受信ステップと、前記第1データベースサーバのうち、所定の件数以上を示す検索結果を送信した第2データベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する登録送信ステップと、決定されたデータベースを有するデータベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する送信ステップとを含むことを特徴とする。
また、本発明は、データ割当プログラムであって、上記に記載された方法をコンピュータで実行させることを特徴とする。
本発明によれば、処理負担を抑えて、データベースに記憶されるデータの不均衡を回避可能である。
以下に添付図面を参照して、この発明にかかるコーディネータサーバ、データ割当方法及びプログラムの最良な実施の形態を詳細に説明する。
[実施の形態]
(1)構成
図1は、本実施の形態にかかる分散データベースシステムの構成を例示する図である。分散データベースシステムは、アプリケーションプログラムが実行されるクライアントコンピュータ(以下、クライアントという)50と、分散データベース51とを有し、これらがネットワーク52を介して接続されて構成される。分散データベース51は1台のコーディネータサーバ60と複数台のデータベースサーバ70A〜70Cとを有する。ネットワーク52は、例えば、LAN(Local Area Network)、イントラネット、イーサネット(登録商標)又はインターネットなどである。
コーディネータサーバ60は、処理要求をクライアント50から受信すると、当該処理要求に応じてデータベースサーバ70A〜70Cに対して処理要求を行い、当該処理要求に応じて行われた処理の結果をデータベースサーバ70A〜70Cから受信し、当該処理の結果に基づいて、処理結果のデータをクライアント50に適宜送信する。
データベースサーバ70Aは、データを記憶するデータベース700Aを有し、コーディネータサーバ60からの処理要求に応じたデータをデータベース700Aから取得し、当該データからなるデータ集合を適宜加工して、その結果のデータを処理結果としてコーディネータサーバ60に送信する。データベースサーバ70Bは、データを記憶するデータベース700Bを有し、データベースサーバ70Aと同様の機能を実現させる。データベースサーバ70Cは、データを記憶するデータベース700Cを有し、データベースサーバ70Aと同様の機能を実現させる。尚、以降、データベースサーバ70A〜70Cを各々区別しない場合には、単にデータベースサーバ70と記載し、データベース700A〜700Cをを各々区別しない場合には、単にデータベース700と記載する。
ここで、クライアント50、コーディネータサーバ60及びデータベースサーバ70ののハードウェア構成について説明する。クライアント50、コーディネータサーバ60及びデータベースサーバ70は各々、装置全体の制御を行うCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、情報を表示するディスプレイ装置等の表示装置と、ユーザが各種処理要求を入力するためのキーボードやマウス等の入力装置と、ネットワーク52を介して外部のコンピュータと通信を行う通信制御装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
次に、本実施の形態において取り扱うデータについて説明する。図2は、本実施の形態において取り扱うデータを例示する図である。同図に示されるテーブルTBは、技術レポートの書誌情報を示すデータをレコード単位で記憶している。各データは、文書ID、タイトル、及び筆者の3カラムを有している。ここでは、文書IDにより複数の技術レポートを束ねており、各技術レポートに対応して同じ文書IDを有するデータが複数存在する場合がある。
このようなデータが少量である場合には、このようなテーブルTBを単一のデータベースに格納しても、データを検索して結果を返す応答時間は実用的である。しかし、データの数が増大しテーブルTBのデータサイズが巨大化すると、単一のデータベースでは、実用的な応答時間を維持するのが困難になる。ここでは、実用的な応答時間を維持するため、データを複数のデータベースに分割配置している。
図3は、テーブルTBを複数のデータベース700A〜700Cに重複無しにデータ単位で分割した例を説明する図である。ここでは、テーブルTBを水平分割した礼を示してる。尚、データ分割の手法としてキーレンジ分割、ハッシュ分割などがあるが、ここではハッシュ分割を用いるものとする。ハッシュ分割のベースとなるハッシュ関数は、データの有するカラムのうち対象となるカラム(対象カラム)に対して適用される。対象カラムはユーザが予め設定するものとする。ここでは、データの有する文書ID、タイトル及び筆者のうち、文書IDが対象カラムとして設定されるものとする。この文書ID対して適用されるハッシュ関数をハッシュ関数1[文書ID]とする。ハッシュ関数1[文書ID]は例えば以下の式(1)により表される。
Figure 0005203733
このハッシュ関数1[文書ID]は、登録対象のデータの有する文書IDがVARCHAR(20)など文字列として宣言されていると、文字を構成する文字コードを加算し、それをハッシュサイズで除算するという演算処理を表している。ハッシュサイズは、最初は、データベース700A〜700Cの個数と同数の「3」が設定されている。
例えば、文書ID「S01」「S02」「S03」に対してハッシュ関数1[文書ID]の演算処理がなされた結果は以下の通りとなる。
ハッシュ関数1[“S01”]=0
ハッシュ関数1[“S10”]=0
ハッシュ関数1[“S02”]=1
ハッシュ関数1[“S03”]=2
このハッシュ関数1[文書ID]による演算結果であるハッシュ値「0」〜「2」は、各データベース700A〜700C、即ち、各データベースサーバ70A〜70Cに1対1対応する。例えばハッシュ値「0」に対してデータベースサーバ70Aが対応し、ハッシュ値「1」に対してデータベースサーバ70Bが対応し、ハッシュ値「2」に対してデータベースサーバ70Cが対応しているものとする。従って、図2に示したデータDT1〜DT6については、図3に示されるように、データDT1,DT4,DT6がデータベース700Aに割り当てられ、データDT3,DT5がデータベース700Bに割り当てられ、データDT2がデータベース700Cに割り当てられることになる。
つまり、このようなハッシュ関数1[文書ID]を用いてハッシュ分割が行われることにより、複数のデータベース700A〜700Cに記憶される各データは、文書IDというカラムでクラスタリングされることになる。
次に、このような構成において、コーディネータサーバ60が、記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について図1を用いて説明する。以下に、コーディネータサーバ60において実現される各種機能の実体となる各部について説明する。コーディネータサーバ60は、要求受信部600と、割当履歴管理部601と、要求処理部602と、割当変更部603と、結果送信部604とを有する。要求受信部600と、要求処理部602と、割当変更部603と、結果送信部604との実体は、CPUが各種プログラムを実行することにより例えば記憶装置(例えばRAM)上に生成される。割当履歴管理部601は、例えば外部記憶装置に記憶される。
割当変更部603は、割当変更コマンドが発行された場合に、管理ツールを用いて、ハッシュ関数を変更する。割当変更コマンドは、例えば、判定関数によりデータベース700A〜700Cに各々記憶されるデータの合計サイズの均衡がとれない状態になったと判定される場合やデータベースが増設される場合などに入力装置を介してユーザから発行される。尚、管理ツールとは記憶装置や外部記憶装置に記憶される所定のプログラムモジュールである。そして、割当変更部603は、ハッシュ関数を変更した場合、ハッシュ関数の変更前に、即ち、過去の登録時に用いられたハッシュ関数及びパラメータを示す割当履歴情報と、変更後(最新)のハッシュ関数及びパラメータを示す割当情報とを割当履歴管理部601に記憶させる。
要求受信部600は、データの登録を要求する登録要求や、条件に該当するデータの検索を要求する検索要求などの処理要求をクライアント50から受信する。要求処理部602は、要求受信部600が受信した処理要求が、新たなデータの登録を要求する登録要求である場合、割当履歴管理部601に記憶された全ての割当履歴情報及び割当情報を用いて、演算処理を行い、その演算結果に応じて、データの登録先のデータベースサーバ70を選出する。そして、要求処理部602は、選出したデータベースサーバ70に対して、登録対象の新たなデータと共に当該データの登録を要求する登録要求を送信する。また、要求受信部600が受信した処理要求が、データの検索を要求する検索要求である場合、当該検索要求に応じて、データベースサーバ70に対して検索要求を行い、検索結果要求に応じてデータベースサーバ70が行った検索の結果を受信し、当該結果に対して併合や結合などの加工を適宜施して、その結果のデータ(結果データ)を生成する。
結果送信部604は、要求処理部602が生成した結果データをクライアント50に送信する。
(2)動作
次に、本実施の形態にかかるコーディネータサーバ60の行うデータ登録処理の手順について図4を用いて説明する。コーディネータサーバ60は、新たなデータの登録を要求する登録要求をクライアント50から受信すると、まず、必要なロックを確保する(ステップS1)。具体的には、各データは文書IDで水平分割されているので、コーディネータサーバ60は、文書IDの値を用いて新たなデータに対するハッシュ値を割り出し、そのハッシュ値を持つスレーブのロックポイントに対してロックをかけて、他の同一の文書IDを持つデータの登録に対して排他をかける。次いで、コーディネータサーバ60は、登録対象のデータの文章IDの値に対して、割当履歴管理部601に記憶されている全ての割当履歴情報及び割当情報によって各々示されるハッシュ関数及びパラメータを用いた演算処理を行って、当該文書IDから算出される可能性のあるハッシュ値の集合を得る(ステップS2)。そのハッシュ値はデータベースサーバと1対1対応しているので、データベースサーバ70の集合(データベースサーバ70A〜70Cの少なくとも1つ)を割り出すことができる。即ち、ハッシュ値に応じて、新たなデータの文書IDの値が同一のデータを記憶している可能性のあるデータベースサーバ70を割り出すことができる。そして、コーディネータサーバ60は、割り出されたデータベースサーバ70の集合に対して新たなデータの文書IDの値が同一のデータの検索を要求する検索要求(SQL)を発行する(ステップS3)。
当該処理要求に対してデータベースサーバ70から送信された処理結果が、該当のデータがない(0件)であることを示す場合(ステップS4:0件)、コーディネータサーバ60は、最新のハッシュ関数を用いてハッシュ値を算出し、データの登録先のデータベースサーバ70(データベースサーバ70A〜70Cのいずれか)を選出する(ステップS5)。
当該処理要求に対してデータベースサーバ70から送信された処理結果が、該当のデータが1件以上あることを示す場合(ステップS4:1件以上)、コーディネータサーバ60は、当該処理結果を送信したデータベースサーバ70(データベースサーバ70A〜70Cのいずれか)を選出する。そして、コーディネータサーバ60は、選出したデータベースサーバ70に対して新たなデータの登録を要求する登録要求(登録SQL)を発行する(ステップS6)。次いで、コーディネータサーバ60は、上述のロックを解放する(ステップS7)。
ここで、分散データベースにおいてデータベース700Dを有するデータベースサーバ70Dを1つ増設した後の状態においてデータを登録する場合について説明する。この場合、割当変更部603は、データの登録時に用いるハッシュ関数及びパラメータを変更し、変更前のハッシュ関数及びパラメータを示す割当履歴情報と、変更後のハッシュ関数及びパラメータを示す割当情報とを割当履歴管理部601に記憶させる。尚、ここでは、変更前のデータの登録時に用いられるハッシュ関数は、上述のハッシュ関数1[文書ID]と同様であるが、ハッシュ関数1[文書ID]で用いられるハッシュサイズが、「4」に変更されるものとする。従って、割当履歴管理部601には、ハッシュ関数1[文書ID]と上述のハッシュサイズ「3」とを示す割当履歴情報(割当履歴情報1とする)と、ハッシュ関数1[文書ID]とハッシュサイズ「4」とを示す割当情報とが記憶されることになる。
図5は、分散データベースにおいてデータベースサーバ70Dを1つ増設した後の状態を概念的に示す図である。このような状態において、図6に示されるような新たなデータDT10の登録を要求する登録要求をコーディネータサーバ60がクライアント50から受信した場合について説明する。この場合、コーディネータサーバ60は、上述のステップS1〜S2を行って、割当履歴情報1に示されるハッシュ関数1[文書ID]及びハッシュサイズ「3」を用いた演算処理と、割当情報によって示されるハッシュ関数1[文書ID] ハッシュサイズ「4」を用いた演算処理とを各々行う。そして、コーディネータサーバ60は、割当履歴情報1を用いた演算処理の結果ハッシュ値「0」を得て、割当情報を用いた演算処理の結果ハッシュ値「2」を得る。
ハッシュ値はデータベースサーバ70と1対1対応しているから、ステップS3では、コーディネータサーバ60は、ハッシュ値「0」に対応するデータベースサーバ70Aと、ハッシュ値「2」に対応するデータベースサーバ70Cとを割り出す。次いで、コーディネータサーバ60は、割り出したデータベースサーバ70A,70Cに対して新たなデータの文書IDの値が同一のデータの検索を要求する検索要求(SQL)を発行する。そのSQLは例えば以下のように表される。
SELECT 文書ID
FROM 技術レポート
WHERE 文書ID=”S01”
図7は、コーディネータサーバ60からデータベースサーバ70A,70Cに対して検索要求が発行された様子を例示する図である。この検索要求に応じてデータベースサーバ70Aが処理を実行すると、該当のデータがデータベース700Aに2件記憶されているため、データベースサーバ70Aは、該当のデータが2件存在することを示す処理結果をコーディネータサーバ60に送信する。同様に、検索要求に応じてデータベースサーバ70Cが処理を実行すると、該当のデータがデータベース700Cには記憶されていないため、データベースサーバ70Cは、該当のデータが存在しないことを示す処理結果をコーディネータサーバ60に送信する。
一方、コーディネータサーバ60は、データベースサーバ70A,70Cから当該処理結果を受信すると、データベースサーバ70Aから受信した処理結果が該当のデータが1件以上存在することを示すものであるから、ステップS6では、登録先のデータベースサーバとしてデータベースサーバ70Aを選出する。そして、コーディネータサーバ60は、データベースサーバ70Aに対して新たなデータの登録を要求する登録要求(登録SQL)を発行する。この結果、図6に示されるデータがデータベース700Aに登録されることになる。
次に、図5の状態で、図8に示されるような新たなデータDT20の登録を要求する登録要求をコーディネータサーバ60がクライアント50から受信した場合について説明する。コーディネータサーバ60は、上述のステップS1〜S2を行って、割当履歴情報1によって示されるハッシュ関数1[文書ID]及びハッシュサイズ「3」を用いた演算処理と、割当情報によって示されるハッシュ関数1[文書ID] 及びハッシュサイズ「4」を用いた演算処理とを各々行う。そして、コーディネータサーバ60は、割当履歴情報1を用いた演算処理の結果ハッシュ値「3」を得て、割当情報を用いた演算処理の結果ハッシュ値「3」を得る。
ステップS3で割り出されるデータベースサーバは、ハッシュ値「3」に対応するデータベースサーバ70Dとなる。次いで、コーディネータサーバ60は、割り出したデータベースサーバ70Dに対して新たなデータの文書IDの値が同一のデータの検索を要求する検索要求(SQL)を発行する。そのSQLは例えば以下のように表される。
SELECT 文書ID
FROM 技術レポート
WHERE 文書ID=”S19”
図9は、コーディネータサーバ60からデータベースサーバ70Dに対して検索要求が発行された様子を例示する図である。この検索要求に応じてデータベースサーバ70Dが処理を実行すると、該当のデータがデータベース700Dには記憶されていないため、データベースサーバ70Dは、該当のデータが存在しないことを示す処理結果をコーディネータサーバ60に送信する。
一方、コーディネータサーバ60は、データベースサーバ70Dから当該処理結果を受信すると、データベースサーバ70Dから受信した処理結果が該当のデータが1件も存在しないことを示すものであるから、ステップS5では、最新のハッシュ関数を用いた演算処理を行ってハッシュ値を得て、データの登録先のデータベースサーバ70を選出する。ここでは、コーディネータサーバ60は、上述の割当情報を用いたハッシュ関数1[文書ID]及びハッシュ値「4」による演算処理を行い、その結果ハッシュ値「3」を得る。当該ハッシュ値に対応するのはデータベースサーバ70Dである。このため、データベースサーバ70Dが選出される。そして、コーディネータサーバ60は、選出したデータベースサーバ70Dに対して新たなデータの登録を要求する登録要求(登録SQL)を発行する。この結果、図8に示されるデータDT20がデータベース700Dに登録されることになる。
図10は、図6に示したデータDT10及び図8に示したデータDT20が登録され、その後、数件のデータが登録された状態を示す図である。このような構成によれば、各データベース700A〜700Dが各々記憶しているデータの合計サイズの均衡を図ることが可能になる。このように、均衡したデータ分割を行うことができることにより、分散化の効果を発揮させることができる。即ち、データベースに登録されるデータの傾向の変化により、各合計サイズは不均衡になる可能性があり、従来、事前に決められたデータ分割ルールではそれを回避することが困難であった。本実施の形態においては、管理ツールを用いてデータベースサーバが増設される操作がなされ、データの登録時に用いるハッシュ関数及びパラメータが変更されると、コーディネータサーバ60が有する割当履歴管理部601が、ハッシュ関数及びパラメータの履歴を記憶する。そして、コーディネータサーバ60がハッシュ関数及びパラメータの履歴及び最新のハッシュ関数及びパラメータを用いて新たなデータの登録先のデータベースを選出することにより、既に記憶されているデータを移動させることなく且つ当該データの傾向に従いつつ、均衡したデータ分割を行うことができる。従って、処理負担を抑えて、データベースに記憶されるデータの不均衡を回避可能である。
次に、分散データベース51においてデータを検索する場合について説明する。まず、図3に示されるように、データベース700A〜700Cにデータが分散されている場合について説明する。図11は、データの検索を要求する検索要求(SQL)を例示する図である。同図に示されるSQLは、技術レポートの各データについて、同じ文書IDで集約して(GROUP BY)、その件数(COUNT)を文書IDとともに返す(SELECT)ことを要求している。図12は、図11に示したSQLを用いてデータを検索する処理のイメージを例示する図である。コーディネータサーバ60は、このような検索要求(SQL)をクライアント50から受信すると、SQLの構文を解析し、解析の結果に基づいて、データの検索をデータベースサーバ70に要求するためのコードを適宜生成し、生成したコードをデータベースサーバ70に送信する。そして、コーディネータサーバ60は、データベースサーバ70でコードを実行した結果得られたデータを処理結果としてデータベースサーバ70から受信すると、これらのデータを適宜加工して、その結果のデータを生成し、これを処理結果としてクライアント50に送信する。
図11に示されるSQLでは、文書IDで集約(GROUP BY)することが要求されており、一方、分散データベース51にあるデータベース700A〜700Dに記憶されているデータは文書IDでクラスタリングされている。このため、コーディネータサーバ60は、図11に示されるSQLを解析した結果、図12に示されるように、当該SQLをコードとしてそのままデータベースサーバ70に送信して、その結果得られる処理結果のデータDT30〜DT32をマージするだけで、クライアント50に送信する処理結果のデータDT33を生成することができる。
次に、図10に示されるようにデータベースサーバ70Dが増設された状態において、分散データベースにおいてデータを検索する場合について説明する。図13は、図10に示される状態において、図11に示したSQLを用いてデータを検索する処理のイメージを例示する図である。このような状態においても、コーディネータサーバ60は、上述と同様にして、図11に示されるSQLをデータベースサーバ70に送信して、その結果得られる処理結果のデータをマージするだけで、クライアント50に送信する処理結果のデータを生成することができる。
以上のような構成によれば、データ登録時に登録対象のデータと同じ文書IDのデータを検索する処理を1度行うため、データの登録時のオーバヘッドは多少増えるものの、対象カラムでの自然結合を含む検索を高速化することができると共に、データベースの分散化の効果を十分に発揮させることができる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
<変形例1>
上述した実施の形態において、コーディネータサーバ60で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、コーディネータサーバ60においてCPUが上記記録媒体から読み出して実行することにより主記憶装置(例えばRAM)上にロードされ、上記機能的構成において説明した要求受信部600と、要求処理部602と、結果送信部604とが主記憶装置上に生成される。
<変形例2>
上述した実施の形態においては、データ分割の手法として、ハッシュ分割を用いるようにしたが、これに限らず、キーレンジ分割の手法を用いても良い。この場合、割当履歴管理部601は、ハッシュ関数の履歴ではなく、キーレンジの履歴として、過去の登録時に用いられたキーレンジを示す情報として、対象カラムに対するレンジを示す割当履歴情報と、現在の登録時に用いられるキーレンジを示す情報として、対象カラムに対する最新のレンジを示す情報とを割当情報として記憶するようにすれば良い。
また、データベースに登録される対象のデータは上述のものに限らず、データが有する各カラムも上述のものに限らない。例えば、日付、所属などのカラムがあっても良い。また、対象カラムとして設定されるカラムも上述のものに限らない。
例えば、対象カラムが日付である場合、日付の範囲を対象カラムに対するレンジを示す割当情報及び割当履歴情報として取り扱い、各レンジに各データベース700を対応付けるようにすれば良い。そして、要求処理部602は、新たなデータの登録時に、割当履歴情報及び割当情報によって各々示される日付の範囲に対応するデータベース700を割り出し、割り出したデータベースサーバ70に対して当該データの有する日付の値が同一の日付のデータの検索を要求して、上述と同様にして、検索の結果該当したデータの件数に応じて、登録先のデータベース700を選出するようにすれば良い。
<変形例3>
上述の実施の形態においては、変更後(最新)のハッシュ関数及びパラメータを示す割当情報も、割当履歴情報と同様に割当履歴管理部601に記憶されるものとした。しかし、割当情報は、外部記憶装置において割当履歴管理部601とは異なる記憶領域や他の記憶装置に別途記憶するようにしても良い。
また、上述の実施の形態においては、割当変更部603は、ハッシュ関数のパラメータのみを変更するようにしたが、これに限らず、ハッシュ関数自体を変更するようにしても良いし、ハッシュ関数及びパラメータの両方を変更するようにしても良い。
<変形例4>
上述した実施の形態においては、コーディネータサーバ60は1つであるとしたが、複数あっても良く、この場合、複数のコーディネータサーバで割当履歴情報を共有するようにすれば良い。
本実施の形態にかかる分散データベースシステムの構成を例示する図である。 同実施の形態において取り扱うデータを例示する図である。 同実施の形態にかかるテーブルTBを複数のデータベース700A〜700Cに重複無しにデータ単位で分割した例を説明する図である。 同実施の形態にかかるコーディネータサーバ60の行うデータ登録処理の手順を示すフローチャートである。 同実施の形態にかかる分散データベースにおいてデータベースサーバ70Dを1つ増設した後の状態を概念的に示す図である 登録対象の新たなデータを例示する図である。 同実施の形態にかかるコーディネータサーバ60からデータベースサーバ70A,70Cに対して検索要求が発行された様子を例示する図である。 登録対象の新たなデータを例示する図である。 同実施の形態にかかるコーディネータサーバ60からデータベースサーバ70Dに対して検索要求が発行された様子を例示する図である。 図6に示したデータDT10及び図8に示したデータDT20が登録され、その後、数件のデータが登録された状態を示す図である。 データの検索を要求する検索要求(SQL)を例示する図である。 同実施の形態にかかる図11に示したSQLを用いてデータを検索する処理のイメージを例示する図である。 同実施の形態にかかる図10に示される状態において、図11に示したSQLを用いてデータを検索する処理のイメージを例示する図である。
符号の説明
50 クライアント
51 分散データベース
52 ネットワーク
60 コーディネータサーバ
70,70A,70B,70C,70D データベースサーバ
600 要求受信部
601 割当履歴管理部
602 要求処理部
603 割当変更部
604 結果送信部
700,700A,700B,700C,700D データベース

Claims (8)

  1. 複数のデータを含むテーブルを所定の分割手法により複数のデータベースに分割して記憶させる場合に各データの登録先のデータベースの決定に用いる割当情報を、割当変更コマンドが発行された場合に変更する変更手段と、
    変更される前に用いられた割当情報である割当履歴情報を記憶する履歴記憶手段と、
    新たなデータの登録を要求する登録要求をクライアントから受信する受信手段と、
    前記登録要求に応じて、前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、登録先のデータベースを決定する決定手段と、
    決定されたデータベースを有するデータベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する送信手段とを備え
    前記データは、少なくとも1つのカラムを有し、当該カラムのうち、登録先のデータベースの決定に用いられる対象のカラムが予め定められており、
    前記決定手段は、
    前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、前記複数のデータベースのうち、前記対象のカラムの値が同一であるデータを記憶している可能性のある第1データベースを少なくとも1つ割り出すデータベース割出手段と、
    前記第1データベースを有する第1データベースサーバに対して、前記対象のカラムの値が同一であるデータの検索を要求する検索要求を送信する要求送信手段と、
    前記検索要求に応じて前記第1データベースサーバが検索した結果該当したデータの件数を示すものとして送信した検索結果を受信する結果受信手段と、
    前記第1データベースサーバのうち、所定の件数以上を示す検索結果を送信した第2データベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する登録送信手段と
    を有することを特徴とするコーディネータサーバ。
  2. 前記割当情報は、前記対象のカラムに対して演算処理を行う関数及びその関数の演算に用いるパラメータを示し、
    前記変更手段は、所定の状態が生起した場合に前記割当情報によって示される前記関数及び前記パラメータのうち少なくとも一方を変更し、
    前記データベース割出手段は、
    前記対象のカラムの値に対して前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を各々用いて演算処理を行って処理結果を各々算出する算出手段と、
    算出された各処理結果を用いて、前記対象のカラムの値が同一であるデータを記憶している可能性のあるデータベースを割り出す割出手段とを有する
    ことを特徴とする請求項に記載のコーディネータサーバ。
  3. 前記所定の分割手法は、ハッシュ分割であり、
    前記割当情報は、前記対象のカラムに対して演算処理を行うハッシュ関数及びそのハッシュ関数の演算に用いるパラメータを示し、
    前記変更手段は、所定の状態が生起した場合に前記割当情報によって示される前記ハッシュ関数及び前記パラメータのうち少なくとも一方を変更し、
    前記算出手段は、前記履歴記憶手段に記憶された割当履歴情報によって示されるハッシュ関数及び変更後の割当情報によって各々示されるハッシュ関数及びパラメータを用いて演算処理を行ってハッシュ値を各々算出し、
    前記割出手段は、算出された各ハッシュ値を用いて、前記対象のカラムの値が同一であるデータを記憶している可能性のあるデータベースを割り出す
    ことを特徴とする請求項に記載のコーディネータサーバ。
  4. 前記演算処理を行って算出され得るハッシュ値は、前記複数のデータベースの各々と1対1対応しており、
    前記割出手段は、前記対象のカラムの値が同一であるデータを記憶している可能性のあるデータベースとして、算出された各ハッシュ値に対応するデータベースを割り出す
    ことを特徴とする請求項に記載のコーディネータサーバ。
  5. 前記所定の分割手法は、キーレンジ分割であり、
    前記割当情報は、前記対象のカラムに対するレンジを示し、
    前記変更手段は、所定の状態が生起した場合に前記割当情報によって示されるレンジを変更し、
    前記割出手段は、前記履歴記憶手段に記憶された割当履歴情報によって示されるレンジ及び変更後の割当情報によって示されるレンジを用いて、前記対象のカラムの値が同一であるデータを記憶している可能性のあるデータベースを割り出す
    ことを特徴とする請求項に記載のコーディネータサーバ。
  6. 前記変更手段は、前記複数のデータベースに各々記憶されるデータの合計サイズが不均衡になる状態又は新たなデータベースが増設される状態が生起した場合に前記割当情報を変更する
    ことを特徴とする請求項1乃至請求項のいずれか一項に記載のコーディネータサーバ。
  7. 変更手段と、複数のデータを含むテーブルを所定の分割手法により複数のデータベースに分割して記憶させる場合に各データの登録先のデータベースの決定に用いる割当情報であり、変更される前に用いられた割当情報である割当履歴情報を記憶する履歴記憶手段と、受信手段と、決定手段と、送信手段とを備えるコーディネータサーバにおいて実現される方法であって、
    前記データは、少なくとも1つのカラムを有し、当該カラムのうち、登録先のデータベースの決定に用いられる対象のカラムが予め定められており、
    前記割当情報を、割当変更コマンドが発行された場合に変更する変更ステップと、
    新たなデータの登録を要求する登録要求をクライアントから受信する受信ステップと、
    前記登録要求に応じて、前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、登録先のデータベースを決定する決定ステップと、
    前記履歴記憶手段に記憶された割当履歴情報及び変更後の割当情報を用いて、前記複数のデータベースのうち、前記対象のカラムの値が同一であるデータを記憶している可能性のある第1データベースを少なくとも1つ割り出すデータベース割出ステップと、
    前記第1データベースを有する第1データベースサーバに対して、前記対象のカラムの値が同一であるデータの検索を要求する検索要求を送信する要求送信ステップと、
    前記検索要求に応じて前記第1データベースサーバが検索した結果該当したデータの件数を示すものとして送信した検索結果を受信する結果受信ステップと、
    前記第1データベースサーバのうち、所定の件数以上を示す検索結果を送信した第2データベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する登録送信ステップと
    決定されたデータベースを有するデータベースサーバに対して、前記新たなデータの登録を要求する登録要求を送信する送信ステップと
    を含むことを特徴とするデータ割当方法。
  8. 請求項に記載された方法をコンピュータで実行させることを特徴とするデータ割当プログラム。
JP2008022761A 2008-02-01 2008-02-01 コーディネータサーバ、データ割当方法及びプログラム Expired - Fee Related JP5203733B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008022761A JP5203733B2 (ja) 2008-02-01 2008-02-01 コーディネータサーバ、データ割当方法及びプログラム
US12/361,708 US8271523B2 (en) 2008-02-01 2009-01-29 Coordination server, data allocating method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008022761A JP5203733B2 (ja) 2008-02-01 2008-02-01 コーディネータサーバ、データ割当方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009181546A JP2009181546A (ja) 2009-08-13
JP5203733B2 true JP5203733B2 (ja) 2013-06-05

Family

ID=40932636

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008022761A Expired - Fee Related JP5203733B2 (ja) 2008-02-01 2008-02-01 コーディネータサーバ、データ割当方法及びプログラム

Country Status (2)

Country Link
US (1) US8271523B2 (ja)
JP (1) JP5203733B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4977502B2 (ja) * 2007-03-16 2012-07-18 日本電気株式会社 分散データベースシステム、検索サーバ、検索方法、およびプログラム
US8959050B2 (en) 2009-06-15 2015-02-17 Oracle International Corporation Mechanism for synchronizing OLAP system structure and OLTP system structure
US8156150B2 (en) * 2009-06-15 2012-04-10 Oracle International Corporation Fusion general ledger
JP5430301B2 (ja) * 2009-09-07 2014-02-26 三菱電機株式会社 通信装置管理システムおよびデータベースアクセス処理方法
JP5006472B2 (ja) * 2009-12-04 2012-08-22 隆敏 柳瀬 表検索装置、表検索方法、及び、表検索システム
JP5172931B2 (ja) 2010-10-25 2013-03-27 株式会社東芝 検索装置、検索方法および検索プログラム
US20140059000A1 (en) * 2011-04-08 2014-02-27 Hitachi, Ltd. Computer system and parallel distributed processing method
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8572231B2 (en) * 2011-07-14 2013-10-29 Google Inc. Variable-length nonce generation
JP5919529B2 (ja) * 2011-09-16 2016-05-18 パナソニックIpマネジメント株式会社 データ格納システム
JP6226599B2 (ja) * 2013-07-17 2017-11-08 株式会社東芝 データベース・システム
US9875263B2 (en) * 2014-10-21 2018-01-23 Microsoft Technology Licensing, Llc Composite partition functions
WO2017104012A1 (ja) * 2015-12-16 2017-06-22 株式会社日立製作所 データ管理システム及び方法
WO2017203698A1 (ja) * 2016-05-27 2017-11-30 三菱電機株式会社 登録先決定装置、登録装置、秘匿検索システム、登録先決定方法及び登録先決定プログラム
FR3090929B1 (fr) * 2018-12-20 2021-07-02 Amadeus Sas Actualisation de multiples enregistrements de données
US11423049B2 (en) 2020-05-11 2022-08-23 Google Llc Execution-time dynamic range partitioning transformations

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139119A (ja) 1992-10-28 1994-05-20 Hitachi Ltd データベース管理システムおよびデータベース管理方法
JP3367140B2 (ja) 1993-04-28 2003-01-14 株式会社日立製作所 データベース管理方法
JP4199888B2 (ja) * 1999-11-15 2008-12-24 株式会社日立製作所 データベース管理方法
JP4183400B2 (ja) * 2001-06-27 2008-11-19 株式会社日立製作所 データベースシステムとデータベース管理方法およびプログラム
US8392366B2 (en) * 2006-08-29 2013-03-05 Microsoft Corporation Changing number of machines running distributed hyperlink database

Also Published As

Publication number Publication date
US20090198657A1 (en) 2009-08-06
US8271523B2 (en) 2012-09-18
JP2009181546A (ja) 2009-08-13

Similar Documents

Publication Publication Date Title
JP5203733B2 (ja) コーディネータサーバ、データ割当方法及びプログラム
JP6281225B2 (ja) 情報処理装置
US12072939B1 (en) Federated data enrichment objects
CN113767377B (zh) 针对分布式存储系统中的变化检测的动态散列函数组合
US20130297788A1 (en) Computer system and data management method
WO2020087082A1 (en) Trace and span sampling and analysis for instrumented software
JP2005115514A (ja) データベース検索システム及びその検索方法並びにプログラム
US8209440B2 (en) Device-configuration-information optimum arrangement method and device-configuration-information optimum arrangement system
EP2235651A2 (en) Distributed indexing of file content
CN113474764A (zh) 共享数据库对象上的流
US12436963B2 (en) Retrieving data identifiers from queue for search of external data system
US20180101622A1 (en) Perform graph traversal with graph query language
US20210318994A1 (en) Extensible streams for operations on external systems
US11836146B1 (en) Storing indexed fields per source type as metadata at the bucket level to facilitate search-time field learning
JP5844895B2 (ja) データの分散検索システム、データの分散検索方法及び管理計算機
JP6069503B2 (ja) 系列データ並列分析基盤およびその並列分散処理方法
US8756246B2 (en) Method and system for caching lexical mappings for RDF data
US9898518B2 (en) Computer system, data allocation management method, and program
US11593345B1 (en) Accelerating change data capture determination using row bitsets
US11720591B1 (en) Virtual metrics
CN113728304A (zh) 分布式存储系统中的粒度改变检测
US8538935B2 (en) One-to-one and one-to-many relationships in databases
US11892988B1 (en) Content pack management
JP6634938B2 (ja) 分析支援方法、分析支援プログラムおよび分析支援装置
US10956506B1 (en) Query-based data modification

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

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: 20130122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130214

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

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees