(57)【要約】【課題】バックアップを利用したデータ処理をより円滑に実行する。【解決手段】ユーザ群にサービスを提供するためのデータを、ユーザ群の一部である１または複数のユーザを単位として保持するノードと、１または複数のユーザからのデータへのアクセス要求に対応して、１または複数のユーザのデータが格納されたノードへのルーティングを実行するルーティングマネージャとを含み、ノードは、１または複数のユーザのマスタデータを保持する第１のノードと、マスタデータをレプリケートしたスレーブデータを保持する第２のノードと、第３のノードとを含み、ルーティングマネージャは、さらに、第２のノードに保持されたスレーブデータをマスタデータに変更するとともに、スレーブデータをレプリケートして新たなスレーブデータとして第３のノードに保持させるデータ移動処理を実行するデータ処理システムが提供される。【選択図】図１
2014229088.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ群にサービスを提供するためのデータを、前記ユーザ群の一部である１または複数のユーザを単位として保持するノードと、
前記１または複数のユーザからの前記データへのアクセス要求に対応して、前記１または複数のユーザのデータが格納された前記ノードへのルーティングを実行するルーティングマネージャと
を含み、
前記ノードは、前記１または複数のユーザのマスタデータを保持する第１のノードと、前記マスタデータをレプリケートしたスレーブデータを保持する第２のノードと、第３のノードとを含み、
前記ルーティングマネージャは、さらに、前記第２のノードに保持された前記スレーブデータを前記マスタデータに変更するとともに、前記スレーブデータをレプリケートして新たなスレーブデータとして前記第３のノードに保持させるデータ移動処理を実行する
データ処理システム。
【請求項２】
前記ルーティングマネージャは、前記第１のノードが利用可能でない場合に前記データ移動処理を実行する、請求項１に記載のデータ処理システム。
【請求項３】
前記ルーティングマネージャは、前記１または複数のユーザからのアクセス要求に対応して前記第１のノードへのルーティングが実行されなかった場合に、代替的に前記第２のノードへのルーティングを実行するとともに前記データ移動処理を実行する、請求項２に記載のデータ処理システム。
【請求項４】
前記ルーティングマネージャは、前記１または複数のユーザからのアクセス要求に対応して前記第１のノードへのルーティングが実行された場合に、前記第２のノードを検証し、該検証によって前記第２のノードが利用可能でないことが発見された場合には前記第１のノードに保持された前記マスタデータをレプリケートして新たなスレーブデータとして前記第３のノードに保持させる処理を実行する、請求項３に記載のデータ処理システム。
【請求項５】
前記ルーティングマネージャは、定期的に前記ノードを検証することによって前記第１のノードが利用可能でないことを発見する、請求項２に記載のデータ処理システム。
【請求項６】
前記ルーティングマネージャは、前記１または複数のユーザが前記ノードに及ぼす負荷に応じて前記データ移動処理を実行する、請求項１に記載のデータ処理システム。
【請求項７】
前記ルーティングマネージャは、前記第１のノードの負荷が前記第２のノードよりも高い場合に前記データ移動処理を実行する、請求項６に記載のデータ処理システム。
【請求項８】
前記第１のノードは、前記１または複数のユーザとは異なる１または複数のユーザについては前記スレーブデータを保持する、請求項１に記載のデータ処理システム。
【請求項９】
前記第２のノードは、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータを保持する、請求項１に記載のデータ処理システム。
【請求項１０】
前記第３のノードは、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータまたは前記スレーブデータを保持する、請求項１に記載のデータ処理システム。
【請求項１１】
前記第３のノードは、前記ノードの中から前記データ移動処理の実行時に選択される、請求項１に記載のデータ処理システム。
【請求項１２】
前記第１のノード、前記第２のノード、および前記第３のノードによってノード群が構成され、
前記データ処理システムは、複数の種類の前記データを保持するために複数の前記ノード群を含み、
前記ルーティングマネージャは、前記データの種類に応じて前記複数のノード群のうちのいずれかを選択してルーティングを実行する、請求項１に記載のデータ処理システム。
【請求項１３】
前記ノードは、サーバ装置を含む、請求項１に記載のデータ処理システム。
【請求項１４】
前記ノードは、クライアント装置を含む、請求項１に記載のデータ処理システム。
【請求項１５】
１または複数のユーザにサービスを提供するためのマスタデータをレプリケートしたスレーブデータを保持する記憶部と、
前記マスタデータへのアクセス要求に対応してルーティングを実行するルーティングマネージャが前記スレーブデータを前記マスタデータに変更したときに、前記変更後のマスタデータへのアクセスを受け付けるとともに、前記変更後のマスタデータをレプリケートして新たなスレーブデータとして外部装置に保持させる制御部と
を備えるデータ処理装置。
【請求項１６】
前記記憶部は、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータを保持する、請求項１５に記載のデータ処理装置。
【請求項１７】
前記記憶部は、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータも前記スレーブデータも保持しない、請求項１５に記載のデータ処理装置。
【請求項１８】
サーバ装置である、請求項１５に記載のデータ処理装置。
【請求項１９】
クライアント装置である、請求項１５に記載のデータ処理装置。
【請求項２０】
１または複数のユーザにサービスを提供するためのマスタデータをレプリケートしたスレーブデータを保持する記憶部に接続されるコンピュータに、
前記マスタデータへのアクセス要求に対応してルーティングを実行するルーティングマネージャが前記スレーブデータを前記マスタデータに変更したときに、前記変更後のマスタデータへのアクセスを受け付けるとともに、前記変更後のマスタデータをレプリケートして新たなスレーブデータとして外部装置に保持させる機能
を実現させるためのプログラムが保持された記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システム、データ処理装置および記憶媒体に関する。
【背景技術】
【０００２】
サービスの提供のために利用される各ユーザについてのデータは、サーバのノードにおいてデータベースとして保持されるとともに、ノードに障害が発生した場合などに備え、バックアップデータとしても保持されることが一般的である。バックアップデータは、例えばノードの障害時に代わりにアクセスを受け付けたり、障害によって失われたデータを復旧したりするのに利用される。このようなデータのバックアップの技術の例は、例えば特許文献１に記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−６１７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、サービスを提供されるユーザの数や、各ユーザについて格納されるデータの量が増加するにつれて、データベースは巨大になる。データベースが巨大化すると、データへのアクセスに伴うノードへの負荷が大きくなり、システムのパフォーマンスが低下しうる。また、ひとたびノードに障害が発生すると、その影響が多くのユーザに及んでしまう。
【０００５】
そこで、本開示では、バックアップを利用したデータ処理をより円滑に実行することを可能にする、新規かつ改良されたデータ処理システム、データ処理装置および記憶媒体を提案する。
【課題を解決するための手段】
【０００６】
本開示によれば、ユーザ群にサービスを提供するためのデータを、上記ユーザ群の一部である１または複数のユーザを単位として保持するノードと、上記１または複数のユーザからの上記データへのアクセス要求に対応して、上記１または複数のユーザのデータが格納された上記ノードへのルーティングを実行するルーティングマネージャとを含み、上記ノードは、上記１または複数のユーザのマスタデータを保持する第１のノードと、上記マスタデータをレプリケートしたスレーブデータを保持する第２のノードと、第３のノードとを含み、上記ルーティングマネージャは、さらに、上記第２のノードに保持された上記スレーブデータを上記マスタデータに変更するとともに、上記スレーブデータをレプリケートして新たなスレーブデータとして上記第３のノードに保持させるデータ移動処理を実行するデータ処理システムが提供される。
【０００７】
また、本開示によれば、１または複数のユーザにサービスを提供するためのマスタデータをレプリケートしたスレーブデータを保持する記憶部と、上記マスタデータへのアクセス要求に対応してルーティングを実行するルーティングマネージャが上記スレーブデータを上記マスタデータに変更したときに、上記変更後のマスタデータへのアクセスを受け付けるとともに、上記変更後のマスタデータをレプリケートして新たなスレーブデータとして外部装置に保持させる制御部とを備えるデータ処理装置が提供される。
【０００８】
また、本開示によれば、１または複数のユーザにサービスを提供するためのマスタデータをレプリケートしたスレーブデータを保持する記憶部に接続されるコンピュータに、上記マスタデータへのアクセス要求に対応してルーティングを実行するルーティングマネージャが上記スレーブデータを上記マスタデータに変更したときに、上記変更後のマスタデータへのアクセスを受け付けるとともに、上記変更後のマスタデータをレプリケートして新たなスレーブデータとして外部装置に保持させる機能を実現させるためのプログラムが保持された記憶媒体が提供される。
【０００９】
ユーザ群にサービスを提供するためのデータを、マスタデータおよびスレーブデータとしてユーザを単位として別々のノードに保持させることによって、マスタデータが利用可能でない場合のバックアップとしてスレーブデータが利用できる。このとき、例えば他のユーザのマスタデータは引き続き利用可能でありうる。また、第３のノードに新たなスレーブデータを保持させることで、引き続きバックアップを利用することができる。
【発明の効果】
【００１０】
以上説明したように本開示によれば、バックアップを利用したデータ処理をより円滑に実行することができる。
【図面の簡単な説明】
【００１１】
【図１】本開示の第１の実施形態に係るデータ処理システムの構成を概略的に示す図である。
【図２】図１に示したデータ処理システムにおけるデータアクセスの処理の例を示すフローチャートである。
【図３】図１に示したデータ処理システムにおけるレプリケーションの処理の例を示すフローチャートである。
【図４】図１に示したデータ処理システムにおけるユーザ情報の例を示す図である。
【図５】図１に示したデータ処理システムにおけるノード情報の例を示す図である。
【図６】図１に示したデータ処理システムにおけるデータアクセス時のデータ移動処理の具体的な例を示す図である。
【図７】図６に例示したデータ移動処理によって更新されたユーザ情報を示す図である。
【図８】本開示の第２の実施形態に係るデータ処理システムにおけるノード監視の処理の例を示すフローチャートである。
【図９】図８に示したデータ移動処理の具体的な例を示す図である。
【図１０】本開示の第３の実施形態に係るデータ処理システムにおける負荷分散の処理の例を示すフローチャートである。
【図１１】本開示の第３の実施形態におけるユーザ情報の例を示す図である。
【図１２】本開示の第３の実施形態におけるノード情報の例を示す図である。
【図１３】本開示の第３の実施形態における負荷分散処理の具体的な例を示す図である。
【図１４】本開示の他の実施形態に係るデータ処理システムの構成を概略的に示す図である。
【図１５】本開示のさらに他の実施形態に係るデータ処理システムの構成を概略的に示す図である。
【図１６】情報処理装置のハードウェア構成を説明するためのブロック図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１３】
なお、説明は以下の順序で行うものとする。
１．第１の実施形態
１−１．システム構成
１−２．処理フロー
１−３．管理情報の例
１−４．データ移動処理の例
２．第２の実施形態
３．第３の実施形態
４．その他のバリエーション
５．ハードウェア構成
６．補足
【００１４】
（１．第１の実施形態）
（１−１．システム構成）
図１は、本開示の第１の実施形態に係るデータ処理システムの構成を概略的に示す図である。図１を参照すると、システム１０は、ルーティングマネージャ１００と、ノード２００とを含む。
【００１５】
ルーティングマネージャ１００は、例えば後述する情報処理装置のハードウェア構成によって実現されうる。ルーティングマネージャ１００は、例えばネットワーク上でサーバとして機能する１または複数の情報処理装置であって、サービスを提供されるユーザからのデータへのアクセス要求に応じて、ノード２００へのルーティングを実行する。後述するように、本実施形態では、ユーザにサービスを提供するためのデータが、１または複数のユーザ（以下、単にユーザという場合１または複数のユーザを意味しうるものとする）を単位としてノード２００に保持される。それゆえ、ルーティングマネージャ１００は、ストレージ装置などに記憶されるユーザ情報１１０を有し、これを参照して、アクセス要求を送信したユーザのデータがどのノード２００に格納されているかを特定する。また、ルーティングマネージャ１００は、定期的に、またはデータへのアクセス時にノード２００の状態を監視し、その情報をストレージ装置などにノード情報１２０として記憶する。
【００１６】
ノード２００も、例えば後述する情報処理装置のハードウェア構成によって実現されうる。ノード２００は、例えばネットワークを介してルーティングマネージャ１００に接続された情報処理装置であって、ユーザにサービスを提供するためのデータを保持する。図では、ノード２００ａ〜２００ｅが図示されているが、システム１０はさらに多くのノード２００を含みうる。ノード２００には、マスタデータ２１０と、スレーブデータ２２０とが格納されうる。マスタデータ２１０は、ユーザにサービスを提供するにあたってアクセスされるデータである。スレーブデータ２２０は、マスタデータ２１０をレプリケートしたデータであり、マスタデータ２１０のバックアップとして用いられる。上記のように、本実施形態ではデータがユーザを単位としてノード２００に保持される。従って、各ユーザのマスタデータ２１０は、互いに異なるノード２００に保持されうる。また、本実施形態ではマスタデータ２１０とスレーブデータ２２０とは別個のノード２００に保持される。さらに、図示されたノード２００ｅのように、ある時点ではマスタデータ２１０もスレーブデータ２２０も保持しない待機ノードが存在してもよい。
【００１７】
（１−２．処理フロー）
図２は、図１に示したデータ処理システムにおけるデータアクセスの処理の例を示すフローチャートである。図２を参照すると、データアクセスの要求を受けたルーティングマネージャ１００は、まず、ユーザのマスタノードおよびスレーブノードを特定する（ステップＳ１０１）。ここで、マスタノードはユーザのマスタデータを保持するノードを意味し、スレーブノードはユーザのスレーブデータを保持するノードを意味する。ルーティングマネージャ１００は、ユーザ情報１１０を参照することによってマスタノードおよびスレーブノードを特定する。なお、ユーザ情報１１０の具体的な例については後述する。また、本明細書で説明されるルーティングマネージャ１００の処理は、より具体的には、ルーティングマネージャ１００を実現する情報処理装置のプロセッサによって実行されるものでありうる。
【００１８】
次に、ルーティングマネージャ１００は、ユーザのマスタノードが利用可能であるか否かを判定する（ステップＳ１０３）。ここで、ルーティングマネージャ１００は、例えば、ノード情報１２０を参照し、マスタノードの状況を示す情報を取得することによって判定を実行してもよい。あるいは、ルーティングマネージャ１００は、マスタノードへのアクセスを実行し、アクセスが成功したか否かによって、この判定を実行してもよい。
【００１９】
上記のステップＳ１０３において、マスタノードが利用可能ではなかった場合（ＮＯ）、ルーティングマネージャ１００は、ルーティングに先立ってマスタノードを変更する処理を実行する。ここで、まず、ルーティングマネージャは、ステップＳ１０３におけるマスタノードと同様にして、ユーザのスレーブノードが利用可能であるか否かを判定する（ステップＳ１０５）。ここで、スレーブノードも利用可能ではなかった場合（ＮＯ）、利用可能なデータが一時的に存在しないことになるため、処理はエラー終了する（ステップＳ１０７）。
【００２０】
一方、上記のステップＳ１０５において、スレーブノードが利用可能であった場合（ＹＥＳ）、ルーティングマネージャ１００は、ユーザ情報１１０においてスレーブノードをマスタノードに変更する（ステップＳ１０９）。これによって、ユーザのスレーブデータ２２０を保持していたノード２００（スレーブノード）が新たにそのユーザのマスタデータ２１０を保持するノード２００（マスタノード）として登録され、それまでのスレーブデータ２２０が新たにマスタデータ２１０として参照されるようになる。
【００２１】
上記のステップＳ１０５〜Ｓ１０９の処理によって新たなマスタノードが設定された後、および上記のステップＳ１０３でマスタノードが利用可能であった場合（ＹＥＳ）、ルーティングマネージャ１００は、マスタノードへのルーティングを実行する。より具体的には、ルーティングマネージャ１００は、ユーザ情報１１０にマスタノードとして定義されたノード２００にアクセスして、マスタデータ２１０の更新番号を取得する（ステップＳ１１１）。続いて、アクセス要求を送信したユーザによるマスタデータへのアクセスが実行される（ステップＳ１１３）。なお、マスタデータへのアクセスは、例えばデータの追加、更新、複製または削除を含みうる。
【００２２】
マスタデータへのアクセス（ステップＳ１１３）が終了すると、ルーティングマネージャ１００は、ステップＳ１０３におけるマスタノードと同様にして、ユーザのスレーブノードが利用可能であるか否かを判定する（ステップＳ１１５）。ここで、スレーブノードが利用可能ではなかった場合（ＮＯ）、ルーティングマネージャ１００は新たなスレーブノードを設定する（ステップＳ１１７）。新たなスレーブノードは、例えばマスタノードとは別のノード２００の中から選択される。選択されたスレーブノードは、ユーザ情報１１０に登録される。
【００２３】
なお、上記のステップＳ１１７において新たなスレーブノードが設定されるのは、以下の２つの場合である。１つは、マスタノードが利用可能である（ステップＳ１０３でＹＥＳ）ためそのままマスタデータへのアクセスが実行されたが、その一方でスレーブノードは利用可能でなくなっていた場合。もう１つは、マスタノードが利用可能ではなかった（ステップＳ１０３のＮＯ）ためステップＳ１０９でスレーブノードがマスタノードに変更され、その結果としてスレーブノードが存在していない場合である。上記のステップＳ１１５での判定とステップＳ１１７での処理によって、これらのいずれの場合にも利用可能なスレーブノードが新たに設定される。
【００２４】
次に、ルーティングマネージャ１００は、マスタデータからスレーブデータへのレプリケーションを実行する（ステップＳ１５０）。これによって、スレーブデータに上記のステップＳ１１３でのデータアクセスの結果が反映され、マスタデータとスレーブデータとが同期された状態になる。
【００２５】
図３は、図１に示したデータ処理システムにおけるレプリケーションの処理の例を示すフローチャートである。なお、ここで説明するレプリケーションの処理は、図２に示したステップＳ１５０の処理に対応する。図３を参照すると、レプリケーションを実行するルーティングマネージャ１００は、まず、マスタデータとスレーブデータとの更新番号が合致しているか否かを判定する（ステップＳ１５１）。ここで、マスタデータとスレーブデータとの更新番号が合致していれば（ＹＥＳ）、ルーティングマネージャ１００は、スレーブデータにマスタデータとの差分を反映し（ステップＳ１５３）、スレーブデータの更新番号を更新する（ステップＳ１５５）。一方、ステップＳ１５１でマスタデータとスレーブデータとの更新番号が合致していなければ（ＮＯ）、ルーティングマネージャ１００は、マスタデータをスレーブデータにコピーする（ステップＳ１５７）。
【００２６】
（１−３．管理情報の例）
図４は、図１に示したデータ処理システムにおけるユーザ情報の例を示す図である。図４を参照すると、ユーザ情報１１０は、「ユーザ」、「マスタノード」、および「スレーブノード」の項目を含む。「ユーザ」は、ルーティングマネージャ１００によるルーティングの対象になるユーザを識別するための情報である。「マスタノード」および「スレーブノード」は、「ユーザ」として特定されるユーザのマスタデータおよびスレーブデータがそれぞれ保持されているノード２００と示す情報である。図示された例ではノードの名称（ノードＡ、ノードＢ、・・・）が記録されているが、これに代えてネットワーク上で各ノード２００を識別するアドレスなどが記録されていてもよい。
【００２７】
なお、ユーザ情報１１０における「ユーザ」は、ノード２００におけるデータの保持単位としての１または複数のユーザを意味し、必ずしもサービスを利用する個々のユーザアカウントとは一致しない。例えば、「ユーザ」の項目の「Ｕｓｅｒ＿００１」というＩＤは、複数のユーザアカウントに対応しうる。この場合、ユーザ情報１１０には、この複数のユーザアカウントについてのマスタデータが「マスタノード」であるノードＡ（ノード２００ａ）に保持されており、スレーブデータが「スレーブノード」であるノードＢ（ノード２００ｂ）に保持されていることが定義されていることになる。ルーティングマネージャ１００は、これらのユーザアカウントからのデータアクセス要求があった場合、ノードＡへのルーティングを実行する。ノードＡに格納されたマスタデータの中でどのレコードにアクセスするかは、例えばアクセス要求に含まれるクエリに応じてノードＡにおいて判断されうる。
【００２８】
図５は、図１に示したデータ処理システムにおけるノード情報の例を示す図である。図５を参照すると、ノード情報１２０は、「ノード」および「状態」の項目を含む。「ノード」は、ルーティングマネージャ１００によるルーティングの対象になりうるノード２００を互いに識別するための情報である。ユーザ情報１１０について既に説明したように、各ノード２００はノード名ではなくアドレスで記録されてもよい。「状態」は、各ノードが利用可能であるかを示す情報である。図示された例では、ノードＢ（ノード２００ｂ）が利用可能ではないことが示されている。「状態」の情報は、例えば、ルーティングマネージャ１００によるノード２００の状態の定期的な監視によって更新されてもよいし、図２に示したようなデータアクセスの実行時におけるアクセスの成否に基づいて更新されてもよい。
【００２９】
（１−４．データ移動処理の例）
図６は、図１に示したデータ処理システムにおけるデータアクセス時のデータ移動処理の具体的な例を示す図である。図６では、ノード２００ｂ（ノードＢ）が装置故障や通信の不調などのために利用可能ではない場合のデータ移動処理が示されている。ここで、ノード２００ｂには、Ｕｓｅｒ＿００３のマスタデータ２１０と、Ｕｓｅｒ＿００１およびＵｓｅｒ＿００６のスレーブデータ２２０とが保持されている。
【００３０】
例えば、Ｕｓｅｒ＿００３（として識別される１または複数のユーザアカウントのうちのいずれか）からのデータアクセス要求を受信したルーティングマネージャ１００は、図４に例示したようなユーザ情報１１０に従ってマスタノードであるノード２００ｂにアクセスしようとするが、図５に例示したノード情報１２０にあるように、図示された例においてノード２００ｂは利用可能ではない。
【００３１】
そこで、ルーティングマネージャ１００は、さらにユーザ情報１１０を参照して、スレーブノードであるノード２００ｄ（ノードＤ）に保持されていたＵｓｅｒ＿００３のスレーブデータ２２０（図中に白い星印で示す）をマスタデータ２１０ｄに変更する。ルーティングマネージャ１００は、Ｕｓｅｒ＿００３からのアクセス要求に対応して新たなマスタデータ２１０ｄを保持するノード２００ｄへのルーティングを実行し、マスタデータ２１０ｄへのアクセスが実行される。
【００３２】
この時点で、Ｕｓｅｒ＿００３については、元のスレーブデータ２２０がマスタデータ２１０ｄになったためにスレーブデータが存在していない。そこで、ルーティングマネージャ１００は、ノード２００ｄのマスタデータ２１０ｄをレプリケートして、ノード２００ａに新たなスレーブデータ２２０ａとして保持させる。なお、新たなスレーブデータ２２０を保持するノード２００は、例えば、既にマスタデータ２１０ｄを保持しているノード２００ｄ以外の、利用可能なノード２００（図示された例ではノード２００ａ，２００ｃ）の中から選択されうる。この時点でノード２００ｂが復旧していれば、ノード２００ｂがスレーブデータ２２０を保持するノードの選択肢に加えられてもよいし、優先的にスレーブデータ２２０を保持するノードとして選択されてもよい。
【００３３】
一方、Ｕｓｅｒ＿００１およびＵｓｅｒ＿００６については、ノード２００ｂに保持されているのがスレーブデータ２２０であるため、他のノード２００（Ｕｓｅｒ＿００１についてはノード２００ａ、Ｕｓｅｒ＿００６についてはノード２００ｃ）に保持されているマスタデータ２１０にはアクセスが可能である。しかしながら、例えば他のノードにも装置故障や通信の不調などが発生した場合にはデータへのアクセスができなくなってしまうため、例えば図２のステップＳ１１５として例示したように、マスタデータ２１０へのアクセスのタイミングで、スレーブデータ２２０を保持するノード２００が利用可能であるか否かが判定され、利用可能でなければ別のノードに新たなスレーブデータ２２０が作成される。
【００３４】
図示された例では、Ｕｓｅｒ＿００１についてはノード２００ｃ（ノードＣ）に、Ｕｓｅｒ＿００６についてはノード２００ｄ（ノードＤ）に、それぞれ新たなスレーブデータ２２０（図中に黒い星印で示す）が作成される。これらのスレーブデータ２２０は、別のノードに保持されているマスタデータ２１０からのレプリケーションによって生成される。なお、新たなスレーブデータ２２０を保持するノード２００は、例えば、既にマスタデータ２１０を保持しているノード２００以外の利用可能なノード２００の中から選択されうる。従って、Ｕｓｅｒ＿００１についてはノード２００ｃ，２００ｄが新たなスレーブノードの選択肢になり、Ｕｓｅｒ＿００６についてはノード２００ａ，２００ｄが新たなスレーブノードの選択肢になる。上記のＵｓｅｒ＿００３の場合と同様に、ノード２００ｂが復旧していれば、ノード２００ｂが選択肢に加えられてもよい。
【００３５】
図７は、図６に例示したデータ移動処理によって更新されたユーザ情報を示す図である。図７では、更新された項目に説明のために（＊）印が付されている。図示されたユーザ情報１１０’では、Ｕｓｅｒ＿００１およびＵｓｅｒ＿００６についてはスレーブノードだけが変更されている。また、Ｕｓｅｒ＿００３についてはマスタノード、スレーブノードともに変更されている。これによって、利用可能ではないノードＢ（ノード２００ｂ）はいずれのユーザについてもマスタノードおよびスレーブノードではなくなっている。
【００３６】
以上、本開示の第１の実施形態について説明した。本実施形態では、ユーザにサービスを提供するためのデータが、１または複数のユーザを単位としてノードに分散して保持され、ユーザからのデータへのアクセス要求に対応してルーティングが実行されるときに、ルーティング対象のマスタノードに障害が発見された場合には、レプリケートされたデータを保持しているスレーブノードへの代替的なルーティングが実行される。これによって、マスタノードに障害があった場合にもユーザへのサービスを継続することができる。
【００３７】
また、本実施形態では、データがユーザを単位として分散して保持されているために、上記のような代替的なルーティングの対象を、当該ノードをマスタノードまたはスレーブノードとするユーザに限定することが可能である。全ユーザについてのデータが一括して保持されている場合、スレーブノードからマスタノードへの切り替えや新たなスレーブノードの設定の影響は全ユーザに及ぶが、本実施形態では影響をより小さい範囲のユーザに限定することが可能である。また、例えば、上記の例のようにデータアクセス時に障害があったときにデータ移動処理を実行することにすれば、障害継続中にデータアクセス要求を送信しなかったユーザについては、障害復旧後に従前と同様のルーティングを実行することが可能でありうる。
【００３８】
（２．第２の実施形態）
図８は、本開示の第２の実施形態に係るデータ処理システムにおけるノード監視の処理の例を示すフローチャートである。本実施形態では、上記の第１の実施形態と同様のデータ処理システムにおいて、データアクセス時に加えて、またはデータアクセス時とは別に、定期的なノード状態の監視が実行され、利用可能ではないノードが発見された場合にはデータ移動処理が実行される。なお、以下で説明する部分以外については、本実施形態の構成は上記の第１の実施形態と同様でありうる。
【００３９】
図８を参照すると、ノード監視を実行するルーティングマネージャ１００は、まず、各ノード２００について、ノードが利用可能であるか否かを判定する（ステップＳ２０１）。ここで、ノード２００が利用可能であった場合（ＹＥＳ）、そのノード２００に関する処理は終了する。一方、ノード２００が利用可能ではなかった場合（ＮＯ）、ルーティングマネージャ１００は、利用可能でなかったノード２００でデータが格納されているボリュームのマウントを解除する（ステップＳ２０３）。さらに、ルーティングマネージャ１００は、利用可能な他のノード２００、例えば待機ノードに、ステップＳ２０３でマウントが解除されたボリュームをマウントする（ステップＳ２０５）。そして、ルーティングマネージャ１００は、ボリュームが新たにマウントされたノード２００の情報でユーザ情報１１０を更新する（ステップＳ２０７）。
【００４０】
図９は、図８に示したデータ移動処理の具体的な例を示す図である。図９では、第１の実施形態の説明で図１に例示したシステム１０において、ノード２００ｂ（ノードＢ）が装置故障や通信の不調などのために利用可能ではなくなった場合のデータ移動処理が示されている。ここで、ノード２００ｂには、Ｕｓｅｒ＿００３のマスタデータ２１０と、Ｕｓｅｒ＿００１およびＵｓｅｒ＿００６のスレーブデータ２２０とが保持されている。
【００４１】
ノード監視を実行するルーティングマネージャ１００は、ノード２００ｂが利用可能ではないことを発見すると、ノード２００ｂでデータが格納されているボリュームのマウントを解除し、このボリュームを待機ノード２００ｅ（ノードＥ）にマウントする。これによって、ノード２００ｅには、新たにＵｓｅｒ＿００３のマスタデータ２１０と、Ｕｓｅｒ＿００１およびＵｓｅｒ＿００６のスレーブデータ２２０とが保持されるようになる。このとき、Ｕｓｅｒ＿００３のマスタデータ２１０は、ノード２００ｄに格納されたスレーブデータ２２０からのレプリケーションによって生成されうる。また、Ｕｓｅｒ＿００１およびＵｓｅｒ＿００６のスレーブデータ２２０は、それぞれノード２００ａ，２００ｃに格納されたマスタデータ２１０からのレプリケーションによって生成されうる。
【００４２】
このとき、データ移動の処理の間にＵｓｅｒ＿００３のマスタデータ２１０が存在しない状態になることを防ぐため、ノード２００ｄに格納されたスレーブデータ２２０をマスタデータ２１０に変更した上で、ノード２００ｅにＵｓｅｒ＿００３のスレーブデータ２２０を作成してもよい。なお、例えば負荷分散の観点からマスタデータを分散させる方が望ましいような場合には、データのレプリケーションの完了後に、Ｕｓｅｒ＿００３について、ノード２００ｅのスレーブデータ２２０がマスタデータ２１０に変更され、ノード２００ｄのマスタデータ２１０がスレーブデータ２２０に戻されてもよい。
【００４３】
以上、本開示の第２の実施形態について説明した。本実施形態では、データへのアクセス要求がなくても、定期的なノードの監視によって、ノードに障害が発見された場合には当該ノードに保持されているマスタデータやスレーブデータが例えば待機ノードなどの他のノードに移動される。データがユーザを単位として保持されているために、こうしたデータ移動の処理中も、当該ノード以外のノードにマスタデータが保持されているユーザにはサービスを継続することができる。これによって、データへのアクセス要求があった場合には高い確率で利用可能なマスタノードへのルーティングが可能になる。
【００４４】
（３．第３の実施形態）
図１０は、本開示の第３の実施形態に係るデータ処理システムにおける負荷分散の処理の例を示すフローチャートである。本実施形態では、上記の第１または第２の実施形態と同様のデータ処理システムにおいて、データアクセス時および／またはノード監視時に加えて、またはこれらとは別に、負荷分散のためのデータ移動処理が実行される。なお、以下で説明する部分以外については、本実施形態の構成は上記の第１または第２の実施形態と同様でありうる。
【００４５】
図１０を参照すると、ルーティングマネージャ１００は、後述するノード情報１２２を参照して、各ノード２００の負荷が所定の閾値を上回っているか否かを判定する（ステップＳ３０１）。ここで、負荷が閾値を上回るノード２００がなかった場合（ＮＯ）、負荷分散の処理は終了する。一方、負荷が閾値を上回るノード２００があった場合（ＹＥＳ）、ルーティングマネージャ１００は、他のノード２００で負荷が閾値を下回っているものがないかを判定する（ステップＳ３０３）。なお、ステップＳ３０３で用いられる閾値は、例えばステップＳ３０１で用いられる閾値と同じ値であってもよいし、ステップＳ３０１で用いられる閾値よりも小さい値であってもよい。ステップＳ３０３において負荷が閾値を下回るノードがない場合（ＮＯ）、つまりすべてのノードが高負荷状態である場合には、分散先がないため負荷分散の処理が終了する。あるいは、さらに高い閾値を設定して、ステップＳ３０１，Ｓ３０３の判定が繰り返されてもよい。
【００４６】
上記のステップＳ３０３において、負荷が閾値を下回っている他のノード２００があった場合、つまり、あるノード２００では負荷が閾値を上回っており、他のノード２００では負荷が閾値を下回っている場合、ルーティングマネージャ１００は、データ移動処理を実行する。具体的には、ルーティングマネージャ１００は、負荷が閾値を上回っているノード２００（以下、高負荷ノードともいう）にマスタデータが保持されているユーザの中で、所定の程度以上負荷が高いユーザのマスタデータを、負荷が閾値を下回っているノード２００（以下、低負荷ノードともいう）に移動させる（ステップＳ３０５）。ここで、低負荷ノードは、例えば負荷が閾値を下回っているノード２００の中で、最も負荷が低いノードでありうる。また、低負荷ノードは、負荷が閾値を下回っているノード２００のうち、移動対象のユーザのスレーブデータを保持していないノードの中から選択されてもよい。
【００４７】
ここで、移動対象のユーザは、例えば、マスタデータへのアクセス頻度がより高く、ノードにより大きな負荷を及ぼしているユーザでありうる。また、移動の対象になるユーザは、高負荷ノードにマスタデータが保持されているユーザの中で最も負荷が高いユーザであってもよい。しかし、例えば、高負荷ノードの負荷の大部分がそのユーザによって発生しており、そのユーザのマスタデータを移動させると今度は移動先の低負荷ノードの負荷が閾値を上回ってしまうことが予測された場合には、負荷の大きさが２番目以降のユーザのマスタデータを移動させたり、マスタデータの移動自体を中止したりしてもよい。なお、移動先のノードは、上述した待機ノードであってもよい。
【００４８】
また、ステップＳ３０５でのデータの移動は、例えば、移動先の低負荷ノードに対象ユーザのスレーブデータが既に保持されていれば、そのスレーブデータをマスタデータに変更することによって実行されてもよい。一方、移動先の低負荷ノードが対象ユーザのスレーブデータを保持しているノードとは異なる場合、高負荷ノードにあるマスタデータをレプリケートすることによって低負荷ノードに新たにマスタデータが作成されてもよい。この場合、スレーブデータは別のノードに既に保持されているため、高負荷ノードにある元のマスタデータを消去してもよいし、高負荷ノードにある元のマスタデータをスレーブデータに変更して、別のノードのスレーブデータを消去してもよい。
【００４９】
次に、ルーティングマネージャ１００は、マスタデータが移動されたユーザについて、スレーブデータが存在するか否かを判定する（ステップＳ３０７）。ここで、スレーブデータが存在しないと判定される（ＮＯ）のは、例えばステップＳ３０５における移動先の低負荷ノードが対象ユーザのスレーブデータを既に保持しており、このスレーブデータをマスタデータに変更することによってデータの移動を実行したような場合である。このような場合、ルーティングマネージャ１００は、新たにスレーブデータを作成する（ステップＳ３０９）。この処理は、例えば、移動元の高負荷ノードにある元のマスタデータをスレーブデータに変更して残すことによって実行されてもよい。あるいは、移動元の高負荷ノードとも移動先の低負荷ノードとも異なる別のノードに、マスタデータのレプリケートによって新たにスレーブデータを作成してもよい。
【００５０】
なお、上記のステップＳ３０９で作成されるスレーブデータは、負荷が高いためにマスタデータが移動の対象になったユーザのデータである。上述の通り、スレーブデータはマスタデータに変更して使用される可能性があるため、スレーブデータの作成にあたっては、その時点でより負荷が低いノードが選択されてもよい。
【００５１】
スレーブデータが既に存在する（ステップＳ３０７のＹＥＳ）か、新たに作成される（ステップＳ３０９）と、ルーティングマネージャ１００は、後述するユーザ情報１１２に、新たなマスタノードおよびスレーブノードの情報を登録する（ステップＳ３１１）。
【００５２】
図１１は、本開示の第３の実施形態におけるユーザ情報の例を示す図である。図１１を参照すると、ユーザ情報１１２は、図４を参照して説明したユーザ情報１１０の項目に加えて、「アクセス頻度」の項目を含む。「アクセス頻度」は、ユーザがどのくらいの頻度でマスタデータにアクセスしたかを示す情報である。アクセスの頻度が高いほど、ユーザはマスタデータが保持されているノード２００に対してより大きな負荷を及ぼしていると考えられる。図１０を参照して説明した負荷分散の処理において、ルーティングマネージャ１００は、この「アクセス頻度」の項目を参照して、高負荷ノードにマスタデータが保持されているユーザの中で、所定の程度以上の負荷をノードに及ぼしているユーザを特定しうる。なお、「アクセス頻度」は、例えば図示されているように「非常に高い」「高い」「低い」といったような等級によって記録されてもよいし、例えば１日あたりのアクセス回数のような数値で記録されてもよい。
【００５３】
図１２は、本開示の第３の実施形態におけるノード情報の例を示す図である。図１２を参照すると、ノード情報１２２は、図５を参照して説明したノード情報１２０の項目に加えて、「負荷」の項目を含む。「負荷」は、ノードにどのくらいの負荷がかかっているかを示す情報である。図１０を参照して説明した負荷分散の処理において、ルーティングマネージャ１００は、この「負荷」の項目を参照して、ノード２００の負荷が閾値を上回っているか否かを判定しうる。なお、「負荷」は、例えば図示されているように「非常に高い」「高い」「低い」といったような等級によって記録されてもよいし、例えばプロセッサもしくはメモリの使用率、またはロードアベレージといったような指標値によって記録されてもよい。
【００５４】
図１３は、本開示の第３の実施形態における負荷分散処理の具体的な例を示す図である。図１３では、第１の実施形態の説明で図１に例示したシステム１０において、図１１および図１２に例示したような各ユーザのアクセス頻度および各ノード２００の負荷が発生した場合の負荷分散処理が示されている。
【００５５】
図示された例では、図１２に示したノード情報１２２にあるように、ノード２００ａ（ノードＡ）の負荷が最も高い。このときノード２００ａの負荷が所定の閾値を上回っていれば、ルーティングマネージャ１００はノード２００ａから他のノードへのデータ移動処理を実行する。一方、ノード情報１２２によれば、負荷が最も低いのはノード２００ｂ（ノードＢ）である。そこで、ルーティングマネージャ１００は、データの移動先をノード２００ｂに決定する。従って、上記の例でいえば、ノード２００ａが高負荷ノード、ノード２００ｂが低負荷ノードとしてそれぞれ扱われる。
【００５６】
ここで、図１１に示したユーザ情報１１２にあるように、ノード２００ａにマスタデータ２１０が保持されているユーザの中では、Ｕｓｅｒ＿００１のアクセス頻度が「非常に高い」であり、Ｕｓｅｒ＿００４のアクセス頻度が「高い」である。そこで、ルーティングマネージャは、アクセス頻度がより高いＵｓｅｒ＿００１を移動対象のユーザに決定し、データ移動の処理を実行する。ここで、ノード２００ｂには既にＵｓｅｒ＿００１のスレーブデータ２２０が既に保持されているため、ルーティングマネージャ１００は、このスレーブデータ２２０（図中に白い星印で示す）をマスタデータ２１０に変更する。
【００５７】
さらに、これによってＵｓｅｒ＿００１のスレーブデータが存在しなくなるため、ルーティングマネージャ１００は、ノード２００ｃに新たにＵｓｅｒ＿００１のスレーブデータ２２０を作成する。このスレーブデータ２２０は、例えば、図示されているようにノード２００ｂで新たにマスタデータ２１０となったデータからレプリケートされてもよく、ノード２００ａにある元のマスタデータ２１０からレプリケートされてもよい。なお、図示された例の場合、ノード２００ａにある元のマスタデータ２１０は、データ移動の処理終了後に消去されてもよい。
【００５８】
以上、本開示の第３の実施形態について説明した。本実施形態では、ノードに障害が発生しなくても、ノードの負荷が高い場合に、その負荷を分散させるためのデータ移動が実行される。こうした処理は、データがユーザを単位として各ノードに分散して格納されているために可能になる。移動の対象になるユーザ以外のユーザについてはサービスを継続することが可能であるとともに、移動の対象になるユーザについても、例えばスレーブデータを利用してデータ移動の処理を実行することによって、サービスの停止時間を最小限にすることができる。これによって、一部のノードへの負荷の集中が緩和され、例えばノードの過負荷による障害の発生やサービス品質の低下を防止することができる。
【００５９】
（４．その他のバリエーション）
図１４は、本開示の他の実施形態に係るデータ処理システムの構成を概略的に示す図である。図１４を参照すると、システム２０は、ルーティングマネージャ１００と、ノード２００とを含む。ここで、ルーティングマネージャ１００と、ノード２００とは、いずれも上記の第１の実施形態で図１に例示したシステム１０と同様である。システム２０は、本開示の実施形態に係るデータ処理システムを、最小限のノード２００で実現した例の１つである。
【００６０】
システム２０には、ノード２００ａ，２００ｂ，２００ｃの３つが含まれる。システム２０は、Ｕｓｅｒ＿００１、Ｕｓｅｒ＿００２、およびＵｓｅｒ＿００３の３組のユーザ（データの保持のために組織された１または複数のユーザ）のデータを保持する。Ｕｓｅｒ＿００１については、ノード２００ａがマスタデータ２１０を保持し、ノード２００ｂがスレーブデータを保持する。ノード２００ｃは、この時点ではＵｓｅｒ＿００１についてはデータを保持せず、待機ノードとして機能する。図示されているように、ノード２００ｃには、Ｕｓｅｒ＿００１のマスタデータまたはスレーブデータのレプリケートに備えてデータ保持領域２３０が確保されていてもよい。
【００６１】
同様に、Ｕｓｅｒ＿００２については、ノード２００ｂがマスタデータ２１０を保持し、ノード２００ｃがスレーブデータ２２０を保持し、ノード２００ａが待機ノードとして機能する。また、Ｕｓｅｒ＿００３については、ノード２００ｃがマスタデータ２１０を保持し、ノード２００ａがスレーブデータ２２０を保持し、ノード２００ｂが待機ノードとして機能する。このように、３つのノード２００があれば、それぞれをマスタノード、スレーブノード、および待機ノードとして機能させることによって、上述したようなデータ移動処理を実行することが可能である。また、このとき、ユーザを３つのグループ（上記の例ではＵｓｅｒ＿００１，Ｕｓｅｒ＿００２，Ｕｓｅｒ＿００３）に分けてそれぞれのマスタデータを異なるノード２００に分散して保持させれば、マスタデータへのアクセスによって発生する負荷を分散させることができる。
【００６２】
もちろん、上記の第１の実施形態で説明したように、システムがさらに多くのノード２００を含んだり、ノード２００の中にいずれのユーザに対しても待機ノードとして機能するノードが含まれたりすることによって、さらに冗長性を高めたシステムを構築することも可能である。
【００６３】
図１５は、本開示のさらに他の実施形態に係るデータ処理システムの構成を概略的に示す図である。図１５を参照すると、システム３０では、３つ以上のノード２００によってノード群３１が構成され、ルーティングマネージャ１００は、複数のノード群３１のうちのいずれかを選択してルーティングを実行する。それぞれのノード群３１は、例えば、互いに異なる種類のデータを保持するために利用されうる。例えば、あるノード群３１には各ユーザのプロフィール情報のデータが保持され、別のノード群３１には各ユーザのアクティビティログのデータが保持されてもよい。ルーティングマネージャ１００は、どの種類のデータへのアクセスが要求されているかに応じて、適切なノード群３１に含まれるノード２００へのルーティングを実行する。
【００６４】
また、図示されているように、ノード２００は、サーバ装置２００ｓを含んでもよく、クライアント装置２００ｔを含んでもよい。ここで、サーバ装置２００ｓは、ネットワーク上に存在する情報処理装置であって、専ら他の装置にサービスを提供するために利用される装置である。一方、クライアント装置２００ｔは、例えばユーザが所持している端末装置であって、例えばサーバ装置２００ｓによって提供されるサービスをユーザが利用するためのインターフェースとして機能するのに加えて、自らに、または他の装置にサービスを提供するためにも利用されうる装置である。本実施形態におけるノード２００は、こうしたサーバ装置２００ｓおよびクライアント装置２００ｔのどちらであってもよい。これはつまり、ユーザのデータが、サーバ装置２００ｓとクライアント装置２００ｔとに分散して格納されうることを意味する。
【００６５】
（５．ハードウェア構成）
次に、図１６を参照して、本開示の実施形態に係る情報処理装置のハードウェア構成について説明する。図１６は、情報処理装置のハードウェア構成を説明するためのブロック図である。図示された情報処理装置９００は、例えば、上記の実施形態におけるルーティングマネージャおよびノードを実現しうる。
【００６６】
情報処理装置９００は、ＣＰＵ（Central  Processing  unit）９０１、ＲＯＭ（Read  Only  Memory）９０３、およびＲＡＭ（Random  Access  Memory）９０５を含む。また、情報処理装置９００は、ホストバス９０７、ブリッジ９０９、外部バス９１１、インターフェース９１３、入力装置９１５、出力装置９１７、ストレージ装置９１９、ドライブ９２１、接続ポート９２３、通信装置９２５を含んでもよい。情報処理装置９００は、ＣＰＵ９０１に代えて、またはこれとともに、ＤＳＰ（Digital  Signal  Processor）またはＡＳＩＣ（Application  Specific  Integrated  Circuit）と呼ばれるような処理回路を有してもよい。
【００６７】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９、またはリムーバブル記録媒体９２７に記録された各種プログラムに従って、情報処理装置９００内の動作全般またはその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータなどを記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータなどを一次記憶する。ＣＰＵ９０１、ＲＯＭ９０３、およびＲＡＭ９０５は、ＣＰＵバスなどの内部バスにより構成されるホストバス９０７により相互に接続されている。さらに、ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Peripheral  Component  Interconnect/Interface）バスなどの外部バス９１１に接続されている。
【００６８】
入力装置９１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなど、ユーザによって操作される装置である。入力装置９１５は、例えば、赤外線やその他の電波を利用したリモートコントロール装置であってもよいし、情報処理装置９００の操作に対応した携帯電話などの外部接続機器９２９であってもよい。入力装置９１５は、ユーザが入力した情報に基づいて入力信号を生成してＣＰＵ９０１に出力する入力制御回路を含む。ユーザは、この入力装置９１５を操作することによって、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりする。
【００６９】
出力装置９１７は、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置９１７は、例えば、ＬＣＤ（Liquid  Crystal  Display）、ＰＤＰ（Plasma  Display  Panel）、有機ＥＬ（Electro-Luminescence）ディスプレイなどの表示装置、スピーカおよびヘッドホンなどの音声出力装置、ならびにプリンタ装置などでありうる。出力装置９１７は、情報処理装置９００の処理により得られた結果を、テキストまたは画像などの映像として出力したり、音声または音響などの音声として出力したりする。
【００７０】
ストレージ装置９１９は、情報処理装置９００の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置９１９は、例えば、ＨＤＤ（Hard  Disk  Drive）などの磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイスなどにより構成される。このストレージ装置９１９は、ＣＰＵ９０１が実行するプログラムや各種データ、および外部から取得した各種のデータなどを格納する。
【００７１】
ドライブ９２１は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体９２７のためのリーダライタであり、情報処理装置９００に内蔵、あるいは外付けされる。ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録されている情報を読み出して、ＲＡＭ９０５に出力する。また、ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録を書き込む。
【００７２】
接続ポート９２３は、機器を情報処理装置９００に直接接続するためのポートである。接続ポート９２３は、例えば、ＵＳＢ（Universal  Serial  Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Small  Computer  System  Interface）ポートなどでありうる。また、接続ポート９２３は、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）ポートなどであってもよい。接続ポート９２３に外部接続機器９２９を接続することで、情報処理装置９００と外部接続機器９２９との間で各種のデータが交換されうる。
【００７３】
通信装置９２５は、例えば、通信ネットワーク９３１に接続するための通信デバイスなどで構成された通信インターフェースである。通信装置９２５は、例えば、有線または無線ＬＡＮ（Local  Area  Network）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、またはＷＵＳＢ（Wireless  USB）用の通信カードなどでありうる。また、通信装置９２５は、光通信用のルータ、ＡＤＳＬ（Asymmetric  Digital  Subscriber  Line）用のルータ、または、各種通信用のモデムなどであってもよい。通信装置９２５は、例えば、インターネットや他の通信機器との間で、ＴＣＰ／ＩＰなどの所定のプロトコルを用いて信号などを送受信する。また、通信装置９２５に接続される通信ネットワーク９３１は、有線または無線によって接続されたネットワークであり、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信または衛星通信などである。
【００７４】
以上、情報処理装置９００のハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。かかる構成は、実施する時々の技術レベルに応じて適宜変更されうる。
【００７５】
（６．補足）
本開示の実施形態は、例えば、上記で説明したような情報処理装置（ルーティングマネージャまたはノード）、システム、情報処理装置またはシステムで実行される情報処理方法、情報処理装置を機能させるためのプログラム、およびプログラムが記録された一時的でない有形の媒体を含みうる。
【００７６】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００７７】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）ユーザ群にサービスを提供するためのデータを、前記ユーザ群の一部である１または複数のユーザを単位として保持するノードと、
前記１または複数のユーザからの前記データへのアクセス要求に対応して、前記１または複数のユーザのデータが格納された前記ノードへのルーティングを実行するルーティングマネージャと
を含み、
前記ノードは、前記１または複数のユーザのマスタデータを保持する第１のノードと、前記マスタデータをレプリケートしたスレーブデータを保持する第２のノードと、第３のノードとを含み、
前記ルーティングマネージャは、さらに、前記第２のノードに保持された前記スレーブデータを前記マスタデータに変更するとともに、前記スレーブデータをレプリケートして新たなスレーブデータとして前記第３のノードに保持させるデータ移動処理を実行する
データ処理システム。
（２）前記ルーティングマネージャは、前記第１のノードが利用可能でない場合に前記データ移動処理を実行する、前記（１）に記載のデータ処理システム。
（３）前記ルーティングマネージャは、前記１または複数のユーザからのアクセス要求に対応して前記第１のノードへのルーティングが実行されなかった場合に、代替的に前記第２のノードへのルーティングを実行するとともに前記データ移動処理を実行する、前記（２）に記載のデータ処理システム。
（４）前記ルーティングマネージャは、前記１または複数のユーザからのアクセス要求に対応して前記第１のノードへのルーティングが実行された場合に、前記第２のノードを検証し、該検証によって前記第２のノードが利用可能でないことが発見された場合には前記第１のノードに保持された前記マスタデータをレプリケートして新たなスレーブデータとして前記第３のノードに保持させる処理を実行する、前記（３）に記載のデータ処理システム。
（５）前記ルーティングマネージャは、定期的に前記ノードを検証することによって前記第１のノードが利用可能でないことを発見する、前記（２）〜（４）のいずれか１項に記載のデータ処理システム。
（６）前記ルーティングマネージャは、前記１または複数のユーザが前記ノードに及ぼす負荷に応じて前記データ移動処理を実行する、前記（１）〜（５）のいずれか１項に記載のデータ処理システム。
（７）前記ルーティングマネージャは、前記第１のノードの負荷が前記第２のノードよりも高い場合に前記データ移動処理を実行する、前記（６）に記載のデータ処理システム。
（８）前記第１のノードは、前記１または複数のユーザとは異なる１または複数のユーザについては前記スレーブデータを保持する、前記（１）〜（７）のいずれか１項に記載のデータ処理システム。
（９）前記第２のノードは、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータを保持する、前記（１）〜（８）のいずれか１項に記載のデータ処理システム。
（１０）前記第３のノードは、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータまたは前記スレーブデータを保持する、前記（１）〜（９）のいずれか１項に記載のデータ処理システム。
（１１）前記第３のノードは、前記ノードの中から前記データ移動処理の実行時に選択される、前記（１）〜（１０）のいずれか１項に記載のデータ処理システム。
（１２）前記第１のノード、前記第２のノード、および前記第３のノードによってノード群が構成され、
前記データ処理システムは、複数の種類の前記データを保持するために複数の前記ノード群を含み、
前記ルーティングマネージャは、前記データの種類に応じて前記複数のノード群のうちのいずれかを選択してルーティングを実行する、前記（１）〜（１１）のいずれか１項に記載のデータ処理システム。
（１３）前記ノードは、サーバ装置を含む、前記（１）〜（１２）のいずれか１項に記載のデータ処理システム。
（１４）前記ノードは、クライアント装置を含む、前記（１）〜（１３）のいずれか１項に記載のデータ処理システム。
（１５）１または複数のユーザにサービスを提供するためのマスタデータをレプリケートしたスレーブデータを保持する記憶部と、
前記マスタデータへのアクセス要求に対応してルーティングを実行するルーティングマネージャが前記スレーブデータを前記マスタデータに変更したときに、前記変更後のマスタデータへのアクセスを受け付けるとともに、前記変更後のマスタデータをレプリケートして新たなスレーブデータとして外部装置に保持させる制御部と
を備えるデータ処理装置。
（１６）前記記憶部は、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータを保持する、前記（１５）に記載のデータ処理装置。
（１７）前記記憶部は、前記１または複数のユーザとは異なる１または複数のユーザについては前記マスタデータも前記スレーブデータも保持しない、前記（１５）に記載のデータ処理装置。
（１８）サーバ装置である、前記（１５）〜（１７）のいずれか１項に記載のデータ処理装置。
（１９）クライアント装置である、前記（１５）〜（１７）のいずれか１項に記載のデータ処理装置。
（２０）１または複数のユーザにサービスを提供するためのマスタデータをレプリケートしたスレーブデータを保持する記憶部に接続されるコンピュータに、
前記マスタデータへのアクセス要求に対応してルーティングを実行するルーティングマネージャが前記スレーブデータを前記マスタデータに変更したときに、前記変更後のマスタデータへのアクセスを受け付けるとともに、前記変更後のマスタデータをレプリケートして新たなスレーブデータとして外部装置に保持させる機能
を実現させるためのプログラムが保持された記憶媒体。
【符号の説明】
【００７８】
１０，２０，３０    システム
３１    ノード群
１００    ルーティングマネージャ
１１０，１１２    ユーザ情報
１２０，１２２    ノード情報
２００    ノード
２１０    マスタデータ
２２０    スレーブデータ
２３０    データ保持領域
【図１】
2014229088.tif 000003
【図２】
2014229088.tif 000004
【図３】
2014229088.tif 000005
【図４】
2014229088.tif 000006
【図５】
2014229088.tif 000007
【図６】
2014229088.tif 000008
【図７】
2014229088.tif 000009
【図８】
2014229088.tif 000010
【図９】
2014229088.tif 000011
【図１０】
2014229088.tif 000012
【図１１】
2014229088.tif 000013
【図１２】
2014229088.tif 000014
【図１３】
2014229088.tif 000015
【図１４】
2014229088.tif 000016
【図１５】
2014229088.tif 000017
【図１６】
2014229088.tif 000018