(57)【特許請求の範囲】
【請求項１】
複数のメモリに対して端末による処理対象のデータを格納してインメモリデータベースを構築するインメモリ管理システムであって、
同じデータを格納させるメモリの数である冗長数を設定する冗長数設定部と、
１つのデータを複数に分けて分散格納させるメモリの数である分散数を設定する分散数設定部と、
上記複数のメモリの中から、上記冗長数設定部により設定された冗長数のメモリを所定の選択基準に従って冗長化用に選択するとともに、上記分散数設定部により設定された分散数のメモリを上記所定の選択基準に従って分散化用に選択するメモリ選択部と、
上記メモリ選択部により上記分散化用に選択されたメモリに対して、１つのデータを複数に分けて生成した複数の分割データをそれぞれ格納させるとともに、上記複数の分割データと同じデータを複製して、上記メモリ選択部により上記冗長化用に選択されたメモリのうちオリジナルの分割データが格納されていない残りのメモリに対して上記複製した同じデータをそれぞれ格納させるように制御する格納制御部と、
上記メモリ選択部により選択されたメモリに分散して格納された上記オリジナルの分割データに対して上記端末により実行される処理のターンアラウンドタイムを測定する時間測定部とを備え、
上記メモリ選択部は、上記冗長化用のメモリについては、上記オリジナルの分割データを格納する分散用のメモリが含まれるように上記冗長数のメモリを選択し、
上記分散数設定部は、上記時間測定部により測定される上記ターンアラウンドタイムが所定時間を超えたことを検出した場合に、上記分散数の値を大きくすることにより、上記ターンアラウンドタイムが所定時間以内となるように上記分散数を設定することを特徴とするインメモリ管理システム。
【請求項２】
上記メモリ選択部により選択されたメモリの動作状況を監視し、上記冗長数設定部により設定された冗長数を満たす冗長性が失われたことを検出する冗長性喪失検出部を更に備え、
上記メモリ選択部は、上記冗長性喪失検出部により上記冗長性が失われたことが検出された場合、上記冗長数設定部により設定された冗長数に満たない数のメモリを上記所定の選択基準に従って再選択し、
上記格納制御部は、上記メモリ選択部により再選択されたメモリに対して上記同じデータを複製して格納させるように制御することを特徴とする請求項１に記載のインメモリ管理システム。
【請求項３】
複数のメモリに対して端末による処理対象のデータを格納してインメモリデータベースを構築するインメモリ管理システムであって、
１つのデータを複数に分けて分散格納させるメモリの数である分散数を設定する分散数設定部と、
上記複数のメモリの中から、上記分散数設定部により設定された分散数のメモリを所定の選択基準に従って選択するメモリ選択部と、
上記メモリ選択部により選択されたメモリに対して、１つのデータを複数に分けて生成した複数の分割データをそれぞれ格納させるように制御する格納制御部と、
上記メモリ選択部により選択されたメモリに分散して格納された上記分割データに対して上記端末により実行される処理のターンアラウンドタイムを測定する時間測定部とを備え、
上記分散数設定部は、上記時間測定部により測定される上記ターンアラウンドタイムが所定時間を超えたことを検出した場合に、上記分散数の値を大きくすることにより、上記ターンアラウンドタイムが所定時間以内となるように上記分散数を設定することを特徴とするインメモリ管理システム。
【請求項４】
複数のメモリに対して処理対象のデータを格納してインメモリデータベースを構築するインメモリ管理システムであって、
同じデータを格納させるメモリの数である冗長数を設定する冗長数設定部と、
上記複数のメモリの中から、上記冗長数設定部により設定された冗長数のメモリを所定の選択基準に従って選択するメモリ選択部と、
上記メモリ選択部により選択されたメモリに対して上記同じデータを複製して格納させるように制御する格納制御部とを備え、
上記冗長数設定部、上記メモリ選択部および上記格納制御部は、上記複数のメモリに対するデータの読み書きを制御するコントローラに備えられ、
上記冗長数設定部は、上記コントローラから実際に制御される実存のメモリの数を超える数の冗長数を設定可能であり、
上記格納制御部は、上記冗長数設定部により設定された冗長数よりも少ないメモリしか実存しない場合は、当該実存するメモリの全てに対して同じデータを格納するように制御する一方、実存するメモリが増えるたびに、上記冗長数設定部により設定された冗長数を上限として、上記同じデータを格納するメモリを動的に増やしていくように制御することを特徴とするインメモリ管理システム。
【請求項５】
端末による処理対象のデータを格納して成るインメモリデータベースを構成する複数のメモリに対するデータの読み書きを制御するためのインメモリ管理用プログラムであって、
同じデータを格納させるメモリの数である冗長数を設定する冗長数設定手段、
１つのデータを複数に分けて分散格納させるメモリの数である分散数を設定する分散数設定手段、
上記複数のメモリの中から、上記冗長数設定手段により設定された冗長数のメモリを所定の選択基準に従って冗長化用に選択するとともに、上記分散数設定手段により設定された分散数のメモリを上記所定の選択基準に従って分散化用に選択するメモリ選択手段、
上記メモリ選択手段により上記分散化用に選択されたメモリに対して、１つのデータを複数に分けて生成した複数の分割データをそれぞれ格納させるとともに、上記複数の分割データと同じデータを複製して、上記メモリ選択手段により上記冗長化用に選択されたメモリのうちオリジナルの分割データが格納されていない残りのメモリに対して上記複製した同じデータをそれぞれ格納させるように制御する格納制御手段、および
上記メモリ選択手段により選択されたメモリに分散して格納された上記オリジナルの分割データに対して上記端末により実行される処理のターンアラウンドタイムを測定する時間測定手段、
としてコンピュータを機能させるようになされ、
上記メモリ選択手段は、上記冗長化用のメモリについては、上記オリジナルの分割データを格納する分散用のメモリが含まれるように上記冗長数のメモリを選択し、
上記分散数設定手段は、上記時間測定手段により測定される上記ターンアラウンドタイムが所定時間を超えたことを検出した場合に、上記分散数の値を大きくすることにより、上記ターンアラウンドタイムが所定時間以内となるように上記分散数を設定することを特徴とするインメモリ管理用プログラム。
【請求項６】
上記メモリ選択手段により選択されたメモリの動作状況を監視し、上記冗長数設定手段により設定された冗長数を満たす冗長性が失われたことを検出する冗長性喪失検出手段を更に備え、
上記メモリ選択手段は、上記冗長性喪失検出手段により上記冗長性が失われたことが検出された場合、上記冗長数設定手段により設定された冗長数に満たない数のメモリを上記所定の選択基準に従って再選択し、
上記格納制御手段は、上記メモリ選択手段により再選択されたメモリに対して上記同じデータを複製して格納させるように制御することを特徴とする請求項５に記載のインメモリ管理用プログラム。
【請求項７】
端末による処理対象のデータを格納して成るインメモリデータベースを構成する複数のメモリに対するデータの読み書きを制御するためのインメモリ管理用プログラムであって、
１つのデータを複数に分けて分散格納させるメモリの数である分散数を設定する分散数設定手段、
上記複数のメモリの中から、上記分散数設定手段により設定された分散数のメモリを所定の選択基準に従って選択するメモリ選択手段、
上記メモリ選択手段により選択されたメモリに対して、１つのデータを複数に分けて生成した複数の分割データをそれぞれ格納させるように制御する格納制御手段、および
上記メモリ選択手段により選択されたメモリに分散して格納された上記分割データに対して上記端末により実行される処理のターンアラウンドタイムを測定する時間測定手段
としてコンピュータを機能させるようになされ、
上記分散数設定手段は、上記時間測定手段により測定される上記ターンアラウンドタイムが所定時間を超えたことを検出した場合に、上記分散数の値を大きくすることにより、上記ターンアラウンドタイムが所定時間以内となるように上記分散数を設定することを特徴とするインメモリ管理用プログラム。
【請求項８】
複数のメモリに対するデータの読み書きを制御するためのインメモリ管理用プログラムであって、
同じデータを格納させるメモリの数である冗長数を設定する冗長数設定手段、
上記複数のメモリの中から、上記冗長数設定手段により設定された冗長数のメモリを所定の選択基準に従って選択するメモリ選択手段、および
上記メモリ選択手段により選択されたメモリに対して上記同じデータを複製して格納させるように制御する格納制御手段、
としてコンピュータを機能させるようになされ、
上記冗長数設定手段は、上記メモリ選択手段および上記格納制御手段によって実際に制御される実存のメモリの数を超える数の冗長数を設定可能であり、
上記格納制御手段は、上記冗長数設定手段により設定された冗長数よりも少ないメモリしか実存しない場合は、当該実存するメモリの全てに対して同じデータを格納するように制御する一方、実存するメモリが増えるたびに、上記冗長数設定手段により設定された冗長数を上限として、上記同じデータを格納するメモリを動的に増やしていくように制御することを特徴とするインメモリ管理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インメモリ管理システムおよびインメモリ管理用プログラムに関し、特に、複数のメモリに対して処理対象のデータを格納してインメモリデータベースを構築するインメモリ管理システムに用いて好適なものである。
【背景技術】
【０００２】
一般に、パソコンやサーバでは、ハードディスクなどの外部記憶装置にデータが格納されており、当該データが必要に応じてメインメモリ（主記憶装置）上に展開されて、処理が行われる。これに対して、最近では、メモリのビット単価（容量当たりの価格）の低下に伴い、いわゆるインメモリ技術が使われ始めている。インメモリ技術とは、使用するデータのすべてをメモリ上に格納し、ハードディスクなどの外部記憶装置を使わずに処理を実行する方式である。
【０００３】
メモリは、ハードディスクと比べてデータの読み書き速度が１０万倍程度も速い。そのため、ハードディスクとの間でデータのやり取りが発生しないインメモリ技術を用いれば、データの読み込みや書き出しを高速に行うことができ、処理を非常に高速に実行することが可能である。これにより、従来は数時間かかっていたデータ処理を数分に短縮したり、発生したデータを瞬時に処理して結果を返したりするといったリアルタイム処理が可能となる。現在の主な用途はデータベースの演算であるが、いわゆるビッグデータから企業が有益な情報を素早く抽出・分析するのに有効な技術として注目を集めている。
【０００４】
ただし、メモリは不揮発性の記憶媒体であるため、サーバやパソコンなどのノードのメモリ上にあるデータは、ノードのシャットダウンにより電源が切れれば消えてしまう。また、ノードにおける何らかの障害により不測の電源ダウンが発生した場合も、メモリ上にあるデータは消えてしまう。そのため、メモリ上のデータをバックアップ保存しておく仕組みが必要となる。インメモリ技術には、バックアップ用途にハードディスクを使う方式と、複数のノードがそれぞれ備えるメモリ間でデータをコピーし合うクラスタ方式（例えば、特許文献１参照）とが用意されている。
【０００５】
特許文献１に記載の情報処理システムでは、インメモリデータベースを装備したサーバ装置を複数備え、各サーバ装置の各インメモリデータベースに、同一の処理対象データをそれぞれ記憶するようにしている。具体的には、処理対象データを３つのデータ群に区分けし、各データ群のマスタデータを３つのサーバ装置に分散して格納するとともに、当該マスタデータに対応するスレーブデータを、同じデータ群のマスタデータが格納されていない他のサーバ装置に格納する。サーバ装置は、処理要求を受けた処理対象データのマスタデータが自装置に格納されている場合に、当該マスタデータに対する要求された処理を行うとともに、処理を行ったマスタデータを、当該マスタデータの複製である他のサーバ装置に格納されているスレーブデータに対してコピー処理を行う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−５３７９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１に記載されているように、クラスタ機能を用いてメモリ上のデータのコピー（レプリカ）を二重三重に作ることにより（レプリケーションという）、万が一特定のノードの電源が落ちたり故障したりしてメモリ上のデータが失われても、コピー先のノードへ自動的にフェイルオーバーするため、信頼性の高いインメモリ・コンピューティングの運用が可能となる。また、処理対象データを複数のデータに区分けして複数のメモリに分散して格納し、各メモリに格納されたマスタデータを同時に処理することにより（ストライピングという）、処理対象データ全体の処理速度を高速化することが可能となる。
【０００８】
しかしながら、特許文献１に記載の情報処理システムでは、インメモリデータベースを具備したサーバ装置が３台ある場合に、１つの処理対象データを３つに区分けして３つのマスタデータを生成し、３台のサーバ装置（メモリ）に常に３つのマスタデータを分散して格納するとともに、マスタデータから複製したスレーブデータを常に残り２台のサーバ装置（メモリ）に格納するようにしている。すなわち、全てのメモリを常にフルに使用する固定的な活用方法を採っている。
【０００９】
そのため、レプリケーションおよびストライピングを行わない場合に比べて、メモリの使用量は３倍となり、メモリ使用効率が常に低下した状態となってしまうという問題があった。メモリは、以前に比べてビット単価が低下してきたとはいえ、ハードディスクなどの外部記憶装置に比べればまだ高価な記憶媒体である。したがって、メモリの使用効率を徒に低下させるのは好ましくない。
【００１０】
また、３台のサーバ装置が全て正常に動作しているときはデータの冗長性（コピーを含めて３つのデータを持つこと）が保たれているが、少なくとも１台のサーバ装置が電源オフとなりメモリが使えなくなると、再び電源オンとなるまでの間は、予定していた冗長性が失われてしまう。例えば、電源のオン／オフが頻繁に切り替えられるパソコンをサーバ装置として用いる場合、３台のうち２台のパソコンがシャットダウンにより電源オフとなっていると、冗長性は完全に失われる。このとき、残り１台のパソコンに障害が発生してメモリからデータが消失すると、データを復帰させることができなくなってしまうという問題が生じる。
【００１１】
また、３台のサーバ装置（メモリ）に分散させて格納した３つのマスタデータを同時に処理すれば、原理的には処理対象データの処理速度を３倍にすることができる。しかしながら、マスタデータの更新によってデータ量が肥大化していくと、それに伴って処理速度は低下していく。そのため、データ処理のリクエストを出してからレスポンスが返ってくるまでのターンアラウンドタイムが長くなってしまう。つまり、データを瞬時に処理して結果を返すといったリアルタイム性が損なわれてしまうという問題が生じる。
【００１２】
本発明は、このような問題を解決するために成されたものであり、複数のメモリを状況に応じて最適に使い分けることにより、フレキシビリティの高いインメモリ・コンピューティングの運用を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
上記した課題を解決するために、本発明では、同じデータを格納させるメモリの数である冗長数を設定する冗長数設定部と、複数のメモリの中から、冗長数設定部により設定された冗長数のメモリを所定の選択基準に従って選択するメモリ選択部と、メモリ選択部により選択されたメモリに対して同じデータを複製して格納させるように制御する格納制御部とを備えている。
また、本発明は、１つのデータを複数に分けて分散格納させるメモリの数である分散数を設定する分散数設定部を更に備え、複数のメモリの中から、冗長数設定部により設定された冗長数のメモリを所定の選択基準に従って冗長化用に選択するとともに、分散数設定部により設定された分散数のメモリを所定の選択基準に従って分散化用に選択する。そして、分散化用に選択されたメモリに対して、１つのデータを複数に分けて生成した複数の分割データをそれぞれ格納させるとともに、複数の分割データと同じデータを複製して、冗長化用に選択されたメモリ（オリジナルの分割データを格納する分散用のメモリが含まれるように選択したもの）のうちオリジナルの分割データが格納されていない残りのメモリに対して当該複製した同じデータをそれぞれ格納させるようにしている。ここで、分散数設定部は、分割データに対して端末により実行される処理のターンアラウンドタイムが所定時間を超えたことを検出した場合に分散数の値を大きくすることにより、ターンアラウンドタイムが所定時間以内となるように分散数を設定するようにしている。
【００１４】
本発明の他の態様では、メモリ選択部により選択されたメモリの動作状況を監視し、冗長数設定部により設定された冗長数を満たす冗長性が失われたことを検出する冗長性喪失検出部を更に備え、当該冗長性喪失検出部により冗長性が失われたことが検出された場合、冗長数設定部により設定された冗長数に満たない数のメモリを所定の選択基準に従って再選択し、再選択されたメモリに対して同じデータを複製して格納させるようにしている。
【発明の効果】
【００１６】
上記のように構成した本発明によれば、冗長数設定部により設定された冗長数のメモリに対してのみ同じデータが格納されるので、複数のメモリの全てに対して同じデータが格納される従来の方式と比べて、メモリの使用量を減らすことができる。このときデータが格納されるメモリは、複数のメモリの中から所定の選択基準に従って選択されるので、その時々における選択基準に対する合致度に応じて、選択されるメモリが動的に変わる。
【００１７】
例えば、あるデータを冗長化してメモリに格納する際に、そのときの状況に応じて複数のメモリの中から所定の選択基準に従って選択されたメモリセットに対して、当該あるデータが複製して格納される。その後、別のデータを冗長化してメモリに格納する際に、そのときの状況に応じて複数のメモリの中から所定の選択基準に従って選択された別のメモリセットに対して、当該別のデータが複製して格納される。このように、本発明によれば、フレキシビリティの高いインメモリ・コンピューティングの運用を行い、データの冗長性を持たせつつメモリ使用効率をより高めることができる。
【００１８】
本発明の他の特徴によれば、冗長数設定部により設定された冗長数を満たす冗長性が失われたことが検出された場合、そのときの状況に応じて複数のメモリの中から所定の選択基準に従って新たなメモリが再選択され、再選択されたメモリに対して同じデータが複製して格納されるので、冗長数設定部により設定された冗長数を満たす冗長性が常に維持される。これにより、メモリ使用効率を高めつつ、冗長化による信頼性をより高くすることができる。
【００１９】
本発明の他の特徴によれば、分散数設定部により設定された分散数のメモリに対して、１つのデータが分割されて分散格納される。データの分散数は、分割データに対して実行される処理のターンアラウンドタイムが所定時間以内となるように設定される。そのため、分割データの更新に伴ってデータ量が肥大化していき、それに伴って処理速度が低下し、ターンアラウンドタイムが所定時間を超えるようになると、分散数設定部により分散数が再設定され、再設定された分散数のメモリに対してデータが分散格納される。このように、本発明によれば、処理速度に応じてフレキシビリティの高いインメモリ・コンピューティングの運用を行うことができ、データ量が肥大化しても、ターンアラウンドタイムが常に所定時間以内となるようなリアルタイム性を実現することができる。
【図面の簡単な説明】
【００２０】
【図１】第１の実施形態によるインメモリ管理システムの構成例を示す図である。
【図２】第１の実施形態によるコントローラが備える機能構成例を示すブロック図である。
【図３】第１の実施形態によるレプリケーションを実行した場合に複数のメモリにデータが格納される状況の一例を示す図である。
【図４】第２の実施形態によるインメモリ管理システムの構成例を示す図である。
【図５】第２の実施形態によるコントローラが備える機能構成例を示すブロック図である。
【図６】第２の実施形態によるレプリケーションおよびストライピングを実行した場合に複数のメモリにデータが格納される状況の一例を示す図である。
【図７】第２の実施形態によるコントローラが備える他の機能構成例を示すブロック図である。
【発明を実施するための形態】
【００２１】
（第１の実施形態）
以下、本発明の第１の実施形態を図面に基づいて説明する。図１は、第１の実施形態によるインメモリ管理システムの構成例を示す図である。図１に示すように、第１の実施形態によるインメモリ管理システムは、それぞれがメモリ（主記憶装置）１１-1，１１-2，１１-3を備えた複数のサーバ１０-1，１０-2，１０-3と、当該複数のメモリ１１-1，１１-2，１１-3に対するデータの読み書きを制御するコントローラ２０と、ＢＩ（Business Intelligence）ソフトがインストールされた端末３０と、データベース４０とを備えて構成されている。
【００２２】
データベース４０は、ハードディスクなどの外部記憶装置により構成されている。端末３０は、このデータベース４０に格納されているデータのうち、所望の処理に使用するデータのすべてをメモリ１１-1，１１-2，１１-3に格納することにより、インメモリ環境を構築する。そして、インメモリ環境を構築した後、端末３０は、データベース４０にアクセスすることなく、メモリ１１-1，１１-2，１１-3に格納されたデータを用いて所望の処理を実行する。
【００２３】
サーバ１０-1，１０-2，１０-3は、データベース４０から読み出されたデータを内部のメモリ１１-1，１１-2，１１-3に格納する。このメモリ１１-1，１１-2，１１-3に格納されたデータは、端末３０のＢＩソフトで所望の処理を実行する際に読み出され、使用される。そして、その処理の結果更新されたデータが、再びメモリ１１-1，１１-2，１１-3に格納される。なお、ここではサーバとしているが、パーソナルコンピュータやタブレット端末など、主記憶装置を備えているものであれば何れを用いてもよい。
【００２４】
後述するように、本実施形態ではレプリケーション機能によって同じデータを複数のメモリに複製して格納する。その中の１つがマスタデータ、残りがスレーブデータである。端末３０は、コントローラ２０を通じてメモリ１１-1，１１-2，１１-3から読み出されるマスタデータに対して処理を実行する。このときコントローラ２０は、その処理の結果をマスタデータとして更新するとともに、スレーブデータに複製する。
【００２５】
図２は、第１の実施形態によるコントローラ２０が備える機能構成例を示すブロック図である。図２に示すように、コントローラ２０は、その機能構成として、冗長数設定部２１、メモリ選択部２２、格納制御部２３および冗長性喪失検出部２４を備えている。なお、図２では、インメモリのレプリケーションを行うことに関する主要な機能構成のみを示しており、所望の処理を実行するための機能構成その他の機能構成については図示を省略している。
【００２６】
上記各機能ブロック２１〜２４は、ハードウェア、ＤＳＰ（Digital Signal Processor）、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック２１〜２４は、実際にはコンピュータのＣＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭ、ハードディスクまたは半導体メモリ等の記録媒体に記憶されたプログラムが動作することによって実現される。
【００２７】
冗長数設定部２１は、同じデータを格納させるメモリの数である冗長数（レプリケーションファクタＲＦという）を設定する。図２の例では、コントローラ２０に接続されているサーバ１０-1，１０-2，１０-3の数は３つである。すなわち、データを格納することが可能なメモリ１１-1，１１-2，１１-3の数は３つである。冗長数設定部２１は、この３つのメモリ１１-1，１１-2，１１-3のうち、同じデータを格納させるメモリの数として、“２”または“３”のレプリケーションファクタＲＦを設定することが可能である。なお、このレプリケーションファクタＲＦは、例えば、端末３０にインストールされたＢＩソフトにより提供される設定画面を通じて、ユーザ操作によって設定する。
【００２８】
メモリ選択部２２は、複数のメモリ１１-1，１１-2，１１-3の中から、冗長数設定部２１によりレプリケーションファクタＲＦとして設定された冗長数のメモリを所定の選択基準に従って選択する。例えば、メモリ選択部２２は、設定された冗長数のメモリを、空き容量が大きい方から順に選択する。このためにメモリ選択部２２は、複数のサーバ１０-1，１０-2，１０-3にアクセスしてメモリ１１-1，１１-2，１１-3の空き容量を確認し、その確認の結果に従ってメモリを選択する。
【００２９】
このメモリ選択部２２によるメモリの選択は、最初にデータベース４０からデータを読み出して何れかのメモリに格納する際に実行する。データを格納するメモリをいったん選択すると、端末３０のＢＩソフトによる処理の実行によって更新されたデータは、同じメモリ上に上書きされる。よって、処理実行のタイミングで改めてメモリの選択を行う必要はない。ただし、選択したメモリがその後サーバの電源オフ等によって使えなくなった場合は、メモリ選択部２２によるメモリの選択を改めて実行する。これについての詳細は後述する。
【００３０】
格納制御部２３は、メモリ選択部２２により選択されたメモリに対して、同じデータを複製して格納させるように制御する。すなわち、最初にデータベース４０からデータを読み出して何れかのメモリに格納する際に、格納制御部２３は、メモリ選択部２２により選択された複数のメモリに対して同じデータを格納させる。その後、複数のメモリに格納された同じデータのうち、マスタデータがＢＩソフトの処理の実行によって更新されると、格納制御部２３は、当該更新されたマスタデータを更新前と同じメモリに上書きして格納する。また、格納制御部２３は、更新されたマスタデータを複製し、それをスレーブデータが格納されたメモリに上書きして格納する。
【００３１】
冗長性喪失検出部２４は、メモリ選択部２２により選択されたメモリの動作状況を監視し、冗長数設定部２１により設定された冗長数を満たす冗長性が失われた場合にはそのことを検出する。例えば、サーバ１０-1，１０-2，１０-3がシャットダウン操作によって電源オフとされた場合、あるいは、サーバ１０-1，１０-2，１０-3に何らかの障害が発生して電源オフまたはフリーズ状態となった場合は、そのサーバ１０-1，１０-2，１０-3に内蔵されたメモリ１１-1，１１-21，１１-3は使用できない状況となる。冗長性喪失検出部２４は、メモリ選択部２２により選択されたメモリのうち何れかが使用できない状況になったことを検出した場合、冗長数設定部２１により設定された冗長数を満たす冗長性が失われたと判断する。
【００３２】
冗長性喪失検出部２４により冗長数を満たす冗長性が失われたことが検出された場合、メモリ選択部２２は、当該冗長数に満たない数のメモリを所定の選択基準に従って再選択する。例えば、レプリケーションファクタＲＦが“２”に設定されて２つのメモリ１１-1，１１-2が選択され、当該２つのメモリ１１-1，１１-2に同じデータが格納された場合において、何れか一方のメモリが使えなくなったことが冗長性喪失検出部２４により検出された場合、メモリ選択部２２は、冗長数に満たない数（すなわち、１つ）のメモリを所定の選択基準に従って再選択する。この場合は、残り１つのメモリ１１-3が選択されることになる。なお、コントローラ２０に接続されたメモリが４つ以上ある場合、メモリ選択部２２は、元々選択されていた２つのメモリ１１-1，１１-2以外から、その時点で空き容量が最も大きい１つのメモリを再選択する。
【００３３】
ここで、使えなくなったメモリのデータがマスタデータであった場合、メモリ選択部２２は、マスタデータの再設定を行う必要がある。例えば、元々選択されていた２つのメモリ１１-1，１１-2のうち、まだ使用可能な状態で残っている方のメモリ（以下、これを残存メモリと称する）に格納されているデータをマスタデータに設定する。または、残存メモリおよびメモリ選択部２２により新たに選択されたメモリのうち、その時点で空き容量が最も大きいメモリに格納されているデータをマスタデータに設定するようにしてもよい。
【００３４】
また、格納制御部２３は、メモリ選択部２２により再選択されたメモリに対して、同じデータを複製して格納させるように制御する。すなわち、格納制御部２３は、元々選択されていた２つのメモリ１１-1，１１-2のうち、残存メモリに格納されているデータを複製し、それを新たに選択されたメモリに格納する。このように、本実施形態によれば、サーバ１０-1，１０-2，１０-3の電源オフ等により何れかのメモリが使えなくなっても、そのときの状況に応じて複数のメモリ１１-1，１１-2，１１-3の中から新たなメモリが再選択され、再選択されたメモリに対して同じデータが複製して格納される。これにより、冗長数設定部２１により設定された冗長数を満たす冗長性を常に維持し、冗長化による信頼性を高くすることができる。
【００３５】
図３は、第１の実施形態によるレプリケーションを実行した場合に複数のメモリ１１-1，１１-2，１１-3にデータが格納される状況の一例を示す図である。図３の例は、レプリケーションファクタＲＦを“２”に設定した場合のデータの格納例を示している。
【００３６】
図３（ａ）の例では、最初にデータベース４０から第１のデータを読み出してインメモリ環境を構築する際に、空き容量が大きい順に２つのメモリ１１-1，１１-2が選択され、同じ第１のデータが格納されている。太枠で示した方がマスタデータ、細枠で示した方がスレーブデータである。ＢＩソフトによる処理の実行によって第１のデータ（マスタデータ）が更新された場合、更新された第１のデータは、同じ２つのメモリ１１-1，１１-2に格納される。
【００３７】
その後、第１のデータとは別の第２のデータをデータベース４０から読み出してインメモリ環境を構築する際に、その時点で空き容量が大きい順に２つのメモリ１１-2，１１-3が選択され、同じ第２のデータが格納されている。ＢＩソフトによる処理の実行によって第２のデータが更新された場合、更新された第２のデータは、同じ２つのメモリ１１-2，１１-3に格納される。
【００３８】
このような状態において、図３（ｂ）に示すように、例えばサーバ１０-1が電源オフとなってメモリ１１-1が使えなくなった場合、このメモリ１１-1に格納されている第１のデータに関する残存メモリ１１-2に格納されている第１のデータが、新たに選択されたメモリ１１-3に複製して格納される。
【００３９】
以上詳しく説明したように、第１の実施形態によれば、冗長数設定部２１により設定された冗長数のメモリに対してのみ同じデータが格納されるので、複数のメモリ１１-1，１１-2，１１-3の全てに対して同じデータが格納される従来の方式と比べて、メモリの使用量を減らすことができる。このときデータが格納されるメモリは、複数のメモリ１１-1，１１-2，１１-3の中から所定の選択基準（空き容量の大きい順）に従って選択されるので、その時々における選択基準に対する合致度に応じて、選択されるメモリが動的に変わる。
【００４０】
すなわち、図３で説明したように、第１のデータを冗長化してメモリに格納する際に、そのときの各メモリ１１-1，１１-2，１１-3の空き容量に応じて選択された２つのメモリ１１-1，１１-2に対して、第１のデータが複製して格納される。その後、第２のデータを冗長化してメモリに格納する際に、そのときの各メモリ１１-1，１１-2，１１-3の空き容量に応じて選択された２つのメモリ１１-2，１１-3に対して、第２のデータが複製して格納される。
【００４１】
このように、第１の実施形態によれば、その時々の状況に応じて最適なメモリを選択してレプリケーションを行うといったフレキシビリティの高いインメモリ・コンピューティングの運用を行い、データの冗長性を持たせつつメモリ使用効率をより高めることができる。
【００４２】
また、第１の実施形態によれば、冗長数設定部２１により設定された冗長数を満たす冗長性が失われたことが検出された場合、そのときの各メモリ１１-1，１１-2，１１-3の空き容量に応じて新たなメモリが再選択され、再選択されたメモリに対して同じデータが複製して格納されるので、冗長数設定部２１により設定された冗長数を満たす冗長性が常に維持される。これにより、メモリ使用効率を高めつつ、冗長化による信頼性をより高くすることができる。
【００４３】
なお、上記第１の実施形態では、複数のメモリ１１-1，１１-2，１１-3の中から何れかを選択する際の選択基準として、空き容量が大きいものを選択する例について説明したが、本発明はこれに限定されない。例えば、メモリ１１-1，１１-2，１１-3を内蔵したサーバ１０-1，１０-2，１０-3のスペックが高い（処理性能が高い）方から順に、冗長数設定部２１により設定された冗長数のメモリを選択するようにしてもよい。あるいは、サーバ１０-1，１０-2，１０-3に対して実施したヘルスチェック（ｐｉｎｇコマンドに対するレスポンス時間、過去のダウンタイム、欠陥の有無など）の結果に基づいて、健康度が高い方から順に、冗長数設定部２１により設定された冗長数のメモリを選択するようにしてもよい。
【００４４】
また、上記第１の実施形態では、コントローラ２０に接続されているサーバ１０-1，１０-2，１０-3の数を上限としてレプリケーションファクタＲＦを設定する例について説明したが、当該上限を超える数のレプリケーションファクタＲＦを設定するようにしてもよい。例えば、図１のように３つのサーバ１０-1，１０-2，１０-3がコントローラ２０に接続されている状況のときに、“４”以上のレプリケーションファクタＲＦを設定してもよい。
【００４５】
この場合、コントローラ２０は、接続されるサーバを監視し、冗長数設定部２１により設定された冗長数よりも少ないサーバしか接続されていない場合は、それらのサーバが備えるメモリの全てに対して同じデータを格納するように制御する。そして、コントローラ２０に接続されるサーバが増えるたびに、レプリケーションファクタＲＦの数を上限として、同じデータを格納するサーバを動的に増やしていく。このようにすれば、よりフレキシビリティの高いインメモリ・コンピューティングの運用を行うことができる。
【００４６】
（第２の実施形態）
次に、本発明の第２の実施形態を図面に基づいて説明する。図４は、第２の実施形態によるインメモリ管理システムの構成例を示す図である。なお、この図４において、図１に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図４に示すように、第２の実施形態によるインメモリ管理システムは、図１に示したコントローラ２０に代えて、コントローラ２０’を備えている。
【００４７】
図５は、第２の実施形態によるコントローラ２０’が備える機能構成例を示すブロック図である。なお、この図５において、図２に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図５に示すように、コントローラ２０’は、その機能構成として、分散数設定部２５および時間測定部２６を更に備えている。また、図２に示したメモリ選択部２２および格納制御部２３に代えて、メモリ選択部２２’および格納制御部２３’を備えている。なお、図５では、インメモリのレプリケーションおよびストライピングを行うことに関する主要な機能構成のみを示しており、所望の処理を実行するための機能構成その他の機能構成については図示を省略している。
【００４８】
上記各機能ブロック２１，２２’，２３’，２４〜２６は、ハードウェア、ＤＳＰ、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック２１，２２’，２３’，２４〜２６は、実際にはコンピュータのＣＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭ、ハードディスクまたは半導体メモリ等の記録媒体に記憶されたプログラムが動作することによって実現される。
【００４９】
分散数設定部２５は、１つのデータを複数に分けて分散格納させるメモリの数である分散数（ストライピングファクタＳＦという）を設定する。なお、このストライピングファクタＳＦは、例えば、端末３０にインストールされたＢＩソフトにより提供される設定画面を通じて、ユーザ操作によって設定することが可能である。あるいは、所定の判断基準に従って、分散数設定部２５が自動的にストライピングファクタＳＦを設定するようにしてもよい。図５では、時間測定部２６から通知される情報に従って、ストライピングファクタＳＦを自動的に設定する例を示している。これについての詳細は後述する。
【００５０】
メモリ選択部２２’は、複数のメモリ１１-1，１１-2，１１-3の中から、冗長数設定部２１により設定された冗長数のメモリを所定の選択基準に従って冗長化用に選択するとともに、分散数設定部２５により設定された分散数のメモリを所定の選択基準に従って分散化用に選択する。所定の選択基準は第１の実施形態と同様であり、例えばメモリの空き容量が大きい順に選択するものとする。
【００５１】
例えば、レプリケーションファクタＲＦが“２”に設定され、ストライピングファクタＳＦが“３”に設定された場合、メモリ選択部２２’は、２個のメモリを冗長化用に選択し、３個のメモリを分散化用に選択する。ここで、冗長化用に選択するメモリと、分散化用に選択するメモリは、一部または全部が重複していてもよい。
【００５２】
格納制御部２３’は、メモリ選択部２２’により分散化用に選択されたメモリに対して、１つのデータを複数に分けて生成した複数の分割データをそれぞれ格納させるように制御する。また、格納制御部２３’は、複数の分割データと同じデータを複製して、メモリ選択部２２’により冗長化用に選択されたメモリのうちオリジナルの分割データ（マスタデータ）が格納されていない残りのメモリに対して、複製した同じデータをそれぞれ格納させるように制御する。
【００５３】
図６は、第２の実施形態によるレプリケーションおよびストライピングを実行した場合に複数のメモリ１１-1，１１-2，１１-3にデータが格納される状況の一例を示す図である。この図６においても、太枠で示したものがマスタデータ、細枠で示したものがスレーブデータである。図６（ａ）は、レプリケーションファクタＲＦを“２”、ストライピングファクタＳＦを“３”に設定した場合のデータの格納例を示している。
【００５４】
図６（ａ）の例では、データベース４０から第１のデータを読み出してインメモリ環境を構築する際に、格納制御部２３’は、当該第１のデータを３つのデータ１−１，１−２，１−３に分割する。この場合、メモリ選択部２２’は、空き容量が大きい順に３つのメモリ１１-1，１１-2，１１-3を分散化用として選択し、３つの分割データ１−１，１−２，１−３をそれぞれ３つのメモリ１１-1，１１-2，１１-3に格納させる。これがマスタデータとなる。
【００５５】
さらに、メモリ選択部２２’は、まず１つ目の分割データ１−１を冗長化するために、マスタデータとして格納されたメモリ１１-1以外で空き容量が最も大きいメモリ１１-2を冗長化用として選択する。そして、格納制御部２３’は、１つ目の分割データ１−１と同じデータを複製して、それを冗長化用に選択したメモリ１１-2に格納する。
【００５６】
次に、メモリ選択部２２’は、２つ目の分割データ１−２を冗長化するために、マスタデータとして格納されたメモリ１１-2以外で空き容量が最も大きいメモリ１１-3を冗長化用として選択する。そして、格納制御部２３’は、２つ目の分割データ１−２と同じデータを複製して、それを冗長化用に選択したメモリ１１-3に格納する。
【００５７】
さらに、メモリ選択部２２’は、３つ目の分割データ１−３を冗長化するために、マスタデータとして格納されたメモリ１１-3以外で空き容量が最も大きいメモリ１１-1を冗長化用として選択する。そして、格納制御部２３’は、３つ目の分割データ１−３と同じデータを複製して、それを冗長化用に選択したメモリ１１-1に格納する。
【００５８】
なお、ここでは３つの分割データ１−１，１−２，１−３をこの順番に従って順次複製していき、１つの分割データを複製するたびにメモリ選択部２２’が空き容量に応じて何れかのメモリを選択する例について説明したが、複製の順番はこれに限定されない。例えば、３つの分割データ１−１，１−２，１−３を、データサイズの大きい方または小さい方から順に複製していくようにしてもよい。
【００５９】
また、ここでは、最初に３つのメモリ１１-1，１１-2，１１-3を分散化用に選択し、３つの分割データ１−１，１−２，１−３をそれぞれマスタデータとして格納した後に、冗長化用のメモリを選択して３つの分割データ１−１，１−２，１−３を複製する手順について説明したが、本発明はこれに限定されない。例えば、最初に２つのメモリ１１-1，１１-2を冗長化用に選択して１つ目の分割データ１−１を格納した後、２つのメモリ１１-2，１１-3を冗長化用に選択して２つ目の分割データ１−２を格納し、最後に２つのメモリ１１-1，１１-3を冗長化用に選択して３つ目の分割データ１−３を格納するようにしてもよい。
【００６０】
図６（ｂ）は、レプリケーションファクタＲＦを“３”、ストライピングファクタＳＦを“２”に設定した場合のデータの格納例を示している。図６（ｂ）の例では、データベース４０から読み出された第１のデータが２つに分割されて分割データ１−１，１−２とされ、それぞれが２つのメモリ１１-1，１１-2，に分散して格納されるとともに（マスタデータ）、複製された分割データ１−１，１−２が、冗長化用に選択された３つのメモリ１１-1，１１-2，１１-3のうちマスタデータが格納されていない残りのメモリに対してそれぞれ格納されている。
【００６１】
時間測定部２６は、メモリ選択部２２’により選択された複数のメモリに分散して格納されたオリジナルの分割データ（マスタデータ）に対してＢＩソフトによって実行される処理のターンアラウンドタイムを測定する。ターンアラウンドタイムとは、処理のリクエストを出してから処理結果が得られるまでのレスポンス時間のことである。時間測定部２６は、例えば、端末３０においてＢＩソフトの処理が実行されるたびに、その処理に関するターンアラウンドタイムを測定し、直近の数処理に関するターンアラウンドタイムの平均値を算出する。
【００６２】
分散数設定部２５は、時間測定部２６により測定されるターンアラウンドタイムが所定時間以内となるように、ストライピングファクタＳＦの値を設定する。この場合の処理時間は、ＢＩソフトを使用するユーザがストレスを感じない程度の時間（例えば、５秒）に設定するのが好ましい。各メモリ１１-1，１１-2，１１-3に格納された分割データは、ＢＩソフトによる処理を繰り返し行っていくうちに、データ更新に伴ってデータ量が肥大化していく可能性がある。データ量が大きくなると、それに伴って処理速度が低下し、ターンアラウンドタイムも少しずつ長くなっていく。
【００６３】
この場合、分散数設定部２５は、時間測定部２６により測定される直近のターンアラウンドタイムの平均値が所定時間を超えたことを検出すると、ターンアラウンドタイムが所定時間以内となるように、ストライピングファクタＳＦを再設定する。具体的には、ストライピングファクタＳＦの値を１つ大きくする。ストライピングファクタＳＦが再設定された場合、メモリ選択部２２’および格納制御部２３’が動作する。これにより、その時点で各メモリ１１-1，１１-2，１１-3に格納されているデータを新たな分散数に従って分割し直して、新たに選択された分散数のメモリに対してそれぞれ分割データが分散格納されるとともに、複製データが格納される。
【００６４】
例えば、最初にデータベース４０からデータを読み出してインメモリ環境を構築する際に、分散数設定部２５はストライピングファクタＳＦを最小値の“１”に設定する。そして、時間測定部２６により測定される直近のターンアラウンドタイムの平均値が所定時間を超えた段階で、分散数設定部２５はストライピングファクタＳＦを“２”に設定する。以降、同様にしてストライピングファクタＳＦの値を必要に応じて“３”、“４”と増やしていく。このようにすれば、データの更新に伴ってデータ量が肥大化しても、ターンアラウンドタイムが常に所定時間以内となるようなデータ処理のリアルタイム性を実現することができる。
【００６５】
以上詳しく説明したように、第２の実施形態によれば、レプリケーションファクタＲＦに加えてストライピングファクタＳＦも設定し、２つのファクタに基づいて各メモリ１１-1，１１-2，１１-3の使用状況を動的に変えることができる。これにより、その時々の状況に応じて最適なメモリを選択してレプリケーションを行うといったよりフレキシビリティの高いインメモリ・コンピューティングの運用を行い、データの冗長化による信頼性とメモリの使用効率とを高めつつ、データの分散化による処理のリアルタイム性も高めることができる。
【００６６】
なお、上記第２の実施形態では、ターンアラウンドタイムが所定時間を超えた場合にストライピングファクタＳＦを再設定する例について説明したが、本発明はこれに限定されない。例えば、メモリ選択部２２’により選択されたメモリに対するデータの格納状況を検出する格納状況検出部を時間測定部２６の代わりに備え、分散数設定部２５が、格納状況検出部により検出されるデータの格納状況に応じてストライピングファクタＳＦを設定するようにしてもよい。
【００６７】
具体的には、メモリ選択部２２’により選択されたメモリに格納されるデータの容量が所定値を超えた場合にストライピングファクタＳＦを再設定するようにすることが可能である。または、メモリ選択部２２’により選択されたメモリの全容量に対する実際の使用量の割合が所定値を超えた場合にストライピングファクタＳＦを再設定するようにしてもよい。
【００６８】
また、上記第２の実施形態では、ストライピングファクタＳＦを再設定したときに、その時点で各メモリ１１-1，１１-2，１１-3に格納されているデータを新たな分散数に従って分割し直す例について説明したが、本発明はこれに限定されない。例えば、ストライピングファクタＳＦの値を１つ大きくした際に、何れか１つのメモリの格納されているデータを２分割し、一方の分割データをそれまでと同じメモリに格納し、他方の分割データを新たに選択したメモリに格納するようにしてもよい。
【００６９】
また、上記第２の実施形態では、冗長化のためのメモリの選択基準と、分散化のためのメモリの選択基準とを同じとする例について説明したが、異ならせてもよい。例えば、冗長化のために複数のメモリを選択する際には空き容量が大きい方から順に選択する一方、分散化のために複数のメモリを選択する際にはサーバ１０-1，１０-2，１０-3のスペックが高い方あるいは健康度が高い方から順に選択するようにしてもよい。
【００７０】
また、上記第１の実施形態ではレプリケーションファクタＲＦのみを設定可能とし、上記第２の実施形態ではレプリケーションファクタＲＦおよびストライピングファクタＳＦの両方を設定可能とする例について説明したが、ストライピングファクタＳＦのみを設定可能としてもよい。図７は、この場合におけるコントローラ２０”の機能構成例を示すブロック図である。なお、この図７において、図５に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。
【００７１】
図７において、メモリ選択部２２”は、複数のメモリ１１-1，１１-2，１１-3の中から、分散数設定部２５によりストライピングファクタＳＦとして設定された分散数のメモリを所定の選択基準に従って選択する。格納制御部２３”は、メモリ選択部２２”により選択されたメモリに対して、１つのデータを複数に分けて生成した複数の分割データをそれぞれ格納させるように制御する。
【００７２】
なお、上記第１および第２の実施形態では、コントローラ２０，２０’，２０”が端末３０やサーバ１０-1，１０-2，１０-3とは別体として設けられる例について説明したが、本発明はこれに限定されない。例えば、端末３０がコントローラ２０，２０’，２０”を内蔵していてもよい。あるいは、コントローラ２０，２０’，２０”の機能の一部を端末３０またはサーバ１０-1，１０-2，１０-3に持たせるようにしてもよい。例えば、冗長性喪失検出部２４の機能をサーバ１０-1，１０-2，１０-3に持たせることが可能である。または、時間測定部２６の機能を端末３０に持たせることが可能である。
【００７３】
その他、上記第１および第２の実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７４】
１０-1，１０-2，１０-3  サーバ
１１-1，１１-2，１１-3  メモリ
２０，２０’，２０”  コントローラ
２１  冗長数設定部
２２，２２’，２２”  メモリ選択部
２３，２３’，２３”  格納制御部
２４  冗長性喪失検出部
２５  分散数設定部
２６  時間測定部
３０  端末
４０  データベース
【図１】
0005941494.tif 000002
【図２】
0005941494.tif 000003
【図３】
0005941494.tif 000004
【図４】
0005941494.tif 000005
【図５】
0005941494.tif 000006
【図６】
0005941494.tif 000007
【図７】
0005941494.tif 000008