(57)【要約】【課題】複数のノードを有する分散データベースにおいて、応答性能に影響が生じない時期にノードに対してのデータの再配置を自動的に行うマイグレーション処理方法を得る。【解決手段】複数ノード１０を有する分散データベースを備えたシステムでデータの再配置を行うマイグレーション処理方法において、前記システムの負荷を監視しシステム負荷の低い時間帯を処理時間帯として認識し、前記分散データベースに新規追加ノード１１を増設した場合など、各ノード間での保有データ量に偏りが発生した場合、前記処理時間帯に各ノードにおけるデータの再配置処理を起動する。【選択図】図１
2014186624.tif 000002
【特許請求の範囲】
【請求項１】
複数ノードを有する分散データベースを備えたシステムでデータの再配置を行うマイグレーション処理方法において、
前記システムの負荷を監視することでシステム負荷の低い過去の時間帯を処理時間帯として認識し、
前記各ノード間での保有データ量に偏りが発生した場合、前記処理時間帯に各ノードにおけるデータの再配置処理を起動することを特徴とするマイグレーション処理方法。
【請求項２】
前記再配置処理を起動するに際して、
データ転送元となる転送元ノードを決定する手順と、
前記転送元ノードからの転送データサイズを算出する手順と、
前記転送元ノードからの転送終了時間を算出する手順と、
前記転送元ノードのシステム負荷を予測して転送処理開始時間を決定する手順と、
前記転送元ノード及び転送先ノードの現時点でのシステム負荷を確認した後にデータ転送を実行する手順と、
を含む請求項１に記載のマイグレーション処理方法。
【請求項３】
前記システム負荷の監視は、前記各ノードの負荷情報を管理する監視サーバが行い、前記監視サーバが前記処理時間帯に再配置処理を開始又は停止するようデータ転送元のノードに指示することを特徴とする請求項１に記載のマイグレーション処理方法。
【請求項４】
前記システム負荷の監視は、転送元ノードが転送先ノードにおける負荷を検出し、転送先ノードと転送元ノードとの間でデータ転送処理を繰り返し行う請求項１に記載のマイグレーション処理方法。
【請求項５】
マイグレーション処理中にユーザアプリケーションからのアクセスが一定数以上あった場合、前記マイグレーション処理を一時中断し、ユーザアプリケーションからのアクセスを優先して処理する請求項１乃至請求項３のいずれかに記載のマイグレーション処理方法。
【請求項６】
複数ノードを有する分散データベースを備えたシステムでデータの再配置を行うマイグレーション処理装置であって、
前記システムの負荷を監視してシステム負荷の低い過去の時間帯を処理時間帯として認識するとともに、前記処理時間帯に再配置処理を開始して停止するようデータ転送元のノードに指示する監視サーバを設けた
ことを特徴とするマイグレーション処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数ノードを有する分散データベースを備えたシステムでデータの再配置を行うマイグレーション処理方法に関し、特に、ノードに対して適した時期にデータの再配置を行うマイグレーション処理方法及びマイグレーション処理装置に関する。
【背景技術】
【０００２】
近年、取り扱うデータ量の増大に伴い、大容量データを保存し高速に処理するために、データを保管するために複数のノードを有する分散データベース（例えば、MongoDB）を備えたシステムが普及してきている。
【０００３】
前記分散データベースおいては、データを保管する記憶装置を持つノードをシステムに追加した場合、追加と同時に既存のノードから新規追加ノードにデータが自動的にマイグレーション（再配置）される処理が行われる。
データマイグレーションに関する技術としては、特許文献１〜特許文献４に記載された管理方法等が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２７７３４２号公報
【特許文献２】特開２０１０−２５７０２０号公報
【特許文献３】特開２０１０−２３８０３８号公報
【特許文献４】特開２０１０−５３２０４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した自動マイグレーションが行われた場合、システムの負荷が長時間にわたり高騰し、ユーザアプリケーションへの応答性能に影響を及ぼす場合があった。例えば、ノードの増設時に自動的にマイグレーションが行われると、各ノードにおける負荷を考慮することなくノード間での再配置処理が行われるため、ユーザアプリケーションに対するノードの応答性能に支障が生じる可能性があるという課題があった。
これを回避するため、実際の運用では、ノードの新規追加時には自動マイグレーション機能をOFFにしておき、ノード追加後におけるユーザアプリケーションへの応答性能に影響が及ばない時期に、運用者が手動でマイグレーション機能をONしてデータの再配置処理を開始させる必要があった。
【０００６】
本発明は上記実情に鑑みて提案されたもので、複数のノードを有する分散データベースにおいて、応答性能に影響が生じない時期にノードに対してのデータの再配置を自動的に行うマイグレーション処理方法及びマイグレーション処理システムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成するため請求項１は、複数ノードを有する分散データベースを備えたシステムでデータの再配置を行うマイグレーション処理方法において、
前記システムの負荷を監視しシステム負荷の低い時間帯を処理時間帯として認識し、
前記各ノード間での保有データ量に偏りが発生した場合、前記処理時間帯に各ノードにおけるデータの再配置処理を起動することを特徴としている。
システムの負荷とは、例えば、データ書込みを行うノードを選択する分散データベースルータにおける過去一定時間内におけるユーザアプリケーションからのアクセス数、ノードにおけるI/O待ち数、ノードにおけるCPU負荷等の情報である。
保有データ量に偏りが発生した場合とは、分散データベースに新規追加ノードを増設した場合を含むものである。
【０００８】
請求項２は、請求項１のマイグレーション処理方法において、前記再配置処理を起動するに際して、
データ転送元となる転送元ノードを決定する手順と、
前記転送元ノードからの転送データサイズを算出する手順と、
前記転送元ノードからの転送終了時間を算出する手順と、
前記転送元ノードのシステム負荷を予測して転送処理開始時間を決定する手順と、
前記転送元ノード及び転送先ノードの現時点でのシステム負荷を確認した後にデータ転送を実行する手順と、を含むことを特徴としている。
【０００９】
請求項３は、請求項１のマイグレーション処理方法において、前記システム負荷の監視は、前記各ノードの負荷情報を管理する監視サーバが行い、前記監視サーバが前記処理時間帯に再配置処理を開始又は停止するようデータ転送元のノードに指示することを特徴としている。
【００１０】
請求項４は、請求項１のマイグレーション処理方法において、前記システム負荷の監視は、転送元ノードが転送先ノードにおける負荷を検出し、転送先ノードと転送元ノードとの間でデータ転送処理を繰り返し行うことを特徴としている。
【００１１】
請求項５は、請求項１乃至請求項３のいずれかに記載のマイグレーション処理方法において、マイグレーション処理中にユーザアプリケーションからのアクセスが一定数以上あった場合、前記マイグレーション処理を一時中断し、ユーザアプリケーションからのアクセスを優先して処理することを特徴としている。
【００１２】
請求項６は、複数ノードを有する分散データベースを備えたシステムでデータの再配置を行うマイグレーション処理装置であって、前記システムの負荷を監視してシステム負荷の低い時間帯を処理時間帯として認識するとともに、前記処理時間帯に再配置処理を開始又は停止するようデータ転送元のノードに指示する監視サーバを設けたことを特徴としている。
【発明の効果】
【００１３】
本発明によれば、システム負荷を監視することで、処理時間帯（システム負荷の低い時間帯）に各ノードにおけるデータの再配置処理の開始／停止を自動的にスケジューリングすることが可能となる。
【００１４】
また、自動マイグレーション処理中にユーザアプリケーションからのアクセスが一定数以上あった場合、自動マイグレーション処理を一時中断し、ユーザアプリケーションからのアクセスを優先して処理することにより、マイグレーション処理負荷によるサービス影響の低減を防止することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明のマイグレーション処理装置のシステム構成図である。
【図２】マイグレーション処理装置における再配置処理の手順を示すフローチャートである。
【図３】監視サーバで監視されたシステム負荷の遷移を示すグラフである。
【図４】マイグレーション処理装置の他の例を示すシステム構成図である。
【発明を実施するための形態】
【００１６】
本発明のマイグレーション処理装置の実施形態の一例について、図面を参照しながら説明する。
本発明のマイグレーション処理装置は、複数ノードを有する分散データベースを備えたシステムにおいて、ノード間におけるデータの再配置を行うに際して、再配置に適した時間（処理時間帯：システムの負荷を監視しシステム負荷の低い時間帯）に再配置処理の開始及び停止のスケジューリングを自動的に行うものである。
ノード間においてデータの再配置処理が必要な時とは、あるノードへの書込みが集中し各ノード間の保有データ量に偏りが発生した場合や、分散データベースに新規追加ノードを増設した場合である。
【００１７】
マイグレーション処理装置は、図１に示すように、分散データベースを構成する複数ノード１０と、複数の各ノード１０に対してデータの書込みを行う分散データベースルータ２０と、ユーザによるアプリケーションが実行されるユーザ側サーバ３０と、各ノード１０の負荷を監視する監視サーバ４０とから構成されている。尚、メタデータを管理するコンフィグサーバは、複数ノード１０の一部に含まれる。  各サーバ、各ノード及びルータは、オペレーティングシステム(OS)を含む基本プログラムやメモリ、プログラムを実行するCPU等、コンピュータが有する主要な構成を備え、本発明のマイグレーション処理方法を実行するプログラムがそれぞれインストールされることでシステムとしてのマイグレーション処理装置が構築されている。
【００１８】
ユーザ側サーバ３０は、ユーザアプリケーション等が実行された際に、分散データベースルータ２０にデータ書込みを行う。分散データベースルータ２０は、データの書き込み先のノード１０を選択し、選択されたノード１０でのデータ書込みが行われる。
【００１９】
監視サーバ４０は、各ノード１０からの負荷情報の収集を行い、データ転送指示を行う。監視サーバ４０による再配置処理について、図２のフローチャートを参照して説明する。監視サーバ４０による負荷情報の収集及びデータ転送指示は、以下に示すステップ（Ｓ１）〜（Ｓ７）により行われる。
（Ｓ１）負荷情報観測ステップ：ノードの負荷情報を定期的に観測する。
（Ｓ２）データ転送元決定ステップ：転送元ノードを決定する（例えば、ノード１〜４の４台を転送元とする）。
（Ｓ３）データサイズ算出ステップ：各転送元ノードからの転送データサイズを算出する。
（Ｓ４）転送処理終了時間算出ステップ：各転送元ノードからの転送処理終了時間を算出する。
（Ｓ５）システム負荷予測：システム負荷の低い時間帯を予測する。
（Ｓ６）実行時刻決定ステップ：転送処理開始時間を決定する。
（Ｓ７）再配置実行ステップ：転送元ノードから転送先ノードへのデータ転送の指示を行う。
【００２０】
続いて、各ステップにおける詳細処理について説明する。
・負荷情報観測ステップ（Ｓ１）
監視サーバ４０は、分散データベースルータ２０および各ノード１０の負荷情報を例えば５分毎に観測する。５分という値は、予めシステム起動時に、運用者が設定ファイルや起動コマンドラインオプションで指定することで設定される。
分散データベースルータ２０は、ユーザアプリケーションからのアクセス数を５分ごとに監視サーバ４０に通知する。この処理は、監視サーバ４０が分散データベースルータ２０に対して、アクセス数のデータを取りに行く方式でもよい。
各ノード１０は、I/O待ち数、CPU負荷情報を監視サーバ４０に通知する（監視サーバ４０から各ノード１０に対してデータを取りに行く方式でも良い）。
監視サーバ４０では、取得した分散データベースルータ２０および各ノード１０の負荷情報を、システム負荷の情報として時系列に蓄積する。 
【００２１】
・データ転送元決定ステップ（Ｓ２）
データを転送する単位（ブロック）は"チャンク"と称される。
あるノードへの書込みが集中した場合、チャンクのサイズが増加しノード内で分裂する。ノード内での分裂が頻繁に行われると、ノード内のチャンク数が増加し、ノード間でチャンク数に偏りが生じて再配置処理が必要となる。
データ転送元決定ステップでは、ノード間のチャンク数に偏りが生じた時や新規追加ノード増設時に再配置処理を行う場合に、どのノードからどれくらいのチャンクが転送されるのかが決定される。
新規追加ノード１１の増設時では、、追加する新規追加ノード１１に配置（転送）すべくチャンク数を算出する。具体的には、各ノード１０が保持するチャンク数について、新規追加ノード１１を含めた各ノード１０で均等になるように、下記式（１）で算出する。
【００２２】
式（１）
総転送チャンク数＝総チャンク数÷総ノード数（新規追加ノードを含めたノード数）
【００２３】
次に、各ノード１０のチャンクの現保有率から、データ転送元を決定する。多くのチャンクを持つノード１０からは多く、チャンク数が少ないノード１０からは少ない転送数を算出する。
したがって、任意のノードＡからの転送チャンク数は、下記の式（２）で算出される。
【００２４】
式（２）
ノードＡからの転送チャンク数
＝総転送チャンク数 ×（ノードＡの保有チャンク数／総チャンク数）
【００２５】
・データサイズ算出ステップ（Ｓ３）
データサイズ算出ステップでは、あるノード１０から転送するデータのサイズが算出される。
データサイズは、単にチャンクサイズ×チャンクで計算するので、64MBのチャンクを1200個転送するのであれば 76,800MBとなる。
したがって、任意のノードＡからの転送データサイズは、下記の式（３）で算出される。
【００２６】
（式３）
ノードＡからの転送データサイズ＝転送チャンクサイズ×転送チャンク数
【００２７】
なお、この例におけるチャンクサイズ（64MB）は、予めシステム起動時に、運用者が設定ファイルや起動コマンドラインオプションで指定することで設定される。
【００２８】
・転送処理終了時間算出ステップ（Ｓ４）
転送処理終了時間算出ステップでは、あるノード１０からデータを転送するのに要する時間（転送処理時間）を算出する。任意のノードＡからの転送処理時間は、下記の式（４）で算出される。
【００２９】
式（４）
ノードＡからの転送処理時間
＝ノードＡからの転送データサイズ×8(bit)÷（ビットレート×伝送効率(%)）
ビットレート（例えば、1000Mbps）、伝送効率（例えば、20%）は、予めシステム起動時に、運用者が設定ファイルや起動コマンドラインオプションで指定することで設定される。
この時点で、表１に示されるように、各転送元ノードに対して、転送チャンク数、転送データサイズ、転送処理時間が算出される。
【００３０】
【表１】
2014186624.tif 000003
【００３１】
・システム負荷予測ステップ（Ｓ５）
システム負荷予測ステップは、監視サーバ４０で蓄積している過去の負荷情報（分散データベースルータ２０に対するユーザアプリケーションからのアクセス数、各ノードのI/O待ち数、CPU負荷等）から、システムが低負荷な時間帯を判断する。これは、低負荷の間にデータ転送処理を実行するためである。システムが低負荷な時間帯とは、あるノードにおいて、例えば、アクセス数、ノードのI/O待ち数、ノードCPU負荷の過去２４時間の推移が図３のようなグラフとなる場合に、アクセス数、ノードのI/O待ち数、ノードCPU負荷が全てそれぞれ設定されている所定値以下である時間帯（図のＸ期間）をいう。
【００３２】
・実行時刻決定ステップ（Ｓ６）
実行時刻決定ステップでは、データ転送処理終了時間を予測したうえで開始時間を判断する。すなわち、システムが低負荷な時間帯であって、転送処理時間をカバーできる期間を有する時間帯を選定する。尚、ノード１０ごとに負荷情報は異なるため、他のノードと転送処理が輻輳しない直近の時間帯を選定する。例えば、１１時から１時間、ノード１からのデータ転送をスケジューリングしたとすると、ノード２からのデータ転送処理は、１１時〜１２時以外、且つ、ノード２の負荷の低い時間帯の中から選定する。
【００３３】
・再配置実行ステップ（Ｓ７）
実際にリバランシング（データ転送）開始時刻になった際は、下記（Ｓ７１）〜（Ｓ７３）の手順により処理がなされる。
（Ｓ７１）監視サーバ４０は、ある転送元ノードがデータ転送実行開始時刻になると、分散データベースルータ２０に対するユーザアプリケーションからの直近（例えば、５分間）のアクセス数、転送元ノード及び転送先ノードの直近（例えば、５分間）のI/O待ち数、CPU負荷等を観測し、運用者から予め指定される各閾値（アクセス数、I/O待ち数、CPU負荷の閾値）を超えていないか一度チェックする。
（Ｓ７２）アクセス数、I/O待ち数、CPU負荷のいずれかの値が閾値を超えている場合は、ノードでの負荷が高いと判断し、スケジュールした再配置処理を中止し、運用者に対しメールや画面表示にてアラームを発行する。運用者は手動操作にてデータ転送のスケジューリングを行うか、直接手動操作にてデータ転送を実行し対処する。
（Ｓ７３）各値が全て閾値以下の場合は、ノード１０での負荷が低いと判断し、監視サーバ４０は、データ転送元となるノード１０に対し、データ転送実行開始の指示を出す。
【００３４】
また、マイグレーション処理中にユーザアプリケーションからのアクセスが一定数以上あったことを監視サーバ４０が検知した場合、監視サーバ４０は、マイグレーション処理を一時中断するよう転送元ノードに指示し、ユーザアプリケーションからのアクセスを優先して処理することが行われる。
【００３５】
上述の処理では、監視サーバ主導で（Ｓ７３）のデータ転送開始を実行するようにしたが、新規追加ノードの増設時に予めデータ転送開始時刻を転送元ノードに伝えておき、ノード側にてデータ転送処理開始を決めるようにすることも可能である。 
【００３６】
次に、マイグレーション処理装置の実施形態の他の例について、図４を参照しながら説明する。図４のマイグレーション処理装置は、図１と同様に、分散データベースを構成する複数ノード１０（一部にメタデータを管理するコンフィグサーバを含む）と、複数のノード１０に対してデータの書込みを行う分散データベースルータ２０と、ユーザ側サーバ３０とを備えて構成されているが、図１の装置と異なり、監視サーバが存在しない。したがって、データ転送元ノードと転送先ノードの間で転送処理制御（フロー制御）が行われる。この場合、転送元ノードの選定は、分散データベースルータ２０が行う既存技術で行われる。転送元ノードはチャンク数の多いノードが選定される。
【００３７】
選択された転送元ノードでは、転送元ノード及び転送先ノードにおけるデータ転送処理直前時点のI/O待ち数、CPU負荷の情報から、データを転送すべきタイミングか否か、を判断する。
すなわち、転送元ノードにて転送先ノードの負荷情報を取得し、転送元ノード又は転送先ノードの負荷が、予め運用者から指定される閾値を超えているかどうかをチェックする。
転送元ノード又は転送先ノードの負荷が閾値を超えない場合、転送元ノードから転送先ノードへチャンク単位のデータ転送が行われる。一度に転送するチャンク数は、予めシステム起動時に、運用者が設定ファイルや起動コマンドラインオプションで指定することで設定される。
【００３８】
転送元ノードにて転送先ノードの負荷情報を取得する。負荷が高ければデータ転送を中断する。転送元ノードでの転送先ノードの負荷情報の取得は、一定時間毎に行われる。データ転送を中断した場合で、再度の負荷情報の取得で負荷が低ければ、データ転送が再開される。
同じ転送元ノードと転送先ノードとの間で、処理中断及び処理再開の転送処理制御が繰り返し行われることで、小刻みにリバランシングを完了させる。すなわち、システムが空いていることを小刻みにチェックしながらリバランシングする。
【００３９】
上述したマイグレーション処理装置によれば、監視サーバ４０がシステム負荷（各ノード１０及び分散データベースルータ２０の負荷）を監視することで、過去の負荷データからシステム負荷の低い処理時間帯を認識し、この処理時間時間帯に各ノードにおけるデータの再配置処理の開始／停止を自動的にスケジューリングすることが可能となる。
その結果、ノード間の再配置処理に際して再配置処理の起動時間を制御するので、ユーザアプリケーションに対するノードの応答性能に支障が生じることを防止することができる。
【符号の説明】
【００４０】
１０…ノード、  １１…新規追加ノード、  ２０…分散データベースルータ、  ３０…ユーザ側サーバ、  ４０…監視サーバ。
【図１】
2014186624.tif 000004
【図２】
2014186624.tif 000005
【図３】
2014186624.tif 000006
【図４】
2014186624.tif 000007