JP7412974B2 - コンピュータ、データベースシステム、計算システム、計算方法、プログラム、及び記憶媒体 - Google Patents

コンピュータ、データベースシステム、計算システム、計算方法、プログラム、及び記憶媒体 Download PDF

Info

Publication number
JP7412974B2
JP7412974B2 JP2019210374A JP2019210374A JP7412974B2 JP 7412974 B2 JP7412974 B2 JP 7412974B2 JP 2019210374 A JP2019210374 A JP 2019210374A JP 2019210374 A JP2019210374 A JP 2019210374A JP 7412974 B2 JP7412974 B2 JP 7412974B2
Authority
JP
Japan
Prior art keywords
partitions
nodes
information
node
arrangement
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.)
Active
Application number
JP2019210374A
Other languages
English (en)
Other versions
JP2020113254A (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 US16/743,016 priority Critical patent/US11182362B2/en
Priority to PH12020050013A priority patent/PH12020050013A1/en
Publication of JP2020113254A publication Critical patent/JP2020113254A/ja
Application granted granted Critical
Publication of JP7412974B2 publication Critical patent/JP7412974B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明の実施形態は、コンピュータ、データベースシステム、計算システム、計算方法、プログラム、及び記憶媒体に関する。
データベースを複数のパーティションに分割し、複数のノードで記憶するデータベースシステムがある。このデータベースシステムにおける複数のパーティションの配置については、処理負荷等のばらつきに対して、頑強であることが望まれる。
国際公開WO2015/029139
本発明が解決しようとする課題は、より頑強なパーティション配置を計算できる、コンピュータ、データベースシステム、計算システム、計算方法、プログラム、及び記憶媒体を提供することである。
実施形態に係るコンピュータは、データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算を実行する。前記コンピュータは、前記複数のノードにより収集された、前記複数のパーティション及び前記複数のノードに関する統計情報を受け付け、前記統計情報と、前記統計情報の統計的ばらつきに対応する摂動情報と、を用いて変動情報を生成し、前記統計情報及び前記変動情報を用いて、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの配置を計算する。
実施形態に係る計算装置が適用されるデータベースシステムのハードウェア構成を表す図である。 実施形態に係る計算装置が適用されるデータベースシステム10の機能構成を表す図である。 データ保持表の一例を表す図である。 現役割表の一例を表す図である。 次役割表の一例を表す図である。 目標役割表の一例を表す図である。 データストア部に記憶されているデータ集合の一例を表す図である。 レプリケーション処理を説明するための図である。 短期同期処理を説明するための図である。 長期同期処理を説明するための図である。 ノードに割り当てられる役割の遷移を表す図である。 実施形態に係るデータベースシステムの機能構成を表す図である。 キャパシティの観測結果の一例を表す図である。 定式化された混合整数線形計画問題の一例を表す図である。 実施形態に係るデータベースシステムにおける処理の一部を表すフローチャートである。 実施形態に係る計算装置における処理の一部を表すフローチャートである。 定式化された整数線形計画問題の一例を表す図である。 実施形態に係る計算装置による出力例である。 実施形態に係る計算装置における処理の一部を表すフローチャートである。
以下に、本発明の各実施形態について図面を参照しつつ説明する。
また、本願明細書と各図において、既に説明したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
図1は、実施形態に係る計算装置が適用されるデータベースシステムのハードウェア構成を表す図である。
データベースシステム10は、外部のコンピュータであるクライアントから、データベースに対するアクセス要求(例えば、参照、更新、又は登録)をネットワークを介して受信する。データベースシステム10は、受信したアクセス要求に応じた処理を実行する。
データベースシステム10は、複数のノード30(データベースノード)を備える。複数のノード30は、ネットワークを介して互いに接続される。換言すると、データベースシステム10は、シェアードナッシング型の構成を有する。
データベースシステム10では、複数のノード30にデータ集合が分散されている。データベースシステム10は、外部のコンピュータであるクライアントからは、一つのデータベースとしてアクセスされる。
データベースシステム10は、例えば、キーとバリューとのペアからなる単純なデータモデルを有する。データベースシステム10では、キーバリュー型データベースがキーによりシャーディングされ、分散化されていても良い。シャーディングは、データをより小さなデータに分割し、複数のノードに自動的に分散して保存する技術である。すなわち、データベースシステム10は、分散キーバリュー型データベースであっても良い。
分散キーバリュー型データベースをシェアードナッシング型のデータベースシステムに適用し、データベースシステム10を構築することで、データベースシステム10のスケールアウト及び大規模化が容易となる。
各ノード30は、互いにハードウェア的に独立したコンピュータである。各ノード30は、クライアントからのアクセス要求を独立に受け付け、アクセス要求に応じた処理を独立して実行できる。
各ノード30は、一例として、CPU(Central Processing Unit)12、メモリ13、通信I/F14、及びストレージI/F15を含む。各ノード30は、ストレージI/F15を介して外部記憶装置16に接続される。外部記憶装置16は、ノード30の内部に設けられていてもよい。
データベースシステム10は、データベースをパーティショニングにより複数に分割して記憶する。パーティショニングは、データベースを複数に分割し、分割したそれぞれのデータ集合(パーティションと呼ばれる。)を複数のノードに分散して記憶させる技術である。パーティショニングを適用することで、各ノードに記憶させるデータ集合を小さくできる。これにより、クライアントからのアクセスを複数のノードに分散させることができる。パーティションの数は、予め定められている。データベースの分割方法は、任意である。
各ノード30には、各パーティションに対する役割が割り当てられる。役割は、オーナー、バックアップ、又は“無し”の何れかである。“無し”は、オーナーとバックアップのいずれの役割も担わないことを意味する。
例えば、複数のパーティションの1つに対して、複数のノード30の1つには、オーナーとしての役割が割り当てられる。複数のパーティションの別の1つに対して、複数のノード30の1つには、オーナーとしての役割が割り当てられる。複数のパーティションの前記1つに対して、オーナーとしての役割が割り当てられた複数のノード30の前記1つは、複数のパーティションの前記別の1つに対して、オーナーとしての役割が割り当てられた複数のノード30の前記別の1つと、異なっていても良い。
同様に、複数のパーティションの1つに対して、複数のノード30の1つ以上には、バックアップとしての役割が割り当てられる。複数のパーティションの別の1つに対して、複数のノード30の1つ以上には、バックアップとしての役割が割り当てられる。複数のパーティションの前記1つに対して、バックアップとしての役割が割り当てられた複数のノード30の前記1つ以上は、複数のパーティションの前記別の1つに対して、バックアップとしての役割が割り当てられた複数のノード30の前記別の1つ以上と、異なっていても良い。
オーナーは、対応するパーティションのデータ集合を記憶する。オーナーは、対応するパーティションのデータ集合へのクライアントからのアクセス要求を受け付け、処理する。バックアップは、対応するパーティションのデータ集合を記憶する。バックアップは、例えばオーナーに障害が発生したときに、オーナーに代わって役割を担えるように、オーナーをバックアップする。バックアップが割り当てられることで、オーナーのノードに障害が生じたとしても、バックアップのノードを用いてサービスを継続できる。オーナー及びバックアップは、それぞれマスター及びスレーブと呼ばれることもある。
複数のノード30は、互いに通信をして何れか1つのノード30を管理装置20として選任する。選任された1つのノード30は、管理装置20として機能する。
複数のノード30は、例えば、データベースの起動時に所定のアルゴリズムで1つの管理装置20を選任する。既に選任されていたノード30が障害により管理装置20として機能できなくなったときには、複数のノード30は、所定のアルゴリズムで新たなノード30を管理装置20として選任する。
図面及び説明において、管理装置20を、便宜的にノード30とは分離して図示又は説明することがある。しかし、管理装置20は、通常のノード30としての動作も同時に実行する。すなわち、選任されたノード30は、クライアントからのアクセス要求を受け付けてアクセス要求に応じた処理も、同時に実行する。
管理装置20は、複数のノード30を管理する。管理装置20は、例えば、各パーティションついて、オーナーとするノード30及びバックアップとするノード30を割り当てる。
管理装置20は、予め定められた冗長度に基づき、バックアップとするノード30を割り当てる。冗長度は、バックアップとして機能するノードの数を表す。冗長度は、一例として、2又は3に設定される。
データベースシステム10では、何れかのノード30に障害が発生したときには、障害が発生したノード30を切り離すことができる。また、データベースシステム10に新たにノード30を追加し、データベースの性能を向上させることができる。
図2は、実施形態に係る計算装置が適用されるデータベースシステム10の機能構成を表す図である。
管理装置20は、表記憶部21と、割当部22と、計算部23と、クラスタ管理部24とを有する。割当部22、計算部23、及びクラスタ管理部24は、管理装置20のCPU12がプログラムを実行することにより実現される。割当部22、計算部23、及びクラスタ管理部24の少なくとも何れかは、ハードウェア回路で実現されてもよい。表記憶部21は、管理装置20のメモリ13又は外部記憶装置16により実現される。
図3は、データ保持表の一例を表す図である。
図4は、現役割表の一例を表す図である。
図5は、次役割表の一例を表す図である。
図6は、目標役割表の一例を表す図である。
表記憶部21は、データ保持表、現役割表、次役割表、及び目標役割表を記憶する。
データ保持表は、各パーティションに対する、各ノード30のタイムスタンプを格納する。タイムスタンプは、対応するノード30が記憶している対応するパーティションのデータ集合の更新履歴を表す。タイムスタンプは、一例として、データ集合が更新される毎にインクリメントされる値である。従って、あるパーティションにおけるタイムスタンプの最も大きいノード30は、そのパーティションの最新のデータ集合を記憶しているノード30であることを意味する。
データ保持表は、例えば図3に表すように、ノード30を特定する行と、パーティションを特定する列と、を含む。データ保持表の各セルは、行により特定されるノード30が記憶している、列により特定されるパーティションのデータ集合のタイムスタンプを格納する。
現役割表は、各パーティションに対する、各ノード30に割り当てられたデータベースでの役割を格納する。具体的には、現役割表は、各パーティションに対する各ノード30の役割を格納する。
現役割表は、例えば図4に表したように、ノード30を特定する行と、パーティションを特定する列と、を含む。現役割表の各セルは、その列により特定されるパーティションに対する、その行により特定されるノード30に割り当てられた役割を格納する。図面には、オーナーとしての役割が割り当てられていることを“OWNER”又は“O”と記載している。バックアップとしての役割が割り当てられていることを“BACKUP”又は“B”と記載している。オーナーにもバックアップにも割り当てられていないことを、“NONE”もしくは“N”と記載し、又は空白としている。
次役割表は、各パーティションに対する、各ノード30に次に割り当てられる役割を格納する。次に割り当てられる役割は、オーナー、バックアップ、又は“無し”の何れかである。次役割表は、例えばノード30に障害が発生したとき、又は新たなノード30が追加されたときに、現役割表と置き換えられる。
次役割表は、例えば図5に表したように、ノード30を特定する行と、パーティションを特定する列と、を含む。次役割表の各セルは、その列により特定されるパーティションに対する、その行により特定されるノード30に割り当てられた次の役割を格納する。
目標役割表は、各パーティションに対する、各ノード30に割り当てられたバックアップの候補としての役割を格納する。バックアップの候補は、将来、そのパーティションに対して、そのノード30がオーナー又はバックアップとしての役割を担うための準備をする役割である。バックアップの候補に割り当てられたノード30は、将来、オーナーとなってもよい。
目標役割表は、例えば図6に表したように、ノード30を特定する行と、パーティションを特定する列と、を含む。目標役割表の各セルは、その列により特定されるパーティションに対する、その行により特定されるノード30に割り当てられたバックアップの候補としての役割を格納する。図面において、“MID-BACKUP”又は“M”の記載は、バックアップの候補としての役割が割り当てられていることを示す。空白のセルは、バックアップの候補として割り当てられていないことを示す。
割当部22は、各パーティションに対して、オーナーとなるノード30、及びバックアップとなるノード30を割り当てる。割り当ては、各ノード30の状況の変更に応じて実行される。例えば、何れかのノード30で障害が発生すると、割当部22は、障害が発生したノード30を除いて、オーナーとなるノード30、及びバックアップとなるノード30を再度割り当てる。
新たなノード30が追加されると、割当部22は、各パーティションに対して、新たなノード30を含めて、オーナーとなるノード30、及びバックアップとなるノード30を再度割り当てる。
バックアップの候補として割り当てられたノード30へのデータ集合の送信が完了すると、オーナー又はバックアップとなることができるノード30が新たに発生する。このとき、割当部22は、各パーティションに対して、オーナーとなるノード30及びバックアップとなるノード30を再度割り当てる。
割当部22は、各パーティションに対して、少なくともオーナーが存在するように、各ノード30に役割を割り当てる。また、割当部22は、予め定められた範囲内の冗長度を有するように、各パーティションに対してオーナーとなるノード30及びバックアップとなるノード30を割り当てる。この割り当ては、少なくともデータベースを機能させることを条件として、実行される。これにより、何れかのノード30に障害が発生しても、少なくともデータベースを機能させることができる可能性を高めることができる。
割当部22は、オーナー及びバックアップが各ノード30に分散するように、各パーティションに対して、オーナーとなるノード30及びバックアップとなるノード30を割り当てる。この割り当ては、少なくともデータベースが機能し、且つ予め定められた範囲内の冗長度を有することを条件として、実行される。これにより、割当部22は、各ノード30の処理の負荷を均等とすることができる。
計算部23は、データ配置を計算する。データ配置は、クライアントからの要求を複数のノード30でより効率的に処理でき、且つ何れのノード30でも障害が発生しないように、計算される。計算部23による処理については、後述する。
図2の例では、実施形態に係る計算装置の機能は、計算部23として管理装置20が備える。換言すると、管理装置20が、計算装置(第1計算装置)としても機能する。図2の例の他に、実施形態に係る計算装置は、管理装置20及び複数のノード30とネットワークを介して接続されるコンピュータであっても良い。ここでは、管理装置20が計算装置としての機能を備える場合について説明する。
クラスタ管理部24は、各ノード30とネットワークを介してメッセージをやり取りする。クラスタ管理部24は、メッセージに基づき、各ノード30を管理する。例えば、クラスタ管理部24は、一定時間毎に、ハートビートと呼ばれるメッセージを各ノード30とやり取りする。クラスタ管理部24は、何れかのノード30からハートビートの返信が無いとき、そのノード30で障害が発生したと判断する。
クラスタ管理部24は、定期的に、各ノード30からデータ保持表を受信する。クラスタ管理部24は、全てのノード30から受信したデータ保持表をまとめて表記憶部21に記憶させる。クラスタ管理部24は、何れかのノード30からデータ保持表が受信できないとき、そのノード30で障害が発生したと判断する。
クラスタ管理部24は、起動時に、割当部22に次役割表を算出させる。クラスタ管理部24は、算出させた次役割表を各ノード30に配布する。この配布により、割り当てられた役割に応じた動作が各ノード30に指示される。
クラスタ管理部24は、定期的に、割当部22に次役割表を算出させる。クラスタ管理部24は、算出させた次役割表が現役割表から変化したとき、算出させた次役割表を各ノード30に配布する。この配布により、新たに割り当てられた役割に応じた動作が各ノード30に指示される。クラスタ管理部24は、次役割表を配布後、表記憶部21に記憶されている現役割表を、次役割表の内容に更新する。
例えば、何れかのノード30に障害が発生したとき、新たなノード30の追加があったとき、又は、バックアップとして割り当て可能なノード30が発生したとき、割当部22により算出された次役割表は、現役割表から変化する。バックアップとして割り当て可能なノード30は、上述した通り、候補として割り当てられたノード30へのデータ集合の送信が完了したときに、発生する。クラスタ管理部24は、変化した次役割表を、各ノード30に配布する。
各ノード30は、データストア部31と、表記憶部32と、アクセス処理部33と、ノード管理部34と、転送部35と、収集部36と、を含む。アクセス処理部33、ノード管理部34、及び転送部35は、ノード30のCPU12がプログラムを実行することにより実現される。アクセス処理部33、ノード管理部34、及び転送部35の少なくとも一部は、ハードウェア回路で実現されてもよい。データストア部31及び表記憶部32は、ノード30のメモリ13又は外部記憶装置16により実現される。
図7は、データストア部に記憶されているデータ集合の一例を表す図である。
データストア部31は、自ノードが現役割表によりオーナー又はバックアップに割り当てられたパーティションのデータ集合を記憶する。例えば、図7に表したように、3つに分割されたパーティション#1~#3のうち、自ノードが、パーティション#1に対してオーナーに割り当てられ、パーティション#3に対してバックアップに割り当てられている。データストア部31は、パーティション#1及びパーティション#3のデータ集合を記憶する。
ノード30は、目標役割表によりバックアップの候補に割り当てられたパーティションについては、そのパーティションのオーナーに割り当てられたノード30からデータ集合を受信する。データストア部31は、オーナーのノード30から受信済みのデータ集合の少なくとも一部を記憶する。
表記憶部32は、データ保持表の自ノードに対応する部分を記憶する。表記憶部32は、現役割表、次役割表及び目標役割表を記憶する。現役割表は、次役割表を受信すると、次役割表の内容に書き換えられる。目標役割表は、定期的に受信する目標役割表が変化すると、変化後の内容に書き換えられる。
アクセス処理部33は、クライアントからのアクセス要求をネットワークを介して受信する。アクセス処理部33は、各パーティションに対して、現役割表により自ノードに対して割り当てられた役割に応じた処理を実行する。
具体的には、アクセス処理部33は、現役割表によりオーナーとして割り当てられたパーティションに対する、クライアントからのアクセス要求を受け付ける。アクセス処理部33は、そのアクセス要求に応じた処理を実行する。例えば、アクセス処理部33は、参照要求を受け付けると、そのパーティションのデータ集合の中の対応するデータを読み出してクライアントに送信する。アクセス処理部33は、更新要求を受け付けると、そのパーティションのデータ集合の対応するデータを更新する。アクセス処理部33は、登録要求を受け付けると、そのパーティションのデータ集合に新たなデータを登録する。
アクセス処理部33は、一連のアクセス要求を含むトランザクションを受け付けてもよい。アクセス処理部33は、クライアントからの一連のアクセス要求をトランザクション処理により実行する。
図8は、レプリケーション処理を説明するための図である。
アクセス処理部33は、更新要求及び登録要求を処理すると、現役割表によりそのパーティションについてバックアップに割り当てられたノード30との間でレプリケーション処理を実行する。レプリケーション処理とは、バックアップに割り当てられたノード30に、オーナーに割り当てられたノード30に記憶されているデータ集合のレプリカ(複製)を生成するための処理である。
具体的には、図8に示されるように、アクセス処理部33は、自ノードがオーナーに割り当てられたパーティションに対する更新又は登録の要求を受け付けると、同一のアクセス要求をバックアップとして割り当てられた他のノード30へと送信する。他のノード30のアクセス処理部33は、バックアップとして割り当てられたパーティションに対する、オーナーとして割り当てられたノード30から更新又は登録の要求を受け付ける。他のノード30のアクセス処理部33は、その要求に応じた更新又は登録の処理を実行する。
アクセス処理部33は、レプリケーション処理により、オーナーとして割り当てられたノード30と、バックアップとして割り当てられたノード30と、の間でデータ集合の同期を取ることができる。
オーナーとして割り当てられたノード30のアクセス処理部33は、レプリケーション処理を実行するときに、一連のアクセス要求を含むトランザクションを送信してもよい。バックアップとして割り当てられたノード30のアクセス処理部33は、レプリケーション処理をトランザクション処理により実行する。
アクセス処理部33は、更新要求及び登録要求を処理したときに、表記憶部32に記憶されたデータ保持表の対応するパーティションのタイムスタンプを更新する。
図9は、短期同期処理を説明するための図である。
ノード管理部34は、管理装置20のクラスタ管理部24とネットワークを介してメッセージをやり取りする。ノード管理部34は、クラスタ管理部24からハートビートと呼ばれるメッセージを受信したことに応じて、自ノードに障害が発生していければ応答メッセージを送信する。ノード管理部34は、定期的に、表記憶部32に記憶されているデータ保持表をクラスタ管理部24へと送信する。
ノード管理部34は、クラスタ管理部24から次役割表を受信し、受信した次役割表を表記憶部32に記憶させる。ノード管理部34は、次役割表を受信すると、短期同期処理を実行する。短期同期処理は、図9に表したように、次役割表により割り当てられた役割で各ノード30を動作させるために実行される。短期同期処理は、クライアントからのアクセス要求に応じた処理を一時的に中断して実行される。
具体的には、ノード管理部34は、各パーティションに対して、次役割表により示された役割で各ノード30を動作させるために、アクセス処理部33にレプリケーション処理と同様の処理を実行させる。これにより、各パーティションに対して、オーナーとして割り当てられたノード30と、バックアップとして割り当てられたノード30と、の間のデータ集合が、同期される。データ集合の同期後、ノード管理部34は、アクセス処理部33に、各パーティションに対する次役割表により割り当てられた新たな役割に応じた処理を実行させる。
ノード管理部34は、短期同期処理が完了すると、現役割表の内容を次役割表の内容に更新する。以後、アクセス処理部33は、クライアントからのアクセス要求を受け付けることができる。
ノード管理部34は、クラスタ管理部24から目標役割表を定期的に受信し、受信した目標役割表を表記憶部32に記憶させる。
図10は、長期同期処理を説明するための図である。
転送部35は、長期同期処理を実行する。長期同期処理は、図10に表したように、目標役割表により割り当てられた役割で各ノード30を動作させるために実行される。長期同期処理は、クライアントからのアクセス要求に対する処理を中断させずに実行される。具体的には、転送部35は、パーティションのデータ集合を、他のノード30に送信する。送信されるデータ集合は、自ノードが現役割表によりオーナーとして割り当てられたパーティションのデータ集合である。他のノード30は、目標役割表によりバックアップの候補として割り当てられており且つ現役割表によりオーナーにもバックアップにも割り当てられていないノード30である。この処理は、アクセス要求に対する処理を中断させずに実行される。
転送部35は、パーティションのデータ集合を、他のノード30から受信する。受信するデータ集合は、自ノードが目標役割表によりバックアップの候補として割り当てられており且つ現役割表によりオーナーにもバックアップにも割り当てられていないパーティションのデータ集合である。他のノード30は、現役割表によりオーナーとして割り当てられたノード30である。この処理は、アクセス要求に対する処理を中断させずに実行される。
転送部35は、長期同期処理の実行により、オーナーに割り当てられたノード30に記憶されたデータ集合のレプリカを、オーナー又はバックアップに割り当てられていないノード30に記憶させることができる。これにより、転送部35は、長期同期処理の後に、オーナー又はバックアップとなることができるノード30を新たに生成することができる。
長期同期処理の実行時に、転送部35は、オーナーに割り当てられたパーティションのデータ集合を、バックアップの候補として割り当てられたノード30に送信する。この処理は、アクセス処理部33によるトランザクションの実行を妨害しないように、バックグラウンドで実行される。転送部35は、バックアップの候補として割り当てられたパーティションのデータ集合を、バックグラウンドで、オーナーに割り当てられたノード30から受信する。
バックグラウンドでの処理とは、一例として、ノード30が複数のCPU12を備えるときには、トランザクション処理を実行していない一部のCPU12を用いて実行する処理である。また、バックグラウンドでの処理とは、別の一例として、CPU12が時分割処理をしているときには、CPU12がトランザクション処理を実行していない一部の時間帯で実行する処理である。これにより、転送部35は、クライアントからのアクセス要求に対する応答速度等の低下を抑制しつつ、長期同期処理を実行できる。
転送部35は、パーティションのデータ集合を、他のノード30に送信してもよい。送信されるデータ集合は、現役割表で自ノードがバックアップに割り当てられたパーティションのデータ集合である。他のノード30は、目標役割表によりバックアップの候補に割り当てられており且つオーナーにもバックアップにも割り当てられていないノード30である。この処理は、他のノード30から同一のデータ集合が送信されていないことを条件として実行される。
図11は、ノード30に割り当てられる役割の遷移を表す図である。
ノード30は、各パーティションに対して、“オーナー”、“バックアップ”もしくは“バックアップの候補”が割り当てられた状態、又は、何れの役割も割り当てられていない“無し”状態のいずれかに遷移する。
ノード30は、“無し”状態と“オーナー”状態との間を、短期同期処理により相互に遷移する。ノード30は、“オーナー”状態と“バックアップ”状態との間を、短期同期処理により相互に遷移する。ノード30は、“バックアップ”状態から“無し”状態へと、短期同期処理により遷移する。
ノード30は、“無し”状態と“バックアップの候補”状態との間を、長期同期処理により相互に遷移する。そして、ノード30は、“バックアップの候補”状態から“バックアップ”状態へと、短期同期処理により遷移する。
上述した各要素のより具体的な動作としては、例えば、国際公開WO2015/029139に記載された動作を適用できる。
図12は、実施形態に係るデータベースシステムの機能構成を表す図である。
図12に表したように、計算部23は、主に、データ配置の探索と、探索の開始決定と、を実行する。収集部36は、情報の収集と、摂動情報の選定と、を実行する。
収集部36が情報の収集及び摂動情報の選定を実行すると、ノード管理部34からクラスタ管理部24へ、情報が送信される。計算部23は、探索の開始を決定すると、送信された情報を用いて、データ配置を探索する。データ配置の探索では、よりデータベースシステム10の性能を向上でき、且つデータベースシステム10をより頑強にできるよう、複数のパーティションの配置が計算される。
情報の収集について説明する。
収集部36は、自ノード30と、自ノード30が記憶する複数のパーティションと、に関する統計情報を収集する。統計情報は、計算部23による計算に用いられる。統計情報は、例えば、自ノード30の各パーティションへのアクセス頻度、自ノード30の各パーティションのサイズ、自ノード30と他ノード30との間の単位データサイズあたりの移動時間、及び自ノード30のキャパシティ(処理能力)を含む。収集部36は、統計情報を、一定時間毎に収集する。
例えば、時刻tにおける自ノード30のパーティションpへのアクセス頻度を、r とする。時刻tにおける自ノード30のパーティションpのデータサイズを、m とする。時刻tにおいてパーティションの単位データサイズをノード30同士の間で移動するのに必要な時間を、cとする。収集部36は、例えば、時刻tにおける統計情報を、ベクトルv=(r ,r ,...,r ,m ,m ,...,m ,c)として収集する。
収集部36は、自ノード30において、単位時間あたりに、遅延せずに処理できたクライアントからの要求の数を、キャパシティとする。収集部36は、クライアントからの要求を、予め設定された時間内に処理できたとき、遅延せずに処理できたと判断する。収集部36は、キャパシティの統計情報から、自ノード30におけるパーティションの数とキャパシティとの関係を表すキャパシティ関数を推定する。
図13は、キャパシティの観測結果の一例を表す図である。
図13において、横軸は、1つのノード30に記憶されたパーティションの数を表す。縦軸は、1つのノード30のキャパシティである。収集部36は、図12に表したように、一定時間毎に、自ノード30におけるパーティションの数とキャパシティの観測値を収集する。典型的には、1つのノード30に記憶されたパーティションの数が増えるほど、そのノード30のキャパシティも向上する。これは、1つのノード30のパーティションの数が増えるほど、複数のパーティションのデータを結合させる際、複数のノード30同士の間のデータの移動量を減らせるためである。
収集部36は、観測値に基づき、自ノード30におけるパーティションの数とキャパシティとの関係を表すキャパシティ関数f(P)を推定する。収集部36は、例えば、パーティションの数とキャパシティの観測値をカーネル法を用いて回帰分析し、キャパシティ関数f(P)を推定する。
複数のノード30の少なくとも1つは、ユーザ要求を受け付ける機能を備える。この機能を備えたノード30は、外部のクライアントから送信されたユーザ要求を受け付けると、そのノード30の収集部36が統計情報に加えてユーザ要求も収集する。
ユーザ要求は、複数のパーティションの配置を実行するための許容時間を含む。許容時間は、例えば、ユーザにより予め指定された終了時刻を含む。例えば、計算部23は、指定された終了時刻までに実行可能な配置を計算する。許容時間は、開始時刻及び終了時刻を含んでいても良い。計算部23は、開始時刻から終了時刻までに実行可能な配置を計算する。
ユーザ要求は、実行タイミング及びレプリカ数(冗長度)をさらに含む。実行タイミングは、複数のパーティションの配置の計算を開始する条件を含む。実行タイミングとして、例えば、ノードが追加もしくは削除されたとき、又は処理負荷が低いときが設定される。実行タイミングとして、許容時間に含まれる開始時刻が用いられても良い。
例えば、収集部36は、データベースシステム10の起動時や所定のタイミングで、ユーザ要求に含まれる実行タイミングのみを計算部23へ送信する。計算部23は、実行タイミングの条件が満たされると、データ配置の探索の開始を決定する。
摂動情報の選定について説明する。
収集部36は、統計情報から摂動情報を生成する。摂動情報は、統計情報に含まれる統計的ばらつきに対応する。例えば、収集部36は、図13に表したように、キャパシティ関数f(P)を推定する際、分散σを算出する。この分散σの整数倍(例えば3倍)を摂動情報とする。同様に、収集部36は、各パーティションへのアクセス頻度のばらつき、各パーティションのデータサイズのばらつき、単位データサイズあたりの移動時間のばらつきに対応する摂動情報をそれぞれ生成する。
収集部36は、統計情報を収集する度に、その統計情報を用いて摂動情報を生成する。例えば、収集部36は、予め設定された数(閾値)の複数の摂動情報を保持する。生成された複数の摂動情報の数が閾値よりも多いとき、収集部36は、複数の摂動情報の一部を間引く(消去する)。
間引きの条件としては、時刻、ばらつきの大きさなどが用いられる。例えば、収集部36は、時刻が古い摂動情報から順に間引く。収集部36は、各摂動情報の大きさを計算し、相対的に小さい摂動情報を間引いても良い。この結果、より新しく且つより条件が悪い摂動情報が選定され、保持される。
ノード管理部34は、統計情報、摂動情報、及びユーザ要求を、クラスタ管理部24へ送信する。クラスタ管理部24は、複数のノード30から送信された、統計情報、摂動情報、及びユーザ要求を受信する。計算部23は、探索の開始が決定されると、統計情報、摂動情報、及びユーザ要求に基づき、複数のノード30における複数のパーティションの配置を計算する。
計算部23は、統計情報と摂動情報を用いて、変動情報を生成する。例えば、収集部36は、ある種類の統計情報に、その種類の摂動情報を加算又は減算して、変動情報を生成する。変動情報は、実際に観測された統計情報よりも条件が悪くなるように、生成される。
計算部23は、統計情報及び変動情報のそれぞれに基づいて、複数のパーティションの配置を計算する。変動情報は、変動情報に基づく複数のパーティションの配置の評価値が統計情報に基づく複数のパーティションの配置の評価値よりも悪くなるように、生成される。
例えば、計算部23は、図13に表したように、統計情報としてのキャパシティ関数f(P)から、摂動情報としての3σを減じた値を、変動情報とする。すなわち、変動情報では、統計情報に比べて、各パーティション数におけるキャパシティがより低くなる。
同様に、計算部23は、各パーティションへのアクセス頻度に関する統計情報に、アクセス頻度のばらつきに対応する摂動情報を加えることで、アクセス頻度に関する変動情報を生成する。計算部23は、各パーティションのサイズに関する統計情報に、サイズのばらつきに対応する摂動情報を加えることで、サイズに関する変動情報を生成する。計算部23は、単位データサイズあたりの移動時間の統計情報に、移動時間のばらつきに対応する摂動情報を加えることで、移動時間に関する変動情報を生成する。
計算部23は、統計情報及び変動情報に基づいて、データベースシステム10をより頑強にできる配置を計算する。具体的には、計算部23は、複数のパーティションの配置を、混合整数線形計画問題(MILP)として定式化する。計算部23は、統計情報及び変動情報をそれぞれ用いて、MILPを複数回解き、より頑強な複数のパーティションの配置を探索する。
計算部23は、ソルバを用いて定式化したMILPを解く。ソルバとしては、例えば、CPLEX(登録商標)、Gurobi(登録商標)などを用いることができる。
図14は、定式化された混合整数線形計画問題の一例を表す図である。
MILPは、例えば図14で表すように定式化される。この式を解くことにより、より頑強な複数のパーティションの配置を探索する。図14において、fは、各ノードのキャパシティを表す。Pは、複数のパーティションの集合を表す。pは、複数のパーティションの1つを表す。Sは、複数のノードの集合を表す。sは、複数のノードの1つを表す。tは、タイムステップを表す。Tは、パーティションの移動のために許容された時間を表す。Mは、各ノードで使用可能な最大のメモリサイズを表す。m は、パーティションpのメモリサイズを表す。cは、各パーティションの単位サイズあたりの移動時間を表す。kは、レプリカ数を表す。omcostは、複数のノード同士の間の最大移動コストを表す。omarginは、複数のノードにおけるキャパシティの最小マージンを表す。A p,sは、ノードsにおけるパーティションpの移動を表す変数である。複数のパーティションの配置変更の前後において、パーティションpを記憶するノードsが変化するとき、A p,sは、「1」となる。パーティションpを記憶するノードsが変化しないとき、A p,sは、「0」となる。αは、ユーザにより予め設定される値である。
ここでは、分散トランザクションは、各パーティションで均等に生じるとする。各ノード30において、結合されるデータ量の割合は、等しいとする。各ノード30の性能は、等しいとする。また、各パーティションのサイズは、等しいとする。
図14に表した式では、最大移動コスト及び最小マージンを用いて表される目的関数の値(評価値)が最小となるような、複数のパーティションの配置が探索される。また、以下の制約が、制約式として設定される。複数のパーティションの配置変更中に、何れのノード30においても障害が発生しない。すなわち、最小マージンが0を下回らない。最大移動コストが、許容時間を超えない。複数のパーティションの配置変更中でも、ユーザ要求のレプリカ数が作成される。
例えば、計算部23は、以下の第1処理及び第2処理を実行し、複数のパーティションの配置を複数回計算する。
第1処理において、計算部23は、統計情報を基に、定式化したMILPにパラメータを当てはめる。計算部23は、パラメータを当てはめた式を、ソルバを用いて解く。これにより、統計情報に基づく複数のパーティションの配置(初期配置)が算出される。計算部23は、初期配置を、暫定的に、採用された配置(採用配置)とする。
計算部23は、統計情報と摂動情報を用いて、複数の変動情報を生成する。変動情報の生成後、計算部23は、複数の変動情報をそれぞれ定式化したMILPに当てはめ、目的関数の評価値が低い変動情報を抽出する。すなわち、ノード30のキャパシティが平均値よりも大きく劣っている、各パーティションへのアクセス頻度が平均値よりも大きく増加している、などの、より条件が悪い変動情報を抽出し、変動情報の候補群Pを生成する。
計算部23は、候補群Pから、一部の変動情報を無作為に抽出する。計算部23は、抽出された変動情報に含まれるデータにそれぞれ重み付けする。計算部23は、重み付けした変動情報を基に、定式化したMILPにパラメータを当てはめ、ソルバを用いて解く。これにより、複数の変動情報の一部に基づく複数のパーティションの配置候補が算出される。
計算部23は、複数のパーティションを初期配置としたときの目的関数の評価値と、複数のパーティションを前記配置候補としたときの目的関数の評価値と、を比較する。計算部23は、初期配置の評価値が前記配置候補の評価値よりも良いときには、前記配置候補を破棄し、採用配置を変更しない。計算部23は、前記配置候補の評価値が初期配置の評価値よりも良いときには、初期配置に代えて、前記配置候補を採用配置とする。
以上の第1処理の後、計算部23は、以下の第2処理を実行する。一部の変動情報を無作為に抽出する。第1処理と同様に、計算部23は、抽出された変動情報に含まれるデータにそれぞれ重み付けし、定式化したMILPにパラメータを当てはめる。計算部23は、ソルバを用いて式を解き、複数の変動情報の別の一部に基づく複数のパーティションの別の配置候補を算出する。
計算部23は、複数のパーティションを前記配置候補としたときの目的関数の評価値と、複数のパーティションを別の配置候補としたときの目的関数の評価値と、を比較する。計算部23は、前記配置候補の評価値が前記別の配置候補の評価値よりも良いときには、前記別の配置候補を破棄し、採用配置を変更しない。計算部23は、前記別の配置候補の評価値が前記配置候補の評価値よりも良いときには、前記配置候補に代えて、前記別の配置候補を採用配置とする。
計算部23は、この第2処理を繰り替えす。繰り返しの回数は、例えば、予めユーザにより設定される。計算部23は、第2処理を繰り返した後に、採用配置として保持されている配置候補を、計算結果として出力する。
クラスタ管理部24は、計算結果を各ノード30のノード管理部34へ送信する。各ノード30の転送部35は、計算結果に応じて複数のパーティションを、複数のノード30同士の間で移動させる。これにより、計算部23により算出された複数のパーティションの配置が実現される。
計算部23による計算において、制約が厳しいときには、複数のパーティションの配置が算出できないことがある。例えば、許容時間が短すぎるとき、統計的ばらつきに対してマージンが小さすぎるとき、などは、複数のパーティションの配置が算出できない。例えば、第2処理の繰り返しにおいて一度でも複数のパーティションの配置が算出できないと、計算部23は、“解無し”を、計算の結果として出力する。計算部23により“解無し”と出力されると、例えば、“解無し”であることを示す情報とともに、新たなノード30の追加要求を示す情報が、何れかのノード30からクライアントへ送信される。計算の結果として“解無し”が出力されると、複数のパーティションの配置は変更されない。
例えば、追加要求に応じてユーザが新たなノード30をデータベースシステム10に追加すると、計算部23は、複数のパーティションの配置を再度計算する。計算から複数のパーティションの配置が得られると、その配置に応じて複数のパーティションが移動される。計算の結果として“解無し”が出力されると、新たなノード30の追加要求を示す情報がクライアントへ送信される。
図15は、実施形態に係るデータベースシステムにおける処理の一部を表すフローチャートである。
図15は、収集部36における処理を表すフローチャートである。収集部36は、クライアントから送信されたユーザ要求を収集する(ステップS1)。収集部36は、自ノード30と、自ノード30における複数のパーティションと、に関する統計情報を収集する(ステップS2)。収集部36は、キャパシティに関する統計情報を基に、キャパシティ関数を推定する(ステップS3)。収集部36は、推定したキャパシティ関数を統計情報に加える。収集部36は、統計情報から摂動情報を生成する。収集部36は、複数の摂動情報の一部を選定する(ステップS4)。
なお、ステップS1は、複数のノード30の少なくとも1つの収集部36により実行されれば良い。ステップS2~S4は、各ノード30の収集部36により実行される。収集されたユーザ要求、統計情報、及び摂動情報は、管理装置20へ送信される。
図16は、実施形態に係る計算装置における処理の一部を表すフローチャートである。
計算部23は、収集部36から送信されたユーザ要求、統計情報、及び摂動情報を受け付ける(ステップS11)。複数のパーティション配置の探索の開始が決定されると、計算部23は、探索を実行する(ステップS12)。計算部23は、解が見つかったか判断する(ステップS13)。解は、データベースシステム10の性能を向上できる、複数のパーティションの配置である。解が見つからなかったとき、計算部23は、ユーザにノード30の追加を要求する(ステップS14)。解が見つかったとき、計算部23は、解を出力する(ステップS15)。各ノード30は、解を受信すると、この解に応じて複数のパーティションを移動させる。
実施形態の効果を説明する。
例えば、データベースシステムの性能を向上させるために、複数のパーティションの配置を、過去に観測されたデータを含む統計情報のみを用いて計算する方法も考えられる。この方法では、過去に観測された平均的なデータに基づいて配置が計算される。このため、例えば、その配置を実行した後に、アクセス要求やデータ移動時間などの処理負荷が統計情報に比べて大きく増加すると、データベースシステムの性能が大きく低下、又は何れかのノード30で障害が発生する可能性がある。処理負荷等のばらつきが大きいデータベースシステムでは、配置の実行後に大きな処理負荷のばらつきが発生しても、データベースシステムの性能の低下やノード30の障害の発生を抑制できるように、配置を計算することが望ましい。
実施形態に係る計算装置は、統計情報を受け付けると、変動情報を生成する。変動情報は、統計情報と、統計情報に含まれる統計的ばらつきに対応する摂動情報と、を用いて生成される。配置の計算に変動情報を用いることで、処理負荷等のばらつきを考慮することができる。例えば、統計情報に比べて、変動情報では、各ノード30のキャパシティが低く、各パーティションへのアクセス頻度が多く、各パーティションのデータサイズが大きく、又はノード30間のデータ移動時間が長い。
変動情報を用いた複数のパーティションの配置は、統計情報のみを用いた複数のパーティションの配置に比べて、データベースシステム10の性能は低い可能性がある。しかし、変動情報を用いて計算することで、処理負荷等のばらつきが大きく生じたときでも、データベースシステムの性能の低下、ノード30の障害の発生などを抑制できる配置を得ることができる。すなわち、処理負荷等のばらつきに対して、より頑強(ロバスト)な、複数のパーティションの配置を得ることができる。
特に、工業的な分野では、IoTの普及により、センサデータやログなどを記録したデータベースが構築されている。また、工業的な分野では、センサデータやログなどが時間の経過とともに蓄積され、データサイズが増大していくため、スケールアウトが容易であり、且つデータの一貫性を保持できるシェアードナッシング型のデータベースが好適に用いられる。
このような工業的な分野におけるデータベースでは、タイムスタンプの近い時系列データを結合することが頻繁にあり、なるべく同一のノード30上に複数のパーティションをまとめて配置することが有効である。一方で、新しいタイムスタンプのデータを含むパーティションへは、古いタイムスタンプのデータを含むパーティションに比べて、アクセス頻度が高い。このため、タイムスタンプの時刻が近いデータは、複数のノード30に分散させることが有効である。1つのノード30へのアクセスが集中すると、データベースシステム10の性能が低下するためである。
また、工業的なデータベースでは、生産設備の稼働時には、処理負荷が大きくなるが、生産設備の非稼働時には、処理負荷が小さくなる。すなわち、処理負荷のばらつきが大きい。
これらの事情に鑑み、工業的な分野におけるデータベースでは、処理負荷等が大きなばらつきに対しても、データベースシステム10の性能の低下を抑制できるよう、複数のパーティションが配置されることが望ましい。
実施形態に係る計算装置によれば、変動情報を用いて複数のパーティションの配置を計算できる。このため、処理負荷等のばらつきが大きいデータベースシステムに対しても、処理負荷等のばらつきによるデータベースシステム10の性能の低下を抑制しつつ、データベースシステム10の性能を向上できる複数のパーティションの配置を得ることができる。
また、上述したように、工業的なデータベースでは、生産設備の非稼働時には、処理負荷が小さくなる。複数のパーティションの配置は、処理負荷が小さい時間帯に実行されることが望ましい。そこで、実施形態に係る計算装置は、複数のパーティションの配置を実行するための許容時間を受け付ける。計算装置は、許容時間を受け付けると、その許容時間内に実行可能な配置を計算する。これにより、処理負荷が小さい時間帯に確実に複数のパーティションの配置を実行することが可能となる。例えば、複数のパーティションの配置の実行中に大きな処理負荷が発生し、何れかのノード30で障害が発生する可能性を低減できる。
以上で説明した実施形態に係る計算装置、この計算装置を備えたデータベースシステム10、及び計算方法によれば、データベースシステム10の性能を向上でき、且つより頑強な複数のパーティションの配置を計算できる。コンピュータを実施形態に係る計算装置として動作させるためのプログラムを用いることで、データベースシステム10の性能を向上でき、且つより頑強な複数のパーティションの配置をコンピュータに計算させることができる。
実施形態に係る計算装置は、上述した計算に加えて、以下の計算を実行しても良い。ここでは、上述した例と同様に、管理装置20が計算装置(第2計算装置)としての機能を備える場合について説明する。
上述した計算によって複数のパーティションの配置が得られると、計算部23は、ある時刻(例えば現在)の配置から計算された配置への複数のパーティションの移動順序を計算する。具体的には、計算部23は、複数のパーティションの移動順序を解くための問題を、整数線形計画問題(ILP)として定式化する。計算部23は、ソルバを用いて定式化したILPを解く。ソルバとしては、例えば、CPLEX(登録商標)、Gurobi(登録商標)などを用いることができる。
図17は、定式化された整数線形計画問題の一例を表す図である。
ここで、Zを、負ではない整数(0を含む)の集合とする。B={0,1}とする。T={1,2....|T|}をスケジューリング期間とする。スケジューリング期間は、複数のパーティションの移動を実行可能な期間である。例えば、スケジューリング期間の開始時刻と終了時刻がクライアントから指定される。T={0,1,2....|T|}とする。T={1,2....|T|-t max}とする。N={1,2....|N|}をノードの集合とする。C∈Zを、ノードn∈Nのストレージ容量とする。un0∈Zをノードnの使用量の初期値とする。すなわち、Un0は、元の配置におけるノードnの使用量を示す。R={1,2....,R}を移動要求の集合とする。移動要求は、4つの項の組r=(s,d,t,m)で表される。s∈Nは、移動元のノードを表す。d∈Nは、移動先のノードを表す。t∈Zは、移動時間を表す。m∈Zは、データのサイズを表す。ここでは、m/tは、整数となると仮定する。t max=max∈Rtrである。ネットワークの帯域をW∈Zとする。ノードnのIO帯域をW∈Zとする。例えば、ILPの変数は、クライアントから予め指定された情報、データストア部31に記憶された情報、収集部36によって収集された情報などに基づいて決定される。
rt∈Bは、時刻t∈Tに移動要求r∈Rの移動を開始するときに1であり、それ以外では、0である。t=0において、xrt=0である。ここでは、ノード使用量の計算に必要なため、tの範囲をTからTに拡張している。時刻t∈Tにおけるノードn∈Nの使用量を、unt∈Zとする。時刻tにノードnにおいて移動処理が完了している場合は、untは、その処理後の使用量を表す。全ての移動要求処理後に実行されるダミー要求を用意し、ダミー要求の開始時刻をtδ∈Tとする。ダミー要求は、全ての移動要求が処理されたことを表すために用意される。yrt∈Bは、時刻t∈Tに移動要求r∈Rの移動を実行中ならば1であり、それ以外では0である。
図17において、式(1)は、目的関数である。式(1)は、ダミー要求の開始時刻tδを最も小さく(最も早く)することを表す。ダミー要求の開始時刻tδは、換言すると、全ての移動要求の処理が完了する時刻である。式(2)により、yrtに値が設定される。式(3)及び式(4)によって、xrtへの制約が与えられる。式(3)は、移動要求rの開始時刻を一意に決定するための制約である。式(4)は、時刻0では移動要求rを開始させないための制約である。式(5)及び式(6)により、untへの制約が与えられる。式(5)は、untを初期化している。式(6)は、untを、unt-1と時刻tにおける処理量(データの移動量)から算出している。ここでは、足されるデータについては、毎時m/t増加し、取り出されるデータについては、移動終了後にm全てが消されるとしている。式(7)は、ストレージの使用率の制約である。式(8)は、全ノードの書き込み量の和がネットワークの帯域を超えないことを表す。式(9)は、1つのノードにおける書き込み量の和がIOの帯域を超えないことを表す。式(10)により、時刻tδを計算している。
定式化されたILPを解くことにより、どのパーティションを、どのノードへ、いつ移動させるかが導出される。計算部23は、ILPが解けなかった場合は、“解無し”を、計算の結果として出力する。例えば、“解無し”が出力される場合、計算部23は、ノードの追加、スケジューリング期間の延長などをクライアントに要求しても良い。ただし、複数のパーティションの移動後の配置は、上述した通り、予め設定された許容時間内に完了できるように計算される。従って、複数のパーティションの配置の探索時に設定したパーティションの移動時間が、移動順序の探索時の移動時間と大きく乖離していない限り、ILPを解くことができる。
図18は、実施形態に係る計算装置による出力例である。
計算部23は、例えば図18に表したように、移動順序として、パーティションを特定する情報(番号)と、移動元のノードを特定する情報、移動先のノードを特定する情報、移動の開始時刻、及び移動の終了時刻を出力する。図18の例では、計算部23は、パーティションの役割及びシステムポートを特定する情報をさらに出力している。これらの移動順序を示す情報は、ユーザが確認できるようにクライアントへ送信されても良い。
計算部23は、計算結果を各ノード30のノード管理部34に送信する。各ノード管理部34が計算結果を受信すると、各転送部35は、計算された移動順序に従ってパーティションのデータ集合を、他のノード30に送信する。例えば、計算部23により計算された移動順序に従って、上述した長期同期処理が実行される。
図19は、実施形態に係る計算装置における処理の一部を表すフローチャートである。
図19に表した例では、計算部23は、図16に表したフローチャートと同様に、ステップS11~S14を実行する。ステップS13で解が見つかると、見つかった解へ複数のパーティションを移動させる手順を計算する(ステップS16)。計算部23は、計算によって得られた移動手順を出力する(ステップS17)。
実施形態に係る計算装置によれば、複数のパーティションを移動させるときに、より適切な移動順序を計算できる。例えば、実施形態に係る計算装置を用いることで、複数のパーティションの移動をより早く完了させることができる。また、上述した複数のパーティションの配置の探索と組み合わせることで、複数のパーティションを、発見されたより頑強な配置へ、より短時間で移動させることができる。
ここでは、1つの計算部23が、複数のパーティションの配置の探索と移動順序を計算する例について説明した。複数のパーティションの配置の探索と、複数のパーティションの移動順序と、は異なる計算装置によってそれぞれ計算されても良い。例えば、複数の計算装置を含む計算システムにおいて、1つの計算装置が、複数のパーティションの配置の探索を計算する。1つの計算装置は、発見した配置を、別の計算装置へ送信する。別の計算装置は、複数のパーティションを、発見された配置へ移動させるための順序を計算する。これらの計算装置は、例えばネットワークを介して互いに接続される。
また、ここでは、探索によって発見された配置へ複数のパーティションを移動させる例について説明した。実施形態に係る計算装置は、異なる方法によって決定された配置へ複数のパーティションを移動させる際にも用いることができる。例えば、別の計算装置が別の方法で複数のパーティションの配置を決定したときに、実施形態に係る計算装置は、その配置へ複数のパーティションを移動させるための順序を計算できる。この場合も、実施形態に係る計算装置は、定式化されたILPを解くことで、複数のパーティションの移動順序を得ることができる。
上記の種々のデータの処理は、例えば、プログラム(ソフトウェア)に基づいて実行される。例えば、コンピュータが、このプログラムを記憶し、このプログラムを読み出すことにより、上記の種々の情報の処理が行われる。
上記の種々の情報の処理は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク及びハードディスクなど)、光ディスク(CD-ROM、CD-R、CD-RW、DVD-ROM、DVD±R、DVD±RWなど)、半導体メモリ、又は、他の記録媒体に記録されても良い。
例えば、記録媒体に記録された情報は、コンピュータ(又は組み込みシステム)により読み出されることが可能である。記録媒体において、記録形式(記憶形式)は任意である。例えば、コンピュータは、記録媒体からプログラムを読み出し、このプログラムに基づいてプログラムに記述されている指示をCPUで実行させる。コンピュータにおいて、プログラムの取得(又は読み出し)は、ネットワークを通じて行われても良い。
以上、本発明のいくつかの実施形態を例示したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更などを行うことができる。これら実施形態やその変形例は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。また、前述の各実施形態は、相互に組み合わせて実施することができる。
10 データベースシステム、 20 管理装置、 21 表記憶部、 22 割当部、 23 計算部、 24 クラスタ管理部、 30 ノード、 31 データストア部、 32 表記憶部、 33 アクセス処理部、 34 ノード管理部、 35 転送部、 36 収集部

Claims (20)

  1. データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算を実行するコンピュータであって、
    前記複数のノードにより収集された、前記複数のパーティション及び前記複数のノードに関する統計情報を受け付け、
    前記統計情報と、前記統計情報の統計的ばらつきに対応する摂動情報と、を用いて変動情報を生成し、
    前記統計情報及び前記変動情報を用いて、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの配置を計算する、
    コンピュータ
  2. 前記配置を実行するための許容時間を受け付け、前記許容時間内に実行可能な前記配置を計算する請求項1記載のコンピュータ
  3. 前記統計情報は、前記複数のノードのそれぞれにおける前記複数のパーティションのそれぞれへのアクセス頻度と、前記複数のノードのそれぞれにおける前記複数のパーティションのそれぞれのデータサイズと、前記複数のパーティション同士の間の単位データサイズあたりの移動時間と、前記複数のノードのそれぞれにおけるキャパシティと、の少なくともいずれかを含む請求項1又は2に記載のコンピュータ
  4. 前記変動情報は、前記変動情報に基づく前記複数のパーティションの前記配置の評価値が、前記統計情報に基づく前記複数のパーティションの前記配置の評価値よりも悪くなるように、生成される請求項1~3のいずれか1つに記載のコンピュータ
  5. 前記配置の計算において、
    前記統計情報に基づく前記複数のノードにおける前記複数のパーティションの初期配置と、前記変動情報の一部に基づく前記複数のノードにおける前記複数のパーティションの配置候補と、を算出し、
    前記初期配置の評価値が前記配置候補の評価値よりも良いときには、前記初期配置を採用配置とし、前記配置候補の評価値が前記初期配置の評価値よりも良いときには、前記配置候補を前記採用配置とする、
    第1処理と、
    前記変動情報の別の一部に基づく前記複数のノードにおける前記複数のパーティションの別の配置候補を算出し、
    前記採用配置の評価値が前記別の配置候補の評価値よりも高いときには、前記採用配置を変更せず、前記別の配置候補の評価値が前記採用配置の評価値よりも高いときには、前記別の配置候補を前記採用配置とする、
    第2処理と、
    を実行する請求項1~4のいずれか1つに記載のコンピュータ
  6. 前記配置の計算において、前記第2処理を繰り返し、
    前記第2処理の繰り返しにより得られた前記採用配置を、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの前記配置として出力する請求項5記載のコンピュータ
  7. 請求項1~4のいずれか1つに記載のコンピュータと、
    前記複数のノードと、
    を備え、
    前記複数のノードは、前記コンピュータによる計算から前記配置が得られたときには、前記複数のパーティションを前記複数のノード同士の間で移動させて前記配置を実行し、前記コンピュータによる計算から前記配置が得られないときには、前記複数のパーティションを移動させないデータベースシステム。
  8. 複数のパーティションに分散されたデータベースを記憶する複数のノードを備えたデータベースシステムであって、
    前記複数のノードは、互いに通信をして何れか1つのノードを管理装置として選任し、
    前記管理装置は、
    前記複数のノードにより収集された、前記複数のパーティション及び前記複数のノードに関する統計情報を受け付け、
    前記統計情報と、前記統計情報の統計的ばらつきに対応する摂動情報と、を用いて変動情報を生成し、
    前記統計情報及び前記変動情報を用いて、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの配置を計算する、
    データベースシステム。
  9. データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算を実行するコンピュータであって、
    前記複数のノードにおける前記複数のパーティションを、別の配置へ移動させる際の移動順序を、予め定式化された整数線形計画問題を解くことで計算するコンピュータ
  10. 前記移動順序は、移動の対象である前記パーティション、移動元の前記ノード、移動先の前記ノード、及び移動の時刻を含む請求項9記載のコンピュータ
  11. 複数のパーティションに分散されたデータベースを記憶する複数のノードを備えたデータベースシステムであって、
    前記複数のノードは、互いに通信をして何れか1つのノードを管理装置として選任し、
    前記管理装置は、
    前記複数のノードにより収集された、前記複数のパーティション及び前記複数のノードに関する統計情報を受け付け、
    前記統計情報と、前記統計情報の統計的ばらつきに対応する摂動情報と、を用いて変動情報を生成し、
    前記統計情報及び前記変動情報を用いて、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの配置を計算し、
    前記複数のパーティションを、前記配置へ移動させる際の移動順序を、予め定式化された整数線形計画問題を解くことで計算する、
    データベースシステム。
  12. 前記複数のノードは、計算により得られた前記移動順序に従って、前記複数のパーティションの少なくとも一部を移動させる請求項11記載のデータベースシステム。
  13. データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算を実行する第1計算装置であって、
    前記複数のノードにより収集された、前記複数のパーティション及び前記複数のノードに関する統計情報を受け付け、
    前記統計情報と、前記統計情報の統計的ばらつきに対応する摂動情報と、を用いて変動情報を生成し、
    前記統計情報及び前記変動情報を用いて、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの配置を計算する、
    第1計算装置と、
    前記複数のパーティションを、前記配置へ移動させる際の移動順序を、予め定式化された整数線形計画問題を解くことで計算する第2計算装置と、
    を備えた計算システム。
  14. データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算方法であって、
    コンピュータが、
    前記複数のノードにより収集された、前記複数のパーティション及び前記複数のノードに関する統計情報を参照し、
    前記統計情報と、前記統計情報の統計的ばらつきに対応する摂動情報と、を用いて変動情報を生成し、
    前記統計情報及び前記変動情報を用いて、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの配置を計算する、
    計算方法。
  15. 前記コンピュータは、さらに、前記複数のパーティションを、前記配置へ移動させる際の移動順序を、予め定式化された整数線形計画問題を解くことで計算する請求項14記載の計算方法。
  16. データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算方法であって、
    コンピュータが、前記複数のノードにおける前記複数のパーティションを、別の配置へ移動させる際の移動順序を、予め定式化された整数線形計画問題を解くことで計算する計算方法。
  17. データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算を、コンピュータに実行させるプログラムであって、
    前記複数のノードにより収集された、前記複数のパーティション及び前記複数のノードに関する統計情報を受け付けさせ、
    前記統計情報と、前記統計情報の統計的ばらつきに対応する摂動情報と、を用いて変動情報を生成させ、
    前記統計情報及び前記変動情報を用いて、前記データベースシステムの性能を向上可能な前記複数のノードにおける前記複数のパーティションの配置を計算させる、
    プログラム。
  18. 前記コンピュータに、前記複数のパーティションを、前記配置へ移動させる際の移動順序を、予め定式化された整数線形計画問題を解くことで計算させる、請求項17記載のプログラム。
  19. データベースが複数のパーティションに分割されて複数のノードに配置されるデータベースシステムについての計算を、コンピュータに実行させるプログラムであって、
    前記複数のノードにおける前記複数のパーティションを、別の配置へ移動させる際の移動順序を、予め定式化された整数線形計画問題を解くことで計算させるプログラム。
  20. 請求項17~19のいずれか1つに記載のプログラムを記憶した記憶媒体。
JP2019210374A 2019-01-16 2019-11-21 コンピュータ、データベースシステム、計算システム、計算方法、プログラム、及び記憶媒体 Active JP7412974B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/743,016 US11182362B2 (en) 2019-01-16 2020-01-15 Calculating device, data base system, calculation system, calculation method, and storage medium
PH12020050013A PH12020050013A1 (en) 2019-01-16 2020-01-16 Calculating device, data base system, calculation system, calculation method, and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019005415 2019-01-16
JP2019005415 2019-01-16

Publications (2)

Publication Number Publication Date
JP2020113254A JP2020113254A (ja) 2020-07-27
JP7412974B2 true JP7412974B2 (ja) 2024-01-15

Family

ID=71667227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019210374A Active JP7412974B2 (ja) 2019-01-16 2019-11-21 コンピュータ、データベースシステム、計算システム、計算方法、プログラム、及び記憶媒体

Country Status (2)

Country Link
JP (1) JP7412974B2 (ja)
PH (1) PH12020050013A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009276941A (ja) 2008-05-13 2009-11-26 Internatl Business Mach Corp <Ibm> 決定装置、プログラムおよび決定方法
JP2015504218A (ja) 2012-01-06 2015-02-05 シータス データ ビルギ イスレムレリ トゥカレット アー.エス. モジュール式ブロックおよび関連付けられたログファイルを伴う分散型データベース

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009276941A (ja) 2008-05-13 2009-11-26 Internatl Business Mach Corp <Ibm> 決定装置、プログラムおよび決定方法
JP2015504218A (ja) 2012-01-06 2015-02-05 シータス データ ビルギ イスレムレリ トゥカレット アー.エス. モジュール式ブロックおよび関連付けられたログファイルを伴う分散型データベース

Also Published As

Publication number Publication date
JP2020113254A (ja) 2020-07-27
PH12020050013A1 (en) 2020-10-19

Similar Documents

Publication Publication Date Title
US10685041B2 (en) Database system, computer program product, and data processing method
CN107544862B (zh) 一种基于纠删码的存储数据重构方法和装置、存储节点
US10162875B2 (en) Database system including a plurality of nodes
US20230244694A1 (en) Database system, computer program product, and data processing method
US10152499B1 (en) Database replication scaling
CN108121782B (zh) 查询请求的分配方法、数据库中间件系统以及电子设备
US20140195489A1 (en) Logical replication in clustered database system with adaptive cloning
US8713125B2 (en) Method and system for scaling usage of a social based application on an online social network
US11068499B2 (en) Method, device, and system for peer-to-peer data replication and method, device, and system for master node switching
US20140358934A1 (en) Database system and method for searching database
CN110188084B (zh) 一种分布式文件存储系统及文件存储方法
JPWO2008056670A1 (ja) 資源情報提供システム、方法、資源情報提供装置、およびプログラム
CN111552701B (zh) 确定分布式集群中数据一致性的方法及分布式数据系统
CN111935320B (zh) 一种数据同步的方法、相关装置、设备以及存储介质
CN113646749A (zh) Iot分区管理和负载平衡
US20190179807A1 (en) Table and index communications channels
CN114816728A (zh) 一种云环境MongoDB数据库集群实例节点弹性伸缩方法和系统
JP7412974B2 (ja) コンピュータ、データベースシステム、計算システム、計算方法、プログラム、及び記憶媒体
CN107908713B (zh) 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法
US11182362B2 (en) Calculating device, data base system, calculation system, calculation method, and storage medium
CN110928481A (zh) 分布式深度神经网络及其参数的存储方法
JP5355725B2 (ja) 必須データ管理システム及び計算機及び必須データ管理プログラム及び記録媒体及び通信方法
CN115292394A (zh) 数据处理方法、装置、计算机设备和存储介质
CN113312211A (zh) 一种确保分布式学习系统的高可用性方法
CN108304370B (zh) 数据更新方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221026

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20230616

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230912

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231227

R151 Written notification of patent or utility model registration

Ref document number: 7412974

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151