(57)【要約】【課題】データ移動の開始後に到着したトランザクションとデータ移動の開始前から存在するトランザクションをデータ移動中に実行可能な分散データ管理システムを提供する。【解決手段】各データサーバは、自データサーバが移動元になると自データサーバ内の移動対象データを移動先に送信し自データサーバが移動先になると移動元から移動対象データを受信して自データサーバ内に格納するデータ伝送装置と、自データサーバがトランザクション実行中に移動元となり自データサーバ内のデータ伝送装置が移動対象データを送信している第１状況で、移動対象データ内のデータを処理対象とする新たなトランザクションを受信すると、実行中のトランザクションを継続しつつ新たなトランザクションを移動先にリダイレクトし、自データサーバが移動先となっている第２状況で新たなトランザクションを受信すると、新たなトランザクションを実行するアクセス制御装置を含む。【選択図】図１
2011257846.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する１以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む分散データ管理システムであって、
前記移動元のデータサーバは、
前記移動対象データを格納する第１格納装置と、
前記移動対象データを、前記移動先に送信する第１データ通信装置と、
前記第１データ通信装置が前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトする第１アクセス制御装置と、を含み、
前記移動先のデータサーバは、
第２格納装置と、
前記移動元から前記移動対象データを受信し当該移動対象データを前記第２格納装置に格納する第２データ通信装置と、
トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する第２アクセス制御装置と、を含む、分散データ管理システム。
【請求項２】
複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する１以上のトランザクションサーバと、を含み、前記複数のデータサーバ間で前記複数のデータに含まれる移動対象データを移動可能な分散データ管理システムであって、
前記データサーバは、
前記複数のデータの一部のデータを格納する格納装置と、
自データサーバ内の前記格納装置内に前記移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを自データサーバ内の前記格納装置に格納するデータ伝送装置と、
自データサーバがトランザクションの実行中に前記移動元となり自データサーバ内の前記データ伝送装置が前記移動対象データを送信している第１状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第２状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御装置と、を含む、分散データ管理システム。
【請求項３】
請求項２に記載の分散データ管理システムにおいて、
前記トランザクションは、複数のステートメントからなるものであり、
前記ステートメントは、前記複数のデータのいずれかを処理対象データとする命令文であり、
前記アクセス制御装置は、前記トランザクション内のステートメントを個別に順番に実行し、また、前記第１状況で前記実行中のトランザクション内のステートメントのうち実行中のステートメントの後に実行される実行予定ステートメントの処理対象データが、前記移動対象データである場合に、当該実行予定ステートメントを、前記移動先にリダイレクトする、分散データ管理システム。
【請求項４】
請求項３に記載の分散データ管理システムにおいて、
前記アクセス制御装置は、前記ステートメントを実行する段階になると、当該ステートメントの処理対象データをロックし、その後、当該処理対象データに対する当該ステートメントに従った処理を行い、
前記データ伝送装置は、前記アクセス制御装置にてロックされたデータが前記移動対象データである場合に、当該データがロックされたことを示すロック情報を、前記移動先に送信し、
前記アクセス制御装置は、前記ロック情報を受信すると、当該ロック情報にてロックされたと示されたデータが、前記新たなトランザクション内の特定ステートメントの処理対象のデータである場合、当該データに対する前記特定ステートメントに従った処理を保留する、分散データ管理システム。
【請求項５】
請求項４に記載の分散データ管理システムにおいて、
前記データ伝送装置は、前記ロックされたデータが、前記移動対象データであり、かつ、当該データが当該データを処理対象とするステートメントに従って処理されると、当該データのロックを解除して当該データを前記移動先に送信し、また、前記第２状況で、前記ロックが解除されたデータを受信し、
前記アクセス制御装置は、前記ロックが解除され前記データ伝送装置にて受信されたデータが、前記特定ステートメントに従った処理が保留されていたデータであると、前記特定ステートメントに従った処理の保留を解除し、前記特定ステートメントに従った処理を実行する、分散データ管理システム。
【請求項６】
請求項４または５に記載の分散データ管理システムにおいて、
前記データ伝送装置は、自データサーバが前記ロック情報を受信すると、前記ロック情報にてロックされたことが示されたデータについて移動元ロックフラグを自データサーバ内の前記格納装置にセットし、
前記アクセス制御装置は、前記移動元ロックフラグがセットされているデータが、前記新たなトランザクション内の特定ステートメントの処理対象データである場合、当該データに対する前記特定ステートメントに従った処理を保留する、分散データ管理システム。
【請求項７】
請求項１から６のいずれか１項に記載の分散データ管理システムが備えるデータサーバ。
【請求項８】
複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する１以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む分散データ管理システムでの負荷分散方法であって、
前記移動元のデータサーバが、前記移動対象データを、前記移動先に送信する送信ステップと、
前記移動先のデータサーバが、前記移動元から前記移動対象データを受信して格納する格納ステップと、
前記移動元のデータサーバが、前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、
前記移動先のデータサーバが、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む、負荷分散方法。
【請求項９】
複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する１以上のトランザクションサーバと接続され、トランザクションの実行中に前記複数のデータに含まれる移動対象データを移動先に移動する移動元のデータサーバでの負荷分散方法であって、
前記移動対象データを、前記移動先に送信する送信ステップと、
前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、を含む、負荷分散方法。
【請求項１０】
複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する１以上のトランザクションサーバと接続され、前記複数のデータに含まれる移動対象データの移動元から当該移動対象データを受信する移動先のデータサーバでの負荷分散方法であって、
前記移動元から前記移動対象データを受信して格納する格納ステップと、
トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む、負荷分散方法。
【請求項１１】
複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信するトランザクションサーバと接続され、前記複数の管理対象のデータの一部を格納するデータサーバでの負荷分散方法であって、
前記複数の管理対象のデータの一部を格納装置に格納する格納ステップと、
自データサーバ内の前記格納装置内に移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを前記格納装置に格納するデータ伝送ステップと、
自データサーバがトランザクションの実行中に前記移動元となり自データサーバが前記移動対象データを送信している第１状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第２状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御ステップと、を含む、負荷分散方法。
【請求項１２】
コンピュータを、請求項７に記載のデータサーバが含む各装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データ管理システム、データサーバ、負荷分散方法およびプログラムに関する。
【０００２】
本発明は、特には、複数のデータを分散して格納する複数のデータサーバと、データの格納位置を管理する位置管理サーバと、位置管理サーバを参照して複数のデータに含まれるデータを処理対象としたトランザクションを、処理対象データを格納しているデータサーバに送信するトランザクションサーバと、を含み、複数のデータサーバ間で複数のデータに含まれる移動対象データを移動可能な分散データ管理システム、データサーバ、負荷分散方法およびプログラムに関する。
【背景技術】
【０００３】
一台のサーバで処理出来ない大容量データの格納、および、データに対する大規模のトランザクションを処理するための一つの手法として、分散データ管理システムが知られている。分散データ管理システムは、ネットワークに接続され相互通信可能な複数の計算機に処理すべきデータの担当範囲を割り当て、各々の計算機が自己に割り当てられたデータを独立的に処理することにより、大量のデータを格納／処理するためのシステムである。近年、インターネットの発達により多くのユーザから要求される大規模なデータ処理の必要性から、分散データ管理システムが注目されている。
【０００４】
しかし、分散データ管理システム内の任意の計算機にトランザクション処理が集中してしまうと、一つの計算機のみが分散データ管理システムのトランザクションを処理することになる。このため、複数の計算機が分散データ管理システムに存在するにもかかわらず、分散データ管理システムの性能は、一台の計算機の性能に制限されてしまう。従って、分散データ管理システムが本来の性能を発揮するためには、トランザクション処理を分散データ管理システム内の全ての計算機に均等に分配することが望ましい。
【０００５】
分散データ管理システムでの管理方式は、各計算機による記憶装置の共有形態により、共有型分散データ管理方式と、無共有型分散データ管理方式とに区分できる。
【０００６】
共有型分散データ管理方式は、分散ファイルシステムまたは共有ディスクアレイ等、複数の計算機から同時にアクセスできる記憶装置にデータを格納し、データの処理のみを計算機が行う方式である。ハイパテーブル（非特許文献１参照）、BigTable（非特許文献２参照）が、共有型分散データ管理方式を採用している。
【０００７】
無共有型分散データ管理方式は、それぞれの計算機が自身のローカル記憶装置を有し、分散データ管理システムが格納すべきデータがローカル記憶装置に分散格納され、各計算機が自身の持つローカル記憶装置内のデータの処理を担当する方式である。
【０００８】
共有型分散データ管理方式下の計算機は、データの処理だけに専念すればよいため製作が比較的容易だが、負荷分散において、データ配置の負荷分散処理はデータ処理の分散処理とは別の下位層の共有記憶装置に任せられているので、精密な負荷分散が出来ない問題がある。
【０００９】
他方、無共有型分散データ管理方式は、製作は難しいもののデータ配置まで制御できるため、より効率よい負荷分散を行える。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Hyper Table、［online］、［平成２２年５月２４日検索］、インターネット＜URL：http://www.hypertable.org/＞
【非特許文献２】Bigtable、［online］、［平成２２年５月２４日検索］、インターネット＜URL：http://labs.google.com/papers/bigtable.html＞
【非特許文献３】Amazon EC2、［online］、［平成２２年５月２４日検索］、インターネット＜http://aws.amazom.com/ec2/＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
例えば、人気によるアクセスの集中等でトランザクション処理の予測が難しいウェブ基盤アプリケーションを扱う分散データ管理システムでは、高負荷をまかなうための計算機の追加と、その追加された計算機への既存データの移動が頻繁に行われる。しかし、既存システムにおいて、他計算機へのデータの移動は、システムの一時的停止を伴うことが多く、多々のシステム停止は、人気が集中しているアプリケーションにとって潜在的な損失となる。
【００１２】
無共有型分散データ管理方式でのデータ移動については以下の方式が利用されている。なお、以下では、既存のデータを格納しているマシン（計算機）を移動元マシン、データの移動先となるマシンを移動先マシンと称する。
【００１３】
データ移動が開始したら、移動開始時点のデータのスナップショットが移動元マシンから移動先マシンへ移動する。一般的に、格納しているデータの数および量は大きいため、このスナップショットデータの転送は一定時間を要する。データの移動が終了するまで、移動するデータにかかわるトランザクションは実行を待たされ、データ移動が終了した段階で、実行を待たされていたトランザクションは、移動先マシンにリダイレクトされ実行される。この方式は簡単だがスナップショットデータの伝送中にはトランザクションの実行ができないことが問題である。
【００１４】
前記問題を解決するため、スナップショットデータの伝送中に移動元マシンでトランザクションの更新を可能にする方式がある。
【００１５】
この方式では、スナップショットデータの伝送が始まると、伝送開始時に移動元マシンで処理されていたトランザクションはデータ更新を続けられる。データ更新があると、更新差分が移動先マシンに伝送され適用される。
【００１６】
また、この方式では、データの移動が始まった後に移動元マシンに到着したトランザクションは、移動元マシンで更新可能な既存トランザクションの終了を待ち、既存トランザクションが全て終了した段階で、移動先マシンにリダイレクトされ実行される。
【００１７】
この方式は、データ移動処理の最中にトランザクションを実行可能ではあるが、データ移動が開始された後に移動元マシンに到着するトランザクションは既存トランザクションの終了まで待たねばならないのが課題である。
【００１８】
本発明の目的は、データ移動が開始してから到着したトランザクション（以下「新規トランザクション」と称する）と、データ移動の開始前から存在していたトランザクション（以下「既存トランザクション」と称する）の両方を、データ移動中でも実行可能な分散データ管理システム、データサーバ、負荷分散方法およびプログラムを提供することである。
【課題を解決するための手段】
【００１９】
本発明の分散データ管理システムは、複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する１以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む分散データ管理システムであって、前記移動元のデータサーバは、前記移動対象データを格納する第１格納装置と、前記移動対象データを、前記移動先に送信する第１データ通信装置と、前記第１データ通信装置が前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトする第１アクセス制御装置と、を含み、前記移動先のデータサーバは、第２格納装置と、前記移動元から前記移動対象データを受信し当該移動対象データを前記第２格納装置に格納する第２データ通信装置と、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する第２アクセス制御装置と、を含む。
【００２０】
本発明の分散データ管理システムは、複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する１以上のトランザクションサーバと、を含み、前記複数のデータサーバ間で前記複数のデータに含まれる移動対象データを移動可能な分散データ管理システムであって、前記データサーバは、前記複数のデータの一部のデータを格納する格納装置と、自データサーバ内の前記格納装置内に前記移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを自データサーバ内の前記格納装置に格納するデータ伝送装置と、自データサーバがトランザクションの実行中に前記移動元となり自データサーバ内の前記データ伝送装置が前記移動対象データを送信している第１状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第２状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御装置と、を含む。
【００２１】
本発明の負荷分散方法は、複数のデータを分散して格納する複数のデータサーバと、前記複数のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータを格納しているデータサーバに送信する１以上のトランザクションサーバと、を含み、前記複数のデータサーバは、トランザクションの実行中に前記複数のデータに含まれる移動対象データの移動元となるデータサーバと、前記移動対象データの移動先となるデータサーバと、を含む、分散データ管理システムでの負荷分散方法であって、前記移動元のデータサーバが、前記移動対象データを、前記移動先に送信する送信ステップと、前記移動先のデータサーバが、前記移動元から前記移動対象データを受信して格納する格納ステップと、前記移動元のデータサーバが、前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、前記移動先のデータサーバが、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む。
【００２２】
本発明の負荷分散方法は、複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する１以上のトランザクションサーバと接続され、トランザクションの実行中に前記複数のデータに含まれる移動対象データを移動先に移動する移動元のデータサーバでの負荷分散方法であって、前記移動対象データを、前記移動先に送信する送信ステップと、前記移動対象データを送信している状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトするリダイレクトステップと、を含む。
【００２３】
本発明の負荷分散方法は、複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信する１以上のトランザクションサーバと接続され、前記複数のデータに含まれる移動対象データの移動元から当該移動対象データを受信する移動先のデータサーバでの負荷分散方法であって、前記移動元から前記移動対象データを受信して格納する格納ステップと、トランザクションを実行中の前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行する実行ステップと、を含む。
【００２４】
本発明の負荷分散方法は、複数の管理対象のデータに含まれるデータを処理対象としたトランザクションを、当該処理対象のデータの格納先に送信するトランザクションサーバと接続され、前記複数の管理対象のデータの一部を格納するデータサーバでの負荷分散方法であって、前記複数の管理対象のデータの一部を格納装置に格納する格納ステップと、自データサーバ内の前記格納装置内に移動対象データが格納されており自データサーバが前記移動対象データの移動元になると、前記移動対象データを、前記移動対象データの移動先に送信し、また、自データサーバが前記移動先になると、前記移動元から前記移動対象データを受信し当該移動対象データを前記格納装置に格納するデータ伝送ステップと、自データサーバがトランザクションの実行中に前記移動元となり自データサーバが前記移動対象データを送信している第１状況で、前記トランザクションサーバから、前記移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、当該新たなトランザクションを、前記移動先にリダイレクトし、また、自データサーバが前記移動先となっている第２状況で、前記移動元から新たなトランザクションを受信した場合、当該新たなトランザクションを実行するアクセス制御ステップと、を含む。
【発明の効果】
【００２５】
本発明によれば、移動元のデータサーバは、移動対象データを送信している状況で、トランザクションサーバから、移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、新たなトランザクションを、移動先にリダイレクトし、移動先のデータサーバは、トランザクションを実行中の移動元から新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【００２６】
このため、移動対象データの移動中では、移動対象データの移動開始前から存在していたトランザクション（既存のトランザクション）は移動元で実行され、移動対象のデータの移動中に到着した新たなトランザクション（新規トランザクション）は移動先で実行可能となる。
【００２７】
したがって、本発明によれば、既存トランザクションと新規トランザクションが、データ移動中でも停止時間なく実行することが可能となる。
【００２８】
これにより、例えば、分散データ管理システムが、ユーザに対して所定のサービス（例えば、情報提供サービス）を提供している場合、ユーザサービスへの影響を最小限にしながら、分散データ管理の負荷分散、データサーバの追加などを簡単に行うことが可能になり、負荷が多く変動が激しいウェブ等のサービスも効率よく提供できる分散データ管理システムを構築可能になる。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１実施形態の分散データ管理システム１を示したブロック図である。
【図２】本発明の第２実施形態の分散データ管理システム１Ａを示したブロック図である。
【図３】第２実施形態の一例を説明するためのブロック図である。
【図４】分散データ管理システム１Ａでのデータ移動の概要を説明するためのブロック図である。
【図５】データ移動時の移動元の処理の概要を説明するためのフローチャートである。
【図６】データ移動時の移動先の処理の概要を説明するためのフローチャートである。
【図７】データ移動時の位置管理サーバの処理の概要を説明するためのフローチャートである。
【図８】移動元から移動先へのデータ移動時、移動元と移動先が、トランザクションのステートメントI/O可否と実行位置およびデータの移動を制御する動作を説明するための図である。
【図９】データサーバ２ａＡおよび２ｂＡの処理を説明するための図である。
【図１０】ローカル記憶装置２ａ１とローカル記憶装置２ｂ１にそれぞれ格納された移動対象レコード（移動対象データ）の集合を示した図である。
【図１１】移動元のデータ移動処理の順序を説明するためのフローチャートである。
【図１２】順次送信の具体的な処理フローを説明するためのフローチャートである。
【図１３】アドホック送信の具体的な処理フローを説明するためのフローチャートである。
【図１４】移動元アクセス処理の具体的な処理の流れを示したフローチャートである。
【図１５】移動先のデータ移動処理の順序を示したフローチャートである。
【図１６】移動先のデータ受信処理を示したフローチャートである。
【図１７】移動先アクセス処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００３０】
以下、本発明の実施形態について説明する。
【００３１】
（第１実施形態）
図１は、本発明の第１実施形態の分散データ管理システム１を示したブロック図である。図１において、分散データ管理システム１は、複数のデータサーバ２ａおよび２ｂと、位置管理サーバ３と、トランザクションサーバ４と、を含む。なお、データサーバの数は２台に限らず複数台であればよい。また、トランザクションサーバの数は１台に限らず任意の台数であればよい。
【００３２】
データサーバ２ａ〜２ｂは、分散データ管理システム１が管理する複数のデータを分散して格納する。以下では、分散データ管理システム１が管理する複数のデータの一例として、「データＡ〜Ｚ」が用いられ、データＡ〜Ｊがデータサーバ２ａに格納され、データＫ〜Ｚがデータサーバ２ｂに格納されているとする。なお、分散データ管理システム１が管理する複数のデータは、データＡ〜Ｚに限るものではなく、データサーバ２ａが格納するデータはデータＡ〜Ｊに限るものではなく、データサーバ２ｂが格納するデータはデータＫ〜Ｚに限るものではない。
【００３３】
位置管理サーバ３は、分散データ管理システム１が管理する複数のデータのそれぞれについて、データの格納位置を管理する。位置管理サーバ３は、例えば、データＡ〜Ｚのそれぞれについて、データの識別子（例えば、データ名）と、そのデータを格納しているデータサーバの識別子（例えば、名称）とを、互いに関連づけて格納する。なお、位置管理サーバ３は、複数の位置管理サーバにて構成されてもよい。
【００３４】
トランザクションサーバ４は、位置管理サーバ３を参照して、分散データ管理システム１が管理する複数のデータに含まれるデータを処理対象としたトランザクションを、データサーバ２ａ〜２ｂのうち、その処理対象データを格納しているデータサーバに送信する。
【００３５】
トランザクションサーバ４は、例えば、データＡおよびＧを処理対象としたトランザクションTx１を上位機器（不図示）から受け付けると、位置管理サーバ３を参照して、データＡおよびＧを格納しているデータサーバ２ａを特定する。その後、トランザクションサーバ４は、トランザクションTx１を、データサーバ２ａに送信する。なお、トランザクションTx１は、トランザクションサーバ４内のアプリケーションにて作成されてもよい。
【００３６】
データサーバ２ａ〜２ｂ間では、分散データ管理システム１が管理する複数のデータ（データＡ〜Ｚ）に含まれる移動対象データ（例えば、データＧ〜Ｈ）が、移動可能である。なお、移動対象データは、データＧ〜Ｈに限らず適宜変更可能である。
【００３７】
データサーバ２ａは、ローカル記憶装置２ａ１と、データ伝送装置２ａ２と、アクセス制御装置２ａ３と、を含む。データサーバ２ｂは、ローカル記憶装置２ｂ１と、データ伝送装置２ｂ２と、アクセス制御装置２ｂ３と、を含む。
【００３８】
格納装置であるローカル記憶装置２ａ１は、分散データ管理システム１が管理する複数のデータの一部のデータを格納する。
【００３９】
データ通信装置であるデータ伝送装置２ａ２は、ローカル記憶装置２ａ１内に移動対象データが格納されており自データサーバ（データサーバ２ａ）が移動対象データの移動元になると、移動対象データを、移動対象データの移動先に送信する。
【００４０】
また、データ伝送装置２ａ２は、自データサーバが移動先になると、移動元から移動対象データを受信し、その移動対象データをローカル記憶装置２ａ１に格納する。
【００４１】
アクセス制御装置２ａ３は、自データサーバがトランザクションの実行中に移動元となり自データサーバ内のデータ伝送装置２ａ２が移動対象データを送信している状況（以下「第１状況」と称する）で、トランザクションサーバ４から、移動対象データに含まれるデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、その新たなトランザクションを、移動先にリダイレクトする。
【００４２】
また、アクセス制御装置２ａ３は、自データサーバが移動先となっている状況（以下「第２状況」と称する）で、移動元から送信された新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【００４３】
データサーバ２ａは、コンピュータにて実現されてもよい。この場合、コンピュータは、コンピュータにて読み取り可能なＣＤ−ＲＯＭ（Compact Disk Read Only Memory）のような記録媒体に記録されたプログラムを読込み実行することによって、ローカル記憶装置２ａ１、データ伝送装置２ａ２およびアクセス制御装置２ａ３として機能する。記録媒体は、ＣＤ−ＲＯＭに限らず適宜変更可能である。
【００４４】
データサーバ２ｂと、ローカル記憶装置２ｂ１と、データ伝送装置２ｂ２と、アクセス制御装置２ｂ３については、上述したデータサーバ２ａと、データサーバ２ａ内のローカル記憶装置２ａ１と、データ伝送装置２ａ２と、アクセス制御装置２ａ３についての説明において、データサーバ２ａをデータサーバ２ｂに読み替え、ローカル記憶装置２ａ１をローカル記憶装置２ｂ１と読み替え、データ伝送装置２ａ２をデータ伝送装置２ｂ２と読み替え、アクセス制御装置２ａ３をアクセス制御装置２ｂ３と読み替えればよい。
【００４５】
次に、第１実施形態の動作を説明する。以下では、データサーバ２ａが移動元となり、データサーバ２ｂが移動先となる場合の動作を説明する。
【００４６】
データサーバ２ａが移動元となり、データサーバ２ｂが移動先となると、データ伝送装置２ａ２は、移動対象データをデータ伝送装置２ｂ２に送信し始め、データ伝送装置２ｂ２は、データ伝送装置２ａ２から移動対象データを受信すると、その移動対象データをローカル記憶装置２ｂ１に格納する。
【００４７】
アクセス制御装置２ａ３は、第１状況で、トランザクションサーバ４から、移動対象データの少なくとも一部のデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、その新たなトランザクションを、アクセス制御装置２ｂ３にリダイレクトする。
【００４８】
アクセス制御装置２ｂ３は、第２状況で、アクセス制御装置２ａ３から送信された新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【００４９】
本実施形態によれば、アクセス制御装置２ａ３および２ｂ３のそれぞれは、自データサーバがトランザクションサーバ４からのトランザクションの実行中に移動元となり自データサーバ内のデータ伝送装置が移動対象データを送信している状況（第１状況）で、トランザクションサーバ４から、移動対象データの少なくとも一部のデータを処理対象とする新たなトランザクションを受信した場合、実行中のトランザクションを継続しながら、その新たなトランザクションを、移動先にリダイレクトする。
【００５０】
また、アクセス制御装置２ａ３および２ｂ３のそれぞれは、自データサーバが移動先となっている状況（第２状況）で、移動元から送信された新たなトランザクションを受信した場合、その新たなトランザクションを実行する。
【００５１】
このため、移動対象データの移動中、移動対象データの移動開始前から存在していたトランザクション（既存のトランザクション）は移動元で実行され、移動対象データの移動中に移動元に到着した新たなトランザクション（新規トランザクション）は移動先で実行可能となる。
【００５２】
したがって、本実施形態によれば、既存トランザクションと新規トランザクションとを、データ移動中でも停止時間なく実行することが可能となる。
【００５３】
これにより、例えば、分散データ管理システム１が、ユーザに対して所定のサービス（例えば、情報提供サービス）を提供している場合、ユーザサービスへの影響を最小限にしながら、分散データ管理の負荷分散およびデータサーバの追加などを簡単に行うことが可能になり、負荷が多く変動が激しいウェブ等のサービスも効率よく提供できる分散データ管理システムを構築可能になる。
【００５４】
なお、上記説明では、データサーバ２ａが移動元となりデータサーバ２ｂが移動先となる例を説明したが、データサーバ２ｂが移動元になり、データサーバ２ａが移動先になってもよい。
【００５５】
（第２実施形態）
図２は、本発明の第２実施形態の分散データ管理システム１Ａを示したブロック図である。なお、図２において、図１に示したものと同一構成のものには同一符号を付してある。
【００５６】
図２において、第２実施形態の分散データ管理システム１Ａは、複数のデータサーバとして、図１に示したデータサーバ２ａおよび２ｂの代わりに、複数のデータサーバ２ａＡおよび２ｂＡを有する点、および、トランザクションサーバ４と同一の機能を有するトランザクションサーバ４１を有する点で、第１実施形態の分散データ管理システム１と異なる。
【００５７】
なお、本実施形態においても、データサーバの数は２台に限らず複数台であればよい。また、トランザクションサーバの数は２台に限らず任意の台数であればよい。
【００５８】
また、以下では、トランザクションサーバ４および４１の各々から送信されるトランザクションは、複数のステートメントからなるものとする。なお、各ステートメントは、分散データ管理システム１Ａが管理する複数のデータのいずれかを処理対象データとする命令文である。
【００５９】
まず、第２実施形態について、第１実施形態と異なる主な点（特に、データサーバ２ａＡおよび２ｂＡ）の概要を説明する。
【００６０】
データサーバ２ａＡ〜２ｂＡは、分散データ管理システム１Ａが管理する複数のデータを分散して格納する。
【００６１】
データサーバ２ａＡは、ローカル記憶装置２ａ１と、データ伝送装置２ａ２Ａと、アクセス制御装置２ａ３Ａと、を含む。データサーバ２ｂＡは、ローカル記憶装置２ｂ１と、データ伝送装置２ｂ２Ａと、アクセス制御装置２ｂ３Ａと、を含む。
【００６２】
アクセス制御装置２ａ３Ａは、図１に示したアクセス制御装置２ａ３の機能を有し、さらに、他の機能も有する。
【００６３】
アクセス制御装置２ａ３Ａは、トランザクションを受信すると、そのトランザクション内のステートメントを個別に順番に実行する。
【００６４】
アクセス制御装置２ａ３Ａは、あるステートメントを実行する段階になると、そのステートメントの処理対象データをロックして、その処理対象データに対する他のステートメントに従った更新を禁止し、その後、その処理対象データに対して、その処理対象データを処理対象とするステートメントを実行する。
【００６５】
データ伝送装置２ａ２Ａは、データ伝送装置２ａ２の機能を有し、さらに、他の機能も有する。
【００６６】
データ伝送装置２ａ２Ａは、アクセス制御装置２ａ３Ａにてロックされたデータが移動対象データである場合に、そのデータがロックされたことを示すロック情報を、移動先に送信する。
【００６７】
なお、アクセス制御装置２ａ３Ａは、第２状況でロック情報を受信すると、ロック情報にてロックされたと示されたデータが、新たなトランザクション内のステートメント（以下「特定ステートメント」と称する）の処理対象データである場合、そのデータに対する特定ステートメントに従った処理を保留する、という機能も有する。
【００６８】
また、データ伝送装置２ａ２Ａは、ロックされたデータが、移動対象のデータであり、かつ、そのデータを処理対象とするステートメント（そのデータをロックしたステートメント）に従って処理されると、そのデータのロックを解除してそのデータを移動先に送信する、という機能も有する。また、データ伝送装置２ａ２Ａは、ロックが解除されたデータを第２状況で受信する、という機能も有する。
【００６９】
また、アクセス制御装置２ａ３Ａは、ロックが解除されデータ伝送装置２ａ２Ａにて受信されたデータが、特定ステートメントによる処理が保留されていたデータであると、特定ステートメントに従った処理の保留を解除し、特定ステートメントを実行する、という機能も有する。
【００７０】
また、データ伝送装置２ａ２Ａは、自データサーバがロック情報を受信すると、そのロック情報にてロックされたことが示されたデータについて移動元ロックフラグを自データサーバ内のローカル記憶装置２ａ１にセットする、という機能も有する。
【００７１】
また、アクセス制御装置２ａ３Ａは、移動元ロックフラグがセットされているデータが、新たなトランザクション内の特定ステートメントの処理対象データである場合、そのデータに対する特定ステートメントに従った処理を保留する、という機能も有する。
【００７２】
データサーバ２ａＡは、コンピュータにて実現されてもよい。この場合、コンピュータは、コンピュータにて読み取り可能なＣＤ−ＲＯＭのような記録媒体に記録されたプログラムを読込み実行することによって、ローカル記憶装置２ａ１、データ伝送装置２ａ２Ａおよびアクセス制御装置２ａ３Ａとして機能する。記録媒体は、ＣＤ−ＲＯＭに限らず適宜変更可能である。
【００７３】
なお、データサーバ２ｂＡと、ローカル記憶装置２ｂ１と、データ伝送装置２ｂ２Ａと、アクセス制御装置２ｂ３Ａについては、上述したデータサーバ２ａＡと、ローカル記憶装置２ａ１と、データ伝送装置２ａ２Ａと、アクセス制御装置２ａ３Ａについての説明において、データサーバ２ａＡをデータサーバ２ｂＡに読み替え、ローカル記憶装置２ａ１をローカル記憶装置２ｂ１と読み替え、データ伝送装置２ａ２Ａをデータ伝送装置２ｂ２Ａと読み替え、アクセス制御装置２ａ３Ａをアクセス制御装置２ｂ３Ａと読み替えればよい。
【００７４】
次に、第２実施形態を詳細に説明する。
【００７５】
図３は、本実施形態の一例を説明するためのブロック図である。なお、図３において、図２に示したものと同一構成のものには同一符号を付してある。
【００７６】
図３において、データサーバ２ａＡおよび２ｂＡは、ローカル記憶装置（図２参照）と、ロック機構などを有するアクセス制御装置（図２参照）と、データ伝送装置（図２参照）を持ち、データを格納可能で必要なデータの入出力が可能な計算機である。
【００７７】
データは、構造化されたデータであり、少なくても、分散データ管理システム１Ａ内で区別可能な一意的な識別子であるキーと、そのキーが示すデータの集合と、で構成される。説明を簡潔にするため、キーが示すデータの集合を「バリュー」と称する。バリューは、複数の論理データに分割することが可能である。例えば、あるサービスのユーザを管理するためのデータ構造があり、そのデータ構造が、ユーザID、ユーザ名、歳、住所および性別で構成されている場合、ユーザIDがキー（Key）であり、バリュー（Value）が、ユーザ名、歳、住所および性別で構成される。また、異なるキーは、同じバリューを示さない。
【００７８】
以下、一つのキーと、そのキーにて示された一つのバリューと、のペアを、「レコード」とも称する。
【００７９】
データサーバ２ａＡおよび２ｂＡのそれぞれは、複数のレコードにて構成されるグループを格納し、格納したグループ内のレコード（データ）に対するＩ／Ｏ（入出力）を管理する。データサーバ２ａＡおよび２ｂＡは、可用性および堅甲性を維持するため、レコード（データ）操作の前にデータ操作ログを書き込み、データ操作ログからデータをリカバリする機構と、自分が持つレコード（データ）を他のデータサーバに複製する複製機構と、の両方またはいずれかを備えてもよい。
【００８０】
分散データ管理システム１Ａが持つ複数のレコードは、複数のデータサーバ（図３に示した例では、データサーバ２ａＡおよび２ｂＡ）に分散して配置され、各レコードの位置は、位置管理サーバ３により管理される。
【００８１】
位置管理サーバ３は、キーを基に、そのキーを含むレコード（データ）が管理されているデータサーバを検索するサーバである。実装法により違うが、一つの位置管理サーバにて構成される位置管理サーバ３が、全てのレコードの位置情報を管理している場合もあり、複数の位置管理サーバにて構成される位置管理サーバ３が、分散ハッシュテーブル(DHT)等を用い各レコードの位置情報を管理する場合もある。
【００８２】
トランザクションサーバ４および４１のそれぞれは、トランザクションサーバと異なるマシン内のアプリケーションが定義したトランザクションの実行、または、自己内のアプリケーションが定義したトランザクションの実行を管理するものである。トランザクションは、分散データ管理システム１Ａ内で一意なTxIDで区分される。
【００８３】
トランザクションを実行するために必要なデータ（レコード）、つまり、トランザクションの処理対象となるデータ（レコード）は、複数のデータサーバ２ａＡおよび２ｂＡのいずれかに格納されている。トランザクションサーバ４および４１のそれぞれは、例えば、2 Phase Commit(以下「2PC」と称する)または3 Phase Commit(以下「3PC」と称する)によって、分散トランザクションの調停が可能である。
【００８４】
トランザクションの実行に必要なデータの位置を検索するため、トランザクションサーバ４および４１のそれぞれは、位置管理サーバ３からデータの位置情報を読み込む。一度検索した位置情報の検索コストを軽減するために、トランザクションサーバ４および４１のそれぞれは、位置情報のキャッシュ機構を有していてもよい。
【００８５】
データサーバ２ａＡおよび２ｂＡと位置管理サーバ３とトランザクションサーバ４および４１は、ネットワークを通して接続されており、相互に、データ等の種々の情報の送受信が可能である。
【００８６】
また、分散データ管理システム１Ａは、分散データ管理システム１Ａの負荷を計測し、移動すべきデータ（移動対象データ）および移動すべきデータの移動位置等を決定する負荷分散機構（例えば、負荷分散サーバ）を有する。負荷分散機構としては、Amazon EC2の負荷分散機等が考えられるが、本発明の範囲ではないため、説明を省く。
【００８７】
図４は、分散データ管理システム１Ａでのデータ移動の概要を説明するためのブロック図である。また、図５、６、７は、それぞれ、データ移動時の移動元、移動先、位置管理サーバ３の処理の概要を説明するためのフローチャートである。以下、本実施形態を具体的に説明する前に図４〜７を利用してデータ移動の概要を説明する。
【００８８】
なお、以下では、データサーバ２ａＡからデータサーバ２ｂＡにデータG〜H（以下「データ[g, h]」と称する）が移動するとする。データ[g, h]を持っているデータサーバ２ａＡを「移動元」、データ[g, h]の移動先となるデータサーバ２ｂＡを「移動先」とする。なお、移動元はデータサーバ２ａＡに限らず、移動先はデータサーバ２ｂＡに限らない。
【００８９】
まず、負荷分散機構が、移動元のデータ[g, h]を移動先に移動させることを決定し、その決定を移動元（本実施形態では、移動元のデータ伝送装置２ａ２Ａ）に通知する。これを受け、移動元（本実施形態では、移動元のデータ伝送装置２ａ２Ａ）は、移動先にデータ[g, h]が移動することを伝える（ステップＳ５１）。例えば、移動元は、移動対象データのキーを移動先に伝える。
【００９０】
移動先が、移動元からデータ[g, h]の移動開始を受けたら（ステップＳ６１）、移動先のアクセス制御装置２ｂ３Ａは、データ[g, h]に対するトランザクションの参照／更新要求を拒否せず待たせ（ステップＳ６２）、また、移動先のデータ伝送置２ｂ２Ａは、データ移動の初期化処理を行い（ステップＳ６３）、続いて、移動元に応答を返す（ステップＳ６４）。なお、ステップＳ６３のデータ移動の初期化処理については後述する。
【００９１】
移動元が、移動先からの応答を受け取ったら（ステップＳ５２）、例えば移動元のデータ伝送装置２ａ２Ａは、データ移動の初期化処理を行い（ステップＳ５３）、続いて、位置管理サーバ３が管理しているデータ[g, h]の位置情報が示す位置を移動元から移動先に更新する旨の更新要求を、位置管理サーバ３に送信する（ステップＳ５４）。なお、ステップＳ５３のデータ移動の初期化処理については後述する。
【００９２】
位置管理サーバ３は、データ[g, h]の位置情報が示す位置を移動元から移動先に更新する旨の更新要求を受信すると（ステップＳ７１）、データ[g, h]の位置情報が示す位置を移動元から移動先に更新する（ステップＳ７２）。位置管理サーバ３は、データ[g, h]の位置情報が示す位置を移動元から移動先に更新する処理を完了すると、データ[g, h]の移動完了通知を、更新要求の送信元つまり移動元に通知する（ステップＳ７３）
移動元がデータ[g, h]の移動完了通知を受信すると、移動元のデータ伝送装置２ａ２Ａは、位置管理サーバ３の位置情報の更新が成功したと判断し（ステップＳ５５）、移動先へのデータ[g, h]の移動を開始する（ステップＳ５６）。このため、移動先のデータ伝送装置２ｂ２Ａも、移動先へのデータ[g, h]の移動を開始する（ステップＳ６５）。その後、データ移動が完了すると、データ移動が終了する（ステップＳ５７、Ｓ６６）。
【００９３】
なお、ステップＳ５６およびＳ６５について補足すると、データ移動が開始したら移動元から移動先に移動開始時のデータ[g, h]のスナップショット（データ[g, h]のコピー）が伝送される。本実施形態では、スナップショット伝送の開始から終了まで、データ[g, h]に対しての参照／更新が可能になる。
【００９４】
データ移動中に実行されるトランザクションを、移動元からのデータ移動が開始した時点を基準として、データ移動開始時以前からデータ移動開始時以降の間にかけて移動元のデータ[g, h]を更新する「既存トランザクション」と、データ移動開始時以後にデータ[g, h]を初めて更新する「新規トランザクション」に区別できる（図４に示したTx1およびTx2とTx3参照)。
【００９５】
本実施形態では、新規トランザクションに起因するＩ／Ｏ（データに対する処理）と既存トランザクションに起因するＩ／Ｏとは、処理対象データについてロックを獲得した後に、その処理対象データの更新を行う。
【００９６】
本実施形態では、新規トランザクションに起因するＩ／Ｏと既存トランザクションに起因するＩ／Ｏとのうち、データ移動開始時以降にデータ[g, h]に対して新たにロックを獲得するＩ／Ｏを移動先で行い、移動元のデータのロック情報を移動先とで同期し、データ移動中に移動元のデータの更新差分をアドホックで移動先に伝送することにより、トランザクション無停止のデータ移動が可能となる。
【００９７】
以下に、移動先と移動元のデータの移動に関して詳細に説明する。
【００９８】
まず、トランザクションの構造について説明する。データベース分野のトランザクションは、データに対する一連のＩ／Ｏ操作に対してACIDを保証する。例えば、Aさんの口座から50を引いてBさんの口座に50を振り込む場合を疑似コードで簡単に表すと、式１のようになる。
＜式１＞
Begin transaction;
A = A-50;
B = B+50;
Commit transaction;
トランザクションは、式１内のBegin transactionとcommit transactionの間のI/O（A= A-50, B = B+50）がすべて実行されるかされないかのどちらかになる原子性（Atomicity）等を保証する。以下では、トランザクションのなかのI/O一行をステートメント（命令文）とする。
【００９９】
図８は、移動元から移動先へのデータ移動時、移動元と移動先が、トランザクションのステートメントI/O可否と実行位置およびデータの移動を制御する動作を説明するための図である。なお、図８において、図２に示したものと同一構成のものには同一符号を付してある。
【０１００】
図８に示すように、データ移動開始前に移動元でロック獲得またはロック待ちになっているステートメントは、移動元で処理される。また、移動対象データを処理対象データとし、かつ、データ移動開始後に処理対象データに対するロックを要求するステートメント（例えば、既存トランザクション内のステートメントのうち未実行のステートメント、および、新規トランザクション内のステートメント）は、アクセス制御装置によって、移動先にリダイレクトされ移動先で実行される。また、移動先と移動元とでレコード（データ）のロック状態が同期される。
【０１０１】
図９は、データサーバ２ａＡおよび２ｂＡの処理を説明するための図である。なお、図９において、図２に示したものと同一構成のものには同一符号を付してある。
【０１０２】
上述したように、データサーバ２ａＡおよび２ｂＡは、それぞれ、データ移動時のトランザクションを管理するアクセス制御装置２ａ３Ａまたは２ｂ３Ａと、データ伝送を管理するデータ伝送装置２ａ２Ａまたは２ｂ２Ａを持つ。
【０１０３】
アクセス制御装置２ａ３Ａおよび２ｂ３Ａは、移動元と移動先のレコード状態を基に、ステートメントを、自データサーバ内のデータ（レコード）にアクセスさせるか、移動先にリダイレクトするかを管理する。
【０１０４】
データ伝送装置２ａ２Ａおよび２ｂ２Ａは、レコードの状態を基に、データ（レコード）を移動先に伝送するタイミングを決定し、例えば、移動先のトランザクションの処理に必要になった場合など移動が必要な場合、データ（レコード）を移動先に伝送する。データ伝送装置２ａ２Ａおよび２ｂ２Ａは、データの移動手段として、既存技術であるネットワークを通したデータ伝送技術を利用する。
【０１０５】
図１０は、ローカル記憶装置２ａ１とローカル記憶装置２ｂ１にそれぞれ格納された移動対象レコード（移動対象データ）の集合を示した図である。
【０１０６】
アクセス制御装置２ａ３Ａおよび２ｂ３Ａとデータ伝送装置２ａ２Ａおよび２ｂ２Ａがレコードの状態を基に動作しているため、本実施形態では、レコード集合のレコードごとに、移動元では、データ伝送済フラグ１０ａ１、ロック情報通知済フラグ１０ａ２および移動元ロックフラグ１０ａ３が、データ伝送装置２ａ２Ａによって設置され、移動先では、レコードごとに、データ取得済フラグ１０ｂ１、ロック情報取得済フラグ１０ｂ２および移動元ロックフラグ１０ｂ３が、データ伝送装置２ｂ２Ａによって設けられる。なお、移動先と移動元は、図５、６でのデータ移動の初期化処理（ステップＳ５３、Ｓ６３）で、各フラグを設置する。
【０１０７】
移動先のフラグの初期値は、３種類のフラグ全てfalse（非セット）である。移動元のフラグの初期値は、データ伝送済フラグ１０ａ１とロック情報通知済フラグ１０ａ２はfalseで、移動元ロックフラグ１０ａ３は、データ移動開始時に、そのフラグが設けられたレコードがトランザクションによりロックされていればtrue（セット）、ロックされてなければfalseに設定される。
【０１０８】
図１１は、移動元のデータ移動処理の順序を説明するためのフローチャートである。
【０１０９】
ここで、図１１内の台形と逆向き台形について説明する。図１１で「データ移動（移動元）開始」後の台形で処理が３つに分岐されるが、これらは並列に処理され（逐次処理であってもよい）、これら３つの処理がすべて終了したら、逆向き台形以降の処理に進む。３つの処理中、２つが終了していて残り1つが未処理・処理中の場合は、その処理が終了するまでは、逆向き台形以降の処理には進まない。
【０１１０】
図１１を参照すると、データの移動が始まると、移動元のデータ伝送装置２ａ２Ａは、データ伝送を始める。データ伝送では、移動元へのアクセス処理が実行される（ステップＳ１１１）。また、データ伝送は、順次送信（ステップＳ１１２）と、アドホック送信（ステップＳ１１３）に区別される。
【０１１１】
図１２は、順次送信（ステップＳ１１２）の具体的な処理フローを説明するためのフローチャートである。以下、図１２を参照して、順次送信の具体的な処理を説明する。
【０１１２】
順次送信では、移動元のデータ伝送装置２ａ２Ａは、ローカル記憶装置２ａ１内のレコード集合の最初のレコード（例えば、図１０（ａ）に示したレコードのうち最上位のレコード）から順に送信対象レコードとしていく（ステップＳ１２１、Ｓ１２２）。
【０１１３】
続いて、送信対象レコードが、移動元に伝送されておらず（ステップＳ１２３）、かつ、移動元でロック（またはロック待ち）されていなければ（ステップＳ１２４）、移動元のデータ伝送装置２ａ２Ａは、送信対象レコードを移動先に送信する（ステップＳ１２５）。
【０１１４】
移動元のデータ伝送装置２ａ２Ａは、送信対象レコードを移動先に送信すると、送信対象レコードのデータ伝送済フラグ１０ａ１およびロック情報通知済フラグ１０ａ２をtrueに設定し（ステップＳ１２６）、次のレコードがあれば（ステップＳ１２７）処理をステップＳ１２２に戻し、次のレコードが無ければ（ステップＳ１２７）順次送信を終了する。
【０１１５】
一方、送信対象レコードが移動元でロック（またはロック待ち）になっていると（ステップＳ１２４）、移動元のデータ伝送装置２ａ２Ａは、送信対象レコードが移動元でロック（またはロック待ち）になっている旨のロック情報を移動先に通知し（ステップＳ１２８）、その後、送信対象レコードのロック情報通知済フラグ１０ａ２をtrueに設定し（ステップＳ１２９）、処理をステップＳ１２２に戻す。
【０１１６】
移動元のデータ伝送装置２ａ２Ａは、送信対象レコードがロックされていたために順次送信を用いて送信対象レコードを送信できなかった場合や、移動先で、順次送信でまだ伝送されていないレコードが必要になった場合、アドホック送信（図１１のステップＳ１１３）を用いて、移動先へレコードを伝送する。
【０１１７】
移動先で、順次送信でまだ伝送されていないレコードが必要になると、移動先のアクセス制御装置２ｂ３Ａは、必要になったレコードのアドホック通信を要求するアドホック通信要求（レコードの伝送要求）を移動元に送信する処理を、データ伝送装置２ｂ２Ａに実行させる。
【０１１８】
アドホック送信での伝送の開始は、移動元のデータ伝送装置２ｂ２Ａが、移動先からのアドホック通信要求を受信したことを契機に、または、ロックがかかっていた移動元のレコードのロックが解除されたことを契機に実行される。
【０１１９】
図１３は、アドホック送信（ステップＳ１１３）の具体的な処理フローを説明するためのフローチャートである。
【０１２０】
アドホック送信の処理の内容は、順次送信のレコード送信と同じだが（図１３のステップＳ１３１〜Ｓ１３６参照）、全レコードを送信対象にしているのではなく、指定された一つのレコードを送信対象にするところが順次送信との差である。アドホック通信は、必要に応じて、移動元アクセス処理（ステップＳ１４１０）、移動先アクセス処理（ステップＳ１７６）で開始される。
【０１２１】
トランザクションを停止させずデータ（レコード）を移動させるために、アクセス制御装置２ａ３Ａおよび２ｂ３Ａは、データの移動が開始してから移動対象のレコード集合を処理対象としてI/O要求をするトランザクション内のステートメントに従ったレコードアクセスを管理する。
【０１２２】
図１４は、移動元アクセス処理の具体的な処理の流れを示したフローチャートである。なお、図１４内の台形と逆向き台形に関する処理は、図１１内の台形と逆向き台形に関する処理と同様である。
【０１２３】
図１４を参照すると、移動元のアクセス制御装置２ａ３Ａは、基本的に、データ移動を開始してから移動対象のレコード集合に対してロックを要求してきたステートメントを、移動先にリダイレクトする（ステップＳ１４１〜Ｓ１４５）。
【０１２４】
また、移動元のアクセス制御装置２ａ３Ａは、データ移動開始以前に獲得されたレコードのロックに関しては、移動元で、そのロックを待つステートメントが全てロックを取得して、ステートメントに従ってレコードが処理されて（ステップＳ１４６）レコードのロックが解除されるのを待ち（ステップＳ１４７〜Ｓ１４９）、レコードのロックが解除されたら、移動元のアクセス制御装置２ａ３Ａは、そのレコードについてのアドホック伝送要求をデータ伝送装置２ａ２Ａに出力し（ステップＳ１４１０）、データ伝送装置２ａ２Ａにアドホック送信を行わせ、そのレコードを移動先に伝送する。
【０１２５】
図１５は、移動先のデータ移動処理の順序を示したフローチャートである。なお、図１５の台形と逆向き台形に関する処理は、図１１内の台形と逆向き台形に関する処理と同様である。
【０１２６】
図１５を参照すると、データの移動が始まると、移動先のデータ伝送装置２ｂ２Ａは、移動元からデータ受信を始める（ステップＳ１５１）。データ受信は、レコード単位の受信となる。移動元のアドホック送信、順次送信ともに、データの最少送信単位は、レコード単位になるためである。
【０１２７】
図１６は、移動先のデータ受信処理を示したフローチャートである。この処理は、通信形態（順次送信、アドホック送信）に関係なく同じである。
【０１２８】
移動元からの通知は、レコードを構成する情報（キーとバリュー）、または、あるレコードが移動元でロックされている旨の通知（ロック情報）となる。
【０１２９】
移動元からの通知が、レコードを構成する情報（キーとバリュー）である場合、移動先のデータ伝送装置２ｂ２Ａは、レコードを構成する情報（キーとバリュー）を、そのレコードのためにローカル記憶装置２ｂ１内に設けた空間に格納する（ステップＳ１６１〜Ｓ１６３）。なお、ローカル記憶装置２ｂ１内の移動対象レコード用の空間は、例えば、データ移動を始める前に移動元から移動対象レコードのキーが通知された際に、移動先のデータ伝送装置２ｂ２Ａによって設けられる。
【０１３０】
移動先のデータ伝送装置２ｂ２Ａは、受信したレコードを格納すると、そのレコードのデータ取得済フラグ１０ｂ１およびロック情報取得済フラグ１０ｂ２をtrueにセットし（ステップＳ１６４〜Ｓ１６５）、そのレコードの移動元ロックフラグ１０ｂ３をfalseにセットする（ステップＳ１６６）。
【０１３１】
移動元からの通知が、移動元の、あるレコードのロックを表すロック情報である場合、移動先のデータ伝送装置２ｂ２Ａは、そのレコードのロック情報取得済フラグ１０ｂ２および移動元ロックフラグ１０ｂ３をtrueにセットし（ステップＳ１６７、Ｓ１６８）、そのレコードが移動元でロックされていることを記録する。
【０１３２】
なお、データ受信は、データ取得済みフラグの全てがtrueになるまで続けられる（図１５のステップＳ１５２）。
【０１３３】
図１７は、図１５に示した移動先アクセス処理（ステップＳ１５３）を説明するためのフローチャートである。なお、図１７内の台形に関する処理は、図１１内の台形に関する処理と同様である。
【０１３４】
移動先のデータアクセスでは、移動対象レコード（データ）集合が全て伝送されるまでの間、移動対象レコード集合内のレコードのうち、ステートメントにてアクセス要求されたレコードが、移動先のローカル記憶装置２ｂ１になければ、移動先のアクセス制御装置２ｂ３Ａは、移動先のデータ伝送装置２ｂ２Ａを用いて、アドホック伝送で、そのレコードを移動元から取り寄せる（ステップＳ１７１〜Ｓ１７６）。
【０１３５】
取り寄せようとしたレコードが移動元でロックされておらず、そのレコードを取り寄せられた場合、移動先のアクセス制御装置２ｂ３Ａは、取り寄せたレコードに対して、そのレコードを処理対象とするステートメントに従った処理を行う（ステップＳ１７７〜Ｓ１７８）。
【０１３６】
一方、取り寄せようとしたレコードが移動元でロックされている場合、移動先のアクセス制御装置２ｂ３Ａは、そのレコードを処理対象とするステートメントに従ったI/Oを移動元のロックが解除されるまで待機させる(ステップＳ１７９)。
【０１３７】
また、移動先のアクセス制御装置２ｂ３Ａは、ローカル記憶装置２ｂ１に格納されたレコードごとに順番に移動先のロックルールに従ってステートメントに従ったデータアクセスを許可していく（ステップＳ１７１０〜Ｓ１７１４）。
【０１３８】
次に、具体例を用いてデータ移動を説明する。
【０１３９】
分散データ管理システム１Ａが、二つのデータサーバ２ａＡおよび２ｂＡと、二つのトランザクションサーバ４および４１と、一つの位置管理サーバ３とで構成されているとする。
【０１４０】
また、＜式２＞で示した３つのトランザクションがあるとする。
【０１４１】
【数１】
2011257846.tif 000003
【０１４２】
なお、トランザクションTx１は、データAから50引いてデータBに50足すトランザクションであり、トランザクションTx２は、データAから50引いてデータKに50足すトランザクションであり、トランザクションTx３は、データFから50引いてデータKに50足すトランザクションである。
【０１４３】
移動するデータは、データA〜Zまでとし、データサーバ２ａＡからデータサーバ２ｂＡへ移動するとする。
【０１４４】
まず、トランザックションサーバ４からのトランザクションTx１と、トランザクションサーバ４１からのトランザクションTx２とが、同時に実行されるとする。
【０１４５】
トランザクションTx１およびTx２は、まず、データAの内容を更新（50引く）するため、データサーバ２ａＡにあるデータAについてのロックの取得をこころみる。ここでは、トランザクションTx２がトランザクションTx１よりわずかに早く、データAのロックを獲得したとする。
【０１４６】
トランザクションTx１は、トランザクションTx２がとったデータAのロックが解放されるのをデータサーバ２ａＡで待つ。また、トランザクションTx２は、データAの更新に成功し、データKを更新しようとしてデータKのロックを要求し取得したとする。
【０１４７】
ここで、データの移動が開始されるとする。
【０１４８】
データサーバ２ａＡは、位置管理サーバ３が管理している、データA〜Zの位置情報が示す格納位置を、データサーバ２ａＡからデータサーバ２ｂＡへ更新する。そのあと、データサーバ２ａＡは、データA〜Zまで、個別に順番にデータサーバ２ｂＡに伝送する順次送信をこころみる。
【０１４９】
なお、順次送信の開始時、データAは最初に伝送対象となるデータであるため、データAのデータ伝送済フラグ１０ａ１はfalseである。ただし、トランザクションTx２がデータAをロックし、トランザクションTx１がそのロックの開放を待っているため、データAの移動元ロックフラグ１０ａ３はtrueである。
【０１５０】
従って、データサーバ２ａＡは、データAを伝送せずに、データAがロックされていることを示すロック情報をデータサーバ２ｂＡに伝えた後、データAのロック情報通知済フラグ１０ａ２をtrueにし、その後、データBの伝送を試みる。
【０１５１】
データBはロックされておらず、かつ伝送されていないため、データBのデータ伝送済フラグ１０ａ１および移動元ロックフラグ１０ａ３は共にfalseである。従って、データサーバ２ａＡは、データBをデータサーバ２ｂＡに伝送し、その後、データBのデータ伝送済フラグ１０ａ１およびロック情報通知済フラグ１０ａ２をtrueにする。
【０１５２】
データサーバ２ａＡは、順次送信処理において、このような操作を、データZを伝送するまで続ける。
【０１５３】
データサーバ２ａＡがデータBまで伝送したあと、トランザクションサーバ４１からトランザクションTx３が開始されたとする。
【０１５４】
トランザクションTx３はデータFを更新するため、トランザクションサーバ４１は、データFの位置を位置管理サーバ３に問い合わせる。位置管理サーバ３では、データFの位置はデータサーバ２ｂＡに更新されているので、トランザクションTx３は、データサーバ２ｂＡに送信され、データサーバ２ｂＡでデータFを更新しようとするが、データFがまだデータサーバ２ｂＡに伝送されておらず、データFのロック情報も伝送されていない。このため、データサーバ２ｂＡでは、データFのデータ取得済１０ｂ１フラグはfalseであり、データサーバ２でのデータFのロック情報取得済１０ｂ２フラグはfalseである。
【０１５５】
データFが伝送されず、また、データFにロックがかかっているかわからないため、データサーバ２ｂＡは、データサーバ２ａＡに対して、データFについてのアドホック通信を要求する。
【０１５６】
データサーバ２ａＡは、データFについてのアドホック通信要求を受信したら、データFのデータ伝送済フラグ１０ａ１および移動元ロックフラグ１０ａ３をチェックし、共にfalseだったら、データFを、アドホック送信で伝送する。
【０１５７】
一方、データFの移動元ロックフラグ１０ａ３がtrueだったら、データFがロックされていることを意味するため、データサーバ２ａＡは、データFがロックされていることを示すロック情報をデータサーバ２ｂＡ（トランザクション３）に伝える。
【０１５８】
ここでは、データFはロックされていないため、データサーバ２ａＡは、データFをデータサーバ２ｂＡに伝送する。
【０１５９】
トランザクションTx３は、データFの伝送時間だけ待った後、直ちに、データFを更新することができ、その後、データKを更新するためにデータKにロックを要求する。
【０１６０】
データKも伝送されてきてないため、データサーバ２ｂＡは、データFと同じようにデータKについてアドホック通信を要求する。
【０１６１】
しかし、データKは、トランザックションTx２によってすでにロックされているため、データKの移動元ロックフラグ１０ａ３はtrueである。このため、データサーバ２ａＡは、データKがロックされていることを示すロック情報をデータサーバ２ｂＡに伝える。データサーバ２ｂＡは、このロック情報を受信すると、データKの移動元ロックフラグ１０ｂ３をtrueにセットし、データKの移動元ロックフラグ１０ｂ３の状態を、データKの移動元ロックフラグ１０ａ３の状態に同期させる。
【０１６２】
データKの移動元ロックフラグ１０ｂ３がtrueあるため、トランザクションTx３は、データKに対するロックを取得することができず、移動元（データサーバ１）でのロックの開放を待つ。
【０１６３】
その後、データサーバ２ａＡでトランザクションTx２がデータKの更新に成功し、コミットするとする。これにより、データAおよびデータKのロックが解放される。
【０１６４】
データKの場合、移動元でロックを待つトランザクションがいないため、データサーバ２ａＡは、データKをデータサーバ２ｂＡへアドホック送信する。
【０１６５】
移動先のトランザクションTx３は、データKが伝送されてデータKのデータ取得済フラグ１０ｂ１がtrueになると、データKをロックしデータKを更新したあと、トランザクションをコミットする。
【０１６６】
データAは移動元でトランザクションTx１がロックを待っているため、アドホック伝送は直ちにおこなわれず、トランザクションTx１がデータAのロックを取得する。トランザクションTx１はデータAの更新がおわったら、データBを更新するためデータBのロックを取得しようとする。
【０１６７】
しかし、データBのロックを取得しようとする段階で既にデータの移動が始まっているため、トランザクションTx１のうち、データBを更新するためのステートメントは、データサーバ２ａＡによって、データサーバ２ｂＡにリダイレクトされ、このステートメントは、移動先（データサーバ２ｂＡ）でデータBのロックを要求する。
【０１６８】
トランザクションTx１がデータAおよびBの更新を終了しコミットすると、データサーバ２ａＡは、データAをデータKと同じ要領でデータサーバ２ｂＡへ移動する。具体的には、データサーバ２ａＡは、トランザクションTx１がデータAおよびBの更新を終了しコミットすると、データAをデータサーバ２ｂＡへアドホック送信する。
【０１６９】
以上のように、トランザクションは、ロック待ちなどの整合性を保証するためと、必要なデータの伝送を待つわずかな時間のみ待つことになる。また、移動元で順次伝送が終わり、移動元のデータをロックしていたトランザクションが全て終了し、ロックが解除された移動対象データが全て伝送された段階で移動が完了する。
【０１７０】
本実施形態によれば、第１実施形態と同様の効果を奏する。つまり、データ移動が開始してから到着したトランザクション(新規トランザクション)と、データ移動の開始前から存在していたトランザクション(既存トランザクション)とを、同時に実行可能となる。また、移動元で新規トランザクションが実行されないため、移動元で実行されていた既存のトランザクションが終了すると移動元で実行される既存トランザクションがなくなる。
【０１７１】
また、本実施形態では、アクセス制御装置２ａＡは、トランザクション内のステートメントを個別に順番に実行し、また、第１状況で実行中のトランザクション内のステートメントのうち実行中のステートメントの後に実行される実行予定ステートメント（更新要求）の処理対象データが、移動対象のデータである場合に、その実行予定ステートメントを、移動先にリダイレクトする。
【０１７２】
このため、移動元で実行される既存トランザクションの減少速度が速くなり、移動時間短縮効果も望める。
【０１７３】
また、本実施形態では、アクセス制御装置２ａ３Ａおよび２ｂ３Ａは、ステートメントを実行する段階になると、そのステートメントの処理対象データをロックしてその処理対象データに対する他のステートメントに従った更新を禁止し、その後、その処理対象データに対して、そのステートメントを実行する。
【０１７４】
そして、データ伝送装置２ａ２Ａおよび２ｂ２Ａは、アクセス制御装置にてロックされたデータが移動対象のデータである場合に、そのデータがロックされたことを示すロック情報を、移動先に送信する。
【０１７５】
そして、アクセス制御装置２ａ３Ａおよび２ｂ３Ａは、ロック情報を受信すると、そのロック情報にてロックされたと示されたデータが、新たなトランザクション内の特定ステートメントの処理対象のデータである場合、そのデータに対する特定ステートメントに従った処理を保留する。
【０１７６】
この場合、移動元と移動先でロックに関する情報を共有（同期）することが可能になり、データ整合性を維持することが可能になる。
【０１７７】
また、本実施形態では、データ伝送装置２ａ２Ａおよび２ｂ２Ａは、自データサーバがロック情報を受信すると、ロック情報にてロックされたことが示されたデータについて移動元ロックフラグをセットする。アクセス制御装置２ａ３Ａおよび２ｂ３Ａは、移動元ロックフラグがセットされているデータが、新たなトランザクション内の特定ステートメントの処理対象のデータである場合、そのデータに対する特定ステートメントに従った処理を保留する。
【０１７８】
この場合、移動元ロックフラグを用いて、移動元と移動先でロックに関する情報を共有（同期）することが可能になる。
【０１７９】
また、本実施形態では、データ伝送装置２ａ２Ａおよび２ｂ２Ａは、ロックされたデータが、移動対象のデータであり、かつ、そのロックされたデータがそのデータを処理対象とするステートメントに従って処理されると、そのデータのロックを解除してそのデータを移動先に送信し、また、第２状況で、ロックが解除されたデータを受信する。
【０１８０】
そして、アクセス制御装置２ａ３Ａおよび２ｂ３Ａは、データ伝送装置が受信しロックが解除されたデータが、特定ステートメントに従った処理が保留されていたデータであると、特定ステートメントに従った処理の保留を解除し、特定ステートメントを実行する。
【０１８１】
この場合、移動元のデータにロックが存在したら、そのデータを、移動元でのロックが解除されるまで待ってから、移動先で処理することが可能になる。
【０１８２】
また、本実施形態では、レコード集合のレコード毎に、移動元では、データ伝送済フラグ１０ａ１、ロック情報通知済フラグ１０ａ２および移動元ロックフラグ１０ａ３が、データ伝送装置２ａ２Ａによって設置され、移動先では、レコード毎に、データ取得済フラグ１０ｂ１、ロック情報取得済フラグ１０ｂ２および移動元ロックフラグ１０ｂ３が、データ伝送装置２ｂ２Ａによって設けられる。
【０１８３】
移動先のフラグの初期値は、３種類のフラグ全てfalse（非セット）である。移動元のフラグの初期値は、データ伝送済フラグ１０ａ１とロック情報通知済フラグ１０ａ２はfalseで、移動元ロックフラグ１０ａ３は、データ移動開始時に、そのフラグが設けられたレコードがトランザクションによりロックされていればtrue（セット）、ロックされてなければfalseに設定される。
【０１８４】
データ取得済フラグ１０ｂ１およびデータ伝送済フラグ１０ａ１は、移動元から移動先へと該当データ（レコード）の伝送が完了したら、trueにセットされる。
【０１８５】
ロック情報取得済フラグ１０ｂ２は、移動先が移動元から、そのフラグが設けられたレコードについてのロック情報を取得したら、trueにセットされる。
【０１８６】
移動元ロックフラグ１０ａ３および１０ｂ３は、そのフラグが設けられたレコードについて移動元でロックされている場合、trueにセットされる。
【０１８７】
ロック情報通知済フラグ１０ａ２は、移動元から移動先へ、そのフラグが設けられたレコードについてのロック情報を通知したら、trueにセットされる。
【０１８８】
移動先は、トランザクションがレコード（データ）を参照または更新しようとすると、レコードのデータ取得済フラグ１０ｂ１およびロック情報取得済フラグ１０ｂ２および移動元ロックフラグ１０ｂ３を参照し、必要ならレコード（データ）とロック情報を取得する。この結果、移動先には、移動元にロックが存在したら移動元のロックが解除されるまでトランザクションの実行を待つ機構が備えられる。
【０１８９】
移動元は、データ移動開始後のトランザクションの更新を、データ移動先にリダイレクトさせる機能と、レコード（データ）のデータ伝送済フラグ１０ａ１およびロック情報通知済フラグ１０ａ２を参照し、必要ならロック取得／解除情報を移動先に伝える。
【０１９０】
本実施形態では、データが伝送中でも移動先でトランザクションを受け入れ、トランザクションの処理対象となるデータが未だ伝送されてない場合、移動先が、データ取得済フラグ１０ｂ１およびロック情報取得済フラグ１０ｂ２および移動元ロックフラグ１０ｂ３を参照し、移動元でデータがロックされていないなら、移動先が、データをアドホックに持ってくる、ロックされているなら、移動先でトランザクションがロックを待つことができる。
【０１９１】
移動元では、データ伝送済フラグ１０ａ１およびロック情報通知済フラグ１０ａ２を利用し、データがロックされている場合、ロックされていることを移動先に伝え、ロックが解放されたらデータを移動先に伝送することにより、トランザクションは、ロック待ちなど整合性を保証するためと、必要なデータの伝送を待つわずかな時間のみ、処理を中断することが可能である。
【０１９２】
以上説明した各実施形態において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
【符号の説明】
【０１９３】
１、１Ａ  分散データ管理システム
２ａ、２ｂ、２ａＡ、２ｂＡ  データサーバ
２ａ１、２ｂ１  ローカル記憶装置
２ａ２、２ｂ２、２ａ２Ａ、２ｂ２Ａ  データ伝送装置
２ａ３、２ｂ３、２ａ３Ａ、２ｂ３Ａ  アクセス制御装置
３  位置管理サーバ
４  トランザクションサーバ
【図１】
2011257846.tif 000004
【図２】
2011257846.tif 000005
【図３】
2011257846.tif 000006
【図４】
2011257846.tif 000007
【図５】
2011257846.tif 000008
【図６】
2011257846.tif 000009
【図７】
2011257846.tif 000010
【図８】
2011257846.tif 000011
【図９】
2011257846.tif 000012
【図１０】
2011257846.tif 000013
【図１１】
2011257846.tif 000014
【図１２】
2011257846.tif 000015
【図１３】
2011257846.tif 000016
【図１４】
2011257846.tif 000017
【図１５】
2011257846.tif 000018
【図１６】
2011257846.tif 000019
【図１７】
2011257846.tif 000020