JP6079876B2 - 分散処理システム - Google Patents

分散処理システム Download PDF

Info

Publication number
JP6079876B2
JP6079876B2 JP2015519619A JP2015519619A JP6079876B2 JP 6079876 B2 JP6079876 B2 JP 6079876B2 JP 2015519619 A JP2015519619 A JP 2015519619A JP 2015519619 A JP2015519619 A JP 2015519619A JP 6079876 B2 JP6079876 B2 JP 6079876B2
Authority
JP
Japan
Prior art keywords
data
transaction
cache
identification information
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015519619A
Other languages
English (en)
Other versions
JPWO2014192213A1 (ja
Inventor
寛子 永島
寛子 永島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Application granted granted Critical
Publication of JP6079876B2 publication Critical patent/JP6079876B2/ja
Publication of JPWO2014192213A1 publication Critical patent/JPWO2014192213A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、分散処理システム、サーバ装置、トランザクション実行方法、およびプログラムに関する。
近年、携帯やインターネットが普及するにつれて、扱うデータ量が増え、大量データの処理の高速化が求められている。その中で、大量データを保管するためのシステムとして、キーバリューストア(KVS)の需要が高まっている。キーバリューストアでは、データ(値:value)に対して、対応する一意の標識(key)を設定し、それらをペアで保存する。キーとバリューとをペアにしたデータを、以下、KVデータと呼ぶ。特に、複数のサーバや記憶装置などに分散してKVデータを保存できる機能を持ったものは、分散KVSと呼ばれる。分散KVSはスケーラビリティとスループット性を重視しており、データの一貫性が必要なシステムやトランザクション処理を要するシステムには不向きであった。しかし、より大量のデータの分析やトランザクション処理の必要性から、分散KVSにおいてもデータの一貫性を保持しつつ、大量データの高速処理を行うことが求められるようになっている。
データの処理性能を向上させるための技術として、キャッシュの利用と、トランザクションの同時実行制御方法とが知られている。キャッシュの利用とは、使用頻度の高いデータを高速な記憶装置に蓄えておくことにより、いちいち低速な永続記憶装置から読み出す無駄を省いて高速化する技術である。一方、トランザクションの同時実行制御方法とは、データの一貫性を保持しつつ、同じ情報を更新する複数のトランザクションを並行して実行するための技術である。
トランザクションの同時実行制御方法には、悲観的排他に基づく方法と楽観的排他に基づく方法とが知られている。悲観的排他に基づく同時実行制御方法は、或るトランザクションの実行に先だって当該トランザクションで参照または更新する全てのデータを予め排他(ロック)することにより、データの一貫性を確保する。しかし、悲観的排他に基づく同時実行制御では、排他を取得した処理を実行するサーバの当該処理が終了するまで、同じデータを使用する他のサーバの処理を行うことができないため、スケーラビリティに欠ける。そのため、スケーラビリティを重視する分散キーバリューストアでは、楽観的排他に基づく同時実行制御方法が用いられる(例えば特許文献1参照)。
上記のキャッシュの利用と楽観的排他に基づくトランザクションの同時実行制御とは、それぞれ単独で用いられるだけでなく、両者を組み合わせた分散処理システムが提案されている(例えば特許文献2参照)。
図22は、楽観的排他に基づく同時実行制御とキャッシュの利用とを組み合わせた本発明に関連する分散処理システム1100のブロック図である。図22において、永続記憶装置1300はKVデータ1320を有するデータ1310を記憶する。KVデータ1320には、当該KVデータ1320が更新される毎にインクリメントされるバージョン情報1330が付加されている。各々のサーバ1200のトランザクション実行部1220は、クライアント装置1100から受信したトランザクションを内蔵のキャッシュ1210を利用して実行する。受信したトランザクションが、例えばKVデータ1320のバリューの値を更新する処理である場合、各サーバのトランザクション実行部1220は、キャッシュ1210上でKVデータ1320のバリューの値を更新する。このときトランザクション実行部1220は、キャッシュ1210上にKVデータ1320が存在しなければ、永続記憶装置1300からKVデータ1320を有するデータ1310をキャッシュ1210上に取得する処理を行い、キャッシュ1210上にKVデータ1320が既に存在する場合には上記取得処理は省略する。その後、トランザクション実行部1220は、キャッシュ1210上で更新したKVデータ1320をCAS(Compare and Swap)操作により永続記憶装置1300に書き戻す。
具体的には、トランザクション実行部1220は、KVデータ1320のバージョン情報1330が取得時と書き戻し時とで同じかどうかを判定し(CAS操作のCompare処理)、一致する場合にはコミット成功として、更新後のKVデータ1320にインクリメントしたバージョン情報1330を付加して永続記憶装置1300に書き込む(CAS操作のSwap処理)。一方、バージョン情報が一致しなかった場合は、自サーバがKVデータ1320を永続記憶装置1300からキャッシュ1210に取得した後、書き込むまでの間に他のサーバが当該KVデータ1320を更新しているため、コミット失敗とする。コミット失敗とした場合、トランザクション実行部1220は、永続記憶装置1300からKVデータ1320をあらためてキャッシュ1210に取得し、当該トランザクションを再実行する。
特開2013−45356号公報 特開2006−235736号公報
上述したように、楽観的排他に基づく同時実行制御とキャッシュの利用とを組み合わせた本発明に関連する分散処理システムでは、トランザクションで利用するキャッシュ上のデータが最新でない場合、トランザクションのコミットに失敗し、当該トランザクションは再実行される。そのため、分散処理システムの処理性能が低下する。それを回避するために、トランザクション実行前にキャッシュを毎回更新するようにすれば、楽観的排他に成功する確率が高まってトランザクションを再実行する頻度が小さくなるが、反対にキャッシュ更新に係るコストが増大し、そもそもキャッシュを持つ意味がなくなる。一方、トランザクション実行前にキャッシュを更新しなければ、キャッシュ更新に係るコストは削減できるが、前述したように楽観的排他に失敗する確率が高まってトランザクションの再実行に係るコストが増大する。即ち、キャッシュ更新に係るコストとトランザクションの再実行に係るコストとを共に削減することは困難である。
各サーバのキャッシュに最新データを保持する仕組みとして、サーバ間で最新のキャッシュデータを交換する方法がある。しかし、この方法では、サーバ同士をネットワークでつなぐ必要があり、サーバ同士の通信(データや情報交換)を不要とした運用が行えない。またサーバ同士が独立していないと、処理を並列に実行できず、同時実行可能トランザクション数が減るため、処理性能が劣化するという点や、処理するデータ量が増えたとき、サーバのみを増設することが困難になるという点が問題になる。従って、サーバ間で最新のキャッシュデータを交換する方法は、スケーラビリティを重視する分散キーバリューストアには適用が困難である。そのため、各サーバは独立したまま、楽観的排他制御によりデータの一貫性を保ちつつ、サーバのキャッシュを有効利用できる仕組みが望まれる。
本発明の目的は、上述した課題、すなわち、楽観的排他に基づく同時実行制御とキャッシュの利用とを組み合わせた分散処理システムでは、スケーラビリティを確保しつつ、キャッシュ更新に係るコストとトランザクションの再実行に係るコストとを共に削減することは困難である、という課題を解決する分散処理システムを提供することにある。
本発明の第1の観点に係る分散処理システムは、
トランザクションを送信するクライアント装置と、
データを記憶する永続記憶装置と、
楽観的排他に基づいて、上記クライアント装置から受信した上記トランザクションの実行を制御する複数のサーバ装置とを有し、
各々の上記サーバ装置は、
上記永続記憶装置から取得した上記データを保持するキャッシュと、
前回実行した上記トランザクションで利用した上記データの識別情報を保持する識別情報保持部と、
上記クライアント装置から受信した上記トランザクションの実行に必要な上記データの識別情報と上記識別情報保持部に保持された上記データの識別情報とを比較し、上記比較の結果が不一致のときは上記永続記憶装置に記憶された上記データを取得して上記キャッシュを更新した後に上記キャッシュ上の上記データを利用して上記トランザクションを実行し、上記比較の結果が一致のときは上記永続記憶装置のデータによる上記キャッシュの更新を省略して上記キャッシュ上の上記データを利用して上記トランザクションを実行し、その後、上記楽観的排他に成功したか、失敗したかを判定し、失敗したときは上記キャッシュ上の上記データを上記永続記憶装置に記憶された上記データによって更新した後に上記トランザクションを再実行するトランザクション実行部と
を有する。
また本発明の第2の観点に係るサーバ装置は、
トランザクションを送信するクライアント装置とデータを記憶する永続記憶装置とに接続され、楽観的排他に基づいて、上記クライアント装置から受信した上記トランザクションの実行を制御するサーバ装置であって、
上記永続記憶装置から取得した上記データを保持するキャッシュと、
前回実行した上記トランザクションで利用した上記データの識別情報を保持する識別情報保持部と、
上記クライアント装置から受信した上記トランザクションの実行に必要な上記データの識別情報と上記識別情報保持部に保持された上記データの識別情報とを比較し、上記比較の結果が不一致のときは上記永続記憶装置に記憶された上記データを取得して上記キャッシュを更新した後に上記キャッシュ上の上記データを利用して上記トランザクションを実行し、上記比較の結果が一致のときは上記永続記憶装置のデータによる上記キャッシュの更新を省略して上記キャッシュ上の上記データを利用して上記トランザクションを実行し、その後、上記楽観的排他に成功したか、失敗したかを判定し、失敗したときは上記キャッシュ上の上記データを上記永続記憶装置に記憶された上記データによって更新した後に上記トランザクションを再実行するトランザクション実行部と
を有する。
また本発明の第3の観点に係るトランザクション実行方法は、
トランザクションを送信するクライアント装置とデータを記憶する永続記憶装置とに接続され、上記永続記憶装置から取得した上記データを保持するキャッシュと前回実行した上記トランザクションで利用した上記データの識別情報を保持する識別情報保持部とを有し、楽観的排他に基づいて、上記クライアント装置から受信した上記トランザクションの実行制御を行うサーバ装置が実行するトランザクション実行方法であって、
上記クライアント装置から受信した上記トランザクションの実行に必要な上記データの識別情報と上記識別情報保持部に保持された上記データの識別情報とを比較し、
上記比較の結果が不一致のときは、上記キャッシュ上の上記データを上記永続記憶装置に記憶された上記データによって更新した後に上記キャッシュ上の上記データを利用して上記トランザクションを実行し、上記比較の結果が一致のときは、上記永続記憶装置のデータによる上記キャッシュの更新を省略して上記キャッシュ上の上記データを利用して上記トランザクションを実行し、
上記楽観的排他に成功したか、失敗したかを判定し、失敗したときは上記キャッシュ上の上記データを上記永続記憶装置に記憶された上記データによって更新した後に上記トランザクションを再実行する。
また本発明の第4の観点に係るプログラムは、
トランザクションを送信するクライアント装置とデータを記憶する永続記憶装置とに接続され、楽観的排他に基づいて、上記クライアント装置から受信した上記トランザクションの実行を制御するコンピュータを、
上記永続記憶装置から取得した上記データを保持するキャッシュと、
前回実行した上記トランザクションで利用した上記データの識別情報を保持する識別情報保持部と、
上記クライアント装置から受信した上記トランザクションの実行に必要な上記データの識別情報と上記識別情報保持部に保持された上記データの識別情報とを比較し、上記比較の結果が不一致のときは上記永続記憶装置に記憶された上記データを取得して上記キャッシュを更新した後に上記キャッシュ上の上記データを利用して上記トランザクションを実行し、上記比較の結果が一致のときは上記永続記憶装置のデータによる上記キャッシュの更新を省略して上記キャッシュ上の上記データを利用して上記トランザクションを実行し、その後、上記楽観的排他に成功したか、失敗したかを判定し、失敗したときは上記キャッシュ上の上記データを上記永続記憶装置に記憶された上記データによって更新した後に上記トランザクションを再実行するトランザクション実行部と
して機能させる。
本発明は上述した構成を有するため、スケーラビリティを確保しつつ、キャッシュ更新に係るコストとトランザクションの再実行に係るコストとを共に削減することができる。
本発明の第1の実施形態に係る分散処理システムのブロック図である。 本発明の第1の実施形態に係る分散処理システムにおけるサーバ装置の動作の一例を示すフローチャートである。 本発明の第1の実施形態と本発明に関連する第1および第2の関連技術とについて、トランザクション実行前のキャッシュ更新の有無、楽観的排他の成功の可能性、トランザクションの再実行の可能性を比較した図である。 本発明の第2の実施形態に係る分散処理システムの概要を示す図である。 本発明の第2の実施形態に係る分散処理システムのブロック図である。 本発明の第2の実施形態における処理解析サーバのブロック図である。 本発明の第2の実施形態におけるデータベースサーバのブロック図である。 本発明の第2の実施形態における処理解析サーバの動作を示すフローチャートである。 本発明の第2の実施形態におけるデータベースサーバに記憶されている表の例を示す図である。 本発明の第2の実施形態におけるトランザクションの処理の一例を示す図である。 本発明の第3の実施形態に係る分散処理システムのブロック図である。 本発明の第3の実施形態における振り分け装置のブロック図である。 本発明の第3の実施形態における振り分け装置の動作を示すフローチャートである。 本発明の第4の実施形態に係る分散処理システムのブロック図である。 本発明の第4の実施形態における振り分け装置のブロック図である。 本発明の第4の実施形態における特定データ振り分け先一覧表の一例を示す図である。 本発明の第4の実施形態における処理解析サーバのブロック図である。 本発明の第4の実施形態における振り分け装置の動作を示すフローチャートである。 本発明の第4の実施形態における処理解析サーバの動作を示すフローチャートである。 本発明の第5の実施形態における振り分け装置のブロック図である。 本発明の第5の実施形態における振り分け装置の動作を示すフローチャートである。 本発明に関連する分散処理システムのブロック図である。
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態に係る分散処理システム100は、クライアント装置110とサーバ装置120と永続記憶装置130とを有する。
クライアント装置110は、トランザクションを任意のサーバ装置120に送信する装置である。クライアント装置110は、例えば、CPU、ROMやRAM等のメモリ、各種の情報を格納する外部記憶装置、入出力インターフェース、通信インターフェース、およびこれらを相互に接続するバスを備える専用または汎用のコンピュータであってよい。またクライアント装置110は、複数存在してよい。
永続記憶装置130は、データ131を記憶する機能を有する。永続記憶装置130は、例えば、BerkleyDBなどのデータベースや、キーバリューストアや、リレーショナルデータベースなど楽観的排他による制御ができるデータベースであればよい。また永続記憶装置130は、複数存在してよい。永続記憶装置130に記憶されるデータ131は、前述のような種類のデータベースに、それぞれの持つデータ格納方式(キーバリュー方式、関係モデル方式など)に従って適宜記憶される。例えばキーバリューストアであれば、データ131は、KVデータとバージョン情報とを有する。KVデータは、キー値とバリュー値とのペアである。バージョン情報は、KVデータのバージョンを表す。以下、データ131は、KVデータとバージョン情報とを有するものとして説明するが、本発明はそのような形式のデータに限定されない。
サーバ装置120は、楽観的排他に基づいて、クライアント装置110から受信したトランザクションの実行を制御する装置である。サーバ装置120は、例えば、CPU、ROMやRAM等のメモリ、各種の情報を格納する外部記憶装置、入出力インターフェース、通信インターフェース、およびこれらを相互に接続するバスを備える専用または汎用のコンピュータであってよい。またサーバ装置120は、図1では2台であるが、3台以上存在してもよい。
各々のサーバ装置120は、キャッシュ121と識別情報保持部122とトランザクション実行部123とを有する。
キャッシュ121は、永続記憶装置130から取得したデータ131のコピーを保持する機能を有する。キャッシュ121は、RAM等の書込み読み出し可能なメモリで構成される。キャッシュ121の容量は任意であるが、1トランザクションで利用するデータの最大量を少なくとも保持できる容量であることが望ましい。
識別情報保持部122は、サーバ装置120が前回実行したトランザクションで利用したデータ131の識別情報を保持する機能を有する。データ131の識別情報は、データ131がKVデータである場合、キー値であってよい。識別情報保持部122は、RAM等の書込み読み出し可能なメモリで構成される。識別情報保持部122の容量は任意であるが、1トランザクションで利用するデータの識別情報の最大量を少なくとも保持できる容量であることが望ましい。
トランザクション実行部123は、トランザクションを実行する機能を有する。トランザクション実行部123は、サーバ装置120を構成するCPUとそのCPUで実行されるソフトウェアとで実現されるものであってよい。トランザクション実行部123は、同じサーバ装置120上に複数存在してよい。
トランザクション実行部123は、以下のような機能を有する。まずトランザクション実行部123は、クライアント装置110から受信したトランザクションを解析し、その実行に必要なデータ131の識別情報と識別情報保持部122に保持されたデータ131の識別情報とを比較する機能を有する。またトランザクション実行部123は、上記の比較の結果が不一致のときは、永続記憶装置130に記憶されたデータ131を取得してキャッシュ121を更新した後にキャッシュ121上のデータ131を利用してトランザクションを実行する機能を有する。またトランザクション実行部123は、上記の比較の結果が一致のときは、永続記憶装置130のデータによるキャッシュ121の更新を省略してキャッシュ121上のデータ131を利用してトランザクションを実行する機能を有する。またトランザクション実行部123は、上記のトランザクションの実行後、楽観的排他に成功したか、失敗したかを判定する機能を有する。またトランザクション実行部123は、楽観的排他に成功したときは、当該トランザクションをコミットし、トランザクションの実行結果をクライアント装置110へ送信する機能を有する。他方、トランザクション実行部123は、楽観的排他に失敗したときは、キャッシュ121上のデータ131を永続記憶装置130に記憶されたデータ131によって更新した後に、上記のトランザクションを再実行する機能を有する。
次に本実施形態の動作を説明する。
クライアント装置110は、トランザクションを任意のサーバ装置120へ送信する。トランザクションを受信したサーバ装置120は、そのトランザクションを解析して実行する。その際、サーバ装置120は、楽観的排他に基づいて、永続記憶装置130に記憶されたデータ130を必要に応じて参照、更新する。サーバ装置120は、楽観的排他に成功した場合、トランザクションの実行結果をクライアント装置110へ送信する。他方、サーバ装置120は、楽観的排他に失敗した場合、トランザクションを再実行する。以下、図2のフローチャートを参照して、サーバ装置120の動作をより詳細に説明する。
サーバ装置120のトランザクション実行部123は、クライアント装置110からトランザクションを受信すると、それを解析する(ステップS101)。次にトランザクション実行部123は、前回実行したトランザクションで利用したデータ131の識別情報を識別情報保持部122から読み出し、今回実行するトランザクションで利用するデータ131の識別情報と比較する(ステップS102)。次にトランザクション実行部123は、上記の比較結果が不一致であった場合(ステップS103でNO)、今回のトランザクションの実行に必要なデータ131を永続記憶装置130から取得してキャッシュ121を更新する(ステップS104)。すなわち、永続記憶装置130から取得したデータ131をキャッシュ121にコピーする。そして、ステップS105の処理へ進む。一方、上記の比較結果が一致であった場合(ステップS103でYES)、ステップS104をスキップして、ステップS105の処理へ進む。
トランザクション実行部123は、ステップS105において、キャッシュ121上のデータ131を利用してトランザクションを実行する。具体的には、例えばトランザクションがデータ131のバリュー値を更新するものである場合、キャッシュ121上のデータ131のバリュー値を更新する。
次にトランザクション実行部123は、CAS操作を行うことによって、楽観的排他に成功したか、失敗したかを判定する(ステップS106、S107)。具体的には、トランザクションがデータ131のバリュー値を更新するものであった場合、トランザクション実行部123は、キャッシュ121上のデータ131のバージョン情報が永続記憶装置130上のデータ131のバージョン情報と同じかどうかを判定し(CAS操作のCompare処理)、一致する場合にはトランザクションのコミット成功として、更新後のキャッシュ121上のデータ131を、そのバージョン情報をインクリメントして永続記憶装置130に書き込む(CAS操作のSwap処理)。一方、バージョン情報が一致せずCAS操作が成功しなかった場合、トランザクションのコミット失敗とする。その場合、トランザクション実行部123は、トランザクションの実行に必要な最新のデータ131を永続記憶装置130からあらためて取得してキャッシュ121を更新する(ステップS108)。すなわち、永続記憶装置130から取得したデータ131をキャッシュ121にコピーする。そして、トランザクション実行部123は、ステップS105の処理へ進み、当該トランザクションを再実行する。このステップS105〜S108のループ処理は、CAS操作が成功するまで、即ち楽観的排他が成功するまで繰り返される。
そして、トランザクション実行部123は、CAS操作に成功すると(ステップS107でYES)、当該トランザクションで利用したデータの識別情報によって識別情報保持部122を更新し(ステップS109)、またトランザクションの実行結果をクライアント装置110へ送信し(ステップS110)、受信したトランザクションに関する処理を終える。
次に本実施形態の効果を説明する。
本実施形態によれば、スケーラビリティを確保しつつ、キャッシュ更新に係るコストとトランザクションの再実行に係るコストとを共に削減することができる。
スケーラビリティを確保できる理由は、各サーバ装置120のキャッシュ121に最新データを保持する方法として、サーバ間で最新のキャッシュデータを交換する方法でなく、永続記憶装置130から最新データを取得する方法を使用しており、それぞれのサーバ装置120が互いに独立しているためである。
キャッシュ更新に係るコストとトランザクションの再実行に係るコストとを共に削減できる理由は、トランザクションで利用するデータの識別情報と前回のトランザクションで利用したデータの識別情報とが一致するか否かによって、トランザクション実行前にキャッシュ更新を実行するか否かを決定しているため、キャッシュ上のデータが最新であるにもかかわらずに無駄にキャッシュ更新する頻度が低下する一方、キャッシュ上のデータが最新でないにもかかわらずキャッシュ更新せずにトランザクションを実行してその再実行を余儀なくされる頻度が低下するためである。
図3は、本実施形態と本発明に関連する第1および第2の関連技術とについて、トランザクション実行前のキャッシュ更新の有無、楽観的排他の成功の可能性、トランザクションの再実行の可能性を比較した図である。図中、キャッシュ更新の欄における記号「‐」はキャッシュ更新しないことを、記号「○」はキャッシュ更新することを、それぞれ示す。また楽観的排他の欄における記号「○」は楽観的排他に成功する確率が高いことを、記号「×」は楽観的排他に失敗する確率が高いことを、それぞれ示す。また再実行の欄における記号「‐」はトランザクションの再実行の可能性が低いことを、記号「○」はトランザクションの再実行の可能性が高いことを、それぞれ示す。
また比較対象とする本発明に関連する第1の関連技術は、トランザクションの実行に必要なデータ131がキャッシュ上に存在していれば常にキャッシュ更新しない方法である。また本発明に関連する第2の関連技術は、トランザクションの実行前に常にキャッシュ更新を行う方法である。また実行する一連のトランザクションとして、最初のトランザクションTX1から7番目のトランザクションTX7までは、同じ識別情報のデータ131を使用するトランザクションとし、8番目から10番目までのトランザクションTX8、TX9、TX10は、他のトランザクションと異なる識別情報のデータ131を使用するトランザクションとしている。
図3に示すように、本発明に関連する第1の関連技術では、キャッシュ121の更新コストが最小になるけれども、最初のトランザクションTX1ではキャッシュ更新しないために楽観的排他に失敗し再実行する確率が高く、また8番目から10番目までのトランザクションでもキャッシュ更新しないために楽観的排他に失敗し再実行する確率が高くなっている。2番目から7番目までのトランザクションにおいてキャッシュ更新しないにもかかわらず楽観的排他に成功し再実行する確率が低くなっているのは、直前のトランザクションで利用した最新のデータがキャッシュ121に保持されているためである。
また図3に示すように、本発明に関連する第2の関連技術では、毎回キャッシュ更新を行うため、楽観的排他に成功し再実行しなくてすむ確率が最も高くなっているが、キャッシュの更新コストは最大になる。
これに対して本実施形態による方法では、楽観的排他に成功し再実行しなくてよい確率が本発明に関連する第2の関連技術と同等であるにもかかわらず、キャッシュ更新コストが第2の関連技術に比べて大幅に低下している。その理由は、前述したように、キャッシュ上のデータが最新であると思われる場合、即ち、トランザクションで利用するデータの識別情報と前回のトランザクションで利用したデータの識別情報とが一致する場合には無駄にキャッシュ更新しないようにしているためである。
[第2の実施形態]
次に本発明の第2の実施形態について説明する。
図4を参照すると、本実施形態に係る分散処理システム200は、クライアント210と処理解析サーバ220とデータベースサーバ230とを有する。
本実施形態に係る分散処理システム200では、クライアント210は、まず処理解析サーバ220に処理要求を送る。ここで、1つの処理要求は、1つのトランザクションに相当する。クライアント210からの処理要求を受信した処理解析サーバ220は、処理要求を解析し、データベースサーバ230から必要な最新データをコピーしてきて、更新・参照処理を行う。処理解析サーバ220は、受信した処理要求に係る処理の完了後、応答をクライアント210に返す。クライアント210と処理解析サーバ220間、処理解析サーバ220とデータベースサーバ230間の全ての処理要求に係る処理は並列に行われるが、データの一貫性が失われることはない。また、クライアント210からデータベースサーバ230に直接に処理要求を送ることはない。
図5は本実施形態に係る分散処理システム200のより詳細な構成を示す。図5を参照すると、本実施形態に係る分散処理システム200は、i個(iは1以上の整数)のクライアント(C)210を持つ分散データベースシステムである。分散データベースシステム内には、j個(jは1以上の整数)の処理解析サーバ(P)220と、k個(kは1以上の整数)のデータベースサーバ(T)230が存在する。各々のクライアント210は、全ての処理解析サーバ220と繋がっているため、任意の処理解析サーバ220に処理要求を送ることができる。また、各々の処理解析サーバ220は、全てのデータベースサーバ230と繋がっているため、任意のデータベースサーバ230に処理要求を送ることができる。
図6は処理解析サーバ220のブロック図である。処理解析サーバ220は、処理入出力部221、処理実行部222、およびデータ格納部223を有する。処理入出力部221は、クライアントとの通信部2211とデータベースサーバとの通信部2212とを有し、他機能サーバと処理要求やデータなどの送受信を行う。処理実行部222は、受信した処理要求を解析する処理解析部2221と、処理要求に係る処理を実際に実行する受信処理実行部2222とを有する。データ格納部223は、前回の処理要求で利用したデータの主キーを格納する前回処理データキー格納部2231と、データベースサーバ230からコピーしたデータを格納するキャッシュとしてのコピーデータ格納部2232とを有する。
図7はデータベースサーバ230のブロック図である。データベースサーバ230は、処理解析サーバ220と同様に、処理入出力部231、処理実行部232、およびデータ格納部233を有する。処理入出力部231は、処理解析サーバとの通信部2311を有する。データベースサーバ230はクライアント210と通信を行わないため、処理解析サーバ220におけるクライアントとの通信部2211に相当する通信部は有していない。処理実行部232は、実際に処理を実行する処理部2321を有する。データ格納部233は、最新のデータを格納するデータ格納部2331を有する。このデータ格納部2331に格納されるデータは、KVデータとバージョン情報とを有する。
次に本実施形態の動作を処理解析サーバを中心に説明する。
まず動作の概要を説明する。処理解析サーバ220は、受信した処理要求が、前回の処理要求で利用したデータの主キー値と同じ主キー値を有するデータ(レコード)を利用する処理ならば、データベースサーバ230からデータのコピーを行わず、自サーバ内のコピーデータ格納部2232に格納されているデータに対し処理を行う。処理完了後、処理解析サーバ220は、データベースサーバ230のデータのバージョンを確認する。自サーバ内のデータが最新データだった場合、処理解析サーバ220は、更新処理ならば、データベースサーバ230に処理結果を反映し、クライアント210に結果を返す。参照処理ならば、そのままクライアントに結果を返す。
このように、処理解析サーバ220は、続く処理が同じデータに対する処理だった場合、自サーバに格納されているデータに対し、処理を行うことで、データベースサーバ230からのデータコピー時間を省き、処理性能を上げることが可能である。
次に動作をより具体的に説明する。図8は処理解析サーバ220の動作を示すフローチャートである。また図9はデータベースサーバ230のデータ格納部2331に保持されている表の例を示す。この例では、説明の容易さから表は1つだが、複数の表に対しても本発明は適用可能である。表中、データの主キーはID(下線部)とする。
以下では、下記のような処理要求(トランザクション)a〜dをその順にクライアント装置から受信した場合について動作を説明する。
(a)ID=1のデータの個数更新
(b)ID=1のデータの個数更新
(c)ID=2のデータの単価更新
(d)ID=2のデータの個数参照
まず、処理解析サーバ220の処理解析部2221は、処理要求aをクライアント210から受け取って、利用するデータのIDなどを解析する(図8のステップS201)。次に処理解析サーバ220の受信処理実行部2222は、前回処理データキー格納部2231に保持されている前回処理したデータのIDと今回受信した処理要求aで利用するデータのIDが一致するか否か確認する(ステップS202)。処理要求aは最初のものであり、一致しないため、データベースサーバ230のデータ格納部233から、最新のデータを自サーバのデータ格納部223のコピーデータ格納部2232にコピーする(ステップS203)。次に受信処理実行部2222は、コピーデータ格納部2232のデータを利用して処理要求aの処理を実行する(ステップS204)。次に受信処理実行部2222は、処理要求aは更新処理なので、CAS操作によって、データベースサーバに更新結果を反映する(ステップS205、S206)。楽観的排他制御により、既に他のサーバからの更新でデータが更新されていた場合(ステップS205でNO)、CAS操作はエラーとなり、更新結果はデータベースサーバ230には反映されない。その場合、受信処理実行部2222は、エラー時に更新されていたデータのみ、データベースサーバ230からコピーデータ格納部2232に再度コピーする(ステップS207)。次に、受信処理実行部2222は、処理要求aに係る処理を再度実行する(ステップS204)。そして、楽観的排他制御に失敗することなく処理要求aに係る処理を無事終えると、処理解析サーバ220は、ステップS201の処理に戻る。
次に処理解析サーバ220の処理解析部2221は、処理要求bをクライアント210から受け取って解析する(ステップS201)。前回処理した処理要求aで利用したデータのIDと今回受信した処理要求bで利用するデータのIDが一致するため(ステップS202でYES)、処理解析サーバ220の受信処理実行部2222は、自サーバのデータ格納部223のコピーデータ格納部2232に格納されているデータに対し、処理を実行する(ステップS204)。処理要求bは更新処理なので、処理実行後は、データベースサーバ230のデータに処理結果を反映させる(ステップS205、S206)。
次に処理解析サーバ220の処理解析部2221は、処理要求cをクライアント210から受け取って解析する(ステップS201)。前回処理した処理要求bで利用したデータのIDと今回受信した処理要求cで利用するデータのIDは異なるため(ステップS202でNO)、以下、処理要求aの処理と同様の処理が行われる。
次に処理解析サーバ220の処理解析部2221は、処理要求dをクライアント210から受け取る(ステップS201)。前回処理した処理要求cで利用したデータのIDと今回受信した処理要求dで利用するデータのIDが一致するため(ステップS202でYES)、処理解析サーバ220の受信処理実行部2222は、自サーバのデータ格納部223のコピーデータ格納部2232に格納されているデータに対し、処理を行う。処理要求dは参照処理のため、データベースサーバ230へのデータ反映が必要ない。しかし、タイミングによって、参照するデータの値が他の処理解析サーバに更新されてしまっている可能性がある。そのため、受信処理実行部2222は、クライアント210に結果を返す前にデータベースサーバ230のデータバージョンを確認する。該当データのバージョンが最新であることを確認できたらクライアントに結果を返す。もし、他の処理解析サーバによって更新されてしまっていたら(ステップS205でNO)、更新されてしまったデータのみデータベースサーバ230から自サーバにコピーし、処理要求dの処理を再実行する。
このように、処理解析サーバ220は、直前の処理要求で利用したデータと今回受信した処理要求で利用するデータが同じ主キーか否かを判定し、同じでなければデータベースサーバ230から最新のデータを自サーバのデータ格納部223におけるコピーデータ格納部2232に取得し、同じであれば上記の取得処理を省略して自サーバのコピーデータ格納部2232に保持されているデータに対して処理を行う。
以下、楽観的排他制御により、処理がエラーになった場合の動きについて、もう少し詳しく説明する。
例えば、図10に示すように、ID=1のデータとID=2のデータとを用いて加算処理を行い、その加算結果に基づいて主キーがsum1のデータを更新する処理があったとする。処理解析サーバ220は、クライアント210から受信した処理要求に係る処理を行った後、データベースサーバ230に結果を反映しようとする。この時、処理解析サーバ220は、自サーバ上のID=1、ID=2、sum1の各データのバージョンをデータベースサーバ230上のID=1、ID=2、sum1の各データのバージョンと照合する。いま、ID=2のデータのバージョンが他の処理解析サーバに更新され、2から3に上がっており、ID=1、sum1の各データのバージョンは3、2のままであったとすると、処理解析サーバ220はID=2のデータのみをデータベースサーバ230から自サーバにコピーする。また仮に、ID=1、ID=2の各データのバージョンが異なっていた場合は、ID=1、ID=2の各データをコピーするといったように、異なるバージョンのデータのみコピーする。そして、処理解析サーバ220は、コピーしたデータに対し、再度クライアントから受信した処理要求に係る処理を実施する。
このように、エラー時に、処理に必要なデータ全てではなく、差分のみをコピーすることにより、コピー時間が短縮される。
次に本実施形態の効果を説明する。
本実施形態によれば、処理解析サーバ220間で通信を行わないため、処理解析サーバ220が独立している。それにより、スケーラビリティな運用が可能である。
処理解析サーバ220に、前回処理したデータの識別情報(本実施形態では主キー)を保持し、前回処理したデータと同じ識別情報のデータを処理するか否かによってキャッシュ更新の有無を制御することで、データベースサーバ230からの処理データの無駄なコピーが低減し、システム全体の処理時間が短縮される。
楽観的排他制御によりエラーになった場合も、原因となったデータのみをコピーすることで、コピー時間が短縮される。それにより、再処理が再エラーになる可能性が下がる。すなわち、楽観的排他制御により、エラーになった時、一度全て削除して、新たなデータを取得する方法では、複数の処理解析サーバが一斉にエラーになった場合、また一緒に更新してしまう確率が高くなる。本実施形態のようにエラー時に差分のみコピーすることにより、差分があるデータ数・データサイズにより、処理解析サーバ間にデータコピー時間の差が生じるため、タイミングによってエラーが生じない可能性がある。
[第3の実施形態]
図11を参照すると、本発明の第3の実施形態に係る分散処理システム300は、クライアント310と処理解析サーバ320との間に、クライアント310から処理要求を受信し、受信した処理要求を処理解析サーバ320に振り分ける1台の振り分け装置340を有する点で、図5に示した第2の実施形態に係る分散処理システム200と相違する。
クライアント310と処理解析サーバ320とデータベースサーバ330は、図5に示した第2の実施形態に係るクライアント210と処理解析サーバ220とデータベースサーバ230と同じである。
図12を参照すると、振り分け装置340は、処理入出力部341、処理実行部342、およびデータ格納部343を有する。処理入出力部341は、クライアントとの通信部3411と処理解析サーバとの通信部3412とを有し、全てのクライアント310および全ての処理解析サーバ320と処理要求やデータの送受信を行う。処理実行部342は、受信した処理要求を解析する処理解析部3421と、受信した処理要求を処理解析サーバ320に振り分ける受信処理振り分け部3422とを有する。データ格納部343は、前回振り分けた処理要求で利用するデータの主キーを格納する前回処理データキー格納部3431と、処理要求を前回振り分けた処理解析サーバ320の識別情報(例えば名前)を格納する前回処理解析サーバ名格納部3432とを有する。
次に本実施形態の動作を説明する。クライアント310と処理解析サーバ320とデータベースサーバ330の動作は、図5に示した第2の実施形態に係るクライアント210と処理解析サーバ220とデータベースサーバ230と同じである。以下では、振り分け装置340の動作を中心に説明する。
図13は振り分け装置340の動作を示すフローチャートである。振り分け装置340の処理解析部3421は、何れかのクライアント310から処理要求を受信して解析し、利用するデータのID等の解析結果を受信処理振り分け部3422へ伝達する(ステップS301)。次に、受信処理振り分け部3422は、その処理要求で利用するデータの主キーが前回処理した処理要求で利用するデータの主キーと一致するか否かを判定する(ステップS302)。具体的には、受信処理振り分け部3422は、前回処理データキー格納部3431から前回処理した処理要求で利用するデータの主キーを読み出し、今回受信した処理要求で利用するデータの主キーと比較する。比較の結果、一致しない場合、受信処理振り分け部3422は、今回受信した処理要求を任意の処理解析サーバ320に振り分ける(ステップS303)。このとき、受信処理振り分け部3422は、今回受信した処理要求で利用するデータの主キーを前回処理データキー格納部3431に保存し、今回振り分け先とした処理解析サーバ320の名前を前回処理解析サーバ名格納部3432に保存する。他方、上記比較の結果、一致した場合、受信処理振り分け部3422は、前回処理解析サーバ名格納部3432を参照して前回振り分け先として処理解析サーバ320を確認し、この処理解析サーバ320へ今回受信した処理要求を振り分ける(ステップS304)。
以下では、下記のような処理要求a〜cがその順でクライアント310から振り分け装置340に到着した場合について、動作を説明する。
(a)ID=1のデータの個数更新
(b)ID=2のデータの単価更新
(c)ID=2のデータの個数更新
振り分け装置340は、処理要求aを受信すると、それを解析し、前回処理した処理要求で利用するデータのIDと今回受信した処理要求aで利用するデータのIDが一致するか否か確認する。処理要求aは最初のものであり、それ以前に処理要求がないため、一致しない。一致しない場合、振り分け装置340は、適当な処理解析サーバ320に処理要求aを振り分ける。
次に振り分け装置340は、処理要求bを受信すると、それを解析し、前回処理した処理要求aで利用するデータのID(=1)と今回受信した処理要求bで利用するデータのID(=2)は異なるため、処理要求bを適当な処理解析サーバ320に振り分ける。
次に振り分け装置340は、処理要求cを受信すると、それを解析し、前回処理した処理要求bで利用するデータのID(=2)と今回受信した処理要求cで利用するデータのID(=2)は一致するため、前回の処理要求bを振り分けた処理解析サーバ320と同じ処理解析サーバ320に処理要求cを振り分ける。従って、処理要求bに続いて処理要求cを受信した処理解析サーバ320では、処理要求の実行に利用するデータの主キーが同じ処理要求b、cが連続して投入されるため、無駄なキャッシュ更新動作が抑制される。
このように、本実施形態によれば、利用するデータの主キーが同じ複数の処理要求が同じ処理解析サーバに連続して振り分けるように、クライアントから送信された処理要求を複数の処理解析サーバに振り分ける振り分け装置340を有するため、任意のクライアントが任意の処理解析サーバに処理要求を送信する構成に比較して、処理解析サーバにおける無駄なキャッシュ更新を削減することができる。
[第4の実施形態]
図14を参照すると、本発明の第4の実施形態に係る分散処理システム400は、クライアント410と処理解析サーバ420との間に、クライアント410から処理要求を受信し、受信した処理要求を処理解析サーバ420に振り分ける1台または2台以上の振り分け装置440を有する点で、図5に示した第2の実施形態に係る分散処理システム200と相違する。また、本実施形態に係る分散処理システム400は、処理解析サーバ420の機能が第2の実施形態に係る分散処理システム200の処理解析サーバ220の機能と一部相違している。
クライアント410とデータベースサーバ430は、図5に示した第2の実施形態に係るクライアント210とデータベースサーバ230と同じである。
図15を参照すると、振り分け装置440は、処理入出力部441、処理実行部442、およびデータ格納部443を有する。処理入出力部441は、クライアントとの通信部4411と処理解析サーバとの通信部4412とを有し、全てのクライアント410および全ての処理解析サーバ420と処理要求やデータの送受信を行う。処理実行部442は、受信した処理要求を解析する処理解析部4421と、受信した処理要求を処理解析サーバ420に振り分ける受信処理振り分け部4422とを有する。データ格納部443は、特定データ振り分け先一覧表格納部4431を有する。
データ格納部443に格納されている特定データ振り分け先一覧表格納部4431は、特定データの識別情報とその特定データを利用する処理要求の振り分け先とする処理解析サーバの識別情報との対応関係を記載した一覧表を記憶する。図16は、特定データ振り分け先一覧表の構成例である。この例では、主キーであるIDが2であるデータを利用する処理要求は、識別情報P1で特定される処理解析サーバ420に振り分けることが定められている。また、主キーであるIDが1であるデータを利用する処理要求は、識別情報P2で特定される処理解析サーバ420に振り分けることが定められている。また特定データ振り分け先一覧表は、左に記載されている情報ほど優先度が高くなっている。従って、図16の例では、IDが1であるデータとIDが2であるデータとの双方を利用する処理要求は、識別情報P2で特定される処理解析サーバ420に振り分けることが定められている。特定データ振り分け先一覧表に登録される処理解析サーバは、全サーバである必要は必ずしもなく、一部の処理解析サーバであってよい。振り分け装置440が複数存在する場合、全ての振り分け装置440の特定データ振り分け先一覧表は同じ内容になっている。
図17は処理解析サーバ420のブロック図である。処理解析サーバ420は、処理入出力部421、処理実行部422、およびデータ格納部423を有する。処理入出力部421は、振り分け装置との通信部4211とデータベースサーバとの通信部4212とを有し、他機能サーバと処理やデータの送受信を行う。処理実行部422は、受信した処理要求を解析する処理解析部4221と、処理要求に係る処理を実際に実行する受信処理実行部4222とを有する。データ格納部423は、前回処理を実施したデータの主キーを格納する前回処理データキー格納部4231と、データベースサーバ430からコピーしたデータを格納するキャッシュとしてのコピーデータ格納部4232と、データベースサーバ430からコピーした特定データを格納するキャッシュとしての特定データ格納部4233とを有する。この特定データ格納部4233には、一連のトランザクションの実行に先だって、データベースサーバから取得した特定データが予め記憶されていることが望ましい。なお、本実施形態では、処理解析サーバ420で実行された処理結果を振り分け装置を通じて要求元のクライアントへ送信する。しかし、処理解析サーバ420で実行された処理結果を振り分け装置を経由せずに、処理解析サーバ420から要求元のクライアントに直接に送信するようにしてもよい。この場合、処理解析サーバ420の処理入出力部421は、クライアントとの通信部を有する。
次に本実施形態の動作を説明する。クライアント410とデータベースサーバ430の動作は、図5に示した第2の実施形態に係るクライアント210とデータベースサーバ230と同じである。以下では、振り分け装置440と処理解析サーバ420の動作を中心に説明する。
図18は振り分け装置440の動作を示すフローチャートである。振り分け装置440の処理解析部4421は、何れかのクライアント410から処理要求を受信し、利用するデータの主キーなどを解析する(ステップS401)。次に、振り分け装置440の受信処理振り分け部4422は、その処理要求で利用するデータが特定データであるか否かを判定する。具体的には、受信処理振り分け部4422は、格納部4431から特定データ振り分け先一覧表を読み出し、当該一覧表の先頭から順に、一覧表に記載されている特定データの主キーと今回受信した処理要求で利用するデータの主キーとを照合する(ステップS402)。照合の結果、今回受信した処理要求で利用するデータが特定データ振り分け先一覧表に記載される特定データである場合(ステップS403でYES)、受信処理振り分け部4422は、当該処理要求に特定データフラグを付加し、今回受信した処理要求を特定データ振り分け先一覧表で定められた処理解析サーバ420に振り分ける(ステップS404)。他方、上記照合の結果、特定データに対する処理要求でないことが判明した場合、受信処理振り分け部4422は、任意の処理解析サーバ420へ今回受信した処理要求を振り分ける(ステップS405)。このときは、処理要求には特定データフラグは付加しない。
図19は処理解析サーバ420の動作を示すフローチャートである。処理解析サーバ420の処理解析部4221は、振り分け装置440から処理要求を受信して、利用するデータの主キーや特定データフラグの有無等を解析する(ステップS411)。次に、処理解析サーバ420の受信処理実行部4222は、その解析結果に基づいて、処理要求に特定データフラグが付加されているか否かを判定する(ステップS412)。特定データフラグが付加されている場合、ステップS413、S414をスキップして、ステップS415の処理へ進む。処理要求に特定データフラグが付加されていない場合には、受信処理実行部4222は、前回処理データキー格納部4231に保持されている前回処理したデータのIDと今回受信した処理要求で利用するデータのIDが一致するか否か確認する(ステップS413)。若し、一致しなかった場合、データベースサーバ430から、最新のデータを自サーバのデータ格納部423のコピーデータ格納部4232にコピーする(ステップS413)。そして、ステップS415の処理へ進む。一致した場合は、ステップS414の処理をスキップし、ステップS415の処理へ進む。
処理解析サーバ420の受信処理実行部4222は、ステップS415において、コピーデータ格納部4232と特定データ格納部4233のデータを利用して処理要求の処理を実行する。以降、処理解析サーバ420は、第2の実施形態における図8のステップS205〜S207と同様のステップS416〜S418の処理を実行する。
以下では、下記のような処理要求a〜cがその順でクライアント410から振り分け装置440に到着した場合について、動作を説明する。
(a)ID=2のデータの個数更新
(b)ID=3のデータの個数更新
(c)ID=1のデータの単価更新、ID=2の単価更新
振り分け装置440は、処理要求aを受信すると、特定データ振り分け先一覧表を確認する。図16を参照すると、ID=2のデータは特定データであり、識別情報P1の処理解析サーバ420に振り分けるようになっている。このため、振り分け装置440は、処理要求aに特定データフラグを付加し、識別情報P1の処理解析サーバ420に振り分ける。ここでは、処理要求aに特定データフラグを付加したが、処理要求a中のID=2に特定データフラグを付加するようにしてもよい。
振り分け装置440から処理要求aを受け取った処理解析サーバ420は、特定データフラグの有無を確認し、特定データフラグが立っているので、前回処理したデータにかかわらず、自サーバの特定データ格納部4233に格納されているデータに対して処理を実行する。
次に振り分け装置440は、処理要求bを受信すると、特定データ振り分け先一覧表を確認するが、図16を参照すると、ID=3の記述がない。そのため、振り分け装置440は、処理要求bを適当な処理解析サーバ420に振り分ける。
振り分け装置440から処理要求bを受け取った処理解析サーバ420は、特定データフラグの有無を確認し、特定データフラグが立っていないので、図8を参照して説明した第2の実施形態における処理解析サーバ220と同様の処理を行う。
次に振り分け装置440は、処理要求cを受信すると、再び特定データ振り分け先一覧表を確認する。処理要求cは、ID=1とID=2の2つのデータに対する処理であり、図16を参照すると、ID=2のデータを識別情報P1に振り分ける優先度の方が高い。従って、振り分け装置440は、処理要求cに特定データフラグを付加し、識別情報P1の処理解析サーバ420に振り分ける。ここでは、処理要求cに特定データフラグを付加したが、処理要求c中のID=2に特定データフラグを付加するようにしてもよい。
振り分け装置440から処理要求cを受け取った処理解析サーバ420は、特定データフラグの有無を確認し、特定データフラグが立っているので、前回処理したデータにかかわらず、自サーバの特定データ格納部4233およびコピーデータ格納部4232に格納されているデータに対して処理を実行する。
このように、本実施形態によれば、特定データを利用する処理要求が特定の処理解析サーバに振り分けるように、クライアントから送信された処理要求を複数の処理解析サーバに振り分ける振り分け装置440を有するため、任意のクライアントが任意の処理解析サーバに処理要求を送信する構成に比較して、処理解析サーバにおける無駄なキャッシュ更新を削減することができる。
また、複数の振り分け装置440を有する構成によれば、クライアントからの処理の負荷分散が可能である。
[第5の実施形態]
本実施形態に係る分散処理システムは、第4の実施形態に係る分散処理システムと比較して、振り分け装置の機能のみ相違する。
図20は、本実施形態における振り分け装置540のブロック図である。図20を参照すると、振り分け装置540は、処理入出力部541、処理実行部542、およびデータ格納部543を有する。処理入出力部541は、クライアントとの通信部5411と処理解析サーバとの通信部5412とを有し、全てのクライアント410および全ての処理解析サーバ420と処理要求やデータの送受信を行う。処理実行部542は、受信した処理要求を解析する処理解析部5421と、受信した処理要求を処理解析サーバ420に振り分ける受信処理振り分け部5422とを有する。データ格納部543は、前回処理データキー格納部5431と、前回処理解析サーバ名格納部5432と、特定データ振り分け先一覧表格納部4431を有する。
データ格納部543が有する前回処理データキー格納部5431と前回処理解析サーバ名格納部5432とは、図12に示した第3の実施形態における振り分け装置340が有する前回処理データキー格納部3431と前回処理解析サーバ名格納部3432と同じである。またデータ格納部543が有する特定データ振り分け先一覧表格納部5433は、図15に示した第4の実施形態における振り分け装置440が有する特定データ振り分け先一覧表格納部4433と同じである。
図21は振り分け装置540の動作を示すフローチャートである。振り分け装置540の処理解析部5421は、何れかのクライアント410から処理要求を受信し、利用するデータの主キーや特定データフラグの有無等を解析する(ステップS501)。次に、振り分け装置540の受信処理振り分け部5422は、上記の解析結果に基づいて、処理要求で利用するデータが特定データであるか否かを判定する(ステップS502)。具体的には、受信処理振り分け部5422は、格納部5431から特定データ振り分け先一覧表を読み出し、当該一覧表の先頭から順に、一覧表に記載されている特定データの主キーと今回受信した処理要求で利用するデータの主キーとを照合する。照合の結果、今回受信した処理要求で利用するデータが特定データ振り分け先一覧表に記載される特定データである場合(ステップS503でYES)、受信処理振り分け部5422は、当該処理要求に特定データフラグを付加し、今回受信した処理要求を特定データ振り分け先一覧表で定められた処理解析サーバ420に振り分ける(ステップS504)。このとき、受信処理振り分け部5422は、今回受信した処理要求で利用するデータの主キーを前回処理データキー格納部5431に保存し、今回振り分け先とした処理解析サーバ420の名前を前回処理解析サーバ名格納部5432に保存する。
他方、上記照合の結果、特定データに対する処理要求でないことが判明した場合、受信処理振り分け部5422は、前回処理データキー格納部5431から前回処理した処理要求で利用するデータの主キーを読み出し、今回受信した処理要求で利用するデータの主キーと比較する(ステップS505)。比較の結果、一致しない場合、受信処理振り分け部5422は、今回受信した処理要求を任意の処理解析サーバ420に振り分ける(ステップS506)。このとき、受信処理振り分け部5422は、今回受信した処理要求で利用するデータの主キーを前回処理データキー格納部5431に保存し、今回振り分け先とした処理解析サーバ420の名前を前回処理解析サーバ名格納部5432に保存する。他方、上記比較の結果、一致した場合、受信処理振り分け部5422は、前回処理解析サーバ名格納部5432を参照して前回振り分け先として処理解析サーバ420を確認し、この処理解析サーバ420へ今回受信した処理要求を振り分ける(ステップS507)。上記ステップS506、S507において、処理解析サーバ420へ処理要求を振り分ける際、処理要求には特定データフラグは付加しない。
本実施形態によれば、特定データを利用する処理要求が特定の処理解析サーバに振り分けるように、また、特定データ以外のデータを利用する処理要求については、利用するデータの主キーが同じ複数の処理要求が同じ処理解析サーバに連続して振り分けるように、クライアントから送信された処理要求を複数の処理解析サーバに振り分ける振り分け装置540を有するため、任意のクライアントが任意の処理解析サーバに処理要求を送信する構成に比較して、処理解析サーバにおける無駄なキャッシュ更新を削減することができる。
なお、本発明は、日本国にて2013年5月31日に特許出願された特願2013−115489の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
本発明は、データの一貫性を保持しつつ大量データの高速処理を行う分散処理システム、例えば分散キーバリューストアを用いてトランザクションを実行するシステム、特に大量ストリームが発生する分散データベースシステムや、より高速な処理が求められる分散データベースシステムに好適である。
100…分散処理システム
110…クライアント装置
120…サーバ装置
121…キャッシュ
122…識別情報保持部
123…トランザクション実行部
130…永続記憶装置
131…データ

Claims (14)

  1. トランザクションを送信するクライアント装置と、
    データを記憶する永続記憶装置と、
    楽観的排他に基づいて、前記クライアント装置から受信した前記トランザクションの実行を制御する複数のサーバ装置とを有し、
    各々の前記サーバ装置は、
    前記永続記憶装置から取得した前記データを保持するキャッシュと、
    前回実行した前記トランザクションで利用した前記データの識別情報を保持する識別情報保持部と、
    前記クライアント装置から受信した前記トランザクションの実行に必要な前記データの識別情報と前記識別情報保持部に保持された前記データの識別情報とを比較し、前記比較の結果が不一致のときは前記永続記憶装置に記憶された前記データを取得して前記キャッシュを更新した後に前記キャッシュ上の前記データを利用して前記トランザクションを実行し、前記比較の結果が一致のときは前記永続記憶装置のデータによる前記キャッシュの更新を省略して前記キャッシュ上の前記データを利用して前記トランザクションを実行し、その後、前記楽観的排他に成功したか、失敗したかを判定し、失敗したときは前記キャッシュ上の前記データを前記永続記憶装置に記憶された前記データによって更新した後に前記トランザクションを再実行するトランザクション実行部と
    を有する
    分散処理システム。
  2. 前記トランザクション実行部は、前記楽観的排他に失敗したときの前記キャッシュの更新では、前記再実行するトランザクションの実行に必要な前記データのうち、前記キャッシュ上の前記データと相違する前記永続記憶装置上の前記データを取得して前記キャッシュを更新する
    請求項1に記載の分散処理システム。
  3. 前記クライアント装置と前記サーバ装置との間に、前記クライアント装置から前記トランザクションを受信し、該受信した前記トランザクションを前記サーバ装置に振り分ける振り分け装置を有する
    請求項1または2に記載の分散処理システム。
  4. 前記振り分け装置は、前記振り分けでは、特定データを利用する前記トランザクションを特定の前記サーバ装置に振り分ける
    請求項3に記載の分散処理システム。
  5. 前記振り分け装置は、前記振り分けでは、利用する前記データの識別情報が同じ複数の前記トランザクションを同じ前記サーバ装置に連続して振り分ける
    請求項3に記載の分散処理システム。
  6. 前記振り分け装置は、前記振り分けでは、特定データを利用する前記トランザクションを特定の前記サーバ装置に振り分け、前記特定データ以外の前記データを利用する前記トランザクションについては、利用する前記データの識別情報が同じ複数の前記トランザクションを同じ前記サーバ装置に連続して振り分ける
    請求項3に記載の分散処理システム。
  7. 前記データは、キー値とバリュー値とを有し、
    前記データの識別情報は、前記キー値である
    請求項1乃至6の何れかに記載の分散処理システム。
  8. トランザクションを送信するクライアント装置とデータを記憶する永続記憶装置とに接続され、楽観的排他に基づいて、前記クライアント装置から受信した前記トランザクションの実行を制御するサーバ装置であって、
    前記永続記憶装置から取得した前記データを保持するキャッシュと、
    前回実行した前記トランザクションで利用した前記データの識別情報を保持する識別情報保持部と、
    前記クライアント装置から受信した前記トランザクションの実行に必要な前記データの識別情報と前記識別情報保持部に保持された前記データの識別情報とを比較し、前記比較の結果が不一致のときは前記永続記憶装置に記憶された前記データを取得して前記キャッシュを更新した後に前記キャッシュ上の前記データを利用して前記トランザクションを実行し、前記比較の結果が一致のときは前記永続記憶装置のデータによる前記キャッシュの更新を省略して前記キャッシュ上の前記データを利用して前記トランザクションを実行し、その後、前記楽観的排他に成功したか、失敗したかを判定し、失敗したときは前記キャッシュ上の前記データを前記永続記憶装置に記憶された前記データによって更新した後に前記トランザクションを再実行するトランザクション実行部と
    を有する
    サーバ装置。
  9. 前記トランザクション実行部は、前記楽観的排他に失敗したときの前記キャッシュの更新では、前記再実行するトランザクションの実行に必要な前記データのうち、前記キャッシュ上の前記データと相違する前記永続記憶装置上の前記データを取得して前記キャッシュを更新する
    請求項8に記載のサーバ装置。
  10. 前記データは、キー値とバリュー値とを有し、
    前記データの識別情報は、前記キー値である
    請求項8または9に記載のサーバ装置。
  11. トランザクションを送信するクライアント装置とデータを記憶する永続記憶装置とに接続され、前記永続記憶装置から取得した前記データを保持するキャッシュと前回実行した前記トランザクションで利用した前記データの識別情報を保持する識別情報保持部とを有し、楽観的排他に基づいて、前記クライアント装置から受信した前記トランザクションの実行制御を行うサーバ装置が実行するトランザクション実行方法であって、
    前記クライアント装置から受信した前記トランザクションの実行に必要な前記データの識別情報と前記識別情報保持部に保持された前記データの識別情報とを比較し、
    前記比較の結果が不一致のときは、前記キャッシュ上の前記データを前記永続記憶装置に記憶された前記データによって更新した後に前記キャッシュ上の前記データを利用して前記トランザクションを実行し、前記比較の結果が一致のときは、前記永続記憶装置のデータによる前記キャッシュの更新を省略して前記キャッシュ上の前記データを利用して前記トランザクションを実行し、
    前記楽観的排他に成功したか、失敗したかを判定し、失敗したときは前記キャッシュ上の前記データを前記永続記憶装置に記憶された前記データによって更新した後に前記トランザクションを再実行する
    トランザクション実行方法。
  12. 前記楽観的排他に失敗したときの前記キャッシュの更新では、前記再実行するトランザクションの実行に必要な前記データのうち、前記キャッシュ上の前記データと相違する前記永続記憶装置上の前記データを取得して前記キャッシュを更新する
    請求項11に記載のトランザクション実行方法。
  13. 前記データは、キー値とバリュー値とを有し、
    前記データの識別情報は、前記キー値である
    請求項11または12に記載のトランザクション実行方法。
  14. トランザクションを送信するクライアント装置とデータを記憶する永続記憶装置とに接続され、楽観的排他に基づいて、前記クライアント装置から受信した前記トランザクションの実行を制御するコンピュータを、
    前記永続記憶装置から取得した前記データを保持するキャッシュと、
    前回実行した前記トランザクションで利用した前記データの識別情報を保持する識別情報保持部と、
    前記クライアント装置から受信した前記トランザクションの実行に必要な前記データの識別情報と前記識別情報保持部に保持された前記データの識別情報とを比較し、前記比較の結果が不一致のときは前記永続記憶装置に記憶された前記データを取得して前記キャッシュを更新した後に前記キャッシュ上の前記データを利用して前記トランザクションを実行し、前記比較の結果が一致のときは前記永続記憶装置のデータによる前記キャッシュの更新を省略して前記キャッシュ上の前記データを利用して前記トランザクションを実行し、その後、前記楽観的排他に成功したか、失敗したかを判定し、失敗したときは前記キャッシュ上の前記データを前記永続記憶装置に記憶された前記データによって更新した後に前記トランザクションを再実行するトランザクション実行部と
    して機能させるためのプログラム。
JP2015519619A 2013-05-31 2014-04-07 分散処理システム Expired - Fee Related JP6079876B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013115489 2013-05-31
JP2013115489 2013-05-31
PCT/JP2014/001992 WO2014192213A1 (ja) 2013-05-31 2014-04-07 分散処理システム

Publications (2)

Publication Number Publication Date
JP6079876B2 true JP6079876B2 (ja) 2017-02-15
JPWO2014192213A1 JPWO2014192213A1 (ja) 2017-02-23

Family

ID=51988268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015519619A Expired - Fee Related JP6079876B2 (ja) 2013-05-31 2014-04-07 分散処理システム

Country Status (3)

Country Link
US (1) US10284649B2 (ja)
JP (1) JP6079876B2 (ja)
WO (1) WO2014192213A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6293709B2 (ja) * 2015-07-22 2018-03-14 株式会社東芝 ストレージシステムおよびストレージシステム用プログラム
CN106302661B (zh) * 2016-08-02 2019-08-13 网宿科技股份有限公司 P2p数据加速方法、装置和系统
EP3600364B1 (en) 2017-06-14 2020-08-05 4D Pharma Research Limited Compositions comprising a bacterial strain of the genus megasphaera and uses thereof
JP7137072B2 (ja) * 2018-12-10 2022-09-14 富士通株式会社 情報処理システム、負荷分散処理装置および負荷分散処理プログラム
WO2023187885A1 (ja) * 2022-03-28 2023-10-05 日本電信電話株式会社 サーバ選択システム、サーバ選択方法、サーバ選択装置、接続ノード、および、プログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003242016A (ja) * 2002-02-14 2003-08-29 Nippon Telegr & Teleph Corp <Ntt> 情報処理システムおよびその情報システムで使用されるサーバ装置ならびにクライアント装置と、プログラムおよび情報処理方法
US20040128328A1 (en) * 2002-12-31 2004-07-01 International Business Machines Corporation Method and apparatus for relaxed transactional isolation in a client-server caching architecture
WO2007063945A1 (ja) * 2005-12-02 2007-06-07 International Business Machines Corporation データベースに対するアクセスを効率化するシステム、および、その方法
JP2010532052A (ja) * 2007-06-27 2010-09-30 マイクロソフト コーポレーション 入れ子トランザクションの親の不正な失敗への対処
JP2012155498A (ja) * 2011-01-25 2012-08-16 Fujitsu Ltd データベースサーバ装置、データベース更新方法及びデータベース更新プログラム
JP2013045356A (ja) * 2011-08-25 2013-03-04 Nec Corp トランザクション同時実行制御システム、トランザクション同時実行制御方法、およびプログラム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7987217B2 (en) * 2000-05-12 2011-07-26 Oracle International Corporation Transaction-aware caching for document metadata
US6615317B2 (en) * 2000-07-07 2003-09-02 Fitech Laboratories, Inc. Methods and systems for providing a highly scalable synchronous data cache
US7177945B2 (en) * 2000-08-04 2007-02-13 Avaya Technology Corp. Non-intrusive multiplexed transaction persistency in secure commerce environments
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
JP4306152B2 (ja) * 2001-06-26 2009-07-29 株式会社日立製作所 クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
US7509393B2 (en) * 2001-12-19 2009-03-24 International Business Machines Corporation Method and system for caching role-specific fragments
US7020684B2 (en) * 2002-01-18 2006-03-28 Bea Systems, Inc. System and method for optimistic caching
US7853699B2 (en) * 2005-03-15 2010-12-14 Riverbed Technology, Inc. Rules-based transaction prefetching using connection end-point proxies
JP2006235736A (ja) 2005-02-22 2006-09-07 Ricoh Co Ltd クラスタシステムのキャッシュ同期制御方法
US8103764B2 (en) * 2008-10-14 2012-01-24 CacheIQ, Inc. Method and apparatus for matching trigger pattern
GB201004449D0 (en) * 2010-02-22 2010-05-05 Corbett Sean Data accelerator
US8661449B2 (en) * 2011-06-17 2014-02-25 Microsoft Corporation Transactional computation on clusters
US8977561B2 (en) * 2011-12-06 2015-03-10 Toshiba Global Commerce Solutions Holding Corporation Caching item information in a cloud-based point of sale system
WO2013086225A1 (en) * 2011-12-06 2013-06-13 Seven Networks, Inc. A mobile device and method to utilize the failover mechanisms for fault tolerance provided for mobile traffic management and network/device resource conservation
US9166862B1 (en) * 2012-12-19 2015-10-20 Amazon Technologies, Inc. Distributed caching system
US20150019686A1 (en) * 2013-07-12 2015-01-15 Seven Networks, Inc. Distributed caching systems with configurable extended caching optimization
US9635024B2 (en) * 2013-12-16 2017-04-25 F5 Networks, Inc. Methods for facilitating improved user authentication using persistent data and devices thereof
US20160371355A1 (en) * 2015-06-19 2016-12-22 Nuodb, Inc. Techniques for resource description framework modeling within distributed database systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003242016A (ja) * 2002-02-14 2003-08-29 Nippon Telegr & Teleph Corp <Ntt> 情報処理システムおよびその情報システムで使用されるサーバ装置ならびにクライアント装置と、プログラムおよび情報処理方法
US20040128328A1 (en) * 2002-12-31 2004-07-01 International Business Machines Corporation Method and apparatus for relaxed transactional isolation in a client-server caching architecture
WO2007063945A1 (ja) * 2005-12-02 2007-06-07 International Business Machines Corporation データベースに対するアクセスを効率化するシステム、および、その方法
JP2010532052A (ja) * 2007-06-27 2010-09-30 マイクロソフト コーポレーション 入れ子トランザクションの親の不正な失敗への対処
JP2012155498A (ja) * 2011-01-25 2012-08-16 Fujitsu Ltd データベースサーバ装置、データベース更新方法及びデータベース更新プログラム
JP2013045356A (ja) * 2011-08-25 2013-03-04 Nec Corp トランザクション同時実行制御システム、トランザクション同時実行制御方法、およびプログラム

Also Published As

Publication number Publication date
US10284649B2 (en) 2019-05-07
JPWO2014192213A1 (ja) 2017-02-23
US20160119425A1 (en) 2016-04-28
WO2014192213A1 (ja) 2014-12-04

Similar Documents

Publication Publication Date Title
US11681684B2 (en) Client-driven commit of distributed write transactions in a database environment
US9946745B2 (en) Lock-free transactional support for large-scale storage systems
US8868514B2 (en) Transaction support for distributed data
US9959178B2 (en) Transactional and parallel log replay for asynchronous table replication
US8694733B2 (en) Slave consistency in a synchronous replication environment
US9146944B2 (en) Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls
JP6079876B2 (ja) 分散処理システム
US10114848B2 (en) Ensuring the same completion status for transactions after recovery in a synchronous replication environment
US8429134B2 (en) Distributed database recovery
CN106575238B (zh) 支持页面隐式锁的共享存储架构中的并发控制
CN110196856B (zh) 一种分布式数据读取方法及装置
US9411869B2 (en) Replication between sites using keys associated with modified data
US7996360B2 (en) Coordinating updates to replicated data
CN111241061A (zh) 状态数据库的写入方法、数据处理装置及存储介质
US8600962B2 (en) Transaction processing device, transaction processing method, and transaction processing program
CN107533474A (zh) 一种事务处理方法及装置
US20160019121A1 (en) Data transfers between cluster instances with delayed log file flush
US20150169356A1 (en) Transaction processing system
CN107832121B (zh) 一种应用于分布式串行长事务的并发控制方法
CN102193987A (zh) 基于oltp的增加节点数据关系的方法及系统
US20110214130A1 (en) Data processing system, data processing method, and data processing program
CN116339931A (zh) 基于细粒度事务修复的分布式并发控制方法及系统
JP2017054207A (ja) データベース制御プログラム、データベース制御方法及びデータベース制御装置
US20070276945A1 (en) Fault-Tolerant Resource Committal
CN117435574A (zh) 改进的二阶段提交事务实现方法及系统、设备、存储介质

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170102

R150 Certificate of patent or registration of utility model

Ref document number: 6079876

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees