説明

分散データ管理システム、データサーバ、負荷分散方法およびプログラム

【課題】データ移動の開始後に到着したトランザクションとデータ移動の開始前から存在するトランザクションをデータ移動中に実行可能な分散データ管理システムを提供する。
【解決手段】各データサーバは、自データサーバが移動元になると自データサーバ内の移動対象データを移動先に送信し自データサーバが移動先になると移動元から移動対象データを受信して自データサーバ内に格納するデータ伝送装置と、自データサーバがトランザクション実行中に移動元となり自データサーバ内のデータ伝送装置が移動対象データを送信している第1状況で、移動対象データ内のデータを処理対象とする新たなトランザクションを受信すると、実行中のトランザクションを継続しつつ新たなトランザクションを移動先にリダイレクトし、自データサーバが移動先となっている第2状況で新たなトランザクションを受信すると、新たなトランザクションを実行するアクセス制御装置を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散データ管理システム、データサーバ、負荷分散方法およびプログラムに関する。
【0002】
本発明は、特には、複数のデータを分散して格納する複数のデータサーバと、データの格納位置を管理する位置管理サーバと、位置管理サーバを参照して複数のデータに含まれるデータを処理対象としたトランザクションを、処理対象データを格納しているデータサーバに送信するトランザクションサーバと、を含み、複数のデータサーバ間で複数のデータに含まれる移動対象データを移動可能な分散データ管理システム、データサーバ、負荷分散方法およびプログラムに関する。
【背景技術】
【0003】
一台のサーバで処理出来ない大容量データの格納、および、データに対する大規模のトランザクションを処理するための一つの手法として、分散データ管理システムが知られている。分散データ管理システムは、ネットワークに接続され相互通信可能な複数の計算機に処理すべきデータの担当範囲を割り当て、各々の計算機が自己に割り当てられたデータを独立的に処理することにより、大量のデータを格納/処理するためのシステムである。近年、インターネットの発達により多くのユーザから要求される大規模なデータ処理の必要性から、分散データ管理システムが注目されている。
【0004】
しかし、分散データ管理システム内の任意の計算機にトランザクション処理が集中してしまうと、一つの計算機のみが分散データ管理システムのトランザクションを処理することになる。このため、複数の計算機が分散データ管理システムに存在するにもかかわらず、分散データ管理システムの性能は、一台の計算機の性能に制限されてしまう。従って、分散データ管理システムが本来の性能を発揮するためには、トランザクション処理を分散データ管理システム内の全ての計算機に均等に分配することが望ましい。
【0005】
分散データ管理システムでの管理方式は、各計算機による記憶装置の共有形態により、共有型分散データ管理方式と、無共有型分散データ管理方式とに区分できる。
【0006】
共有型分散データ管理方式は、分散ファイルシステムまたは共有ディスクアレイ等、複数の計算機から同時にアクセスできる記憶装置にデータを格納し、データの処理のみを計算機が行う方式である。ハイパテーブル(非特許文献1参照)、BigTable(非特許文献2参照)が、共有型分散データ管理方式を採用している。
【0007】
無共有型分散データ管理方式は、それぞれの計算機が自身のローカル記憶装置を有し、分散データ管理システムが格納すべきデータがローカル記憶装置に分散格納され、各計算機が自身の持つローカル記憶装置内のデータの処理を担当する方式である。
【0008】
共有型分散データ管理方式下の計算機は、データの処理だけに専念すればよいため製作が比較的容易だが、負荷分散において、データ配置の負荷分散処理はデータ処理の分散処理とは別の下位層の共有記憶装置に任せられているので、精密な負荷分散が出来ない問題がある。
【0009】
他方、無共有型分散データ管理方式は、製作は難しいもののデータ配置まで制御できるため、より効率よい負荷分散を行える。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】Hyper Table、[online]、[平成22年5月24日検索]、インターネット<URL:http://www.hypertable.org/>
【非特許文献2】Bigtable、[online]、[平成22年5月24日検索]、インターネット<URL:http://labs.google.com/papers/bigtable.html>
【非特許文献3】Amazon EC2、[online]、[平成22年5月24日検索]、インターネット<http://aws.amazom.com/ec2/>
【発明の概要】
【発明が解決しようとする課題】
【0011】
例えば、人気によるアクセスの集中等でトランザクション処理の予測が難しいウェブ基盤アプリケーションを扱う分散データ管理システムでは、高負荷をまかなうための計算機の追加と、その追加された計算機への既存データの移動が頻繁に行われる。しかし、既存システムにおいて、他計算機へのデータの移動は、システムの一時的停止を伴うことが多く、多々のシステム停止は、人気が集中しているアプリケーションにとって潜在的な損失となる。
【0012】
無共有型分散データ管理方式でのデータ移動については以下の方式が利用されている。なお、以下では、既存のデータを格納しているマシン(計算機)を移動元マシン、データの移動先となるマシンを移動先マシンと称する。
【0013】
データ移動が開始したら、移動開始時点のデータのスナップショットが移動元マシンから移動先マシンへ移動する。一般的に、格納しているデータの数および量は大きいため、このスナップショットデータの転送は一定時間を要する。データの移動が終了するまで、移動するデータにかかわるトランザクションは実行を待たされ、データ移動が終了した段階で、実行を待たされていたトランザクションは、移動先マシンにリダイレクトされ実行される。この方式は簡単だがスナップショットデータの伝送中にはトランザクションの実行ができないことが問題である。
【0014】
前記問題を解決するため、スナップショットデータの伝送中に移動元マシンでトランザクションの更新を可能にする方式がある。
【0015】
この方式では、スナップショットデータの伝送が始まると、伝送開始時に移動元マシンで処理されていたトランザクションはデータ更新を続けられる。データ更新があると、更新差分が移動先マシンに伝送され適用される。
【0016】
また、この方式では、データの移動が始まった後に移動元マシンに到着したトランザクションは、移動元マシンで更新可能な既存トランザクションの終了を待ち、既存トランザクションが全て終了した段階で、移動先マシンにリダイレクトされ実行される。
【0017】
この方式は、データ移動処理の最中にトランザクションを実行可能ではあるが、データ移動が開始された後に移動元マシンに到着するトランザクションは既存トランザクションの終了まで待たねばならないのが課題である。
【0018】
本発明の目的は、データ移動が開始してから到着したトランザクション(以下「新規トランザクション」と称する)と、データ移動の開始前から存在していたトランザクション(以下「既存トランザクション」と称する)の両方を、データ移動中でも実行可能な分散データ管理システム、データサーバ、負荷分散方法およびプログラムを提供することである。
【課題を解決するための手段】
【0019】
本発明の分散データ管理システムは、複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する1以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む分散データ管理システムであって、前記移動元のデータサーバは、前記移動対象データを格納する第1格納装置と、前記移動対象データを、前記移動先に送信する第1データ通信装置と、前記第1データ通信装置が前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトする第1アクセス制御装置と、を含み、前記移動先のデータサーバは、第2格納装置と、前記移動元から前記移動対象データを受信し当該移動対象データを前記第2格納装置に格納する第2データ通信装置と、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する第2アクセス制御装置と、を含む。
【0020】
本発明の分散データ管理システムは、複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する1以上のトランザクションサーバと、を含み、前記複数のデータサーバ間で前記複数のデータに含まれる移動対象データを移動可能な分散データ管理システムであって、前記データサーバは、前記複数のデータの一部のデータを格納する格納装置と、自データサーバ内の前記格納装置内に前記移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを自データサーバ内の前記格納装置に格納するデータ伝送装置と、自データサーバがトランザクションの実行中に前記移動元となり自データサーバ内の前記データ伝送装置が前記移動対象データを送信している第1状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第2状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御装置と、を含む。
【0021】
本発明の負荷分散方法は、複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する1以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む、分散データ管理システムでの負荷分散方法であって、前記移動元のデータサーバが、前記移動対象データを、前記移動先に送信する送信ステップと、前記移動先のデータサーバが、前記移動元から前記移動対象データを受信して格納する格納ステップと、前記移動元のデータサーバが、前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、前記移動先のデータサーバが、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む。
【0022】
本発明の負荷分散方法は、複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する1以上のトランザクションサーバと接続され、トランザクションの実行中に前記複数のデータに含まれる移動対象データを移動先に移動する移動元のデータサーバでの負荷分散方法であって、前記移動対象データを、前記移動先に送信する送信ステップと、前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、を含む。
【0023】
本発明の負荷分散方法は、複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する1以上のトランザクションサーバと接続され、前記複数のデータに含まれる移動対象データの移動元から当該移動対象データを受信する移動先のデータサーバでの負荷分散方法であって、前記移動元から前記移動対象データを受信して格納する格納ステップと、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む。
【0024】
本発明の負荷分散方法は、複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信するトランザクションサーバと接続され、前記複数の管理対象のデータの一部を格納するデータサーバでの負荷分散方法であって、前記複数の管理対象のデータの一部を格納装置に格納する格納ステップと、自データサーバ内の前記格納装置内に移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを前記格納装置に格納するデータ伝送ステップと、自データサーバがトランザクションの実行中に前記移動元となり自データサーバが前記移動対象データを送信している第1状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第2状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御ステップと、を含む。
【発明の効果】
【0025】
本発明によれば、移動元のデータサーバは、移動対象データを送信している状況で、トランザクションサーバから、移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、新たなトランザクションを、移動先にリダイレクトし、移動先のデータサーバは、トランザクションを実行中の移動元から新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【0026】
このため、移動対象データの移動中では、移動対象データの移動開始前から存在していたトランザクション(既存のトランザクション)は移動元で実行され、移動対象のデータの移動中に到着した新たなトランザクション(新規トランザクション)は移動先で実行可能となる。
【0027】
したがって、本発明によれば、既存トランザクションと新規トランザクションが、データ移動中でも停止時間なく実行することが可能となる。
【0028】
これにより、例えば、分散データ管理システムが、ユーザに対して所定のサービス(例えば、情報提供サービス)を提供している場合、ユーザサービスへの影響を最小限にしながら、分散データ管理の負荷分散、データサーバの追加などを簡単に行うことが可能になり、負荷が多く変動が激しいウェブ等のサービスも効率よく提供できる分散データ管理システムを構築可能になる。
【図面の簡単な説明】
【0029】
【図1】本発明の第1実施形態の分散データ管理システム1を示したブロック図である。
【図2】本発明の第2実施形態の分散データ管理システム1Aを示したブロック図である。
【図3】第2実施形態の一例を説明するためのブロック図である。
【図4】分散データ管理システム1Aでのデータ移動の概要を説明するためのブロック図である。
【図5】データ移動時の移動元の処理の概要を説明するためのフローチャートである。
【図6】データ移動時の移動先の処理の概要を説明するためのフローチャートである。
【図7】データ移動時の位置管理サーバの処理の概要を説明するためのフローチャートである。
【図8】移動元から移動先へのデータ移動時、移動元と移動先が、トランザクションのステートメントI/O可否と実行位置およびデータの移動を制御する動作を説明するための図である。
【図9】データサーバ2aAおよび2bAの処理を説明するための図である。
【図10】ローカル記憶装置2a1とローカル記憶装置2b1にそれぞれ格納された移動対象レコード(移動対象データ)の集合を示した図である。
【図11】移動元のデータ移動処理の順序を説明するためのフローチャートである。
【図12】順次送信の具体的な処理フローを説明するためのフローチャートである。
【図13】アドホック送信の具体的な処理フローを説明するためのフローチャートである。
【図14】移動元アクセス処理の具体的な処理の流れを示したフローチャートである。
【図15】移動先のデータ移動処理の順序を示したフローチャートである。
【図16】移動先のデータ受信処理を示したフローチャートである。
【図17】移動先アクセス処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0030】
以下、本発明の実施形態について説明する。
【0031】
(第1実施形態)
図1は、本発明の第1実施形態の分散データ管理システム1を示したブロック図である。図1において、分散データ管理システム1は、複数のデータサーバ2aおよび2bと、位置管理サーバ3と、トランザクションサーバ4と、を含む。なお、データサーバの数は2台に限らず複数台であればよい。また、トランザクションサーバの数は1台に限らず任意の台数であればよい。
【0032】
データサーバ2a〜2bは、分散データ管理システム1が管理する複数のデータを分散して格納する。以下では、分散データ管理システム1が管理する複数のデータの一例として、「データA〜Z」が用いられ、データA〜Jがデータサーバ2aに格納され、データK〜Zがデータサーバ2bに格納されているとする。なお、分散データ管理システム1が管理する複数のデータは、データA〜Zに限るものではなく、データサーバ2aが格納するデータはデータA〜Jに限るものではなく、データサーバ2bが格納するデータはデータK〜Zに限るものではない。
【0033】
位置管理サーバ3は、分散データ管理システム1が管理する複数のデータのそれぞれについて、データの格納位置を管理する。位置管理サーバ3は、例えば、データA〜Zのそれぞれについて、データの識別子(例えば、データ名)と、そのデータを格納しているデータサーバの識別子(例えば、名称)とを、互いに関連づけて格納する。なお、位置管理サーバ3は、複数の位置管理サーバにて構成されてもよい。
【0034】
トランザクションサーバ4は、位置管理サーバ3を参照して、分散データ管理システム1が管理する複数のデータに含まれるデータを処理対象としたトランザクションを、データサーバ2a〜2bのうち、その処理対象データを格納しているデータサーバに送信する。
【0035】
トランザクションサーバ4は、例えば、データAおよびGを処理対象としたトランザクションTx1を上位機器(不図示)から受け付けると、位置管理サーバ3を参照して、データAおよびGを格納しているデータサーバ2aを特定する。その後、トランザクションサーバ4は、トランザクションTx1を、データサーバ2aに送信する。なお、トランザクションTx1は、トランザクションサーバ4内のアプリケーションにて作成されてもよい。
【0036】
データサーバ2a〜2b間では、分散データ管理システム1が管理する複数のデータ(データA〜Z)に含まれる移動対象データ(例えば、データG〜H)が、移動可能である。なお、移動対象データは、データG〜Hに限らず適宜変更可能である。
【0037】
データサーバ2aは、ローカル記憶装置2a1と、データ伝送装置2a2と、アクセス制御装置2a3と、を含む。データサーバ2bは、ローカル記憶装置2b1と、データ伝送装置2b2と、アクセス制御装置2b3と、を含む。
【0038】
格納装置であるローカル記憶装置2a1は、分散データ管理システム1が管理する複数のデータの一部のデータを格納する。
【0039】
データ通信装置であるデータ伝送装置2a2は、ローカル記憶装置2a1内に移動対象データが格納されており自データサーバ(データサーバ2a)が移動対象データの移動元になると、移動対象データを、移動対象データの移動先に送信する。
【0040】
また、データ伝送装置2a2は、自データサーバが移動先になると、移動元から移動対象データを受信し、その移動対象データをローカル記憶装置2a1に格納する。
【0041】
アクセス制御装置2a3は、自データサーバがトランザクションの実行中に移動元となり自データサーバ内のデータ伝送装置2a2が移動対象データを送信している状況(以下「第1状況」と称する)で、トランザクションサーバ4から、移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、その新たなトランザクションを、移動先にリダイレクトする。
【0042】
また、アクセス制御装置2a3は、自データサーバが移動先となっている状況(以下「第2状況」と称する)で、移動元から送信された新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【0043】
データサーバ2aは、コンピュータにて実現されてもよい。この場合、コンピュータは、コンピュータにて読み取り可能なCD−ROM(Compact Disk Read Only Memory)のような記録媒体に記録されたプログラムを読込み実行することによって、ローカル記憶装置2a1、データ伝送装置2a2およびアクセス制御装置2a3として機能する。記録媒体は、CD−ROMに限らず適宜変更可能である。
【0044】
データサーバ2bと、ローカル記憶装置2b1と、データ伝送装置2b2と、アクセス制御装置2b3については、上述したデータサーバ2aと、データサーバ2a内のローカル記憶装置2a1と、データ伝送装置2a2と、アクセス制御装置2a3についての説明において、データサーバ2aをデータサーバ2bに読み替え、ローカル記憶装置2a1をローカル記憶装置2b1と読み替え、データ伝送装置2a2をデータ伝送装置2b2と読み替え、アクセス制御装置2a3をアクセス制御装置2b3と読み替えればよい。
【0045】
次に、第1実施形態の動作を説明する。以下では、データサーバ2aが移動元となり、データサーバ2bが移動先となる場合の動作を説明する。
【0046】
データサーバ2aが移動元となり、データサーバ2bが移動先となると、データ伝送装置2a2は、移動対象データをデータ伝送装置2b2に送信し始め、データ伝送装置2b2は、データ伝送装置2a2から移動対象データを受信すると、その移動対象データをローカル記憶装置2b1に格納する。
【0047】
アクセス制御装置2a3は、第1状況で、トランザクションサーバ4から、移動対象データの少なくとも一部のデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、その新たなトランザクションを、アクセス制御装置2b3にリダイレクトする。
【0048】
アクセス制御装置2b3は、第2状況で、アクセス制御装置2a3から送信された新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【0049】
本実施形態によれば、アクセス制御装置2a3および2b3のそれぞれは、自データサーバがトランザクションサーバ4からのトランザクションの実行中に移動元となり自データサーバ内のデータ伝送装置が移動対象データを送信している状況(第1状況)で、トランザクションサーバ4から、移動対象データの少なくとも一部のデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、その新たなトランザクションを、移動先にリダイレクトする。
【0050】
また、アクセス制御装置2a3および2b3のそれぞれは、自データサーバが移動先となっている状況(第2状況)で、移動元から送信された新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【0051】
このため、移動対象データの移動中、移動対象データの移動開始前から存在していたトランザクション(既存のトランザクション)は移動元で実行され、移動対象データの移動中に移動元に到着した新たなトランザクション(新規トランザクション)は移動先で実行可能となる。
【0052】
したがって、本実施形態によれば、既存トランザクションと新規トランザクションとを、データ移動中でも停止時間なく実行することが可能となる。
【0053】
これにより、例えば、分散データ管理システム1が、ユーザに対して所定のサービス(例えば、情報提供サービス)を提供している場合、ユーザサービスへの影響を最小限にしながら、分散データ管理の負荷分散およびデータサーバの追加などを簡単に行うことが可能になり、負荷が多く変動が激しいウェブ等のサービスも効率よく提供できる分散データ管理システムを構築可能になる。
【0054】
なお、上記説明では、データサーバ2aが移動元となりデータサーバ2bが移動先となる例を説明したが、データサーバ2bが移動元になり、データサーバ2aが移動先になってもよい。
【0055】
(第2実施形態)
図2は、本発明の第2実施形態の分散データ管理システム1Aを示したブロック図である。なお、図2において、図1に示したものと同一構成のものには同一符号を付してある。
【0056】
図2において、第2実施形態の分散データ管理システム1Aは、複数のデータサーバとして、図1に示したデータサーバ2aおよび2bの代わりに、複数のデータサーバ2aAおよび2bAを有する点、および、トランザクションサーバ4と同一の機能を有するトランザクションサーバ41を有する点で、第1実施形態の分散データ管理システム1と異なる。
【0057】
なお、本実施形態においても、データサーバの数は2台に限らず複数台であればよい。また、トランザクションサーバの数は2台に限らず任意の台数であればよい。
【0058】
また、以下では、トランザクションサーバ4および41の各々から送信されるトランザクションは、複数のステートメントからなるものとする。なお、各ステートメントは、分散データ管理システム1Aが管理する複数のデータのいずれかを処理対象データとする命令文である。
【0059】
まず、第2実施形態について、第1実施形態と異なる主な点(特に、データサーバ2aAおよび2bA)の概要を説明する。
【0060】
データサーバ2aA〜2bAは、分散データ管理システム1Aが管理する複数のデータを分散して格納する。
【0061】
データサーバ2aAは、ローカル記憶装置2a1と、データ伝送装置2a2Aと、アクセス制御装置2a3Aと、を含む。データサーバ2bAは、ローカル記憶装置2b1と、データ伝送装置2b2Aと、アクセス制御装置2b3Aと、を含む。
【0062】
アクセス制御装置2a3Aは、図1に示したアクセス制御装置2a3の機能を有し、さらに、他の機能も有する。
【0063】
アクセス制御装置2a3Aは、トランザクションを受信すると、そのトランザクション内のステートメントを個別に順番に実行する。
【0064】
アクセス制御装置2a3Aは、あるステートメントを実行する段階になると、そのステートメントの処理対象データをロックして、その処理対象データに対する他のステートメントに従った更新を禁止し、その後、その処理対象データに対して、その処理対象データを処理対象とするステートメントを実行する。
【0065】
データ伝送装置2a2Aは、データ伝送装置2a2の機能を有し、さらに、他の機能も有する。
【0066】
データ伝送装置2a2Aは、アクセス制御装置2a3Aにてロックされたデータが移動対象データである場合に、そのデータがロックされたことを示すロック情報を、移動先に送信する。
【0067】
なお、アクセス制御装置2a3Aは、第2状況でロック情報を受信すると、ロック情報にてロックされたと示されたデータが、新たなトランザクション内のステートメント(以下「特定ステートメント」と称する)の処理対象データである場合、そのデータに対する特定ステートメントに従った処理を保留する、という機能も有する。
【0068】
また、データ伝送装置2a2Aは、ロックされたデータが、移動対象のデータであり、かつ、そのデータを処理対象とするステートメント(そのデータをロックしたステートメント)に従って処理されると、そのデータのロックを解除してそのデータを移動先に送信する、という機能も有する。また、データ伝送装置2a2Aは、ロックが解除されたデータを第2状況で受信する、という機能も有する。
【0069】
また、アクセス制御装置2a3Aは、ロックが解除されデータ伝送装置2a2Aにて受信されたデータが、特定ステートメントによる処理が保留されていたデータであると、特定ステートメントに従った処理の保留を解除し、特定ステートメントを実行する、という機能も有する。
【0070】
また、データ伝送装置2a2Aは、自データサーバがロック情報を受信すると、そのロック情報にてロックされたことが示されたデータについて移動元ロックフラグを自データサーバ内のローカル記憶装置2a1にセットする、という機能も有する。
【0071】
また、アクセス制御装置2a3Aは、移動元ロックフラグがセットされているデータが、新たなトランザクション内の特定ステートメントの処理対象データである場合、そのデータに対する特定ステートメントに従った処理を保留する、という機能も有する。
【0072】
データサーバ2aAは、コンピュータにて実現されてもよい。この場合、コンピュータは、コンピュータにて読み取り可能なCD−ROMのような記録媒体に記録されたプログラムを読込み実行することによって、ローカル記憶装置2a1、データ伝送装置2a2Aおよびアクセス制御装置2a3Aとして機能する。記録媒体は、CD−ROMに限らず適宜変更可能である。
【0073】
なお、データサーバ2bAと、ローカル記憶装置2b1と、データ伝送装置2b2Aと、アクセス制御装置2b3Aについては、上述したデータサーバ2aAと、ローカル記憶装置2a1と、データ伝送装置2a2Aと、アクセス制御装置2a3Aについての説明において、データサーバ2aAをデータサーバ2bAに読み替え、ローカル記憶装置2a1をローカル記憶装置2b1と読み替え、データ伝送装置2a2Aをデータ伝送装置2b2Aと読み替え、アクセス制御装置2a3Aをアクセス制御装置2b3Aと読み替えればよい。
【0074】
次に、第2実施形態を詳細に説明する。
【0075】
図3は、本実施形態の一例を説明するためのブロック図である。なお、図3において、図2に示したものと同一構成のものには同一符号を付してある。
【0076】
図3において、データサーバ2aAおよび2bAは、ローカル記憶装置(図2参照)と、ロック機構などを有するアクセス制御装置(図2参照)と、データ伝送装置(図2参照)を持ち、データを格納可能で必要なデータの入出力が可能な計算機である。
【0077】
データは、構造化されたデータであり、少なくても、分散データ管理システム1A内で区別可能な一意的な識別子であるキーと、そのキーが示すデータの集合と、で構成される。説明を簡潔にするため、キーが示すデータの集合を「バリュー」と称する。バリューは、複数の論理データに分割することが可能である。例えば、あるサービスのユーザを管理するためのデータ構造があり、そのデータ構造が、ユーザID、ユーザ名、歳、住所および性別で構成されている場合、ユーザIDがキー(Key)であり、バリュー(Value)が、ユーザ名、歳、住所および性別で構成される。また、異なるキーは、同じバリューを示さない。
【0078】
以下、一つのキーと、そのキーにて示された一つのバリューと、のペアを、「レコード」とも称する。
【0079】
データサーバ2aAおよび2bAのそれぞれは、複数のレコードにて構成されるグループを格納し、格納したグループ内のレコード(データ)に対するI/O(入出力)を管理する。データサーバ2aAおよび2bAは、可用性および堅甲性を維持するため、レコード(データ)操作の前にデータ操作ログを書き込み、データ操作ログからデータをリカバリする機構と、自分が持つレコード(データ)を他のデータサーバに複製する複製機構と、の両方またはいずれかを備えてもよい。
【0080】
分散データ管理システム1Aが持つ複数のレコードは、複数のデータサーバ(図3に示した例では、データサーバ2aAおよび2bA)に分散して配置され、各レコードの位置は、位置管理サーバ3により管理される。
【0081】
位置管理サーバ3は、キーを基に、そのキーを含むレコード(データ)が管理されているデータサーバを検索するサーバである。実装法により違うが、一つの位置管理サーバにて構成される位置管理サーバ3が、全てのレコードの位置情報を管理している場合もあり、複数の位置管理サーバにて構成される位置管理サーバ3が、分散ハッシュテーブル(DHT)等を用い各レコードの位置情報を管理する場合もある。
【0082】
トランザクションサーバ4および41のそれぞれは、トランザクションサーバと異なるマシン内のアプリケーションが定義したトランザクションの実行、または、自己内のアプリケーションが定義したトランザクションの実行を管理するものである。トランザクションは、分散データ管理システム1A内で一意なTxIDで区分される。
【0083】
トランザクションを実行するために必要なデータ(レコード)、つまり、トランザクションの処理対象となるデータ(レコード)は、複数のデータサーバ2aAおよび2bAのいずれかに格納されている。トランザクションサーバ4および41のそれぞれは、例えば、2 Phase Commit(以下「2PC」と称する)または3 Phase Commit(以下「3PC」と称する)によって、分散トランザクションの調停が可能である。
【0084】
トランザクションの実行に必要なデータの位置を検索するため、トランザクションサーバ4および41のそれぞれは、位置管理サーバ3からデータの位置情報を読み込む。一度検索した位置情報の検索コストを軽減するために、トランザクションサーバ4および41のそれぞれは、位置情報のキャッシュ機構を有していてもよい。
【0085】
データサーバ2aAおよび2bAと位置管理サーバ3とトランザクションサーバ4および41は、ネットワークを通して接続されており、相互に、データ等の種々の情報の送受信が可能である。
【0086】
また、分散データ管理システム1Aは、分散データ管理システム1Aの負荷を計測し、移動すべきデータ(移動対象データ)および移動すべきデータの移動位置等を決定する負荷分散機構(例えば、負荷分散サーバ)を有する。負荷分散機構としては、Amazon EC2の負荷分散機等が考えられるが、本発明の範囲ではないため、説明を省く。
【0087】
図4は、分散データ管理システム1Aでのデータ移動の概要を説明するためのブロック図である。また、図5、6、7は、それぞれ、データ移動時の移動元、移動先、位置管理サーバ3の処理の概要を説明するためのフローチャートである。以下、本実施形態を具体的に説明する前に図4〜7を利用してデータ移動の概要を説明する。
【0088】
なお、以下では、データサーバ2aAからデータサーバ2bAにデータG〜H(以下「データ[g, h]」と称する)が移動するとする。データ[g, h]を持っているデータサーバ2aAを「移動元」、データ[g, h]の移動先となるデータサーバ2bAを「移動先」とする。なお、移動元はデータサーバ2aAに限らず、移動先はデータサーバ2bAに限らない。
【0089】
まず、負荷分散機構が、移動元のデータ[g, h]を移動先に移動させることを決定し、その決定を移動元(本実施形態では、移動元のデータ伝送装置2a2A)に通知する。これを受け、移動元(本実施形態では、移動元のデータ伝送装置2a2A)は、移動先にデータ[g, h]が移動することを伝える(ステップS51)。例えば、移動元は、移動対象データのキーを移動先に伝える。
【0090】
移動先が、移動元からデータ[g, h]の移動開始を受けたら(ステップS61)、移動先のアクセス制御装置2b3Aは、データ[g, h]に対するトランザクションの参照/更新要求を拒否せず待たせ(ステップS62)、また、移動先のデータ伝送置2b2Aは、データ移動の初期化処理を行い(ステップS63)、続いて、移動元に応答を返す(ステップS64)。なお、ステップS63のデータ移動の初期化処理については後述する。
【0091】
移動元が、移動先からの応答を受け取ったら(ステップS52)、例えば移動元のデータ伝送装置2a2Aは、データ移動の初期化処理を行い(ステップS53)、続いて、位置管理サーバ3が管理しているデータ[g, h]の位置情報が示す位置を移動元から移動先に更新する旨の更新要求を、位置管理サーバ3に送信する(ステップS54)。なお、ステップS53のデータ移動の初期化処理については後述する。
【0092】
位置管理サーバ3は、データ[g, h]の位置情報が示す位置を移動元から移動先に更新する旨の更新要求を受信すると(ステップS71)、データ[g, h]の位置情報が示す位置を移動元から移動先に更新する(ステップS72)。位置管理サーバ3は、データ[g, h]の位置情報が示す位置を移動元から移動先に更新する処理を完了すると、データ[g, h]の移動完了通知を、更新要求の送信元つまり移動元に通知する(ステップS73)
移動元がデータ[g, h]の移動完了通知を受信すると、移動元のデータ伝送装置2a2Aは、位置管理サーバ3の位置情報の更新が成功したと判断し(ステップS55)、移動先へのデータ[g, h]の移動を開始する(ステップS56)。このため、移動先のデータ伝送装置2b2Aも、移動先へのデータ[g, h]の移動を開始する(ステップS65)。その後、データ移動が完了すると、データ移動が終了する(ステップS57、S66)。
【0093】
なお、ステップS56およびS65について補足すると、データ移動が開始したら移動元から移動先に移動開始時のデータ[g, h]のスナップショット(データ[g, h]のコピー)が伝送される。本実施形態では、スナップショット伝送の開始から終了まで、データ[g, h]に対しての参照/更新が可能になる。
【0094】
データ移動中に実行されるトランザクションを、移動元からのデータ移動が開始した時点を基準として、データ移動開始時以前からデータ移動開始時以降の間にかけて移動元のデータ[g, h]を更新する「既存トランザクション」と、データ移動開始時以後にデータ[g, h]を初めて更新する「新規トランザクション」に区別できる(図4に示したTx1およびTx2とTx3参照)。
【0095】
本実施形態では、新規トランザクションに起因するI/O(データに対する処理)と既存トランザクションに起因するI/Oとは、処理対象データについてロックを獲得した後に、その処理対象データの更新を行う。
【0096】
本実施形態では、新規トランザクションに起因するI/Oと既存トランザクションに起因するI/Oとのうち、データ移動開始時以降にデータ[g, h]に対して新たにロックを獲得するI/Oを移動先で行い、移動元のデータのロック情報を移動先とで同期し、データ移動中に移動元のデータの更新差分をアドホックで移動先に伝送することにより、トランザクション無停止のデータ移動が可能となる。
【0097】
以下に、移動先と移動元のデータの移動に関して詳細に説明する。
【0098】
まず、トランザクションの構造について説明する。データベース分野のトランザクションは、データに対する一連のI/O操作に対してACIDを保証する。例えば、Aさんの口座から50を引いてBさんの口座に50を振り込む場合を疑似コードで簡単に表すと、式1のようになる。
<式1>
Begin transaction;
A = A-50;
B = B+50;
Commit transaction;
トランザクションは、式1内のBegin transactionとcommit transactionの間のI/O(A= A-50, B = B+50)がすべて実行されるかされないかのどちらかになる原子性(Atomicity)等を保証する。以下では、トランザクションのなかのI/O一行をステートメント(命令文)とする。
【0099】
図8は、移動元から移動先へのデータ移動時、移動元と移動先が、トランザクションのステートメントI/O可否と実行位置およびデータの移動を制御する動作を説明するための図である。なお、図8において、図2に示したものと同一構成のものには同一符号を付してある。
【0100】
図8に示すように、データ移動開始前に移動元でロック獲得またはロック待ちになっているステートメントは、移動元で処理される。また、移動対象データを処理対象データとし、かつ、データ移動開始後に処理対象データに対するロックを要求するステートメント(例えば、既存トランザクション内のステートメントのうち未実行のステートメント、および、新規トランザクション内のステートメント)は、アクセス制御装置によって、移動先にリダイレクトされ移動先で実行される。また、移動先と移動元とでレコード(データ)のロック状態が同期される。
【0101】
図9は、データサーバ2aAおよび2bAの処理を説明するための図である。なお、図9において、図2に示したものと同一構成のものには同一符号を付してある。
【0102】
上述したように、データサーバ2aAおよび2bAは、それぞれ、データ移動時のトランザクションを管理するアクセス制御装置2a3Aまたは2b3Aと、データ伝送を管理するデータ伝送装置2a2Aまたは2b2Aを持つ。
【0103】
アクセス制御装置2a3Aおよび2b3Aは、移動元と移動先のレコード状態を基に、ステートメントを、自データサーバ内のデータ(レコード)にアクセスさせるか、移動先にリダイレクトするかを管理する。
【0104】
データ伝送装置2a2Aおよび2b2Aは、レコードの状態を基に、データ(レコード)を移動先に伝送するタイミングを決定し、例えば、移動先のトランザクションの処理に必要になった場合など移動が必要な場合、データ(レコード)を移動先に伝送する。データ伝送装置2a2Aおよび2b2Aは、データの移動手段として、既存技術であるネットワークを通したデータ伝送技術を利用する。
【0105】
図10は、ローカル記憶装置2a1とローカル記憶装置2b1にそれぞれ格納された移動対象レコード(移動対象データ)の集合を示した図である。
【0106】
アクセス制御装置2a3Aおよび2b3Aとデータ伝送装置2a2Aおよび2b2Aがレコードの状態を基に動作しているため、本実施形態では、レコード集合のレコードごとに、移動元では、データ伝送済フラグ10a1、ロック情報通知済フラグ10a2および移動元ロックフラグ10a3が、データ伝送装置2a2Aによって設置され、移動先では、レコードごとに、データ取得済フラグ10b1、ロック情報取得済フラグ10b2および移動元ロックフラグ10b3が、データ伝送装置2b2Aによって設けられる。なお、移動先と移動元は、図5、6でのデータ移動の初期化処理(ステップS53、S63)で、各フラグを設置する。
【0107】
移動先のフラグの初期値は、3種類のフラグ全てfalse(非セット)である。移動元のフラグの初期値は、データ伝送済フラグ10a1とロック情報通知済フラグ10a2はfalseで、移動元ロックフラグ10a3は、データ移動開始時に、そのフラグが設けられたレコードがトランザクションによりロックされていればtrue(セット)、ロックされてなければfalseに設定される。
【0108】
図11は、移動元のデータ移動処理の順序を説明するためのフローチャートである。
【0109】
ここで、図11内の台形と逆向き台形について説明する。図11で「データ移動(移動元)開始」後の台形で処理が3つに分岐されるが、これらは並列に処理され(逐次処理であってもよい)、これら3つの処理がすべて終了したら、逆向き台形以降の処理に進む。3つの処理中、2つが終了していて残り1つが未処理・処理中の場合は、その処理が終了するまでは、逆向き台形以降の処理には進まない。
【0110】
図11を参照すると、データの移動が始まると、移動元のデータ伝送装置2a2Aは、データ伝送を始める。データ伝送では、移動元へのアクセス処理が実行される(ステップS111)。また、データ伝送は、順次送信(ステップS112)と、アドホック送信(ステップS113)に区別される。
【0111】
図12は、順次送信(ステップS112)の具体的な処理フローを説明するためのフローチャートである。以下、図12を参照して、順次送信の具体的な処理を説明する。
【0112】
順次送信では、移動元のデータ伝送装置2a2Aは、ローカル記憶装置2a1内のレコード集合の最初のレコード(例えば、図10(a)に示したレコードのうち最上位のレコード)から順に送信対象レコードとしていく(ステップS121、S122)。
【0113】
続いて、送信対象レコードが、移動元に伝送されておらず(ステップS123)、かつ、移動元でロック(またはロック待ち)されていなければ(ステップS124)、移動元のデータ伝送装置2a2Aは、送信対象レコードを移動先に送信する(ステップS125)。
【0114】
移動元のデータ伝送装置2a2Aは、送信対象レコードを移動先に送信すると、送信対象レコードのデータ伝送済フラグ10a1およびロック情報通知済フラグ10a2をtrueに設定し(ステップS126)、次のレコードがあれば(ステップS127)処理をステップS122に戻し、次のレコードが無ければ(ステップS127)順次送信を終了する。
【0115】
一方、送信対象レコードが移動元でロック(またはロック待ち)になっていると(ステップS124)、移動元のデータ伝送装置2a2Aは、送信対象レコードが移動元でロック(またはロック待ち)になっている旨のロック情報を移動先に通知し(ステップS128)、その後、送信対象レコードのロック情報通知済フラグ10a2をtrueに設定し(ステップS129)、処理をステップS122に戻す。
【0116】
移動元のデータ伝送装置2a2Aは、送信対象レコードがロックされていたために順次送信を用いて送信対象レコードを送信できなかった場合や、移動先で、順次送信でまだ伝送されていないレコードが必要になった場合、アドホック送信(図11のステップS113)を用いて、移動先へレコードを伝送する。
【0117】
移動先で、順次送信でまだ伝送されていないレコードが必要になると、移動先のアクセス制御装置2b3Aは、必要になったレコードのアドホック通信を要求するアドホック通信要求(レコードの伝送要求)を移動元に送信する処理を、データ伝送装置2b2Aに実行させる。
【0118】
アドホック送信での伝送の開始は、移動元のデータ伝送装置2b2Aが、移動先からのアドホック通信要求を受信したことを契機に、または、ロックがかかっていた移動元のレコードのロックが解除されたことを契機に実行される。
【0119】
図13は、アドホック送信(ステップS113)の具体的な処理フローを説明するためのフローチャートである。
【0120】
アドホック送信の処理の内容は、順次送信のレコード送信と同じだが(図13のステップS131〜S136参照)、全レコードを送信対象にしているのではなく、指定された一つのレコードを送信対象にするところが順次送信との差である。アドホック通信は、必要に応じて、移動元アクセス処理(ステップS1410)、移動先アクセス処理(ステップS176)で開始される。
【0121】
トランザクションを停止させずデータ(レコード)を移動させるために、アクセス制御装置2a3Aおよび2b3Aは、データの移動が開始してから移動対象のレコード集合を処理対象としてI/O要求をするトランザクション内のステートメントに従ったレコードアクセスを管理する。
【0122】
図14は、移動元アクセス処理の具体的な処理の流れを示したフローチャートである。なお、図14内の台形と逆向き台形に関する処理は、図11内の台形と逆向き台形に関する処理と同様である。
【0123】
図14を参照すると、移動元のアクセス制御装置2a3Aは、基本的に、データ移動を開始してから移動対象のレコード集合に対してロックを要求してきたステートメントを、移動先にリダイレクトする(ステップS141〜S145)。
【0124】
また、移動元のアクセス制御装置2a3Aは、データ移動開始以前に獲得されたレコードのロックに関しては、移動元で、そのロックを待つステートメントが全てロックを取得して、ステートメントに従ってレコードが処理されて(ステップS146)レコードのロックが解除されるのを待ち(ステップS147〜S149)、レコードのロックが解除されたら、移動元のアクセス制御装置2a3Aは、そのレコードについてのアドホック伝送要求をデータ伝送装置2a2Aに出力し(ステップS1410)、データ伝送装置2a2Aにアドホック送信を行わせ、そのレコードを移動先に伝送する。
【0125】
図15は、移動先のデータ移動処理の順序を示したフローチャートである。なお、図15の台形と逆向き台形に関する処理は、図11内の台形と逆向き台形に関する処理と同様である。
【0126】
図15を参照すると、データの移動が始まると、移動先のデータ伝送装置2b2Aは、移動元からデータ受信を始める(ステップS151)。データ受信は、レコード単位の受信となる。移動元のアドホック送信、順次送信ともに、データの最少送信単位は、レコード単位になるためである。
【0127】
図16は、移動先のデータ受信処理を示したフローチャートである。この処理は、通信形態(順次送信、アドホック送信)に関係なく同じである。
【0128】
移動元からの通知は、レコードを構成する情報(キーとバリュー)、または、あるレコードが移動元でロックされている旨の通知(ロック情報)となる。
【0129】
移動元からの通知が、レコードを構成する情報(キーとバリュー)である場合、移動先のデータ伝送装置2b2Aは、レコードを構成する情報(キーとバリュー)を、そのレコードのためにローカル記憶装置2b1内に設けた空間に格納する(ステップS161〜S163)。なお、ローカル記憶装置2b1内の移動対象レコード用の空間は、例えば、データ移動を始める前に移動元から移動対象レコードのキーが通知された際に、移動先のデータ伝送装置2b2Aによって設けられる。
【0130】
移動先のデータ伝送装置2b2Aは、受信したレコードを格納すると、そのレコードのデータ取得済フラグ10b1およびロック情報取得済フラグ10b2をtrueにセットし(ステップS164〜S165)、そのレコードの移動元ロックフラグ10b3をfalseにセットする(ステップS166)。
【0131】
移動元からの通知が、移動元の、あるレコードのロックを表すロック情報である場合、移動先のデータ伝送装置2b2Aは、そのレコードのロック情報取得済フラグ10b2および移動元ロックフラグ10b3をtrueにセットし(ステップS167、S168)、そのレコードが移動元でロックされていることを記録する。
【0132】
なお、データ受信は、データ取得済みフラグの全てがtrueになるまで続けられる(図15のステップS152)。
【0133】
図17は、図15に示した移動先アクセス処理(ステップS153)を説明するためのフローチャートである。なお、図17内の台形に関する処理は、図11内の台形に関する処理と同様である。
【0134】
移動先のデータアクセスでは、移動対象レコード(データ)集合が全て伝送されるまでの間、移動対象レコード集合内のレコードのうち、ステートメントにてアクセス要求されたレコードが、移動先のローカル記憶装置2b1になければ、移動先のアクセス制御装置2b3Aは、移動先のデータ伝送装置2b2Aを用いて、アドホック伝送で、そのレコードを移動元から取り寄せる(ステップS171〜S176)。
【0135】
取り寄せようとしたレコードが移動元でロックされておらず、そのレコードを取り寄せられた場合、移動先のアクセス制御装置2b3Aは、取り寄せたレコードに対して、そのレコードを処理対象とするステートメントに従った処理を行う(ステップS177〜S178)。
【0136】
一方、取り寄せようとしたレコードが移動元でロックされている場合、移動先のアクセス制御装置2b3Aは、そのレコードを処理対象とするステートメントに従ったI/Oを移動元のロックが解除されるまで待機させる(ステップS179)。
【0137】
また、移動先のアクセス制御装置2b3Aは、ローカル記憶装置2b1に格納されたレコードごとに順番に移動先のロックルールに従ってステートメントに従ったデータアクセスを許可していく(ステップS1710〜S1714)。
【0138】
次に、具体例を用いてデータ移動を説明する。
【0139】
分散データ管理システム1Aが、二つのデータサーバ2aAおよび2bAと、二つのトランザクションサーバ4および41と、一つの位置管理サーバ3とで構成されているとする。
【0140】
また、<式2>で示した3つのトランザクションがあるとする。
【0141】
【数1】

【0142】
なお、トランザクションTx1は、データAから50引いてデータBに50足すトランザクションであり、トランザクションTx2は、データAから50引いてデータKに50足すトランザクションであり、トランザクションTx3は、データFから50引いてデータKに50足すトランザクションである。
【0143】
移動するデータは、データA〜Zまでとし、データサーバ2aAからデータサーバ2bAへ移動するとする。
【0144】
まず、トランザックションサーバ4からのトランザクションTx1と、トランザクションサーバ41からのトランザクションTx2とが、同時に実行されるとする。
【0145】
トランザクションTx1およびTx2は、まず、データAの内容を更新(50引く)するため、データサーバ2aAにあるデータAについてのロックの取得をこころみる。ここでは、トランザクションTx2がトランザクションTx1よりわずかに早く、データAのロックを獲得したとする。
【0146】
トランザクションTx1は、トランザクションTx2がとったデータAのロックが解放されるのをデータサーバ2aAで待つ。また、トランザクションTx2は、データAの更新に成功し、データKを更新しようとしてデータKのロックを要求し取得したとする。
【0147】
ここで、データの移動が開始されるとする。
【0148】
データサーバ2aAは、位置管理サーバ3が管理している、データA〜Zの位置情報が示す格納位置を、データサーバ2aAからデータサーバ2bAへ更新する。そのあと、データサーバ2aAは、データA〜Zまで、個別に順番にデータサーバ2bAに伝送する順次送信をこころみる。
【0149】
なお、順次送信の開始時、データAは最初に伝送対象となるデータであるため、データAのデータ伝送済フラグ10a1はfalseである。ただし、トランザクションTx2がデータAをロックし、トランザクションTx1がそのロックの開放を待っているため、データAの移動元ロックフラグ10a3はtrueである。
【0150】
従って、データサーバ2aAは、データAを伝送せずに、データAがロックされていることを示すロック情報をデータサーバ2bAに伝えた後、データAのロック情報通知済フラグ10a2をtrueにし、その後、データBの伝送を試みる。
【0151】
データBはロックされておらず、かつ伝送されていないため、データBのデータ伝送済フラグ10a1および移動元ロックフラグ10a3は共にfalseである。従って、データサーバ2aAは、データBをデータサーバ2bAに伝送し、その後、データBのデータ伝送済フラグ10a1およびロック情報通知済フラグ10a2をtrueにする。
【0152】
データサーバ2aAは、順次送信処理において、このような操作を、データZを伝送するまで続ける。
【0153】
データサーバ2aAがデータBまで伝送したあと、トランザクションサーバ41からトランザクションTx3が開始されたとする。
【0154】
トランザクションTx3はデータFを更新するため、トランザクションサーバ41は、データFの位置を位置管理サーバ3に問い合わせる。位置管理サーバ3では、データFの位置はデータサーバ2bAに更新されているので、トランザクションTx3は、データサーバ2bAに送信され、データサーバ2bAでデータFを更新しようとするが、データFがまだデータサーバ2bAに伝送されておらず、データFのロック情報も伝送されていない。このため、データサーバ2bAでは、データFのデータ取得済10b1フラグはfalseであり、データサーバ2でのデータFのロック情報取得済10b2フラグはfalseである。
【0155】
データFが伝送されず、また、データFにロックがかかっているかわからないため、データサーバ2bAは、データサーバ2aAに対して、データFについてのアドホック通信を要求する。
【0156】
データサーバ2aAは、データFについてのアドホック通信要求を受信したら、データFのデータ伝送済フラグ10a1および移動元ロックフラグ10a3をチェックし、共にfalseだったら、データFを、アドホック送信で伝送する。
【0157】
一方、データFの移動元ロックフラグ10a3がtrueだったら、データFがロックされていることを意味するため、データサーバ2aAは、データFがロックされていることを示すロック情報をデータサーバ2bA(トランザクション3)に伝える。
【0158】
ここでは、データFはロックされていないため、データサーバ2aAは、データFをデータサーバ2bAに伝送する。
【0159】
トランザクションTx3は、データFの伝送時間だけ待った後、直ちに、データFを更新することができ、その後、データKを更新するためにデータKにロックを要求する。
【0160】
データKも伝送されてきてないため、データサーバ2bAは、データFと同じようにデータKについてアドホック通信を要求する。
【0161】
しかし、データKは、トランザックションTx2によってすでにロックされているため、データKの移動元ロックフラグ10a3はtrueである。このため、データサーバ2aAは、データKがロックされていることを示すロック情報をデータサーバ2bAに伝える。データサーバ2bAは、このロック情報を受信すると、データKの移動元ロックフラグ10b3をtrueにセットし、データKの移動元ロックフラグ10b3の状態を、データKの移動元ロックフラグ10a3の状態に同期させる。
【0162】
データKの移動元ロックフラグ10b3がtrueあるため、トランザクションTx3は、データKに対するロックを取得することができず、移動元(データサーバ1)でのロックの開放を待つ。
【0163】
その後、データサーバ2aAでトランザクションTx2がデータKの更新に成功し、コミットするとする。これにより、データAおよびデータKのロックが解放される。
【0164】
データKの場合、移動元でロックを待つトランザクションがいないため、データサーバ2aAは、データKをデータサーバ2bAへアドホック送信する。
【0165】
移動先のトランザクションTx3は、データKが伝送されてデータKのデータ取得済フラグ10b1がtrueになると、データKをロックしデータKを更新したあと、トランザクションをコミットする。
【0166】
データAは移動元でトランザクションTx1がロックを待っているため、アドホック伝送は直ちにおこなわれず、トランザクションTx1がデータAのロックを取得する。トランザクションTx1はデータAの更新がおわったら、データBを更新するためデータBのロックを取得しようとする。
【0167】
しかし、データBのロックを取得しようとする段階で既にデータの移動が始まっているため、トランザクションTx1のうち、データBを更新するためのステートメントは、データサーバ2aAによって、データサーバ2bAにリダイレクトされ、このステートメントは、移動先(データサーバ2bA)でデータBのロックを要求する。
【0168】
トランザクションTx1がデータAおよびBの更新を終了しコミットすると、データサーバ2aAは、データAをデータKと同じ要領でデータサーバ2bAへ移動する。具体的には、データサーバ2aAは、トランザクションTx1がデータAおよびBの更新を終了しコミットすると、データAをデータサーバ2bAへアドホック送信する。
【0169】
以上のように、トランザクションは、ロック待ちなどの整合性を保証するためと、必要なデータの伝送を待つわずかな時間のみ待つことになる。また、移動元で順次伝送が終わり、移動元のデータをロックしていたトランザクションが全て終了し、ロックが解除された移動対象データが全て伝送された段階で移動が完了する。
【0170】
本実施形態によれば、第1実施形態と同様の効果を奏する。つまり、データ移動が開始してから到着したトランザクション(新規トランザクション)と、データ移動の開始前から存在していたトランザクション(既存トランザクション)とを、同時に実行可能となる。また、移動元で新規トランザクションが実行されないため、移動元で実行されていた既存のトランザクションが終了すると移動元で実行される既存トランザクションがなくなる。
【0171】
また、本実施形態では、アクセス制御装置2aAは、トランザクション内のステートメントを個別に順番に実行し、また、第1状況で実行中のトランザクション内のステートメントのうち実行中のステートメントの後に実行される実行予定ステートメント(更新要求)の処理対象データが、移動対象のデータである場合に、その実行予定ステートメントを、移動先にリダイレクトする。
【0172】
このため、移動元で実行される既存トランザクションの減少速度が速くなり、移動時間短縮効果も望める。
【0173】
また、本実施形態では、アクセス制御装置2a3Aおよび2b3Aは、ステートメントを実行する段階になると、そのステートメントの処理対象データをロックしてその処理対象データに対する他のステートメントに従った更新を禁止し、その後、その処理対象データに対して、そのステートメントを実行する。
【0174】
そして、データ伝送装置2a2Aおよび2b2Aは、アクセス制御装置にてロックされたデータが移動対象のデータである場合に、そのデータがロックされたことを示すロック情報を、移動先に送信する。
【0175】
そして、アクセス制御装置2a3Aおよび2b3Aは、ロック情報を受信すると、そのロック情報にてロックされたと示されたデータが、新たなトランザクション内の特定ステートメントの処理対象のデータである場合、そのデータに対する特定ステートメントに従った処理を保留する。
【0176】
この場合、移動元と移動先でロックに関する情報を共有(同期)することが可能になり、データ整合性を維持することが可能になる。
【0177】
また、本実施形態では、データ伝送装置2a2Aおよび2b2Aは、自データサーバがロック情報を受信すると、ロック情報にてロックされたことが示されたデータについて移動元ロックフラグをセットする。アクセス制御装置2a3Aおよび2b3Aは、移動元ロックフラグがセットされているデータが、新たなトランザクション内の特定ステートメントの処理対象のデータである場合、そのデータに対する特定ステートメントに従った処理を保留する。
【0178】
この場合、移動元ロックフラグを用いて、移動元と移動先でロックに関する情報を共有(同期)することが可能になる。
【0179】
また、本実施形態では、データ伝送装置2a2Aおよび2b2Aは、ロックされたデータが、移動対象のデータであり、かつ、そのロックされたデータがそのデータを処理対象とするステートメントに従って処理されると、そのデータのロックを解除してそのデータを移動先に送信し、また、第2状況で、ロックが解除されたデータを受信する。
【0180】
そして、アクセス制御装置2a3Aおよび2b3Aは、データ伝送装置が受信しロックが解除されたデータが、特定ステートメントに従った処理が保留されていたデータであると、特定ステートメントに従った処理の保留を解除し、特定ステートメントを実行する。
【0181】
この場合、移動元のデータにロックが存在したら、そのデータを、移動元でのロックが解除されるまで待ってから、移動先で処理することが可能になる。
【0182】
また、本実施形態では、レコード集合のレコード毎に、移動元では、データ伝送済フラグ10a1、ロック情報通知済フラグ10a2および移動元ロックフラグ10a3が、データ伝送装置2a2Aによって設置され、移動先では、レコード毎に、データ取得済フラグ10b1、ロック情報取得済フラグ10b2および移動元ロックフラグ10b3が、データ伝送装置2b2Aによって設けられる。
【0183】
移動先のフラグの初期値は、3種類のフラグ全てfalse(非セット)である。移動元のフラグの初期値は、データ伝送済フラグ10a1とロック情報通知済フラグ10a2はfalseで、移動元ロックフラグ10a3は、データ移動開始時に、そのフラグが設けられたレコードがトランザクションによりロックされていればtrue(セット)、ロックされてなければfalseに設定される。
【0184】
データ取得済フラグ10b1およびデータ伝送済フラグ10a1は、移動元から移動先へと該当データ(レコード)の伝送が完了したら、trueにセットされる。
【0185】
ロック情報取得済フラグ10b2は、移動先が移動元から、そのフラグが設けられたレコードについてのロック情報を取得したら、trueにセットされる。
【0186】
移動元ロックフラグ10a3および10b3は、そのフラグが設けられたレコードについて移動元でロックされている場合、trueにセットされる。
【0187】
ロック情報通知済フラグ10a2は、移動元から移動先へ、そのフラグが設けられたレコードについてのロック情報を通知したら、trueにセットされる。
【0188】
移動先は、トランザクションがレコード(データ)を参照または更新しようとすると、レコードのデータ取得済フラグ10b1およびロック情報取得済フラグ10b2および移動元ロックフラグ10b3を参照し、必要ならレコード(データ)とロック情報を取得する。この結果、移動先には、移動元にロックが存在したら移動元のロックが解除されるまでトランザクションの実行を待つ機構が備えられる。
【0189】
移動元は、データ移動開始後のトランザクションの更新を、データ移動先にリダイレクトさせる機能と、レコード(データ)のデータ伝送済フラグ10a1およびロック情報通知済フラグ10a2を参照し、必要ならロック取得/解除情報を移動先に伝える。
【0190】
本実施形態では、データが伝送中でも移動先でトランザクションを受け入れ、トランザクションの処理対象となるデータが未だ伝送されてない場合、移動先が、データ取得済フラグ10b1およびロック情報取得済フラグ10b2および移動元ロックフラグ10b3を参照し、移動元でデータがロックされていないなら、移動先が、データをアドホックに持ってくる、ロックされているなら、移動先でトランザクションがロックを待つことができる。
【0191】
移動元では、データ伝送済フラグ10a1およびロック情報通知済フラグ10a2を利用し、データがロックされている場合、ロックされていることを移動先に伝え、ロックが解放されたらデータを移動先に伝送することにより、トランザクションは、ロック待ちなど整合性を保証するためと、必要なデータの伝送を待つわずかな時間のみ、処理を中断することが可能である。
【0192】
以上説明した各実施形態において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
【符号の説明】
【0193】
1、1A 分散データ管理システム
2a、2b、2aA、2bA データサーバ
2a1、2b1 ローカル記憶装置
2a2、2b2、2a2A、2b2A データ伝送装置
2a3、2b3、2a3A、2b3A アクセス制御装置
3 位置管理サーバ
4 トランザクションサーバ

【特許請求の範囲】
【請求項1】
複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する1以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む分散データ管理システムであって、
前記移動元のデータサーバは、
前記移動対象データを格納する第1格納装置と、
前記移動対象データを、前記移動先に送信する第1データ通信装置と、
前記第1データ通信装置が前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトする第1アクセス制御装置と、を含み、
前記移動先のデータサーバは、
第2格納装置と、
前記移動元から前記移動対象データを受信し当該移動対象データを前記第2格納装置に格納する第2データ通信装置と、
トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する第2アクセス制御装置と、を含む、分散データ管理システム。
【請求項2】
複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する1以上のトランザクションサーバと、を含み、前記複数のデータサーバ間で前記複数のデータに含まれる移動対象データを移動可能な分散データ管理システムであって、
前記データサーバは、
前記複数のデータの一部のデータを格納する格納装置と、
自データサーバ内の前記格納装置内に前記移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを自データサーバ内の前記格納装置に格納するデータ伝送装置と、
自データサーバがトランザクションの実行中に前記移動元となり自データサーバ内の前記データ伝送装置が前記移動対象データを送信している第1状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第2状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御装置と、を含む、分散データ管理システム。
【請求項3】
請求項2に記載の分散データ管理システムにおいて、
前記トランザクションは、複数のステートメントからなるものであり、
前記ステートメントは、前記複数のデータのいずれかを処理対象データとする命令文であり、
前記アクセス制御装置は、前記トランザクション内のステートメントを個別に順番に実行し、また、前記第1状況で前記実行中のトランザクション内のステートメントのうち実行中のステートメントの後に実行される実行予定ステートメントの処理対象データが、前記移動対象データである場合に、当該実行予定ステートメントを、前記移動先にリダイレクトする、分散データ管理システム。
【請求項4】
請求項3に記載の分散データ管理システムにおいて、
前記アクセス制御装置は、前記ステートメントを実行する段階になると、当該ステートメントの処理対象データをロックし、その後、当該処理対象データに対する当該ステートメントに従った処理を行い、
前記データ伝送装置は、前記アクセス制御装置にてロックされたデータが前記移動対象データである場合に、当該データがロックされたことを示すロック情報を、前記移動先に送信し、
前記アクセス制御装置は、前記ロック情報を受信すると、当該ロック情報にてロックされたと示されたデータが、前記新たなトランザクション内の特定ステートメントの処理対象のデータである場合、当該データに対する前記特定ステートメントに従った処理を保留する、分散データ管理システム。
【請求項5】
請求項4に記載の分散データ管理システムにおいて、
前記データ伝送装置は、前記ロックされたデータが、前記移動対象データであり、かつ、当該データが当該データを処理対象とするステートメントに従って処理されると、当該データのロックを解除して当該データを前記移動先に送信し、また、前記第2状況で、前記ロックが解除されたデータを受信し、
前記アクセス制御装置は、前記ロックが解除され前記データ伝送装置にて受信されたデータが、前記特定ステートメントに従った処理が保留されていたデータであると、前記特定ステートメントに従った処理の保留を解除し、前記特定ステートメントに従った処理を実行する、分散データ管理システム。
【請求項6】
請求項4または5に記載の分散データ管理システムにおいて、
前記データ伝送装置は、自データサーバが前記ロック情報を受信すると、前記ロック情報にてロックされたことが示されたデータについて移動元ロックフラグを自データサーバ内の前記格納装置にセットし、
前記アクセス制御装置は、前記移動元ロックフラグがセットされているデータが、前記新たなトランザクション内の特定ステートメントの処理対象データである場合、当該データに対する前記特定ステートメントに従った処理を保留する、分散データ管理システム。
【請求項7】
請求項1から6のいずれか1項に記載の分散データ管理システムが備えるデータサーバ。
【請求項8】
複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する1以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む分散データ管理システムでの負荷分散方法であって、
前記移動元のデータサーバが、前記移動対象データを、前記移動先に送信する送信ステップと、
前記移動先のデータサーバが、前記移動元から前記移動対象データを受信して格納する格納ステップと、
前記移動元のデータサーバが、前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、
前記移動先のデータサーバが、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む、負荷分散方法。
【請求項9】
複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する1以上のトランザクションサーバと接続され、トランザクションの実行中に前記複数のデータに含まれる移動対象データを移動先に移動する移動元のデータサーバでの負荷分散方法であって、
前記移動対象データを、前記移動先に送信する送信ステップと、
前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、を含む、負荷分散方法。
【請求項10】
複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する1以上のトランザクションサーバと接続され、前記複数のデータに含まれる移動対象データの移動元から当該移動対象データを受信する移動先のデータサーバでの負荷分散方法であって、
前記移動元から前記移動対象データを受信して格納する格納ステップと、
トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む、負荷分散方法。
【請求項11】
複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信するトランザクションサーバと接続され、前記複数の管理対象のデータの一部を格納するデータサーバでの負荷分散方法であって、
前記複数の管理対象のデータの一部を格納装置に格納する格納ステップと、
自データサーバ内の前記格納装置内に移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを前記格納装置に格納するデータ伝送ステップと、
自データサーバがトランザクションの実行中に前記移動元となり自データサーバが前記移動対象データを送信している第1状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第2状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御ステップと、を含む、負荷分散方法。
【請求項12】
コンピュータを、請求項7に記載のデータサーバが含む各装置として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−257846(P2011−257846A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−130011(P2010−130011)
【出願日】平成22年6月7日(2010.6.7)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】