(57)【要約】【課題】Ｐ２Ｐ型の分散データベースシステムにおける応答性能を向上できるようにする。【解決手段】管理対象データを記憶装置３０３０に格納可能なノード計算機１０２０を複数備える分散データベースシステムにおいて、記憶装置３０３０には、入出力性能の高い第１種記憶装置と、入出力性能の低い第２種記憶装置とがあり、管理対象データの読み出し要求に対して応答するために必要とされる同一の管理対象データを読み出すべきノード計算機１０２０の数を示す応答数情報を含むＫｅｙＳｐａｃｅ管理表３１１０を記憶する記憶装置３０３０を備え、ＣＰＵ３０１０を、新たな管理対象データの書き込み要求を受け取った場合に、複数のノード計算機から、応答数情報が示す数のノード計算機であって、第１種記憶装置に対して管理対象データを格納可能なノード計算機を、格納先として決定し、決定されたノード計算機に対して管理対象データを格納させるように構成する。【選択図】図３
2020034961.tif 000002
【特許請求の範囲】
【請求項１】
クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムであって、
前記記憶装置には、入出力性能の高い第１種記憶装置と、入出力性能の低い第２種記憶装置とがあり、
前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報を記憶する管理情報記憶部と、
前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機であって、前記第１種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先として決定する格納先決定部と、
決定された前記ノード計算機に対して、前記管理対象データを格納させる格納制御部と、
を備える分散データベースシステム。
【請求項２】
前記管理情報は、前記管理対象データの可用性を確保するために前記管理対象データを格納するために必要とされるノード計算機の数を示す冗長数情報をさらに含み、
前記格納先決定部は、前記冗長数情報が示す数と前記応答数情報が示す数との差の数のノード計算機であって、前記第２種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先に追加する
請求項１に記載の分散データベースシステム。
【請求項３】
前記記憶装置が前記第１種記憶装置であるか前記第２種記憶装置であるかを示す種別情報を取得する種別取得部をさらに有し、
前記格納先決定部は、取得した種別情報に基づいて、前記ノード計算機が前記第１種記憶装置に対して管理対象データを格納可能か否かを識別する
請求項１又は請求項２に記載の分散データベースシステム。
【請求項４】
前記記憶装置が前記第１種記憶装置であるか前記第２種記憶装置であるかを、前記記憶装置に対する実際のデータの入出力の結果から特定する種別特定部をさらに有する
請求項１又は請求項２に記載の分散データベースシステム。
【請求項５】
前記記憶装置を備え、前記記憶装置の記憶領域を、前記管理対象データを格納する論理ボリュームとして前記ノード計算機に提供する１以上のストレージノードと、
前記ストレージノードにおける前記記憶装置の論理ボリュームを提供するノード計算機と前記記憶装置の種類とを示す論理ボリューム情報を管理する管理サーバと、
を備え、
前記種別取得部は、前記管理サーバから、前記ノード計算機に提供される論理ボリュームを提供する記憶装置の種別を取得する
請求項３に記載の分散データベースシステム。
【請求項６】
前記ストレージノードの入出力処理が所定の閾値を超えているか否か、及び前記ストレージノードのプロセッサの利用率が所定の閾値を超えているか否かを判定するノード状態判定部と、
前記ストレージノードの入出力処理が所定の閾値を超え、且つ前記ストレージノードのプロセッサの利用率が所定の閾値を超えていない場合に、前記ストレージノードに対してボリュームを追加する設定を行うボリューム設定部と
をさらに備える
請求項５に記載の分散データベースシステム。
【請求項７】
前記ストレージノードの入出力処理が所定の閾値を超えているか否か、及び前記ストレージノードのプロセッサの利用率が所定の閾値を超えているか否かを判定するノード状態判定部と、
前記ストレージノードの入出力処理が所定の閾値を超えておらず、且つ前記ストレージノードのプロセッサの利用率が所定の閾値を超えている場合に、応答数情報を低下させる応答数調整部と、
をさらに備える
請求項５に記載の分散データベースシステム。
【請求項８】
前記計算機ノード同士を接続するクラスタネットワークにおける帯域利用率が所定の閾値を超過しているか否か、前記ストレージノード同士を接続するストレージノードクラスタネットワークにおける帯域利用率が所定の閾値を超過しているか否かを判定する帯域判定部と、
前記クラスタネットワークにおける帯域利用率が閾値を超過し、且つ前記ストレージノードクラスタネットワークにおける帯域利用率が閾値を超過しない場合に、管理対象データにおける冗長数情報を下げ、前記ストレージノード間で前記管理対象データをミラーリングする設定を行う冗長設定部と、
をさらに備える
請求項５に記載の分散データベースシステム。
【請求項９】
前記冗長設定部は、前記冗長数情報が示す数と前記応答数情報が示す数との差の数が２以上である場合に、前記冗長数情報を下げて、前記ストレージノード間で前記管理対象データをミラーリングする設定を行う
請求項８に記載の分散データベースシステム。
【請求項１０】
クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムであって、
前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報と、前記管理対象データの可用性を確保するために前記管理対象データを格納するために必要とされるノード計算機の数を示す冗長数情報とを含む管理情報を記憶する管理情報記憶部と、
前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機に対して、前記管理対象データを非圧縮で格納させ、前記冗長数情報が示す数と前記応答数情報が示す数との差の数のノード計算機に対して、前記管理対象データを圧縮して格納させる圧縮格納制御部と、
を備える分散データベースシステム。
【請求項１１】
クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムによる分散データベース管理方法であって、
前記記憶装置には、入出力性能の高い第１種記憶装置と、入出力性能の低い第２種記憶装置とがあり、
前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報を記憶し、
前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機であって、前記第１種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先として決定し、
決定された前記ノード計算機に対して、前記管理対象データを格納させる
分散データベース管理方法。
【請求項１２】
クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムにおける前記ノード計算機に実行させるための分散データベース管理プログラムであって、
前記記憶装置には、入出力性能の高い第１種記憶装置と、入出力性能の低い第２種記憶装置とがあり、
前記ノード計算機には、
前記クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の前記管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報が記憶され、
前記ノード計算機を
前記クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、前記複数のノード計算機から、前記応答数情報が示す数のノード計算機であって、前記第１種記憶装置に対して管理対象データを格納可能なノード計算機を、前記管理対象データの格納先として決定する格納先決定部と、
決定された前記ノード計算機に対して、前記管理対象データを格納させる格納制御部と、して機能させる分散データベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノード計算機によって構成される分散データベースシステムを管理する技術に関する。
【背景技術】
【０００２】
ＳｏＥ（System of Engagement）市場では、ＳｏＲ（System of Record）市場に比べてコスト意識が高く、高可用で高性能なだけでなく、低コストなシステムが求められる。
【０００３】
ＩＴシステムを構成するソフトウェアのうち、多種多様なデータを保持するためにデータベース管理ソフトが用いられる。ＳｏＥ向けのシステムでは、データ量の増減が予測困難なため、スケールアウトが容易な分散データベースが使われる。
【０００４】
分散データベースは、複数のノード計算機（ノードともいう）でクラスタを構成し、Ｗｒｉｔｅ（ライト）要求が発生した場合には、複数のノードで同一のデータ（レプリカ）を保持することで可用性を担保する。
【０００５】
一方、各ノードの応答性能は、データを保持するＩ／Ｏデバイス（ＳＳＤ（Solid State Drive）や、ＨＤＤ（Hard Disk Drive）等の記憶装置）の性能に依存する。そのため、分散データベースの応答性能を高めるには、各ノードのＩ／Ｏデバイスを、例えばＳＳＤといった高性能なものにする必要があった。高性能なＩ／Ｏデバイスは、一般的に高価であり、高性能な分散データベースを低コストで構築することは難しい。
【０００６】
分散データベースを低コストで構築するため、分散データベースを構成する全てのノードでＳＳＤを使用するのではなく、一部のノードで安価なＨＤＤを使用することが行われている。
【０００７】
例えば、特許文献１には、マスタスレーブ型の分散データベースにおいて、スレーブのネットワークにデータが到達した時点でデータ複製成功と判断してクライアントへ書き込み完了を通知する技術が開示されている。
【０００８】
このようなマスタスレーブ型の分散データベースでは、最初にマスタノードにレプリカを作成し、次にスレーブノードにレプリカを作成する。そのため、特許文献１に開示された技術を用いれば、マスタノードにＳＳＤを使用し、スレーブノードにＨＤＤを使用することで、分散データベースの応答性能を高性能にすることができ、また、一部のノードでＨＤＤを使うことで、全てのノードでＳＳＤを使用する場合に比べて、低コスト化を実現することができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際公開第２０１３／０４６３５２号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
例えば、マスタスレーブ型の分散データベースは、マスタノードが単一障害点となり、可用性に問題がある。これを回避するものとして、Ｐ２Ｐ（Peer to Peer）型の分散データベースが存在する。Ｐ２Ｐ型の分散データベースは、全てのノードが同一の機能を持ち、複数のノードで同一のデータを保持することで可用性を担保する。特定のノードが特別な役割を持たないため、ノード障害が発生しても他のノードが代役をでき、サービスを継続できる。
【００１１】
しかしながら、Ｐ２Ｐ型の分散データベースでは、最初のレプリカを作成するノードは動的にランダムに選択されるため、ＳＳＤを使用するノードと、ＨＤＤを使用するノードとが混在している場合、特許文献１に開示された技術を用いたとしても、最初にレプリカを作成するノードとしてＨＤＤを使用するノードが選択されてしまうと、クライアントに対する分散データベースの応答性能が低下する。
【００１２】
本発明は、Ｐ２Ｐ型の分散データベースシステムにおける応答性能を向上することのできる技術を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、一観点に係る分散データベースシステムは、クライアント計算機が利用する管理対象データを記憶装置に格納可能なノード計算機を複数備える分散データベースシステムであって、記憶装置には、入出力性能の高い第１種記憶装置と、入出力性能の低い第２種記憶装置とがあり、クライアント計算機からの管理対象データの読み出し要求に対して応答するために必要とされる同一の管理対象データを読み出すべきノード計算機の数を示す応答数情報を含む管理情報を記憶する管理情報記憶部と、クライアント計算機から新たな管理対象データの書き込み要求を受け取った場合に、複数のノード計算機から、応答数情報が示す数のノード計算機であって、第１種記憶装置に対して管理対象データを格納可能なノード計算機を、管理対象データの格納先として決定する格納先決定部と、決定されたノード計算機に対して、管理対象データを格納させる格納制御部と、を備える。
【発明の効果】
【００１４】
本発明によれば、Ｐ２Ｐ型の分散データベースシステムにおける応答性能を向上することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例１に係る計算機システムの全体構成図である。
【図２】図２は、実施例１に係るクライアント計算機の構成図である。
【図３】図３は、実施例１に係るノード計算機の構成図である。
【図４】図４は、実施例１に係るデータ管理テーブルの構成図である。
【図５】図５は、実施例１に係るノード情報管理表の構成図である。
【図６】図６は、実施例１に係るＫｅｙＳｐａｃｅ管理表の構成図である。
【図７】図７は、実施例１に係る格納先管理表の構成図である。
【図８】図８は、実施例１に係るリクエスト対応処理のフローチャートである。
【図９】図９は、実施例１に係るデータ配分処理のフローチャートである。
【図１０】図１０は、実施例１に係るライト処理のフローチャートである。
【図１１】図１１は、実施例１に係るリード処理のフローチャートである。
【図１２】図１２は、実施例１に係る設定変更処理のフローチャートである。
【図１３】図１３は、実施例２に係るノード計算機の構成図である。
【図１４】図１４は、実施例２に係るデバイス種別取得処理のフローチャートである。
【図１５】図１５は、実施例２に係るデバイス種別更新処理のフローチャートである。
【図１６】図１６は、実施例３に係る計算機システムの全体構成図である。
【図１７】図１７は、実施例３に係るＳＤＳノードの構成図である。
【図１８】図１８は、実施例３に係る論理ボリューム管理表の構成図である。
【図１９】図１９は、実施例３に係る管理サーバの構成図である。
【図２０】図２０は、実施例３に係るＳＤＳノード管理表の構成図である。
【図２１】図２１は、実施例３に係る論理ボリューム情報管理表の構成図である。
【図２２】図２２は、実施例３に係る論理ボリューム情報更新処理のフローチャートである。
【図２３】図２３は、実施例３に係るデバイス種別取得処理のフローチャートである。
【図２４】図２４は、実施例４に係る管理サーバの構成図である。
【図２５】図２５は、実施例４に係る稼働情報管理表の構成図である。
【図２６】図２６は、実施例４に係る性能劣化対処処理のフローチャートである。
【図２７】図２７は、実施例５に係る管理サーバの構成図である。
【図２８】図２８は、実施例５に係るネットワーク負荷管理表の構成図である。
【図２９】図２９は、実施例５に係る冗長性確保方法判断処理のフローチャートである。
【発明を実施するための形態】
【００１６】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１７】
以下の説明では、「ＡＡＡテーブル」、「ＡＡＡ表」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ＡＡＡテーブル」や「ＡＡＡ表」を「ＡＡＡ情報」と呼ぶことができる。
【００１８】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサである。１以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１９】
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも１つを用いながら行うため、処理の動作主体が、プロセッサ部（或いは、プロセッサ部を有する計算機又は計算機システム）とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。また、プログラムが実行されることによって実現される処理のうちの少なくとも一部が、ハードウェア回路（例えばＡＳＩＣ（Application Specific Integrated Circuit）又はＦＰＧＡ（Field-Programmable Gate Array））によって実現されてもよい。
【実施例１】
【００２０】
まず、本発明の実施例１に係る計算機システムについて説明する。
【００２１】
図１は、第１実施例に係る計算機システムの全体構成図である。
【００２２】
計算機システム１は、１以上のクライアント計算機１０１０と、複数のノード計算機１０２０とを含む。クライアント計算機１０１０と、複数のノード計算機１０２０は、業務ネットワーク１０３０を介して接続されている。また、複数のノード計算機１０２０は、クラスタネットワーク１０４０を介して接続されている。なお、業務ネットワーク１０３０と、クラスタネットワーク１０４０とは同一のネットワークであってもよい。
【００２３】
計算機システム１においては、複数のノード計算機１０２０により、分散データベースクラスタ（分散データベースシステム：単に分散データベースともいう）１０５０が構成されている。
【００２４】
クライアント計算機１０１０は、ユーザデータ（管理対象データ）を用いた各種処理を実行し、分散データベースクラスタ１０５０へユーザデータについてのＩ／Ｏ要求（Ｗｒｉｔｅ要求（ライト要求）やＲｅａｄ要求（リード要求））を送信し、その応答を受信する。
【００２５】
ノード計算機１０２０は、クライアント計算機１０１０で使用されるユーザデータを格納可能であり、クライアント計算機１０１０からのＩ／Ｏ要求に対応するＩ／Ｏ処理を実行する。
【００２６】
次に、クライアント計算機１０１０について詳細に説明する。
【００２７】
図２は、実施例１に係るクライアント計算機の構成図である。
【００２８】
クライアント計算機１０１０は、プロセッサの一例としてのＣＰＵ（Central Processing Unit）２０１０と、メモリ２０２０と、記憶装置２０３０と、入力装置２０４０と、出力装置２０５０と、通信ポート２０６０とを備える。
【００２９】
通信ポート２０６０は、例えば、有線ＬＡＮカードや無線ＬＡＮカードなどのインターフェースであり、業務ネットワーク１０３０を介して各ノード計算機１０２０と通信する。
【００３０】
ＣＰＵ２０１０は、メモリ２０２０及び／又は記憶装置２０３０に格納されているプログラムに従って各種処理を実行する。
【００３１】
メモリ２０２０は、例えば、ＲＡＭ（Random Access Memory）であり、ＣＰＵ２０１０で実行されるプログラムや、必要な情報を記憶する。
【００３２】
記憶装置２０３０は、例えば、ハードディスクドライブやＳＳＤなどであり、ＣＰＵ２０１０で実行されるプログラムや、ＣＰＵ２０１０に利用されるデータを記憶する。
【００３３】
入力装置２０４０は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける装置である。出力装置２０５０は、例えば、ディスプレイ等の各種情報を表示出力する装置である。
【００３４】
次に、ノード計算機１０２０について説明する。
【００３５】
図３は、実施例１に係るノード計算機の構成図である。
【００３６】
ノード計算機１０２０は、プロセッサの一例としてのＣＰＵ３０１０と、メモリ３０２０と、管理情報記憶部の一例としての記憶装置３０３０と、入力装置３０４０と、出力装置３０５０と、通信ポート３０６０とを備える。
【００３７】
通信ポート３０６０は、例えば、有線ＬＡＮカードや無線ＬＡＮカードなどのインターフェースであり、業務ネットワーク１０３０を介して各クライアント計算機１０１０と通信し、クラスタネットワーク１０４０を介して他のノード計算機１０２０と通信する。
【００３８】
ＣＰＵ３０１０は、メモリ３０２０及び／又は記憶装置３０３０に格納されているプログラムに従って各種処理を実行する。
【００３９】
メモリ３０２０は、例えば、ＲＡＭであり、ＣＰＵ３０１０で実行されるプログラムや、必要な情報を記憶する。本実施例では、メモリ３０２０は、データ管理テーブル３０２５を記憶する。データ管理テーブル３０２５は、分散データベース管理システムのＣａｓｓａｎｄｒａにおけるｍｅｍｔａｂｌｅに相当する。データ管理テーブル３０２５は、クライアント計算機１０１０からのＷｒｉｔｅ要求のあったデータを一時的に保持する。なお、データ管理テーブル３０２５の詳細については後述する。
【００４０】
記憶装置３０３０は、例えば、ＨＤＤやＳＳＤなどであり、ＣＰＵ３０１０で実行されるプログラムや、ＣＰＵ３０１０に利用されるデータや、クライアント計算機１０１０から送信されたユーザデータ等を記憶する。本実施例に係る計算機システム１では、記憶装置３０３０の種別がＳＳＤ（第１種記憶装置の一例）であるノード計算機１０２０と、記憶装置３０３０の種別がＨＤＤ（第２種記憶装置）であるノード計算機１０２０とが混在している。例えば、記憶装置３０３０の種別をＳＳＤにした場合には、ＨＤＤにした場合に比して、Ｉ／Ｏにおける応答速度の性能（Ｉ／Ｏ性能：入出力性能）が高い。一方、記憶装置３０３０の種別をＨＤＤにした場合には、ＳＳＤにした場合に比して、コストを低減することができる。
【００４１】
本実施例では、記憶装置３０３０は、ノード情報管理表３１１０と、ＫｅｙＳｐａｃｅ（キースペース）管理表３１２０と、格納先管理表３１２５と、を格納する。また、記憶装置３０３０は、ＣｏｍｍｉｔＬｏｇ（コミットログ）記憶領域３１３０と、データ記憶領域３１４０とを有する。また、記憶装置３０３０は、ＣＰＵ３０１０により実行されるプログラムとして、リクエスト受信プログラム３２１０と、データ配分プログラム３２２０と、Ｗｒｉｔｅ処理プログラム３２３０と、Ｒｅａｄ処理プログラム３２４０と、クラスタ通信プログラム３２５０とを記憶する。これらプログラムは、メモリ３０２０にロードされてＣＰＵ３０１０により実行される。ここで、ＣＰＵ３０１０がデータ配分プログラム３２２０を実行することにより、格納先決定部が構成される。また、ＣＰＵ３０１０がリクエスト受信プログラム３２１０を実行することにより、格納制御部が構成される。
【００４２】
入力装置３０４０は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける装置である。出力装置３０５０は、例えば、ディスプレイ等の各種情報を表示出力する装置である。
【００４３】
次に、メモリ３０２０に格納されているデータ管理テーブル３０２５について詳細に説明する。
【００４４】
図４は、実施例１に係るデータ管理テーブルの構成図である。
【００４５】
データ管理テーブル３０２５は、管理する所定の単位のデータ（単位データ）ごとに対応するエントリを格納する。データ管理テーブル３０２５のエントリは、ＫｅｙＳｐａｃｅ（キースペース）３０２５ａと、ＣｏｌｕｍｎＦａｍｉｌｙ（カラムファミリ）３０２５ｂと、Ｒｏｗ（ロウ）３０２５ｃと、Ｎａｍｅ（名称）３０２５ｄと、Ｖａｌｕｅ（値）３０２５ｅと、Ｔｉｍｅｓｔａｍｐ（タイムスタンプ）３０２５ｆとの欄（カラム）を有する。
【００４６】
ＫｅｙＳｐａｃｅ３０２５ａには、単位データを保持するＫｅｙＳｐａｃｅ（インスタンスに対応）を一意に識別する識別子（ＫｅｙＳｐａｃｅＩＤ）が格納される。ＣｏｌｕｍｎＦａｍｉｌｙ３０２５ｂには、単位データを保持するＣｏｌｕｍｎＦａｍｉｌｙ（テーブルに対応）を一意に識別する識別子（ＣｏｌｕｍｎＦａｍｉｌｙＩＤ）が格納される。Ｒｏｗ３０２５ｃには、単位データを格納するＲｏｗを一意に識別する識別子（ＲｏｗＩＤ）が格納される。Ｎａｍｅ３０２５ｄには、単位データを一意に識別するデータ名（Ｎａｍｅ）が格納される。Ｖａｌｕｅ３０２５ｅには、エントリに対応する単位データの内容（Ｖａｌｕｅ：値）が格納される。Ｔｉｍｅｓｔａｍｐ３０２５ｆには、エントリに対応する単位データが書き込まれた日時（タイムスタンプ）が格納される。
【００４７】
次に、ノード情報管理表３１１０について詳細に説明する。
【００４８】
図５は、実施例１に係るノード情報管理表の構成図である。
【００４９】
ノード情報管理表３１１０は、分散データベースクラスタ１０５０を構成するノード計算機ごとのエントリを格納する。ノード情報管理表３１１０のエントリは、ノードＩＤ３１１０ａと、ＤＣ（データセンタ）３１１０ｂと、Ｒａｃｋ３１１０ｃと、Ｉ／Ｏデバイス種別３１１０ｄとの欄を含む。
【００５０】
ノードＩＤ３１１０ａには、エントリに対応するノード計算機１０２０を一意に識別する識別子（ノードＩＤ）が格納される。ＤＣ３１１０ｂには、エントリに対応するノード計算機１０２０が配置されているデータセンタを一意に識別する識別子（ＤＣＩＤ）が格納される。Ｒａｃｋ３１１０ｃには、エントリに対応するノード計算機１０２０が配置されているラックを一意に識別する識別子（ＲａｃｋＩＤ）が格納される。Ｉ／Ｏデバイス種別３１１０ｄには、エントリに対応するノード計算機１０２０が使用しているＩ／Ｏデバイス（本実施例では、記憶装置３０３０）の種別（Ｉ／Ｏデバイス種別）が格納される。
【００５１】
次に、ＫｅｙＳｐａｃｅ管理表３１２０について詳細に説明する。
【００５２】
図６は、実施例１に係るＫｅｙＳｐａｃｅ管理表の構成図である。
【００５３】
ＫｅｙＳｐａｃｅ管理表３１２０は、分散データベースクラスタ１０５０で管理しているＫｅｙＳｐｅｃｅ毎のエントリを格納する。ＫｅｙＳｐａｃｅ管理表３１２０のエントリは、ＫｅｙＳｐａｃｅ３１２０ａと、冗長レベル３１２０ｂと、整合性レベル３１２０ｃとの欄を含む。
【００５４】
ＫｅｙＳｐａｃｅ３１２０ａには、エントリに対応するＫｅｙＳｐａｃｅのＫｅｙＳｐａｃｅＩＤが格納される。冗長レベル３１２０ｂには、エントリに対応するＫｅｙＳｐａｃｅにおいて、冗長性を確保するために必要なデータの複製（レプリカ）の数（基本的には、ノード計算機（Ｉ／Ｏデバイス）の数）を示す冗長レベル（冗長数情報）が格納される。整合性レベル３１２０ｃには、エントリに対応するＫｅｙＳｐａｃｅにおいて、整合性を確保するために必要なデータの複製（レプリカ）の数（ノード計算機（Ｉ／Ｏデバイス）の数）を示す整合性レベル（応答数情報）が格納される。具体的には、クライアント計算機１０１０からＲｅａｄ要求があった場合に、整合性レベルのノード計算機１０２０から読み出したデータが整合していることを確認した場合に、クライアント計算機１０１０にデータを応答する。
【００５５】
次に、格納先管理表３１２５について詳細に説明する。
【００５６】
図７は、実施例１に係る格納先管理表の構成図である。
【００５７】
格納先管理表３１２５は、単位データ毎のエントリが格納される。格納先管理表３１２５のエントリは、ＫｅｙＳｐａｃｅ３１２５ａと、ＣｏｌｕｍｎＦａｍｉｌｙ３１２５ｂと、Ｒｏｗ３１２５ｃと、Ｎａｍｅ３１２５ｄと、ノードＩＤ３１２５ｅとの欄を有する。
【００５８】
ＫｅｙＳｐａｃｅ３１２５ａには、エントリに対応する単位データを保持するＫｅｙＳｐａｃｅのＫｅｙＳｐａｃｅＩＤが格納される。ＣｏｌｕｍｎＦａｍｉｌｙ３１２５ｂには、単位データを保持するＣｏｌｕｍｎＦａｍｉｌｙのＣｏｌｕｍｎＦａｍｉｌｙＩＤが格納される。Ｒｏｗ３１２５ｃには、単位データを格納するＲｏｗのＲｏｗＩＤが格納される。Ｎａｍｅ３１２５ｄには、単位データのＮａｍｅが格納される。ノードＩＤ３１２５ｅには、エントリに対応する単位データを格納しているノード計算機を一意に識別する識別子（ノードＩＤ）が格納される。この格納先管理表３１２５によると、単位データがどのノード計算機１０２０に格納されているかを特定することができる。
【００５９】
ＣｏｍｍｉｔＬｏｇ記憶領域３１３０は、Ｗｒｉｔｅ要求があったデータの即時ログを記憶するための領域である。ＣｏｍｍｉｔＬｏｇ記憶領域３１３０には、Ｗｒｉｔｅ要求のたびに、Ｗｒｉｔｅ要求に対応するデータのＫｅｙＳｐａｃｅＩＤ、ＣｏｌｕｍｎＦａｍｉｌｙＩＤ、ＲｏｗＩＤ、Ｎａｍｅ、Ｖａｌｕｅ、ＴｉｍｅＳｔａｍｐが格納される。
【００６０】
データ記憶領域３１４０は、メモリ３０２０のデータ管理テーブル３０２５の内容のフラッシュ時の書き込み先となる領域である。データ記憶領域３１４０は、データ管理テーブル３０２５と同一のデータ形式で内容を保持する。
【００６１】
次に、分散データベースクラスタ１０５０の処理動作について説明する。
【００６２】
まず、リクエスト対応処理について説明する。
【００６３】
図８は、実施例１に係るリクエスト対応処理のフローチャートである。
【００６４】
リクエスト対応処理は、リクエスト受信プログラム３２１０をＣＰＵ３０１０が実行することにより実行される。リクエスト対応処理は、クライアント計算機１０１０からのリクエストを受信した場合に実行される。
【００６５】
クライアント計算機１０１０からリクエストを受信すると（Ｓ７０１）、リクエスト受信プログラム３２１０（正確には、リクエスト受信プログラム３２１０を実行するＣＰＵ３０１０）は、受信したリクエストが、Ｕｐｄａｔｅ（更新）、Ｒｅａｄ（読み出し）、Ｗｒｉｔｅ（書き込み）のいずれであるかを判定する（Ｓ７０２）。
【００６６】
この結果、リクエストがＵｐｄａｔｅの場合（Ｓ７０２：Ｕｐｄａｔｅ）には、リクエスト受信プログラム３２１０は、格納先管理表３１２５を参照して、Ｕｐｄａｔｅ対象のデータを保持する1以上のノード計算機１０２０を検索し（Ｓ７０３）、検索したノード計算機１０２０に対してＵｐｄａｔｅ対象のデータを書き込ませるＷｒｉｔｅ要求を転送し（Ｓ７０４）、処理をステップＳ７０９に進める。
【００６７】
また、リクエストがＲｅａｄの場合（Ｓ７０２：Ｒｅａｄ）には、リクエスト受信プログラム３２１０は、格納先管理表３１２５を参照して、Ｒｅａｄ対象のデータを保持する1以上のノード計算機１０２０を検索し（Ｓ７０５）、検索したノード計算機１０２０に対してＲｅａｄ要求を送信し（Ｓ７０６）、処理をステップＳ７０９に進める。
【００６８】
また、リクエストがＷｒｉｔｅ場合（Ｓ７０２：Ｗｒｉｔｅ）には、リクエスト受信プログラム３２１０は、データ分配プログラム３２２０に対して、データを分配して格納させるノード計算機１０２０を決定させる要求（ノード決定要求）を送信し、データ分配プログラム３２２０から分配させて格納させるノード計算機１０２０の決定結果を受信し（Ｓ７０７）、決定結果のノード計算機１０２０に対して、Ｗｒｉｔｅ要求を送信し（Ｓ７０８）、処理をステップＳ７０９に進める。
【００６９】
ステップＳ７０９では、リクエスト受信プログラム３２１０は、要求を送信した各ノード計算機１０２０からの応答を待ち、応答が返ってきたノード計算機１０２０の数が、ＫｅｙＳｐａｃｅ管理表３１２０のリクエスト対象のデータの属するＫｅｙＳｐａｃｅに対応する整合性レベルより少ないか否かを判定する（Ｓ７１０）。
【００７０】
この結果、応答が返ってきたノード計算機１０２０の数が整合性レベルよりも少ない場合（Ｓ７１０：Ｙｅｓ）には、整合性が確認されていないことを意味しているので、リクエスト受信プログラム３２１０は、処理をステップＳ７０９に進める。
【００７１】
一方、応答が返ってきたノード計算機１０２０の数が整合性レベルより少なくない、すなわち、整合性レベル以上となった場合（Ｓ７１０：Ｎｏ）には、整合性が確認されたことを意味しているので、リクエスト受信プログラム３２１０は、クライアント計算機１０１０に対して応答を返し（Ｓ７１１）、処理を終了する。
【００７２】
次に、データ分配処理について説明する。
【００７３】
図９は、実施例１に係るデータ配分処理のフローチャートである。
【００７４】
データ配分処理は、データ配分プログラム３２２０をＣＰＵ３０１０が実行することにより実行される。データ配分処理は、リクエスト受信プログラム３２１０からノード決定要求（図８のステップＳ７０７で送信）を受信した場合に実行される。
【００７５】
データ配分プログラム３２２０は、データ配分先のノード決定要求を受信すると、ノード決定要求に対応するＫｅｙＳｐａｃｅを確認し、ＫｅｙＳｐａｃｅ管理表３１２０を参照して、このＫｅｙＳｐａｃｅにおける冗長レベルと、整合性レベルとを取得する（Ｓ８０１）。
【００７６】
次に、データ配分プログラム３２２０は、ノード情報管理表３１１０を参照し、レプリカを作成する１つのノード計算機１０２０をＩ／Ｏデバイス種別がＳＳＤのノード計算機１０２０の中から選択する（Ｓ８０２）。
【００７７】
次に、データ配分プログラム３２２０は、選択済みのノード計算機１０２０の数が、ステップＳ８０１で取得した整合性レベルより少ないか否かを判定する（Ｓ８０３）。
【００７８】
この結果、選択済みのノード計算機１０２０の数が、ステップＳ８０１で取得した整合性レベルよりも少ない場合（Ｓ８０３：Ｙｅｓ）には、整合性の確保に必要な数のＳＳＤのノード計算機１０２０が選択されていないことを意味しているので、データ配分プログラム３２２０は、ノード情報管理表３１１０を参照し、レプリカを作成する別の１つのノード計算機１０２０をＩ／Ｏデバイス種別がＳＳＤのノード計算機１０２０の中から選択し（Ｓ８０４）、処理をステップＳ８０３に進める。
【００７９】
一方、選択済みのノード計算機１０２０の数が、整合性レベルよりも少なくない場合、すなわち、整合性レベル以上である場合（Ｓ８０３：Ｎｏ）には、整合性の確保に必要な数のＳＳＤのノード計算機１０２０が選択されていることを意味しているので、データ配分プログラム３２２０は、処理をステップＳ８０５に進める。
【００８０】
ステップＳ８０５では、データ配分プログラム３２２０は、選択済みのノード計算機１０２０の数が、ステップＳ８０１で取得した冗長レベルより少ないか否かを判定する（Ｓ８０５）。
【００８１】
この結果、選択済みのノード計算機１０２０の数が、ステップＳ８０１で取得した冗長レベルよりも少ない場合（Ｓ８０５：Ｙｅｓ）には、冗長性の確保に必要な数のノード計算機１０２０が選択されていないことを意味しているので、データ配分プログラム３２２０は、ノード情報管理表３１１０を参照し、レプリカを作成する別の１つのノード計算機１０２０をＩ／Ｏデバイス種別がＨＤＤのノード計算機１０２０の中から選択し（Ｓ８０６）、処理をステップＳ８０５に進める。
【００８２】
一方、選択済みのノード計算機１０２０の数が、冗長レベルよりも少なくない場合、すなわち、冗長レベル以上である場合（Ｓ８０５：Ｎｏ）には、冗長性の確保に必要な数のノード計算機１０２０が選択されていることを意味しているので、データ配分プログラム３２２０は、処理を終了する。
【００８３】
このデータ配分処理によると、データのレプリカを配分するノード計算機１０２０として、整合性レベルに対応する数のＳＳＤのノード計算機１０２０と、冗長レベルに不足している数（冗長レベル−整合性レベル）のＨＤＤのノード計算機１０２０とを適切に選択することができる。
【００８４】
次に、ライト処理について説明する。
【００８５】
図１０は、実施例１に係るライト処理のフローチャートである。
【００８６】
ライト処理は、Ｗｒｉｔｅ処理プログラム３２３０をＣＰＵ３０１０が実行することにより実行される。ライト処理は、Ｗｒｉｔｅ処理プログラム３２３０が、リクエスト受信プログラム３２１０からＷｒｉｔｅ要求（図８のステップＳ７０４、Ｓ７０８で送信）を受信した場合に実行される。
【００８７】
Ｗｒｉｔｅ処理プログラム３２３０は、Ｗｒｉｔｅ要求を受信すると（Ｓ９０１）、ＣｏｍｍｉｔＬｏｇ記憶領域３１３０に、ログとして、Ｗｒｉｔｅ要求に対応するデータのＫｅｙＳｐａｃｅＩＤ、ＣｏｌｕｍｎＦａｍｉｌｙＩＤ、ＲｏｗＩＤ、Ｎａｍｅ、及びＶａｌｕｅと、Ｗｒｉｔｅ要求に対応するＴｉｍｅｓｔａｍｐを格納し（Ｓ９０２）、メモリ３０２０のデータ管理テーブル３０２５に、Ｗｒｉｔｅ要求に対応するデータを反映させ（Ｓ９０３）、要求元に応答を返す（Ｓ９０４）。
【００８８】
次に、Ｗｒｉｔｅ処理プログラム３２３０は、データ管理テーブル３０２５のサイズが閾値以上であるか否かを判定し（Ｓ９０５）、データ管理テーブル３０２５のサイズが閾値以上でない場合（Ｓ９０５：Ｎｏ）には処理を終了する。
【００８９】
一方、データ管理テーブル３０２５のサイズが閾値以上である場合（Ｓ９０５：Ｙｅｓ）には、Ｗｒｉｔｅ処理プログラム３２３０は、データ管理テーブル３０２５の内容をフラッシュする、すなわち、データ管理テーブル３０２５の内容を記憶装置３０３０のデータ記憶領域３１４０に移動し（Ｓ９０６）、処理を終了する。
【００９０】
次に、リード処理について説明する。
【００９１】
図１１は、実施例１に係るリード処理のフローチャートである。
【００９２】
リード処理は、Ｒｅａｄ処理プログラム３２４０をＣＰＵ３０１０が実行することにより実行される。リード処理は、Ｒｅａｄ処理プログラム３２４０が、リクエスト受信プログラム３２１０からＲｅａｄ要求（図８のステップＳ７０５で送信）を受信した場合に実行される。
【００９３】
Ｒｅａｄ処理プログラム３２４０は、Ｒｅａｄ要求を受信すると（Ｓ１００１）、Ｒｅａｄ対象のデータ（この処理の説明において対象データという）がデータ管理テーブル３０２５に存在するか否かを判定する（Ｓ１００２）。この結果、対象データがデータ管理テーブル３０２５に存在する場合（Ｓ１００２：Ｙｅｓ）には、Ｒｅａｄ処理プログラム３２４０は、データ管理テーブル３０２５から対象データを読み込んで、読み込んだ対象データを含む応答を要求元に送信し（Ｓ１００５）、処理を終了する。
【００９４】
一方、対象データがデータ管理テーブル３０２５に存在しない場合（Ｓ１００２：Ｎｏ）には、Ｒｅａｄ処理プログラム３２４０は、データ記憶領域３１４０から対象データを読み込んで、読み込んだ対象データを含む応答を要求元に送信し（Ｓ１００５）、処理を終了する。
【００９５】
次に、設定変更処理について説明する。
【００９６】
図１２は、実施例１に係る設定変更処理のフローチャートである。
【００９７】
設定変更処理は、クラスタ通信プログラム３２５０をＣＰＵ３０１０が実行することにより実行される。設定変更処理は、クラスタ通信プログラム３２５０が、クライアント計算機１０１０から設定変更を受信した場合に実行される。
【００９８】
クラスタ通信プログラム３２５０は、クライアント計算機１０１０から設定変更を受信すると（Ｓ１１０１）、ノード情報管理表３１１０を参照し、分散データベースクラスタ１０５０を構成する全てのノード計算機１０２０に対して、受信した設定変更の内容（設定変更内容）を通知し、設定変更を自装置内のＫｅｙＳｐａｃｅ管理表３１２０に反映させ（Ｓ１１０３）、処理を終了する。なお、このノード計算機１０２０から設定変更内容の通知を受けた他のノード計算機１０２０のクラスタ通信プログラム３２５０は、設定変更を各装置内のＫｅｙＳｐａｃｅ管理表３１２０に反映させる。
【００９９】
以上説明したように、本実施例に係る分散データベースクラスタ１０５０においては、整合性レベルの数のＳＳＤを有するノード計算機１０２０と、冗長レベルに不足している数のＨＤＤを有するノード計算機１０２０とを用いて同一のデータを管理するようにしている。このため、Ｗｒｉｔｅ処理や、Ｒｅａｄ処理においては、ＳＳＤを有するノード計算機１０２０によって応答性を向上することができ、ＨＤＤを有するノード計算機１０２０を含む冗長レベルの数のノード計算機１０２０により、データの冗長度を確保することができる。これにより、分散データベースクラスタ１０５０において、高性能且つ低コストを実現できる。
【実施例２】
【０１００】
次に、本発明の実施例２に係る計算機システムについて説明する。なお、実施例２に係る計算機システムについては、実施例１に係る計算機システムと異なる点を中心に説明する。
【０１０１】
図１３は、実施例２に係るノード計算機の構成図である。
【０１０２】
実施例２に係るノード計算機は、図３に示す実施例１に係るノード計算機に対して、記憶装置３０３０にＩ／Ｏデバイス種別取得プログラム１２０１０を新たに備えるようにするとともに、クラスタ通信プログラム３２５０の一部の処理を変更させたものである。ここで、ＣＰＵ３０１０がＩ／Ｏデバイス種別取得プログラム１２０１０を実行することにより、種別取得部が構成される。
【０１０３】
次に、実施例２に係るノード計算機１０２０によるデバイス種別取得処理について説明する。
【０１０４】
図１４は、実施例２に係るデバイス種別取得処理のフローチャートである。
【０１０５】
デバイス種別取得処理は、Ｉ／Ｏデバイス種別取得プログラム１２０１０をＣＰＵ３０１０が実行することにより実行される。デバイス種別取得処理は、Ｉ／Ｏデバイス取得プログラム１２０１０が、ノード計算機１０２０の起動を検出した場合に実行される。
【０１０６】
Ｉ／Ｏデバイス種別取得プログラム１２０１０は、ノード計算機１０２０が起動されると（Ｓ１３０１）、自ノード計算機１０２０におけるＣｏｍｍｉｔＬｏｇ記憶領域３１３０と、データ記憶領域３１４０とを構成するＩ／Ｏデバイスの種別を自ノード計算機１０２０上で動作するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の機能を用いて取得する（Ｓ１３０２）。例えば、ＯＳがＬｉｎｕｘ（登録商標）である場合には、「lsblk -o name,rota」を実行した結果を取得し、ＲＯＴＡの値が０のＩ／ＯデバイスはＳＳＤであり、ＲＯＴＡの値が１のＩ／ＯデバイスはＨＤＤであると判別できる。また、Ｉ／Ｏベンチマーク技術により、ＣＰＵ３０１０が、Ｉ／Ｏデバイスの実際のＩ／Ｏ性能を計測して、その計測結果に応じて、Ｉ／Ｏデバイス種別を取得してもよい。この際のＣＰＵ３０１０により構成される機能部が、種別特定部に相当する。
【０１０７】
次に、Ｉ／Ｏデバイス種別取得プログラム１２０１０は、ノード情報管理表３１１０の自ノード計算機１０２０のＩ／Ｏデバイス種別３１１０ｄの設定を確認し、ステップＳ１３０２で取得したＩ／Ｏデバイス種別が、保持する値と同一か否かを判定する（Ｓ１３０３）。この結果、取得したＩ／Ｏデバイス種別が、保持する値と同一である場合（Ｓ１３０３：Ｙｅｓ）には、Ｉ／Ｏデバイス種別取得プログラム１２０１０は、処理を終了する。
【０１０８】
一方、取得したＩ／Ｏデバイス種別が、保持する値と同一でない場合（Ｓ１３０３：Ｎｏ）には、Ｉ／Ｏデバイス種別取得プログラム１２０１０は、クラスタ通信プログラム３２５０により、分散データベースクラスタ１０５０を構成する全ノード計算機１０２０に自ノード計算機１０２０のＩ／Ｏデバイス種別の変更通知を送信し（Ｓ１３０４）、処理を終了する。
【０１０９】
次に、デバイス種別更新処理について説明する。
【０１１０】
図１５は、実施例２に係るデバイス種別更新処理のフローチャートである。
【０１１１】
デバイス種別更新処理は、クラスタ通信プログラム３２５０をＣＰＵ３０１０が実行することにより実行される。デバイス種別更新処理は、他のノード計算機１０２０からＩ／Ｏデバイス種別の変更通知を受信した場合に実行される。
【０１１２】
クラスタ通信プログラム３２５０は、他のノード計算機１０２０からＩ／Ｏデバイス種別の変更通知を受信すると（Ｓ１４０１）、ノード情報管理表３１１０の送信元のノード計算機１０２０に対応するエントリのＩ／Ｏデバイス種別３１１０ｄの値を受信した変更種別におけるＩ／Ｏデバイス種別に更新し（Ｓ１４０２）、処理を終了する。これにより、各ノード計算機１０２０におけるノード情報管理表３１１０にある各ノード計算機１０２０のＩ／Ｏデバイスの種別を最新の状態に維持することができる。
【０１１３】
本実施例に係る計算機システムによると、ユーザがノード計算機１０２０毎のＩ／Ｏデバイスの種別を確認して、ノード情報管理表３１１０へ設定する必要がなくなる。
【実施例３】
【０１１４】
次に、本発明の実施例３に係る計算機システムについて説明する。なお、実施例３に係る計算機システムについては、実施例２に係る計算機システムと異なる点を中心に説明する。
【０１１５】
まず、実施例３に係る計算機システムについて説明する。
【０１１６】
図１６は、実施例３に係る計算機システムの全体構成図である。
【０１１７】
実施例３に係る計算機システムは、実施例２に係る計算機システムにおいて、新たに、１以上のストレージノードの一例としてのＳＤＳ（Software Defined Storage）ノード１５０１０と、管理サーバ１５０３０とを備える。ノード計算機１０２０と、ＳＤＳノード１５０１０とは、ストレージネットワーク１５０４０を介して接続されている。また、各ＳＤＳノード１５０１０は、ＳＤＳクラスタネットワーク１５０５０を介して接続されている。複数のＳＤＳノード１５０１０によって、ＳＤＳクラスタ１５０２０が構成されている。管理サーバ１５０３０と、ノード計算機１０２０と、ＳＤＳノード１５０１０とは、管理用ネットワーク１５０６０で接続される。
【０１１８】
なお、業務ネットワーク１０３０と、クラスタネットワーク１０４０と、ストレージネットワーク１５０４０と、ＳＤＳクラスタネットワーク１５０５０と、管理用ネットワーク１５０６０とは、それぞれ別のネットワークでもよく、一部もしくは全部が同一のネットワークであってもよい。また、本実施例では、ＳＤＳノードとしているが、ＳＤＳノードに代えて、専用のハードウェアで構成されたストレージノードとしてもよい。なお、計算機システム１において、分散データベースクラスタ１０５０と、ＳＤＳクラスタ１５０２０と、管理サーバ１５０３０と、を組み合わせたものが分散データベースシステムに対応する。
【０１１９】
実施例３に係るノード計算機１０２０は、実施例２に係るノード計算機１０２０とは、Ｉ／Ｏデバイス種別取得プログラム１２０１０の機能が異なっている。
【０１２０】
次に、ＳＤＳノードについて説明する。
【０１２１】
図１７は、実施例３に係るＳＤＳノードの構成図である。
【０１２２】
ＳＤＳノード１５０１０は、例えば、汎用計算機を用いて構成されたストレージノードであり、コントローラ１６０１０と、メモリ１６０２０と、Ｉ／Ｏポート１６０３０と、管理ポート１６０４０と、１以上のＩ／Ｏデバイス１６０５０とを含む。
【０１２３】
Ｉ／Ｏポート１６０３０は、通信用のインターフェースであり、ストレージネットワーク１５０４０を介して各ノード計算機１０２０と通信し、ＳＤＳクラスタネットワーク１５０５０を介して他のＳＤＳノード１５０１０と通信する。
【０１２４】
管理ポート１６０４０は、通信用のインターフェースであり、管理用ネットワーク１５０６０を介して管理サーバ１５０３０と通信する。
【０１２５】
コントローラ１６０１０は、メモリ１６０２０及び／又はＩ／Ｏデバイス１６０５０に格納されているプログラムに従って各種処理を実行する。
【０１２６】
メモリ１６０２０は、例えば、ＲＡＭであり、コントローラ１６０１０で実行されるプログラムや、必要な情報を記憶する。本実施例では、メモリ１６０２０は、論理ボリューム管理表１６１１０を記憶する。
【０１２７】
Ｉ／Ｏデバイス１６０５０は、例えば、ＨＤＤやＳＳＤなどであり、コントローラ１６０１０で実行されるプログラムや、コントローラ１６０１０に利用されるデータや、クライアント計算機１０１０で利用するユーザデータを格納する。例えば、Ｉ／Ｏデバイス１６０５０の種別をＳＳＤにした場合には、ＨＤＤにした場合に比して、Ｉ／Ｏにおける応答速度の性能（Ｉ／Ｏ性能）が高い。一方、Ｉ／Ｏデバイス１６０５０の種別をＨＤＤにした場合には、ＳＳＤにした場合に比して、コストを低減することができる。
【０１２８】
本実施例では、Ｉ／Ｏデバイス１６０５０から切り出された記憶領域を論理ボリューム１６２１０としてノード計算機１０２０に提供する。論理ボリューム１６２１０は、複数のＩ／Ｏデバイス１６０５０で構成されるＲＡＩＤ（Redundant Array of Independent (or Inexpensive Disks）グループに基づく記憶領域で構成されてもよい。
【０１２９】
次に、論理ボリューム管理表１６１１０について説明する。
【０１３０】
図１８は、実施例３に係る論理ボリューム管理表の構成図である。
【０１３１】
論理ボリューム管理表１６１１０は、ＳＤＳノード１５０１０において管理する論理ボリューム毎のエントリを格納する。論理ボリューム管理表１６１１０のエントリは、論理ボリュームＩＤ１６１１０ａと、接続先１６１１０ｂと、Ｉ／ＯデバイスＩＤ１６１１０ｃと、Ｉ／Ｏデバイス種別１６１１０ｄとの欄を含む。
【０１３２】
論理ボリュームＩＤ１６１１０ａには、エントリに対応する論理ボリュームを一意に識別する識別子（論理ボリュームＩＤ）が格納される。接続先１６１１０ｂには、エントリに対応する論理ボリュームを使用するノード計算機１０２０のノードＩＤが格納される。Ｉ／ＯデバイスＩＤ１６１１０ｃには、論理ボリュームを構成するＩ／Ｏデバイスの識別子（Ｉ／ＯデバイスＩＤ）が格納される。Ｉ／Ｏデバイス種別１６１１０ｄには、エントリに対応する論理ボリュームを構成するＩ／Ｏデバイスの種別が格納される。なお、ＳＤＳノード１５０１０は、管理サーバ１５０３０から論理ボリューム管理表１６１１０の情報の要求を受けると、論理ボリューム管理表１６１１０の情報を応答として返す。
【０１３３】
次に、管理サーバ１５０３０について説明する。
【０１３４】
図１９は、実施例３に係る管理サーバの構成図である。
【０１３５】
管理サーバ１５０３０は、プロセッサの一例としてのＣＰＵ１８０１０と、メモリ１８０２０と、記憶装置１８０３０と、入力装置１８０４０と、出力装置１８０５０と、通信ポート１８０６０とを備える。
【０１３６】
通信ポート１８０６０は、例えば、有線ＬＡＮカードや無線ＬＡＮカードなどのインターフェースであり、管理用ネットワーク１５０６０を介してそれぞれのノード計算機１０２０及びＳＤＳノード１５０１０と通信する。
【０１３７】
ＣＰＵ１８０１０は、メモリ１８０２０及び／又は記憶装置１８０３０に格納されているプログラムに従って各種処理を実行する。
【０１３８】
メモリ１８０２０は、例えば、ＲＡＭであり、ＣＰＵ１８０２０で実行されるプログラムや、必要な情報を記憶する。
【０１３９】
記憶装置１８０３０は、例えば、ＨＤＤやＳＳＤなどであり、ＣＰＵ１８０１０で実行されるプログラムや、ＣＰＵ１８０１０に利用されるデータ等を記憶する。本実施例では、記憶装置１８０３０は、ＳＤＳノード管理表１８１１０と、論理ボリューム情報管理表１８１２０と、論理ボリューム情報収集プログラム１８２１０と、を格納する。論理ボリューム情報収集プログラム１８２１０は、メモリ１８０２０にロードされてＣＰＵ１８０１０により実行される。
【０１４０】
入力装置１８０４０は、例えば、マウス、キーボード等のユーザによる操作入力を受け付ける装置である。出力装置１８０５０は、例えば、ディスプレイ等の各種情報を表示出力する装置である。
【０１４１】
次に、ＳＤＳノード管理表１８１１０について説明する。
【０１４２】
図２０は、実施例３に係るＳＤＳノード管理表の構成図である。
【０１４３】
ＳＤＳノード管理表１８１１０は、ＳＤＳノード１５０１０が格納する論理ボリュームを管理するための表であり、エントリは、ＳＤＳノード１８１１０ａと、論理ボリュームＩＤ１８１１０ｂとの欄を含む。ＳＤＳノード１８１１０ａには、ＳＤＳクラスタ１５０２０を構成するＳＤＳノード１５０１０を一意に識別する識別子（ＳＤＳノードＩＤ）が格納される。論理ボリュームＩＤ１８１１０ｂには、エントリに対応するＳＤＳノード１５０１０で管理されている論理ボリュームを一意に識別する識別子（論理ボリュームＩＤ）が格納される。
【０１４４】
次に、論理ボリューム情報管理表１８１２０について説明する。
【０１４５】
図２１は、実施例３に係る論理ボリューム情報管理表の構成図である。
【０１４６】
論理ボリューム情報管理表１８１２０は、論理ボリューム毎のエントリを格納する。論理ボリューム情報管理表１８１２０のエントリは、論理ボリュームＩＤ１８１２０ａと、ノード計算機１８１２０ｂと、Ｉ／Ｏデバイス種別１８１２０ｃとの欄を含む。論理ボリュームＩＤ１８１２０ａには、エントリに対応する論理ボリュームの論理ボリュームＩＤが格納される。ノード計算機１８１２０ｂには、エントリに対応する論理ボリュームに接続されているノード計算機１０２０のノードＩＤが格納される。Ｉ／Ｏデバイス種別１８１２０ｃには、エントリに対応する論理ボリュームを構成するＩ／Ｏデバイスの種別が格納される。
【０１４７】
次に、管理サーバ１５０３０における論理ボリューム情報更新処理について説明する。
【０１４８】
図２２は、実施例３に係る論理ボリューム情報更新処理のフローチャートである。
【０１４９】
論理ボリューム情報更新処理は、論理ボリューム情報収集プログラム１８２１０を、ＣＰＵ１８０１０が実行することにより実行される。
【０１５０】
論理ボリューム情報収集プログラム１８２１０は、ＳＤＳノード管理表１８１１０を参照し、ＳＤＳノード管理表１８１１０に登録されている全てのＳＤＳノード１５０１０に対し、論理ボリューム管理表１６１１０の情報を要求する（Ｓ２１０１）。この要求に対して、各ＳＤＳノード１５０１０は、論理ボリューム管理表１６１１０の各エントリの情報を応答することとなる。
【０１５１】
次に、論理ボリューム情報収集プログラム１８２１０は、要求先のＳＤＳノード１５０１０から応答を受信すると、論理ボリューム情報管理表１８１２０の論理ボリュームＩＤ１８１２０ａに受信した論理ボリュームＩＤを格納し、ノード計算機１８１２０ｂに接続先のノード計算機１０２０のノードＩＤを格納し、Ｉ／Ｏデバイス種別１８１２０ｃにＩ／Ｏデバイスの種別の値を格納したエントリを追加し（Ｓ２１０２）、処理を終了する。
【０１５２】
次に、ノード計算機１０２０のデバイス種別取得処理について説明する。
【０１５３】
図２３は、実施例３に係るデバイス種別取得処理のフローチャートである。
【０１５４】
デバイス種別取得処理は、ノード計算機１０２０のＩ／Ｏデバイス種別取得プログラム１２０１０をＣＰＵ３０１０が実行することにより実行される。
【０１５５】
Ｉ／Ｏデバイス種別取得プログラム１２０１０は、管理サーバ１５０３０に論理ボリューム情報管理表１８１２０の情報を要求する（Ｓ２２０１）。この要求に対して、管理サーバ１５０３０は、論理ボリューム情報管理表１８１２０の各エントリの情報を応答することとなる。
【０１５６】
Ｉ／Ｏデバイス種別取得プログラム１２０１０は、管理サーバ１５０３０から応答を受信すると、ノード情報管理表３１１０の応答中のノードＩＤに対応するエントリのＩ／Ｏデバイス種別３１１０ｄに応答中のＩ／Ｏデバイス種別を格納し、さらに、応答中のノードＩＤ及びＩ／Ｏデバイス種別をノード情報管理表３１１０に保持された各ノード計算機１０２０に送信し、処理を終了する。これに対して、ノードＩＤ及びＩ／Ｏデバイス種別を受信したノード計算機１０２０は、ノード情報管理表３１１０のノードＩＤに対応するエントリのＩ／Ｏデバイス種別３１１０ｄに受信したＩ／Ｏデバイス種別を保存する。
【０１５７】
以上説明したように、本実施例に係る計算機システム１によると、ノード計算機１０２０がクライアント計算機１０１０に提供する記憶領域として、ＳＤＳノード１５０１０から提供される論理ボリュームを使用した場合においても、ユーザがノード計算機１０２０毎のＩ／Ｏデバイスの種別を確認して、ノード情報管理表３１１０へ設定する必要がない。
【実施例４】
【０１５８】
次に、本発明の実施例４に係る計算機システムについて説明する。なお、実施例４に係る計算機システムについては、実施例３に係る計算機システムと異なる点を中心に説明する。
【０１５９】
図２４は、実施例４に係る管理サーバの構成図である。
【０１６０】
実施例４に係る管理サーバは、実施例３に係る管理サーバにおいて、記憶装置１８０３０に、稼働情報管理表２３１１０と、稼働情報収集プログラム２３２１０と、分散データベース設定プログラム２３２２０と、ＳＤＳ設定プログラム２３２３０と、性能劣化対処プログラム２３２４０とをさらに格納する。ここで、ＣＰＵ１８０１０が性能劣化対処プログラム２３２４０を実行することにより、ノード状態判定部が構成される。また、ＣＰＵ１８０１０がＳＤＳ設定プログラム２３２３０を実行することにより、ボリューム設定部が構成される。また、ＣＰＵ１８０１０が分散データベース設定プログラム２３２２０を実行することにより、応答数調整部が構成される。
【０１６１】
稼働情報収集プログラム２３２１０は、ＳＤＳクラスタ１５０２０を構成するＳＤＳノード１５０１０へポーリングを行い、ＩＯＰＳ（Input/Output Per Second）と、ＣＰＵ利用率と、Ｉ／Ｏデバイス種別と取得し、稼働情報管理表２３１１０へ保存する。
【０１６２】
分散データベース設定プログラム２３２２０は、ノード計算機１０２０にＫｅｙＳｐａｃｅを指定して整合性レベルの変更を通知する。なお、ノード計算機１０２０は、整合性レベルの変更の通知を受信すると、ＫｅｙＳｐａｃｅ管理表３１２０の変更対象のＫｅｙＳｐａｃｅのエントリの整合性レベル３１２０ｃの設定を変更する。また、ノード計算機１０２０のクラスタ通信プログラム３２５０は、分散データベースクラスタ１０５０の他の全てのノード計算機１０２０に整合性レベルの変更を通知する。これにより、他の全てのノード計算機１０２０では、ＫｅｙＳｐａｃｅ管理表３１２０の変更対象のＫｅｙＳｐａｃｅのエントリの整合性レベル３１２０ｃの設定が変更される。
【０１６３】
ＳＤＳ設定プログラム２３２３０は、ＳＤＳノード１５０１０にボリューム追加設定を通知する。ＳＤＳノード１５０１０は、ボリューム追加設定の通知を受信すると、新たに論理ボリューム１６２１０を作成し、ノード計算機１０２０が使用していた既存の論理ボリュームと新規論理ボリュームとを合わせた論理ボリュームを作成し、ノード計算機１０２０に利用させる。
【０１６４】
次に、稼働情報管理表２３１１０について説明する。
【０１６５】
図２５は、実施例４に係る稼働情報管理表の構成図である。
【０１６６】
稼働情報管理表２３１１０は、ＳＤＳノード１５０１０毎のエントリを格納する。稼働情報管理表２３１１０のエントリは、ノード２３１１０ａと、ＩＯＰＳ２３１１０ｂと、ＣＰＵ利用率２３１１０ｃと、Ｉ／Ｏデバイス種別２３１１０ｄとの欄を含む。
【０１６７】
ノード２３１１０ａには、エントリに対応するＳＤＳノード１５０１０のノードＩＤが格納される。ＩＯＰＳ２３１１０ｂには、エントリに対応するＳＤＳノード１５０１０におけるＩＯＰＳが格納される。ＣＰＵ利用率２３１１０ｃには、エントリに対応するＳＤＳノード１５０１０におけるコントローラ１６０１０のＣＰＵの利用率が格納される。Ｉ／Ｏデバイス種別２３１１０ｄには、エントリに対応するＳＤＳノード１５０１０が使用するＩ／Ｏデバイスの種別が格納される。
【０１６８】
次に、管理サーバ１５０３０の性能劣化対処処理について説明する。
【０１６９】
図２６は、実施例４に係る性能劣化対処処理のフローチャートである。
【０１７０】
性能劣化対処処理は、性能劣化対処プログラム２３２４０をＣＰＵ１８０１０が実行することにより実行される。
【０１７１】
性能劣化対処プログラム２３２４０（正確には、性能劣化対処プログラム２３２４０を実行するＣＰＵ１８０１０）は、各ノード計算機１０２０にポーリングし、分散データベースクラスタ１０５０のクライアント計算機１０１０に対するＩ／Ｏにおける応答時間を取得し、応答時間が予め定めた閾値を超過したか否か、すなわち、応答性能低下か否かを検知する（Ｓ２５０１）。
【０１７２】
性能劣化対処プログラム２３２４０は、応答性能低下を検知すると（Ｓ２５０１：Ｙｅｓ）、稼働情報管理表２３１１０を参照し、ＳＤＳノード１５０１０に対応するエントリのＩＯＰＳ２３１１０ｂのＩＯＰＳが予め定めたＩＯＰＳ用の閾値を超過しているか否かを判定する（Ｓ２５０２）。
【０１７３】
この結果、ＩＯＰＳが閾値を超過している場合（Ｓ２５０２：Ｙｅｓ）、性能劣化対処プログラム２３２４０は、対応するエントリのＣＰＵ利用率２３１１０ｃのＣＰＵ利用率が予め定めたＣＰＵ利用率用の閾値を超過しているか否かを確認する（Ｓ２５０３）。
【０１７４】
この結果、ＣＰＵ利用率が閾値を超過している場合（Ｓ２５０３：Ｙｅｓ）、性能劣化対処プログラム２３２４０は、ＳＤＳノード１５０１０の追加を提案し（Ｓ２５０４）、処理を終了する。例えば、性能劣化対処プログラム２３２４０は、出力装置１８０５０に、ＳＤＳノード１５０１０の追加を提案する内容の画面を表示する。一方、ＣＰＵ利用率が閾値を超過していない場合（Ｓ２５０３：Ｎｏ）、性能劣化対処プログラム２３２４０は、ＳＤＳ設定プログラム２３２３０により、ＳＤＳノード１５０１０に、ボリュームの追加設定の通知を行い（Ｓ２５０５）、処理を終了する。
【０１７５】
一方、ＩＯＰＳが閾値を超過していない場合（Ｓ２５０２：Ｎｏ）、性能劣化対処プログラム２３２４０は、対応するエントリのＣＰＵ利用率２３１１０ｃのＣＰＵ利用率が予め定めたＣＰＵ利用率用の閾値を超過しているか否かを確認する（Ｓ２５０６）。
【０１７６】
この結果、ＣＰＵ利用率が閾値を超過している場合（Ｓ２５０６：Ｙｅｓ）、性能劣化対処プログラム２３２４０は、整合性レベルを下げられるか否かを判定する（Ｓ２５０７）。整合性レベルを下げられるか否かは、整合性レベルが２以上であるか否かにより判定できる。
【０１７７】
この結果、整合性レベルを下げられる場合（Ｓ２５０７：Ｙｅｓ）、性能劣化対処プログラム２３２４０は、分散データベース設定プログラム２３２２０により、ノード計算機１０２０に整合性レベルを下げる指示を通知し（Ｓ２５０８）、処理を終了する。一方、整合性レベルを下げられない場合（Ｓ２５０７：Ｎｏ）、性能劣化対処プログラム２３２４０は、ＳＤＳノード１５０１０の追加を提案し（Ｓ２５０９）、処理を終了する。
【０１７８】
一方、ＣＰＵ利用率が閾値を超過していない場合（Ｓ２５０６：Ｎｏ）、性能劣化対処プログラム２３２４０は、応答性能低下の原因が不明というアラートを発生し（Ｓ２５１０）、処理を終了する。
【０１７９】
以上説明したように、本実施例に係る計算機システムによると、分散データベースクラスタ１０５０の応答性能が低下した場合に、適切な対処を実行することができる。
【実施例５】
【０１８０】
次に、本発明の実施例５に係る計算機システムについて説明する。なお、実施例５に係る計算機システムについては、実施例４に係る計算機システムと異なる点を中心に説明する。
【０１８１】
図２７は、実施例５に係る管理サーバの構成図である。
【０１８２】
実施例５に係る管理サーバは、実施例４に係る管理サーバにおいて、記憶装置１８０３０に、ネットワーク負荷管理表２６１１０と、ネットワーク負荷収集プログラム２６２１０と、冗長性確保方法判断プログラム２６２２０とをさらに格納する。ここで、ＣＰＵ１８０１０が冗長性確保方法判断プログラム２６２２０を実行することにより、帯域判定部及び冗長設定部が構成される。
【０１８３】
ネットワーク負荷収集プログラム２６２１０は、ネットワーク（クラスタネットワーク１０４０、ＳＤＳクラスタネットワーク１５０５０）を構成する図示しないネットワークスイッチに帯域利用率の問い合わせを行い、応答として得た帯域利用率を、後述するネットワーク負荷管理表２６１１０の帯域利用率２６１１０ｂに保存する。
【０１８４】
次に、ネットワーク負荷管理表２６１１０について説明する。
【０１８５】
図２８は、実施例５に係るネットワーク負荷管理表の構成図である。
【０１８６】
ネットワーク負荷管理表２６１１０は、各ネットワーク（クラスタネットワーク１０４０、ＳＤＳクラスタネットワーク１５０５０）毎のエントリを格納する。ネットワーク負荷管理表２６１１０のエントリは、ネットワーク２６１１０ａと、帯域利用率２６１１０ｂとの欄を含む。ネットワーク２６１１０ａには、ネットワークを示すネットワーク名が格納される。帯域利用率２６１１０ｂには、エントリに対応するネットワークにおける帯域利用率が格納される。
【０１８７】
次に、管理サーバ１５０３０の冗長性確保方法判断処理について説明する。
【０１８８】
図２９は、実施例５に係る冗長性確保方法判断処理のフローチャートである。
【０１８９】
冗長性確保方法判断処理は、冗長性確保方法判断プログラム２６２２０をＣＰＵ１８０１０が実行することにより実行される。冗長性確保方法判断処理は、例えば、クライアント計算機１０１０等からＫｅｙＳｐａｃｅ作成要求を受信した場合に実行される。ＫｅｙＳｐａｃｅ作成要求には、例えば、作成するＫｅｙＳｐｅｃｅのＩＤや、冗長レベル、整合性レベルの指定が含まれている。
【０１９０】
冗長性確保方法判断プログラム２６２２０は、ＫｅｙＳｐａｃｅ作成要求を受信すると（Ｓ２８０１）、ネットワーク負荷管理表２６１１０を参照し、クラスタネットワーク１０４０の帯域利用率が予め定めた閾値を超過しているか否かを判定する（Ｓ２８０２）。
【０１９１】
この結果、帯域利用率が閾値を超過している場合（Ｓ２８０２：Ｙｅｓ）、冗長性確保方法判断プログラム２６２２０は、ＳＤＳクラスタネットワーク１５０５０の帯域利用率が予め定めた閾値を超過しているか否かを判定する（Ｓ２８０３）。
【０１９２】
この結果、ＳＤＳクラスタネットワーク１５０５０の帯域利用率が閾値を超過している場合（Ｓ２８０３：Ｙｅｓ）、冗長性確保方法判断プログラム２６２２０は、ネットワーク負荷のアラートを発生し（Ｓ２８０４）、処理を終了する。
【０１９３】
一方、ＳＤＳクラスタネットワーク１５０５０の帯域利用率が閾値を超過していない場合（Ｓ２８０３：Ｎｏ）、冗長性確保方法判断プログラム２６２２０は、ＫｅｙＳｐａｃｅ作成要求の冗長レベルと整合性レベルとを確認し、ＨＤＤを使ったノード計算機１０２０のグループ（ＨＤＤグループ）から２つ以上のレプリカを作成するノード計算機１０２０として選択するか否かを確認する（Ｓ２８０５）。具体的には、冗長レベルと整合性レベルとの差が２以上であるか否かにより確認することができる。
【０１９４】
この結果、２以上のＨＤＤを使ったノード計算機１０２０を選択する場合、冗長性確保方法判断プログラム２６２２０は、指定された冗長レベルを１下げた値を冗長レベルとする設定変更をノード計算機１０２０に通知する（Ｓ２８０６）。これにより、分散データベースクラスタ１０５０においては、新たなＫｅｙＳｐａｃｅに対しては、指定された冗長レベルよりも一つ少ないノード計算機１０２０にレプリカが格納されることとなり、クラスタネットワーク１０４０での使用帯域を抑制することができる。
【０１９５】
次いで、冗長性確保方法判断プログラム２６２２０は、ＳＤＳノード１５０１０に新ボリュームの作成を指示し（Ｓ２８０７）、ＳＤＳノード１５０１０に、１つのレプリカを格納するボリュームを新ボリュームにミラーリングさせる設定を指示し（Ｓ２８０８）、処理を終了する。これにより、ＳＤＳノード１５０１０のボリューム間で、レプリカを格納するボリュームのミラーリングが行われることとなるので、クラスタネットワーク１０４０の使用帯域を増加させずに、ＳＤＳクラスタネットワーク１５０５０を利用して、レプリカの複製を作成することができる。これにより、計算機システム全体としては、指定された冗長レベルと同じ数のレプリカを保持している状態とすることができる。
【０１９６】
一方、クラスタネットワーク１０４０の帯域利用率が閾値を超過していない場合（Ｓ２８０２：Ｎｏ）、又は２以上のＨＤＤを使ったノード計算機１０２０を選択しない場合（Ｓ２８０５：Ｎｏ）には、冗長性確保方法判断プログラム２６２２０は、指定された冗長レベルでの設定変更をノード計算機１０２０に通知し（Ｓ２８０９）、処理を終了する。これにより、分散データベースクラスタ１０５０においては、新たなＫｅｙＳｐａｃｅに対しては、指定された冗長レベルのノード計算機１０２０にレプリカが格納されることとなる。
【０１９７】
上記したように本実施例によると、分散データベースクラスタ１０５０において、ＳＤＳノードの機能（ミラーリング）を用いてレプリカの冗長性を確保でき、冗長性を確保するために使用するノード計算機１０２０の数を減らすことができる。
【０１９８】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１９９】
また、上記した実施例では、種類の異なる記憶装置を備え、整合性レベルを満たすためのノード計算機が使用する記憶装置を入出力性能の高い記憶装置としていたが、本発明はこれに限られず、例えば、ノード計算機が使用する記憶装置の種類は同じもしくは同等のものとし、整合性レベルを満たすためのレプリカについては、非圧縮でノード計算機が使用する記憶装置に格納するようにし、冗長レベルに満たない分のレプリカについては、圧縮してノード計算機が使用する記憶装置に格納するようにしてもよい。このようにすると、非圧縮のレプリカに対する入出力を行うことにより応答性能を高くでき、一部のレプリカを圧縮して格納することよってビットコストを抑えることができる。このため、分散データベースクラスタ１０５０において、高性能且つ低コストを実現できる。
【０２００】
また、上記した各実施例では、第１種別記憶装置をＳＳＤとし、第２種別記憶装置をＨＤＤとする例を示していたが、本発明はこれに限られず、例えば、第１種別記憶装置を、ＳＳＤの中で高性能なＳＳＤとし、第２種別記憶装置を、ＳＳＤの中で低性能なＳＳＤとしてもよく、要は、入出力性能によって種類を分けることのできる記憶装置であればよい。
【符号の説明】
【０２０１】
１…計算機システム、１０１０…クライアント計算機、１０２０…ノード計算機、１０３０…業務ネットワーク、１０４０…クラスタネットワーク、１０５０…分散データベースクラスタ、１５０１０…ＳＤＳノード、１５０２０…ＳＤＳクラスタ、１５０３０…管理サーバ、１５０４０…ストレージネットワーク、１５０５０…ＳＤＳクラスタネットワーク、１５０６０…管理用ネットワーク
【図１】
2020034961.tif 000003
【図２】
2020034961.tif 000004
【図３】
2020034961.tif 000005
【図４】
2020034961.tif 000006
【図５】
2020034961.tif 000007
【図６】
2020034961.tif 000008
【図７】
2020034961.tif 000009
【図８】
2020034961.tif 000010
【図９】
2020034961.tif 000011
【図１０】
2020034961.tif 000012
【図１１】
2020034961.tif 000013
【図１２】
2020034961.tif 000014
【図１３】
2020034961.tif 000015
【図１４】
2020034961.tif 000016
【図１５】
2020034961.tif 000017
【図１６】
2020034961.tif 000018
【図１７】
2020034961.tif 000019
【図１８】
2020034961.tif 000020
【図１９】
2020034961.tif 000021
【図２０】
2020034961.tif 000022
【図２１】
2020034961.tif 000023
【図２２】
2020034961.tif 000024
【図２３】
2020034961.tif 000025
【図２４】
2020034961.tif 000026
【図２５】
2020034961.tif 000027
【図２６】
2020034961.tif 000028
【図２７】
2020034961.tif 000029
【図２８】
2020034961.tif 000030
【図２９】
2020034961.tif 000031