WO2015186191A1 - データ管理システム及びデータ管理方法 - Google Patents

データ管理システム及びデータ管理方法 Download PDF

Info

Publication number
WO2015186191A1
WO2015186191A1 PCT/JP2014/064739 JP2014064739W WO2015186191A1 WO 2015186191 A1 WO2015186191 A1 WO 2015186191A1 JP 2014064739 W JP2014064739 W JP 2014064739W WO 2015186191 A1 WO2015186191 A1 WO 2015186191A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
determination unit
unit
consistency
determination
Prior art date
Application number
PCT/JP2014/064739
Other languages
English (en)
French (fr)
Inventor
勝博 福中
展之 山本
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/064739 priority Critical patent/WO2015186191A1/ja
Priority to US15/125,715 priority patent/US10545949B2/en
Priority to JP2016524971A priority patent/JP6271003B2/ja
Publication of WO2015186191A1 publication Critical patent/WO2015186191A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/186Passive fault masking when reading multiple copies of the same data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results

Definitions

  • the present invention relates to a computer system that stores and multiplexes data in a plurality of servers to ensure availability.
  • Patent Document 1 In a multiplexing method in which data is stored in a plurality of servers, a technique using a distributed agreement algorithm (for example, Patent Document 1) is known to ensure data consistency.
  • PAXOS Paxos algorithm
  • original data is stored as a master in a master computer
  • duplicated data is treated as a slave, and stored in a plurality of slave computers.
  • Number of processes n 2f + 1 Represented as: From the above, at least two communications are required between the computers (master and slave), and the allowable failure number e is less than n / 2.
  • the allowable failure number e is the number of processes (or computers) that can maintain the minimum number of communications (latency) even if a failure occurs.
  • the latency is the minimum number of communication ⁇ from when the client requests data update (or reference) to the master computer until the slave computer reaches an agreement (guarantees data consistency).
  • Non-Patent Documents 1 and 2 A technique for ensuring latency while ensuring consistency has been proposed (for example, Non-Patent Documents 1 and 2).
  • the present invention has been made in view of the above-described problems. While suppressing an increase in the number of servers (or the number of processes), requesting the server to update (or referencing) data, data consistency can be achieved.
  • the purpose is to reduce the number of communications until guaranteeing.
  • the present invention is a data management system having a plurality of servers each including a processor, a memory, and a storage device, receiving and storing data by the plurality of servers, and multiplexing and holding the data.
  • a first determination unit that determines consistency of the multiplexed data, and an allowable fault of the server more than the first determination unit when determining consistency of the multiplexed data.
  • the second determination unit having a large number but a large number of minimum communications between the servers to determine the consistency of the data, and the consistency of the data from the first determination unit or the second determination unit
  • the combination unit that outputs the data that guarantees the consistency
  • the data output by the combination unit Comprising a data storage unit for pay, a.
  • an increase in the number of servers (number of processes) is suppressed, and a decrease in the number of allowable faults of the server is suppressed. Can do.
  • FIG. 1 is a block diagram illustrating an example of a computer system that performs distributed data management according to a first embodiment of this invention.
  • FIG. It is a block diagram which shows a 1st Example of this invention and shows an example of a server. It is a sequence diagram which shows a 1st Example of this invention and shows an example of the distributed data management performed with a server. It is a figure which shows the 1st Example of this invention and shows the priority of algorithm selection. It is a figure which shows the 1st Example of this invention and compares the performance of each algorithm. It is a flowchart which shows a 1st Example of this invention and shows an example of the process performed by each server.
  • FIG.6 S4 It is a flowchart which shows a 1st Example of this invention and shows an example of the process-saving 1 step agreement process performed by FIG.6 S4. It is a flowchart which shows a 1st Example of this invention and shows an example of 2 step agreement processing performed by FIG.6 S5. It is a flowchart which shows a 1st Example of this invention and shows an example of the combination process performed by FIG.6 S6. It is a flowchart which shows the 2nd Example of this invention and shows an example of the combination process by all the orders. It is a block diagram which shows the 3rd Example of this invention and shows an example of the transmission / reception part of each server by a partial order.
  • FIG. 1 is a block diagram showing an example of a computer system that performs distributed data management.
  • Servers 1-1 to 1-n are connected to clients 3-1, 3-2 via network 2.
  • the servers 1-1 to 1-n constitute a distributed data management system that distributes and stores data received from the clients 3-1, 3-2.
  • the generic name of the servers 1-1 to 1-n is represented by reference numeral 1
  • the generic term of the clients 3-1 and 3-2 is represented by reference numeral 3.
  • FIG. 2 is a block diagram showing an example of the configuration of the server 1-1. Since the servers 1-2 to 1-n have the same configuration, a duplicate description is omitted.
  • the server 1-1 includes a computer that includes a processor 11 that performs operations, a memory 12 that stores programs and data, a storage device 14 that stores data and programs, and an interface 13 that is connected to the network 2 and performs communication. It is.
  • the memory 12 outputs a transmission / reception unit 110 that transmits and receives data via the interface 13, an update unit 130 that determines the identity (consistency) of the received data and the data of another server 1, and an update unit 130.
  • a data storage unit 140 for storing the data is stored.
  • the data storage unit 140 may be set in the storage device 14 or may be set in both the storage device 14 and the memory 12.
  • the updating unit 130 executes a two-step agreement algorithm and a two-step agreement algorithm, and a saving process one-step agreement unit 210 that executes a saving process one-step agreement algorithm to determine the identity of the received data and the data of another server 1.
  • a low-latency agreement algorithm execution unit 200 including a two-step agreement unit 220, a PAXOS agreement unit 230 that executes a PAXOS algorithm as an auxiliary agreement algorithm, and outputs of the reduced process one-step agreement unit 210 and the two-step agreement unit 220 are combined to output a deterministic value for which consistency is guaranteed.
  • the functional units of the transmission / reception unit 110, the process-saving 1-step agreement unit 210, the 2-step agreement unit 220, the PAXOS agreement unit 230, and the combination unit 240 constituting the update unit 130 are loaded into the memory 12 as programs.
  • the processor 11 operates as a functional unit that provides a predetermined function by processing according to a program of each functional unit.
  • the processor 11 functions as the transmission / reception unit 110 by processing according to the transmission / reception program, and functions as the combination unit 240 by processing according to the combination program.
  • the processor 11 also operates as a functional unit that provides each function of a plurality of processes executed by each program.
  • a computer and a computer system are an apparatus and a system including these functional units.
  • Information such as programs and tables for realizing each function of the server 1-1 is stored in a storage device 14, a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), or an IC card, SD card, DVD Etc., and can be stored in a computer readable non-transitory data storage medium.
  • a storage device 14 a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), or an IC card, SD card, DVD Etc.
  • the transmitting / receiving unit 110 transmits the data received by the server 1-1 to the other servers 1-2 to 1-n. Thereafter, the transmission / reception unit 110 receives the update request data transmitted from half of all the servers 1-2 to 1-n, transmits the received data to the update unit 130, and the update unit 130 determines the identity of the data. Judgment is made.
  • the update unit 130 outputs data that is guaranteed to be consistent with the data of other servers 1 and writes the data in the data storage unit 140.
  • the update unit 130 transmits an update completion response to the client 3 and completes the update process.
  • the configuration of the client 3 is a computer including a processor, a memory, an interface, and a storage device (not shown).
  • the client 3 executes an application that requests the server 1 to register, update, and reference data.
  • the configuration of the update unit 130 will be described. As described above, the data received by the transmission / reception unit 110 from the client 3 and the data of the client 3 received by another server 1 are input to the update unit 130.
  • the update unit 130 inputs these data to the process-saving 1-step agreement unit 210 (first determination unit) and the 2-step agreement unit 220 (second determination unit), respectively, and the identity (or consistency) of the data. ) Is executed.
  • the process-saving one-step agreement unit 210 outputs a definite value, an estimated value, or a resolved value as an identity determination result.
  • the two-step agreement unit 220 outputs a definite value, an estimated value, or a resolved value as the identity determination result.
  • the combination unit 240 inputs these fixed values, estimated values, or solution values.
  • a definite value (agreement value) that guarantees consistency for the input data.
  • the definite value is data in which identity (or consistency) is guaranteed, and the agreed value is data agreed with other servers 1 for identity, and consistency is guaranteed between the servers 1.
  • the combination unit 240 inputs the estimated value or the data (solution value) received from the client 3 to the PAXOS agreement unit 230 (third determination unit or auxiliary agreement unit), and other servers
  • the PAXOS agreement unit 230 of 1 is communicated to calculate a definite value.
  • the update unit 130 acquires the confirmed value of the PAXOS agreement unit 230 and outputs the confirmed value as the agreed value.
  • the update unit 130 stores the agreement value output from the combination unit 240 or the PAXOS agreement unit 230 in the data storage unit 140, and transmits a response indicating completion of the data update to the client 3-1.
  • FIG. 15 is a block diagram illustrating an example of the process-saving one-step agreement unit 210.
  • the determination of data identity (consistency) by the process-saving one-step agreement algorithm and the solution method when the identity is not guaranteed (hereinafter referred to as collision) are the same as the one-step agreement algorithm of Non-Patent Document 1. It is as follows.
  • ⁇ Identity of data Definite values always match.
  • Collision resolution If there is a possibility that a definite value exists in any one of the servers 1, the estimated value always matches the definite value.
  • the transmission / reception units 110 of the servers 1-1 to 1-5 in FIG. 1 are the transmission / reception units 1 to 5, and the update units 130 of the servers 1-1 and 1-5 are the update units 1 and 5.
  • the transmission / reception units 1 to 4 receive data “A” from the client 3
  • the transmission / reception unit 5 receives data “B” from the client 3.
  • the saving process 1-step agreement unit 210 that executes the saving process 1-step agreement algorithm divides the transmission / reception units 1 to 5 into two quorums, a definite quorum and an estimated quorum, and the update unit 1 and the update unit An example of seeking with the agreement of 5 is shown. Note that quorum indicates a subset of elements that execute distributed processing.
  • Qe be the number of transmission / reception units 110 (server 1) constituting the definite quorum
  • Qf be the number of transmission / reception units 110 (server 1) constituting the estimated quorum.
  • n is the total number of transmission / reception units 110 (server 1).
  • an arbitrary deterministic quorum needs to include a majority of any estimated quorum, and Qe + (Qf / 2)> n.
  • the quorum size that satisfies this is Minimum integer Qe such that Qe ⁇ (3/4) n Smallest integer Qf such that Qf> n / 2 It becomes.
  • the majority is the smallest integer greater than n / 2.
  • the determination method of the definite value and the estimated value is as follows. -If all data values match within the definite quorum, the value is output as the deterministic value; otherwise, empty is output as the definite value. • If it cannot be determined that a definite quorum exists, nothing is output as the definite value. -If the value of the data of a majority part or more matches within the estimated quorum, the value is output to the estimated value, otherwise, the sky is output to the estimated value.
  • the method of determining the solution value when a collision occurs is the same as the one-step consensus algorithm and is as follows. If the estimated value is not empty, the estimated value is output as a resolved value, and if it is empty, any one of the input data is set as the resolved value. It should be noted that the identity can be ensured by executing a PAXOS agreement with the other update unit 130 for the solution value and the estimated value.
  • the quorum process including the transmission / reception unit 1 is executed by the update unit 1 of the server 1, but the process may be executed by the update unit n of another server 1 -n.
  • FIG. 16 is a block diagram illustrating an example of the two-step agreement unit 220.
  • the data identity determination by the two-step agreement algorithm and the collision resolution method in which the identity is not guaranteed are the same as the above-described process-saving one-step agreement algorithm (and the one-step agreement algorithm).
  • the transmission / reception units 110 of the servers 1-1 to 1-5 in FIG. 1 are the transmission / reception units 1 to 5, and the update units 130 of the servers 1-1 and 1-5 are the update units 1 and 5.
  • the two-step agreement unit 220 shown in FIG. 1 is divided into a front-stage unit 220-A and a rear-stage unit 220-B, and the front-stage unit 220-A of the servers 1-1 to 1-5 is divided into the front-stage unit 1 ⁇ 5, the server 1-1 and the rear stage 220-B of the server 1-5 are displayed as the rear stage 1 and the rear stage 5.
  • FIG. 16 shows an example in which the consensus value is determined by the rear stage unit 1 of the server 1-1 and the rear stage unit 5 of the server 1-5.
  • the transmission / reception units 1 to 4 receive data “A” from the client 3, and the transmission / reception unit 5 receives data “B” from the client 3.
  • the transmission / reception units 1 to 5 are divided into a plurality of selected quorums, the pre-stage units 1 to 5 are divided into two count quorums, and the update units 1 and 5 perform processing.
  • An example is shown. Although illustration is omitted, the input of the front stage unit 2 is the data received by the selected quorum of the transmission / reception units 2, 3, 4 and the input of the front stage unit 3 is the data received by the transmission / reception units 1, 3, 4 The input of the pre-stage unit 4 is data received by the transmission / reception units 1, 2 and 4.
  • the selected quorum of the transmission / reception units 1 to 5 and the counting quorum of the front stage units 1 to 5 are set as follows.
  • any selected quorums must overlap each other, and more than half are required. Therefore, the size of the selected quorum is the smallest integer exceeding n / 2.
  • the size of the counting quorum is the smallest integer exceeding n / 2.
  • the first-stage units 1 to 5 of the two-step agreement unit 220 transmit the received data to the first-stage units 1 to 5 for each selected quorum.
  • the selection value is empty.
  • the determination method of the definite value and the estimated value in the rear stage portions 1 and 5 is as follows. -If all the data matches within the counting quorum, the value is output as the final value. If there is non-empty data in the counting quorum, that value is used as an estimated value, otherwise, empty is output as an estimated value.
  • the solution value determination method is the same as in the one-step agreement. If the estimated value is not empty, it is an estimated value, and if it is empty, it is an arbitrary one of the input data. It should be noted that the identity can be ensured by executing a PAXOS agreement with the other update unit 130 for the solution value and the estimated value.
  • FIG. 3 is a sequence diagram showing an example of distributed data management performed by the server 1 of the present invention.
  • the client 3-1 transmits an update request for data A to the servers 1-1 to 1-n by multicast.
  • the multicast transmission from the client 3-1 to each server 1 may be performed by a management computer (not shown).
  • the transmission / reception unit 110 of each server 1 transmits the data received from the client 3-1 to the other server 1 by multicast (M2 in the figure).
  • the server 1 transmits data received from half of all the servers 1 to the update unit 130, and performs identity determination.
  • the update unit 130 inputs the definite quorum (or estimated quorum) data shown in FIG. 15 to the process-saving one-step agreement unit (SP1-STEP in FIG. 3) 210. Further, the updating unit 130 inputs the data of the selected quorum (or counting quorum) shown in FIG.
  • the process-saving one-step agreement unit 210 when all 3/4 of the input data match (when all the data input from the fixed quorum match), the data is determined as a fixed value (determined value). . Further, the saving process 1-step agreement unit 210 divides the data when half of the input data matches the majority of the data, that is, when the majority of the data input from the estimated quorum matches. Estimated value. On the other hand, in cases other than the above, an arbitrary input value such as data received from the client 3 is output as a solution value.
  • the two-step consensus unit 220 calculates a final value, an estimated value, or a solution value from the data of the quorum selected by the front-stage unit 220-A (2-STEP (1) in FIG. 3), and the post-stage unit 220 for each count quorum.
  • -B (2-STEP (2) in FIG. 3) is transmitted (M3).
  • the rear stage 220-B when all the data input from the counting quorum match, the data is output as a definite value. Further, when the data input from the counting quorum partially matches, the rear stage unit 220-B uses the data as an estimated value. On the other hand, in cases other than the above, an arbitrary input value such as data received from the client 3 is output as a solution value.
  • FIG. 4 is a diagram showing a priority order for selecting an agreement algorithm.
  • one entry is composed of the priority 2401 and the feature 2402 describing the contents to be selected. This priority order is held in the condition setting unit 120.
  • the combination unit 240 selects, as the first priority, either the final value of the reduced process 1-step agreement unit 210 or the final value of the 2-step agreement unit 220 as an agreed value (agreement final value).
  • the fixed value of the process-saving one-step agreement unit 210 is a value obtained by matching the data received from 3/4 (determined quorum) of the server 1.
  • the final value of the two-step agreement unit 220 is a value obtained by matching the data received by the latter stage unit 220-B from 1/2 (count quorum) of the server 1.
  • the combination unit 240 selects the estimated value of the two-step agreement unit 220 as the second priority.
  • This estimated value is a partially matched value (a partially matched value among the data received from the counting quorum) among the data received from the half of the server 1 by the subsequent stage unit 220-B of the 2-step agreement unit 220.
  • the combination unit 240 selects the estimated value of the process-saving one-step agreement unit 210 as the third priority.
  • This estimated value is a value in which the majority of the data received from 1/2 of the server 1 by the process-saving one-step consensus unit 210 (a value in which the majority of the data received from the estimated quorum is matched).
  • the combination unit 240 selects one of the solution values of the reduced process 1-step agreement unit 210 or the 2-step agreement unit 220 as the fourth priority.
  • the combination unit 240 selects the output of the process-saving 1-step agreement unit 210 or the 2-step agreement unit 220 in accordance with the priority order shown in FIG. 4, and then outputs the selected data as it is if it is a definite value.
  • the combination unit 240 selects an estimated value or a resolved value, it is necessary to make an agreement with another server 1. For this reason, the combination unit 240 inputs the selected estimated value or resolution value to the PAXOS agreement unit 230 and determines the agreed value of data with the other server 1.
  • the updating unit 130 stores the agreement value output from the combination unit 240 or the agreement value output from the PAXOS agreement unit 230 in the data storage unit 140 as data whose identity is guaranteed with each server 1. To do. In addition, the update unit 130 responds to the client 3-1 that data storage is completed.
  • the two consensus algorithms of the process-saving one-step consensus unit 210 and the two-step consensus unit 220 are combined, and further, the PAXOS consensus unit 230 agrees when a definite value cannot be obtained from these two consensus algorithms. Get the value.
  • the minimum number of communication times from when the client 3 requests the server 1 to update (or refer to) data until the agreement is reached at the server 1 is reduced. Can be reduced.
  • FIG. 5 is a diagram for comparing the performance of each consensus algorithm.
  • the name 3001 of the agreement algorithm the number of processes n3002 indicating the number of computers for storing data necessary to guarantee data consistency, and the minimum until an agreement is obtained between the client 3 and the server 1
  • One entry is composed of the allowable failure number e3003 capable of maintaining the communication frequency and the minimum communication frequency ⁇ 3004 until the client 3 agrees with the server 1.
  • the required number of processes 3002 is f in which the number of data copies for ensuring data consistency is f, and the number of computers storing data is the number n of processes.
  • the allowable failure number e3003 that can maintain the minimum number of communication ⁇ is the highest in availability because PAXOS and two steps are the maximum, e ⁇ n / 2.
  • the process-saving 1 step has the lowest availability with e ⁇ n / 4 and the lowest.
  • the allowable failure number e3003 in one step is larger than the one step in process saving, but is smaller than the allowable failure number e in PAXOS and two steps.
  • this is a one-time communication in response to a data update request from the client 3-1, and the transmission / reception unit 110 of each server 1 transmits the received data to the other server 1 twice. (M2).
  • the agreement value between the servers 1 can be obtained by a total of two communications.
  • the required number of processes n3002 is less than 1 step
  • n 2f + 1 equivalent to PAXOS
  • the allowable failure number e is E ⁇ n / 2, which is equivalent to PAXOS
  • the minimum communication count ⁇ is smaller than PAXOS, which is two times equivalent to one step.
  • the allowable number of failures e equivalent to PAXOS can be maintained while reducing the computer resources (number of processes n) compared to one step, and further, the minimum number of communications ⁇ equivalent to one step can be secured. .
  • FIG. 6 is a flowchart illustrating an example of processing performed in each server. This process is executed when a data update request (or reference request or registration request) is received from the client 3.
  • the server 1 receives data included in the update request transmitted by multicast from the client 3 (S1).
  • the server 1 transmits the received data to the other server 1 by multicast (S2).
  • the server 1 receives the data transmitted by the client 3 from half of all the servers 1 (S3).
  • step S4 the server 1 inputs the data received from half of all the servers 1 received in step S3 to the reduced process 1-step agreement process in step S4 and the 2-step agreement process in step S5, respectively.
  • step S4 the process of the above-described reduced process 1 step agreement unit 210 is executed as shown in FIG.
  • step S5 the above-described processing of the two-step agreement unit 220 is executed as shown in FIG.
  • the example of illustration shows the example which performs a process-saving 1 step agreement process (S4) and a 2 step agreement process (S5) in parallel, you may perform sequentially.
  • step S6 the processing of the combination unit 240 described above is executed as shown in FIG.
  • step S ⁇ b> 7 the update unit 130 of the server 1 determines whether or not an agreement is confirmed by outputting a confirmed value from either the saving process 1-step agreement process or the 2-step agreement process. If the agreement is confirmed, the process proceeds to step S8, and the confirmed value output by the combination unit 240 is determined as the agreed value.
  • step S7 the update unit 130 proceeds to step S9, inputs the estimated value or the solution value output from the combination unit 240 to the PAXOS agreement unit 230, and Execute the agreement process.
  • step S ⁇ b> 10 the update unit 130 receives an output from the PAXOS agreement unit 230 and determines it as an agreement value.
  • the update unit 130 stores the agreed value determined in step S8 or step S10 in the data storage unit 140 and responds to the client 3 that the update is completed.
  • FIG. 7 is a flowchart showing an example of a process-saving one-step agreement process performed in step S4 of FIG. This process is executed by the process-saving one-step agreement unit 210 of the update unit 130.
  • the update unit 130 waits until data is received from 1/2 of all servers 1 (estimated quorum) (S11). When the update unit 130 receives data from 1 ⁇ 2 of all the servers 1 constituting the estimated quorum, the update unit 130 determines whether or not these data all match (S12). If all the data match, the process proceeds to step S13, and if not, the process proceeds to step S16.
  • step S13 the update unit 130 waits until data is received from 3/4 units (determined quorum) of all servers 1.
  • the update unit 130 determines whether or not these data all match (S14). If all the data match, the process proceeds to step S15, and if not, the process proceeds to step S17.
  • step S15 since all data of the estimated quorum and all data of the confirmed quorum match, the update unit 130 determines the received data as a confirmed value.
  • step S16 in the case where all the data do not match in the determination in step S12, the update unit 130 determines whether or not the majority of the data matches the data received by the server 1. If the majority of the data match, the process proceeds to step S17, and if not, the process proceeds to step S18.
  • step S17 the update unit 130 determines data having a majority match as an estimated value. On the other hand, if a majority of the data does not match in the estimated quorum, the updating unit 130 determines the data as a preset solution value in step S18. As the solution value, data received by the server 1 can be used.
  • step S19 the updating unit 130 outputs the data determined in any of the above steps S15, S17, and S18 to the combination unit 240.
  • the updating unit 130 can obtain a definite value or an estimated value based on the data received by the estimated quorum and the deterministic quorum according to the process-saving one-step consensus algorithm.
  • FIG. 8 is a flowchart illustrating an example of the two-step agreement process performed in step S5 of FIG. This process is executed by the two-step agreement unit 220 of the update unit 130.
  • the updating unit 130 waits until the preceding unit 220-A receives data from 1/2 of all servers 1 (selected quorum) (S21). When the update unit 130 receives data from 1 ⁇ 2 of all the servers 1 constituting the selected quorum, the update unit 130 determines whether the data received by the server 1 matches all of these data (S22). If all the data match, the process proceeds to step S23, and if not, the process proceeds to step S24.
  • step S23 the data received from the other server 1 by the front stage unit 220-A is transmitted to the rear stage unit 220-B of each server 1.
  • step S24 in which all the data of the selected quorum do not match, the pre-stage unit 220-A transmits empty data to the post-stage unit 220-B of each server 1.
  • step S25 the process waits until the rear stage unit 220-B receives data from 1/2 of all servers 1 (counting quorum) (S25).
  • the update unit 130 determines whether or not the data received by the server 1 matches all these data (S26). If all the data match, the process proceeds to step S27, and if not, the process proceeds to step S28.
  • step S28 it is determined whether all the data received by the post-stage unit 220-B is empty data. If all the data received by the post-stage unit 220-B is not empty, the updating unit 130 proceeds to step S29 and determines any data as an estimated value.
  • step S30 the process proceeds to step S30, and the data is determined as a preset solution value.
  • the solution value data received by the server 1 can be used.
  • step S31 the update unit 130 outputs the data determined in any of the above steps S27, S29, and S30 to the combination unit 240.
  • the updating unit 130 can obtain a definite value or an estimated value based on the data received by the selected quorum and the counting quorum by the two-step agreement algorithm.
  • FIG. 9 is a flowchart showing an example of processing of the combination unit 240 performed in step S6 of FIG.
  • the combination unit 240 receives the output of the process-saving 1-step agreement process (S4) and the 2-step agreement process (S5) (S41).
  • the combination unit 240 determines whether there is a definite value in either the output of the process-saving 1-step agreement process or the output of the 2-step agreement process (S5) (S42). If a definite value exists in any output, the process proceeds to step S43, and if not, the process proceeds to step S45.
  • step S43 the combination unit 240 selects a fixed value from the output of either the process-saving 1-step agreement process or the 2-step agreement process.
  • step S44 the determined value selected by the combination unit 240 is set as the agreed value.
  • step S45 the combination unit 240 determines whether or not an estimated value exists in the output of the two-step agreement process. If an estimated value exists, the process proceeds to step S46, and if not, the process proceeds to step S47.
  • step S46 the combination unit 240 selects the estimated value of the two-step consensus process and proceeds to step S50.
  • step S47 the combination unit 240 determines whether or not an estimated value exists in the output of the process-saving one-step agreement (S1-STEP in the drawing) process. If the estimated value exists, the process proceeds to step S48, and if not, the process proceeds to step S49.
  • step S48 the combination unit 240 selects the estimated value of the process-saving one-step consensus process and proceeds to step S50.
  • step S49 the combination unit 240 selects a solution value and proceeds to step S50.
  • the solution value a value set in advance by the combination unit 240 or a value received by the transmission / reception unit 110 may be used.
  • step S50 the value selected by the combination unit 240 in any of steps S46, S45, and S49 is input to the PAXOS agreement unit 230.
  • step S51 the PAXOS agreement unit 230 calculates and outputs an agreement value with another server 1.
  • the PAXOS consensus unit 230 is the same as that of the above-mentioned prior art example 1 and will not be described in detail here.
  • step S52 the combination unit 240 sets the determined value of the PAXOS agreement unit 230 as the agreed value.
  • step S53 the combination unit 240 outputs the agreed value obtained in any one of steps S44 and S52.
  • the combination unit 240 of the updating unit 130 can set the fixed value of either the process-saving 1-step agreement unit 210 or the 2-step agreement unit 220 as the agreement value.
  • the agreement value can be obtained from the PAXOS agreement unit 230 with the estimated value or the solution value as an input.
  • the required number of processes n is smaller than the one-step consensus algorithm and can be set to a value equivalent to PAXOS.
  • the allowable failure number e of the present invention maintains e ⁇ n / 2 that is equivalent to that of PAXOS, and the minimum communication count ⁇ is smaller than that of PAXOS, which is twice that of the one-step agreement algorithm.
  • the PAXOS agreement unit 230 calculates the agreement value, but the PAXOS agreement unit 230 frequently executes the agreement value. As a result, the latency increases.
  • the update unit 130 executes the process-saving 1-step agreement unit 210 and the 2-step agreement unit 220.
  • the agreement value may be calculated only by the PAXOS agreement unit 230.
  • the update unit 130 may stop the execution of the saving process 1-step agreement unit 210 and the 2-step agreement unit 220, or input data to the saving process 1-step agreement unit 210 and the 2-step agreement unit 220. You may stop.
  • FIG. 10 is a flowchart illustrating an example of processing performed by the combination unit 240 when data from the client 3 is processed in all orders according to the second embodiment.
  • the second embodiment is obtained by changing the processing of the combination unit 240 of the first embodiment, and other configurations are the same as those of the first embodiment.
  • the whole order indicates that the data received by each transmission / reception unit 110 is compared each time.
  • data with higher priority is available, data with lower priority is discarded, and data consistency is guaranteed by using only data with higher priority.
  • the process of FIG. 10 is executed by the process of the combination unit in step S6 shown in FIG. 6 of the first embodiment.
  • step S61 the combination unit 240 waits until an output result of either the process-saving 1-step agreement process (S1-STEP in the figure) or the 2-step agreement process (2-STEP in the figure) is input.
  • the combination unit 240 determines whether the output result is a definite value and an output of the process-saving one-step consensus process with a high priority (S62). The combination unit 240 determines that the agreement has been confirmed if the value is a confirmed value from the high-priority reduced-process one-step agreement process, and proceeds to step S70. On the other hand, the combination unit 240 proceeds to step S63 when it is other than a fixed value such as a two-step agreement having a low priority order or an estimated value, and waits until the other output result is input (S63). .
  • the combination part 240 will determine whether it is a definite value, if the other output result is received (S64). If the received output result is a definite value, since the deterministic value is input from each of the two-step consensus process and the saving process one-step consensus process (first priority order), the combination unit 240 determines that the consensus has been confirmed. Determine and proceed to step S70. In step S70, the combination unit 240 outputs the confirmed value for which the agreement has been confirmed in steps S62 and S64 as the agreed value. On the other hand, the combination part 240 progresses to step S65, when the input output result is not a definite value.
  • step S65 the combination unit 240 refers to the output result of the two-step agreement process, and determines in step S66 whether the value is an estimated value. If the output result is the estimated value of the two-step consensus process having the second priority, the combination unit 240 proceeds to step S71 and inputs the estimated value to the PAXOS consensus unit 230. On the other hand, when the output result is not the estimated value of the two-step agreement process, the process proceeds to step S67.
  • step S67 the combination unit 240 refers to the output result of the process-saving one-step consensus process, and determines in step S68 whether the value is an estimated value. If the output result is the estimated value of the process-saving one-step consensus process with the third priority, the combination unit 240 proceeds to step S71 and inputs the estimated value to the PAXOS consensus unit 230. On the other hand, if the output result is not the estimated value of the process-saving one-step consensus process, the process proceeds to step S69.
  • step S69 the combination unit 240 refers to the input of the saving process 1-step consensus processing or the input of the 2-step consensus processing (input from the client 3 or input from the pre-stage unit 220-A of the other server 1). Select one of these inputs.
  • step S71 the combination unit 240 inputs the estimated value referred to in steps S66 and S68 or the input selected in step S69 to the PAXOS agreement unit 230, and calculates an agreement value with each server 1. .
  • step S72 the output from the PAXOS agreement unit 230 is output as an agreement value.
  • the output of both the reduced process 1-step agreement process and the 2-step agreement process is shown.
  • the reduced process 1-step agreement process and the output of the 2-step agreement are output. Executed when either one is received.
  • the updating unit 130 sets the priority order for the definite value (determination result), and when the deterministic value with the higher priority order can be acquired, the determination result with the lower priority order is discarded. Then, the update unit 130 guarantees data consistency with only a fixed value having a higher priority.
  • FIGS. 11 to 14 show a third embodiment of the present invention, in which data from the client 3 is processed in a partial order.
  • FIG. 11 is a block diagram illustrating an example of data received by the transmission / reception unit 110 of each server 1 when processing data from the client 3 in a partial order according to the third embodiment of this invention.
  • transmission / reception units 1 to n are components of the servers 1-1 to 1-n, and each transmission / reception unit 110 can store a plurality of data in the order of arrival.
  • a buffer 115 is included.
  • Other configurations are the same as those of the first embodiment.
  • the update units 130-1 and 130-2 in FIG. 11 are components of the servers 1-1 and 1-2.
  • the update unit 130 processes the input data.
  • the final result is the same for all the update units 130 of the servers 1.
  • the data of the update unit 130 of each server 1 is changed by changing the order of the data transmitted from the transmission / reception unit 110 to the update unit 130.
  • the occurrence of collision is reduced by making these coincide with each other.
  • the partial order processing is not a set of data transmitted by the client 3-1 by multicast, but all data in the buffer 115 as long as the transmission / reception unit 110 of the server 1 receives data whose order can be exchanged.
  • the order in which data having the same number of quorums (5 in the example shown in the figure) is transmitted to the updating unit 130 as a determined value is determined.
  • collision is resolved when data whose order is not exchangeable is received.
  • FIG. 12 is a block diagram showing an example of a computer system that resolves data collisions in a partial order process.
  • FIG. 12 shows an example in which a partial order process is applied in the process-saving one-step agreement unit 210, the two-step agreement unit 220 (the front-stage unit 220-A and the rear-stage unit 220-B), and the combination unit 240 to solve the data collision. Indicates.
  • transmission / reception units 110-1 to 110-5 and pre-stage units 1 to 5 indicate components of servers 1 to 5, and update units 130-1 and 130-5 of server 1 and server 5 An example of an agreement is shown. Note that the transmission / reception units 110-1 to 110-5 each have the buffers 115 that hold a plurality of data in the input order as described above.
  • Data “C”, “B”, and “A” are held in the buffers 115 of the transmission / reception units 110-1 and 110-2, and the data “C” and “A” are stored in the buffer 115 of the transmission / reception unit 110-3.
  • “B” are held
  • data “C”, “b”, “a” are held in the buffer 115 of the transmission / reception unit 110-4
  • data “A” is held in the buffer 115 of the transmission / reception unit 110-5.
  • “A” is retained.
  • the data in the buffers 115 of the transmission / reception units 110-1 and 101-2 are the same, and in the buffer 115 of the transmission / reception units 110-3 to 110-5, the data “A”, “C”, “a”, “ b "collides.
  • the estimated values of the process-saving one-step agreement unit 210 of the server 1 are “C”, “B”, and “A”, and the estimated values of the two-step agreement unit 220 are “C” and “A”.
  • the estimated values of the process-saving one-step agreement unit 210 of the server 5 are “C”, “a”, and “b”, and the estimated values of the two-step agreement unit 220 are “C” and “A”.
  • the estimated value of the two-step agreement unit 220 (hereinafter referred to as the two-step (2-STEP) estimation value) and the estimated value of the saving process one-step agreement unit 210 (hereinafter referred to as one step (S1 in the diagram)).
  • -STEP) Estimated values are determined respectively. Then, as described later, the 2-step estimated value and the 1-step estimated value are output to the combination unit 240 in this order.
  • the combination unit 240 combines the input two-step estimated value and the one-step estimated value, inputs the combined estimated value to the PAXOS agreement unit 230 that is an auxiliary agreement unit, and makes an agreement with another server 1.
  • the updating unit 130 again separates the result of the agreement, which is the output of the PAXOS agreement unit 230, into a two-step estimated value and a one-step estimated value, and outputs them to each updating unit 130 in this order.
  • the one-step estimated value may be transmitted first, even though the data A has already been transmitted to the updating unit 130-1.
  • the data a whose order cannot be exchanged with the data A is transmitted to the update unit 130-5 first, and the consistency of the data is lost.
  • a one-step estimated value is determined next to the two-step estimated value, and a PAXOS agreement (auxiliary agreement) is performed using an estimated value obtained by combining these values.
  • auxiliary agreement is performed using an estimated value obtained by combining these values.
  • FIG. 13 is a flowchart illustrating an example of a partial order process performed by the combination unit 240.
  • FIG. 14 is a flowchart illustrating an example of processing performed in the collision resolution processing S84 of FIG.
  • step S81 the combination unit 240 waits for input of either a confirmed value from the saving process 1-step agreement unit 210, a confirmed value from the 2-step agreement unit 220, or a collision determination value.
  • the collision determination value is an estimated value or a resolved value (or indefinite or arbitrary value), and is an input from either the process-saving 1-step agreement unit 210 or the 2-step agreement unit 220.
  • the combination unit 240 determines whether the received data is a collision determination value (S82). If a collision determination value is input, the process proceeds to step S84. If a confirmed value is input, the process proceeds to step S83.
  • step S83 the combination unit 240 outputs the accepted fixed value as an agreed value, and returns to step S81 to repeat the process.
  • step S84 the combination unit 240 executes the collision resolution process shown in FIG. 14, resolves the collision, and returns to step S81 to repeat the process.
  • step S91 the combination unit 240 acquires an estimated value from the two-step agreement unit 220 having a high priority.
  • the combination unit 240 sets the estimated value as the estimated value set 2. If there is no estimated value from the two-step agreement unit 220, the estimated value set 2 is set as an empty set and the process proceeds to the next step.
  • step S92 the combination unit 240 acquires the estimated value from the low-process 1-step agreement unit 210 having a high priority.
  • the combination unit 240 sets a portion obtained by removing the data of the estimated value set 2 set in step S91 from the estimated value as an estimated value set 1. If there is no estimated value from the reduced process 1-step agreement unit 210, the estimated value set 1 is set as an empty set and the process proceeds to the next step.
  • step S93 the combination unit 240 acquires a solution value from the low-process 1-step agreement unit 210 having a low priority.
  • the combination unit 240 obtains an indefinite set by subtracting the estimated value set 1 set in step S92 and the estimated value set 2 set in step S91 from the solution value. And If there is no solution value from the reduced process 1-step agreement unit 210, the indefinite set is set as an empty set and the process proceeds to the next step.
  • step S94 the combination unit 240 inputs the estimated value set 1, the estimated value set 2, and the indefinite set to the PAXOS agreement unit 230 in this order, and causes the other server 1 to execute the PAXOS agreement.
  • step S95 the PAXOS agreement unit 230 sets the PAXOS agreed value corresponding to the estimated value set 1 as the collisionless set 1, the PAXOS agreed value corresponding to the estimated value set 2 as the collisionless set 2, and the PAXOS corresponding to the indefinite set. Output the agreed value as a collision set.
  • step S96 the updating unit 130 first outputs a collision-free set 2 corresponding to the estimated value set 2.
  • step S97 the update unit 130 outputs a collision-free set 1 corresponding to the estimated value set 1.
  • step S97 the update unit 130 outputs the collision set corresponding to the indefinite set in a predetermined order.
  • the combination unit 240 constituting the update unit 130 can resolve the collision and guarantee the consistency of data based on the PAXOS agreement.
  • the description of the indefinite set and the collision set is omitted.
  • the same processing as in FIG. 14 may be performed.
  • the updating unit 130 sets a priority order for the determination result, and when a definite value (determination result) with the highest priority order cannot be obtained, the determination result with the lower priority order is used. Ensure data consistency. In addition, it is desirable to use all the determination results with lower priority.
  • the configuration of the computer, the processing unit, and the processing unit described in the present invention may be partially or entirely realized by dedicated hardware.
  • the various software exemplified in the present embodiment can be stored in various recording media (for example, non-transitory storage media) such as electromagnetic, electronic, and optical, and through a communication network such as the Internet. It can be downloaded to a computer.
  • recording media for example, non-transitory storage media
  • a communication network such as the Internet. It can be downloaded to a computer.
  • the present invention is not limited to the above-described embodiments, and includes various modifications.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a storage medium storing a program for controlling a server, A first determination unit for determining consistency of multiplexed data; a first step of determining consistency of received data; Although the allowable number of failures of the server is smaller than that of the first determination unit, the second determination unit having a large minimum number of communication times between the servers in order to determine the consistency of the data.
  • a second step of determining sex When the data consistency determination result is received from the first determination unit or the second determination unit, and the determination result includes data that guarantees the consistency, the consistency is guaranteed.
  • a non-transitory computer-readable storage medium storing a program for causing the server to execute the program.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Hardware Redundancy (AREA)

Abstract

 プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、データを多重化するデータ管理システムであって、サーバは、多重化されたデータの一貫性を判定する第1の判定部と、多重化されたデータの一貫性を判定する際に、前記第1の判定部よりもサーバの許容故障数は大きいが、データの一貫性を判定するためにサーバ間の最小通信回数が多い第2の判定部と、第1の判定部または第2の判定部からデータの一貫性の判定結果を受け付けて、判定結果が一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する組み合わせ部と、組み合わせ部が出力したデータを格納するデータ格納部と、を備える。

Description

データ管理システム及びデータ管理方法
 本発明は、データを複数のサーバに格納して多重化し、可用性を確保する計算機システムに関する。
 インメモリ型分散KVS(Key Value Store)等の分散データ管理システムでは、サーバに障害が発生したときにデータが消失するのを防止するため、データを複数のサーバに分散して格納し、可用性を確保している。
 データを複数のサーバに格納する多重化において、データの一貫性を保証するには、分散合意アルゴリズム(例えば、特許文献1)を利用する手法が知られている。特許文献1に開示されるPaxosアルゴリズム(以下、PAXOSとする)では、オリジナルデータをマスタとしてマスタ計算機に格納し、複製したデータをスレーブとして扱い、複数のスレーブ計算機に格納する。
 PAXOSにおいて、多重化したデータの一貫性を保証するためには、データの複製数をfとし、データを格納する計算機の数をプロセス数nとすると、
プロセス数n=2f+1
として表される。上記より、最低でも計算機(マスタとスレーブ)間で2回の通信が必要となり、許容故障数eはn/2未満である。なお、許容故障数eは、障害が発生しても最小通信回数(レイテンシー)を維持可能なプロセス(または計算機)の数である。また、レイテンシーは、クライアントがデータの更新(または参照)をマスタ計算機に要求してから、スレーブ計算機で合意に達する(データの一貫性を保証する)までの最小の通信回数δとする。
 Paxosでは、スレーブを格納するスレーブ計算機の一部の故障や遅延は隠蔽できるが、マスタ計算機の故障または遅延を隠蔽できないので、常時低レイテンシーを求める分散データ管理システムでは障害発生時の通信回数の増大によるレイテンシーの増大が課題となる。
 そこで、マスタとスレーブの関係を排除し、各計算機にデータを送信し、各計算機が受信したデータを更に相互に送受信し、各計算機が相互に送受信したデータの値の同一性を判定することで、一貫性を保証しつつ、レイテンシーを確保する技術が提案されている(例えば、非特許文献1、2)。
米国特許第5,261,085号明細書
Francisco Brasileiro, Fabiola Greve, Achour Mostefaoui, Michel Raynal著、Consensus In One Communication Step、"Parallel Computing Technologies"、Springer Berlin Heidelberg刊、2001年発行、第42~50頁 Michael Ben-Or著, Another Advantage of Free Choice: Completely Asynchronous Agreement Protocols (Extended Abstract)、PODC '83 Proceedings of the second annual ACM symposium on Principles of distributed computing、1983年発行、第27~30頁
 しかしながら、上記従来例の非特許文献1では、データの一貫性を保証したまま低レイテンシーを実現するために、Paxosより必要なプロセス数を増やすことで実現している。このため、合意に至るまでの通信回数を低減できるものの、プロセス数がn=3f+1と増大するのに加え、最小の通信回数を維持可能な許容故障数eはn/3未満に減少する、という問題があった。また、Paxosでは、マスタ計算機の故障や遅延を隠蔽できない、という問題があった。
 そこで本発明は、上記問題点に鑑みて成されたもので、サーバ(またはプロセス数)の増大を抑制しながらも、データの更新(または参照)をサーバに要求してから、データの一貫性を保証するまでの通信回数を低減することを目的とする。
 本発明は、プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、前記データを多重化して保持するデータ管理システムであって、前記サーバは、前記多重化された前記データの一貫性を判定する第1の判定部と、前記多重化された前記データの一貫性を判定する際に、前記第1の判定部よりも前記サーバの許容故障数は大きいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部と、前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する組み合わせ部と、前記組み合わせ部が出力した前記データを格納するデータ格納部と、を備える。
 本発明によれば、サーバ(プロセス数)の増大を抑制し、サーバの許容故障数の低減を抑制しながらも、データを受け付けてからデータの一貫性を保証するまでの通信回数を低減することができる。
本発明の第1の実施例を示し、分散データ管理を行う計算機システムの一例を示すブロック図である。 本発明の第1の実施例を示し、サーバの一例を示すブロック図である。 本発明の第1の実施例を示し、サーバで行われる分散データ管理の一例を示すシーケンス図である。 本発明の第1の実施例を示し、アルゴリズム選択の優先順位を示す図である。 本発明の第1の実施例を示し、各アルゴリズムの性能を比較する図である。 本発明の第1の実施例を示し、各サーバで行われる処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、図6のステップS4で行われる省プロセス1ステップ合意処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、図6のステップS5で行われる2ステップ合意処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、図6のステップS6で行われる組み合わせ処理の一例を示すフローチャートである。 本発明の第2の実施例を示し、全順序による組み合わせ処理の一例を示すフローチャートである。 本発明の第3の実施例を示し、半順序による各サーバの送受信部の一例を示すブロック図である。 本発明の第3の実施例を示し、半順序による衝突解決の一例を示す計算機システムのブロック図である。 本発明の第3の実施例を示し、組み合わせ部で行われる半順序処理の一例を示すフローチャートである。 本発明の第3の実施例を示し、図13の衝突解決で行われる処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、省プロセス1ステップ合意部の一例を示すブロック図である。 本発明の第1の実施例を示し、2ステップ合意部の一例を示すブロック図である。
 以下、本発明の一実施形態について添付図面を用いて説明する。
 図1は、分散データ管理を行う計算機システムの一例を示すブロック図である。サーバ1-1~1-nはネットワーク2を介してクライアント3-1、3-2に接続される。サーバ1-1~1-nは、クライアント3-1、3-2から受け付けたデータを分散して格納する分散データ管理システムを構成する。なお、以下の説明ではサーバ1-1~1-nの総称を符号1で表し、クライアント3-1、3-2の総称を符号3で表す。
 図2は、サーバ1-1の構成の一例を示すブロック図である。なお、サーバ1-2~1-nも同様の構成であるので、重複した説明は省略する。サーバ1-1は、演算を行うプロセッサ11と、プログラムやデータを保持するメモリ12と、データやプログラムを格納するストレージ装置14と、ネットワーク2に接続されて通信を行うインターフェース13と、を含む計算機である。
 メモリ12には、インターフェース13を介してデータの送受信を行う送受信部110と、受信したデータと他のサーバ1のデータの同一性(一貫性)を判定する更新部130と、更新部130が出力したデータを格納するデータ格納部140が保持される。なお、データ格納部140はストレージ装置14に設定されてもよいし、ストレージ装置14とメモリ12の双方に設定されてもよい。
 更新部130は、受信したデータと他のサーバ1のデータの同一性を判定するために、省プロセス1-ステップ合意アルゴリズムを実行する省プロセス1ステップ合意部210と、2ステップ合意アルゴリズムを実行する2ステップ合意部220と、を含む低レイテンシー合意アルゴリズム実行部200と、補助的な合意アルゴリズムとしてPAXOSアルゴリズムを実行するPAXOS合意部230と、省プロセス1ステップ合意部210と2ステップ合意部220の出力を組み合わせて一貫性が保証された確定値を出力する組み合わせ部240が含まれる。
 送受信部110と、更新部130を構成する省プロセス1ステップ合意部210と、2ステップ合意部220と、PAXOS合意部230と、組み合わせ部240の各機能部はプログラムとしてメモリ12にロードされる。
 プロセッサ11は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ11は、送受信プログラムに従って処理することで送受信部110として機能し、組み合わせプログラムに従って処理することで組み合わせ部240として機能する。他のプログラムについても同様である。さらに、プロセッサ11は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
 サーバ1-1の各機能を実現するプログラム、テーブル等の情報は、ストレージ装置14や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
 送受信部110は、クライアント3からデータの更新要求を受信すると、当該サーバ1-1が受信したデータを他のサーバ1-2~1-nへ送信する。その後、送受信部110は、全てのサーバ1-2~1-nの半数から送信された更新要求のデータを受信し、受信したデータを更新部130へ送信し、更新部130がデータの同一性の判定を行う。
 そして、更新部130は、他のサーバ1のデータと一貫性が保証されたデータを出力し、データ格納部140へ書き込む。更新部130は、書き込みが完了するとクライアント3に更新完了の応答を送信し、更新処理を完了する。
 クライアント3の構成は、図示しないプロセッサと、メモリと、インターフェース及びストレージ装置を含む計算機である。クライアント3は、サーバ1に対してデータの登録、更新、参照を要求するアプリケーションを実行する。
 次に、更新部130の構成について説明する。更新部130には、上記したように送受信部110がクライアント3から受信したデータと、他のサーバ1が受信したクライアント3のデータが入力される。
 更新部130では、これらのデータを省プロセス1ステップ合意部210(第1の判定部)と、2ステップ合意部220(第2の判定部)へそれぞれ入力してデータの同一性(または一貫性)の判定を実行する。
 省プロセス1ステップ合意部210は、同一性の判定結果として確定値または推定値あるいは解決値を出力する。2ステップ合意部220は、同一性の判定結果として確定値または推定値あるいは解決値を出力する。組み合わせ部240はこれらの確定値または推定値、解決値を入力する。
 組み合わせ部240は、クライアント3から受信したデータと、他のサーバ1へ送信されたクライアント3のデータが同一であると判定した場合、入力されたデータについて一貫性を保証した確定値(合意値)としてデータ格納部140へ出力する。確定値は同一性(または一貫性)が保証されたデータであり、合意値は同一性について他のサーバ1との間で合意したデータで、サーバ1間で一貫性が保証される。
 一方、確定値が得られない場合、組み合わせ部240は推定値またはクライアント3から受け付けたデータ(解決値)をPAXOS合意部230(第3の判定部または補助合意部)へ入力し、他のサーバ1のPAXOS合意部230と通信を行って、確定値を演算する。そして、更新部130は、PAXOS合意部230の確定値を取得し、当該確定値を合意値として出力する。
 更新部130は、組み合わせ部240またはPAXOS合意部230が出力した合意値をデータ格納部140へ格納し、データの更新が完了した応答をクライアント3-1へ送信する。
 <省プロセス1ステップ合意部>
 図15は、省プロセス1ステップ合意部210の一例を示すブロック図である。省プロセス1ステップ合意アルゴリズムによるデータの同一性(一貫性)の判定と、同一性が保証されない場合(以下、衝突とする)の解決手法は、前記非特許文献1の1ステップ合意アルゴリズムと同様で、次の通りである。
・データの同一性:確定値同士は必ず一致する。
・衝突の解決:確定値がいずれかのサーバ1に存在する可能性がある場合、推定値は必ず前記確定値と一致する。(確定値がいずれかのサーバ1に存在する可能性がある場合、確定値と一致する推定値が必ず存在し、解決値(推定値)となる)。それ以外の場合、解決値は入力データ(あるいは提案)の値の中の任意の一つと一致する。
 図15は、図1のサーバ1-1~1-5の各送受信部110を送受信部1~5とし、サーバ1-1と1-5の更新部130を更新部1、5とした例を示す。図示の例では送受信部1~4が、クライアント3からデータ「A」を受信し、送受信部5が、クライアント3からデータ「B」を受信した例を示す。
 省プロセス1ステップ合意アルゴリズムを実行する省プロセス1ステップ合意部210では、送受信部1~5を確定クォーラムと推定クォーラムの2つのクォーラムに分け、各クォーラムのデータの同一性を更新部1と更新部5の合意で求める例を示す。なお、クォーラムは、分散処理を実行する要素の部分集合を示す。
 次に、確定クォーラムを構成する送受信部110(サーバ1)の数をQeとし、推定クォーラムを構成する送受信部110(サーバ1)の数をQfとする。
 上述のデータの同一性の要件から、任意の確定クォーラム同士は互いに必ず重なる必要があり、Qe>n/2となる。なお、nは送受信部110(サーバ1)の総数である。
 また、上記衝突の解決の要件から、任意の確定クォーラムは、任意の推定クォーラムの過半数部分を包含する必要があり、Qe+(Qf/2)>nとなる。ここで、省プロセス1ステップ合意アルゴリズムの目的は、Qf>n/2とすることであるので、これを満たすクォーラムサイズは、
Qe≧(3/4)n となる最小の整数Qe
Qf>n/2 となる最小の整数Qf
となる。なお、過半数はn/2より大きい最小の整数とする。
 確定値と推定値の決定方法は、次の通りである。
・確定クォーラム内で、全てのデータの値が一致すればその値を確定値に出力し、そうでなければ空、を確定値に出力。
・確定クォーラムが存在することが判定できない場合、確定値には何も出力されない。
・推定クォーラム内で、ある過半数部分以上のデータの値が一致すればその値を推定値に出力し、そうでなければ空を推定値に出力。
 衝突が発生した際の解決値の決定方法は、1ステップ合意アルゴリズムと同様で、次の通りである。
・推定値が空でなければ推定値を解決値として出力し、空であれば入力されたデータの中の任意の一つを解決値とする。なお、解決値や推定値について他の更新部130とPAXOS合意を実施することで、同一性を確保することができる。
 なお、図示の例では、送受信部1を含むクォーラムの処理をサーバ1の更新部1で実行する例を示したが、他のサーバ1-nの更新部nで処理を実行してもよい。
 <2ステップ合意部>
 図16は、2ステップ合意部220の一例を示すブロック図である。2ステップ合意アルゴリズムによるデータの同一性の判定と、同一性が保証されない衝突の解決手法は、上述の省プロセス1ステップ合意アルゴリズム(及び1ステップ合意アルゴリズム)と同様である。
 図16は、図1のサーバ1-1~1-5の各送受信部110を送受信部1~5とし、サーバ1-1と1-5の更新部130を更新部1、5とする。また、図16では、図1に示した2ステップ合意部220を前段部220-Aと後段部220-Bに分割し、サーバ1-1~1-5の前段部220-Aを前段部1~5とし、サーバ1-1とサーバ1-5の後段部220-Bを後段部1と後段部5として表示した。なお、図16においては、サーバ1-1の後段部1と、サーバ1-5の後段部5で合意値を決定する例を示す。また、図16の例では送受信部1~4が、クライアント3からデータ「A」を受信し、送受信部5が、クライアント3からデータ「B」を受信した例を示す。
 2ステップ合意アルゴリズムを実行する2ステップ合意部220では、送受信部1~5を複数の選択クォーラムに分け、前段部1~5を2つの計数クォーラムに分けて、更新部1、5で処理を行う例を示す。なお、図示は省略するが、前段部2の入力は送受信部2、3、4の選択クォーラムが受信したデータであり、前段部3の入力は送受信部1、3、4が受信したデータであり、前段部4の入力は送受信部1、2、4が受信したデータである。
 次に、送受信部1~5の選択クォーラムと、前段部1~5の計数クォーラムは、次のように設定する。
 上記データの同一性の要件から、任意の選択クォーラム同士は互いに必ず重なる必要があり、過半数以上必要である。従って、選択クォーラムのサイズはn/2を超える最小の整数となる。
 また、上記衝突の解決の要件から、任意の計数クォーラム同士は互いに必ず重なる必要があり、過半数以上必要である。従って、計数クォーラムのサイズはn/2を超える最小の整数となる。
 クライアント3-1からデータを受信すると2ステップ合意部220の前段部1~5は、各選択クォーラム毎に前段部1~5へ受信したデータを送信する。
 前段部1~5では、受信した選択クォーラム内のデータの値が、全て一致すれば、選択値として決定する。一方、それ以外の場合は、選択値を空とする。
 次に、後段部1、5における確定値と推定値の決定方法は次の通りである。
・計数クォーラム内で、全てのデータが一致すれば、その値を確定値に出力する。
・計数クォーラム内で、空でないデータが存在すればその値を推定値とし、そうでなければ空を推定値として出力する。
 解決値の決定方法 は、1ステップ合意と同様であり、推定値が空でなければ推定値、空であれば入力されたデータの中の任意の一つ、とする。なお、解決値や推定値について他の更新部130とPAXOS合意を実施することで、同一性を確保することができる。
 <処理の概要>
 図3は、本発明のサーバ1で行われる分散データ管理の一例を示すシーケンス図である。図示の例ではクライアント3-1がデータAの更新要求をサーバ1-1~1-nへマルチキャストで送信する例を示す。なお、クライアント3-1から各サーバ1へのマルチキャストによる送信は、図示しない管理計算機などが行っても良い。
 各サーバ1の送受信部110は、クライアント3-1から受信したデータを他のサーバ1へマルチキャストで送信する(図中M2)。サーバ1は、全てのサーバ1の半数から受信したデータを更新部130へ送信し、同一性の判定を行う。
 更新部130は、図15に示した確定クォーラム(または推定クォーラム)のデータを省プロセス1ステップ合意部(図3のSP1-STEP)210へ入力する。また、更新部130は、図16に示した選択クォーラム(または計数クォーラム)のデータを2ステップ合意部220へ入力する。
 省プロセス1ステップ合意部210では、入力されたデータのうち3/4が全て一致した場合(確定クォーラムから入力されたデータが全て一致した場合)、当該データを確定した値(確定値)とする。また、省プロセス1ステップ合意部210は、入力されたデータの1/2で、過半数のデータが一致した場合、すなわち推定クォーラムから入力されたデータのうち過半数のデータが一致した場合、当該データを推定値とする。一方、上記以外の場合には、クライアント3から受信したデータ等の任意の入力値を解決値として出力する。
 次に、2ステップ合意部220では、前段部220-A(図3の2-STEP(1))選択クォーラムのデータから確定値、推定値または解決値を演算し、計数クォーラム毎に後段部220-B(図3の2-STEP(2))へ送信する(M3)。
 後段部220-Bでは、計数クォーラムから入力されたデータが全て一致した場合、当該データを確定値として出力する。また、後段部220-Bは、計数クォーラムから入力されたデータが部分一致した場合、当該データを推定値とする。一方、上記以外の場合には、クライアント3から受信したデータ等の任意の入力値を解決値として出力する。
 次に、更新部130では、省プロセス1ステップ合意部210と2ステップ合意部220の出力が組み合わせ部240へ入力される。組み合わせ部240は、図4に示すように予め設定された優先順位に従って省プロセス1ステップ合意部210または2ステップ合意部220の出力を選択する。なお、図4は、合意のアルゴリズムを選択する優先順位を示す図である。図4は、優先順位2401と、選択する内容を記載した特徴2402からひとつのエントリが構成される。この優先順位は、条件設定部120に保持される。
 まず、組み合わせ部240は、第1の優先順位として、省プロセス1ステップ合意部210の確定値または2ステップ合意部220の確定値のいずれかを合意値(合意確定値)として選択する。
 なお、省プロセス1ステップ合意部210の確定値は、サーバ1の3/4(確定クォーラム)から受信したデータが一致した値である。また、2ステップ合意部220の確定値は、後段部220-Bがサーバ1の1/2(計数クォーラム)から受信したデータが一致した値である。
 組み合わせ部240は、第2の優先順位として、2ステップ合意部220の推定値を選択する。この推定値は、2ステップ合意部220の後段部220-Bがサーバ1の1/2から受信したデータのうち部分一致した値(計数クォーラムから受信したデータのうち部分一致した値)である。
 また、組み合わせ部240は、第3優先順位として、省プロセス1ステップ合意部210の推定値を選択する。この推定値は、省プロセス1ステップ合意部210がサーバ1の1/2から受信したデータのうち過半数が一致した値(推定クォーラムから受信したデータのうち過半数が一致した値)である。
 組み合わせ部240は、第4優先順位として、省プロセス1ステップ合意部210または2ステップ合意部220のいずれかの解決値を選択する。
 組み合わせ部240は、図4の優先順位に従って省プロセス1ステップ合意部210または2ステップ合意部220の出力を選択した後、選択したデータが確定値であればそのまま出力する。
 一方、組み合わせ部240は、推定値または解決値を選択した場合には、他のサーバ1との間で合意を行う必要がある。このため、組み合わせ部240は選択した推定値または解決値をPAXOS合意部230へ入力して他のサーバ1との間でデータの合意値を決定する。
 そして、更新部130は、組み合わせ部240から出力された合意値またはPAXOS合意部230から出力された合意値を、各サーバ1との間で同一性が保証されたデータとしてデータ格納部140へ格納する。また、更新部130は、データの格納が完了したことをクライアント3-1へ応答する。
 このように、本発明では、省プロセス1ステップ合意部210と2ステップ合意部220の2つの合意アルゴリズムを組み合わせ、さらに、これら2つの合意アルゴリズムから確定値が得られないときにはPAXOS合意部230によって合意値を得る。これにより、プロセス数(または計算機数)の増大を抑制しながらも、クライアント3がデータの更新(または参照)をサーバ1に要求してから、サーバ1で合意に達するまでの最小の通信回数を低減することができる。
 図5は、各合意アルゴリズムの性能を比較する図である。図5では、合意のアルゴリズムの名称3001と、データの一貫性を保証するために必要なデータを格納する計算機の数を示すプロセス数n3002と、クライアント3からサーバ1間で合意を得るまでの最小通信回数を維持可能な許容故障数e3003と、クライアント3からサーバ1間で合意するまでの最小通信回数δ3004からひとつのエントリが構成される。
 まず、必要なプロセス数3002は、データの一貫性を保証するためのデータの複製数をfとし、データを格納する計算機の数をプロセス数nとしたもので、前記従来例に示した1ステップ合意アルゴリズムが最大のn=3f+1となる。
 次に、最小通信回数δを維持可能な許容故障数e3003は、PAXOSと2ステップがe<n/2と最大であり、最も可用性が高い。これに対して省プロセス1ステップは、e≦n/4と最小となる、最も可用性が低い。また、1ステップの許容故障数e3003は、省プロセス1ステップよりも大となるが、PAXOSと2ステップの許容故障数eよりは小さい。
 次に、最小通信回数δは、クライアント3の要求からサーバ1間での合意に至るまでの通信回数で、省プロセス1ステップと1ステップが最小でδ=2となる。これは、図3で示したように、クライアント3-1からデータの更新要求で1回の通信となり、各サーバ1の送受信部110は受信したデータを他のサーバ1へ送信することで2回の通信となる(M2)。そして、省プロセス1ステップ合意部210(または1ステップ)で、確定値が得られれば合計2回の通信でサーバ1間の合意値を得られることができる。
 一方、2ステップでは、上記サーバ1間での通信(M2)の後、前段部220-Aの結果を各後段部220-Bへ送信するため、最低でも3回の通信が必要となる。PAXOSでも同様に最低でも3回の通信が必要となる。
 本発明では、省プロセス1ステップ合意部210と、2ステップ合意部220を組み合わせることで、必要なプロセス数n3002は、1ステップよりも少なく、PAXOSと同等のn=2f+1で、許容故障数eは、PAXOSと同等のe<n/2で1ステップよりも可用性が高く、かつ最小通信回数δは、PAXOSよりも小さく、1ステップと同等の2回となる。
 これにより、本発明では、1ステップよりも計算機資源(プロセス数n)を低減しながら、PAXOSと同等の許容故障数eを維持し、さらには、1ステップと同等の最小通信回数δを確保できる。これにより、分散データ管理システムの可用性を確保しながらレイテンシー(最小通信回数δ)を削減し、かつ、計算機資源が増大するのを抑制することができるのである。
 <処理の詳細>
 図6は、各サーバで行われる処理の一例を示すフローチャートである。この処理は、クライアント3からデータの更新要求(または参照要求や登録要求)を受信したときに実行される。
 まず、サーバ1は、クライアント3からマルチキャストで送信された更新要求に含まれるデータを受信する(S1)。次にサーバ1は、受信したデータを他のサーバ1へマルチキャストで送信する(S2)。サーバ1は、全てのサーバ1の半数からクライアント3が送信したデータを受信する(S3)。
 次に、サーバ1は、ステップS3で受信した全てのサーバ1の半数からのデータを、ステップS4の省プロセス1ステップ合意処理と、ステップS5の2ステップ合意処理へそれぞれ入力する。ステップS4では、上述した省プロセス1ステップ合意部210の処理が図7で示すように実行される。ステップS5では、上述した2ステップ合意部220の処理が図8で示すように実行される。なお、図示の例では、省プロセス1ステップ合意処理(S4)と2ステップ合意処理(S5)を並列して実行する例を示すが、順次実行しても良い。
 ステップS6では、上述した組み合わせ部240の処理が図9で示すように実行される。ステップS7では、サーバ1の更新部130が、省プロセス1ステップ合意処理または2ステップ合意処理の何れかから確定値が出力され、合意が確定したか否かを判定する。合意が確定していればステップS8へ進んで、組み合わせ部240が出力した確定値を合意値に決定する。
 一方、ステップS7の判定で合意が確定していなければ、更新部130は、ステップS9へ進んで、組み合わせ部240が出力した推定値または解決値をPAXOS合意部230へ入力し、サーバ1間での合意処理を実行させる。ステップS10では、更新部130がPAXOS合意部230から出力を受け付け、合意値として決定する。
 この後、更新部130は、ステップS8またはステップS10で決定した合意値をデータ格納部140へ格納し、クライアント3へ更新が完了したことを応答する。
 図7は、図6のステップS4で行われる省プロセス1ステップ合意処理の一例を示すフローチャートである。この処理は、更新部130の省プロセス1ステップ合意部210で実行される。
 更新部130は、全サーバ1の1/2台(推定クォーラム)からデータを受信するまで待機する(S11)。更新部130は、推定クォーラムを構成する全サーバ1の1/2台からデータを受信すると、これらのデータが全て一致したか否かを判定する(S12)。全てのデータが一致した場合にはステップS13へ進み、そうでない場合にはステップS16へ進む。
 ステップS13では、更新部130が、全サーバ1の3/4台(確定クォーラム)からデータを受信するまで待機する。更新部130は、確定クォーラムを構成する全サーバ1の3/4台からデータを受信すると、これらのデータが全て一致したか否かを判定する(S14)。全てのデータが一致した場合にはステップS15へ進み、そうでない場合にはステップS17へ進む。
 ステップS15では、推定クォーラムの全てのデータと、確定クォーラムの全てのデータが一致したので、更新部130は、受信したデータを確定値として決定する。
 一方、ステップS12の判定で、全てのデータが一致しない場合のステップS16では、更新部130が過半数のデータが当該サーバ1で受信したデータと一致したか否かを判定する。過半数のデータが一致していればステップS17へ進み、そうでない場合にはステップS18へ進む。
 ステップS17では、更新部130が、過半数が一致したデータを推定値として決定する。一方、推定クォーラムで過半数のデータが一致しない場合、更新部130は、ステップS18でデータを予め設定した解決値として決定する。なお、解決値は、当該サーバ1が受信したデータ等を用いることができる。
 次に、ステップS19で、更新部130は、上記ステップS15、S17、S18の何れかで決定したデータを組み合わせ部240へ出力する。
 上記処理により、省プロセス1ステップ合意アルゴリズムによる推定クォーラムと確定クォーラムが受信したデータに基づいて、更新部130は確定値または推定値を得ることができる。
 図8は、図6のステップS5で行われる2ステップ合意処理の一例を示すフローチャートである。この処理は、更新部130の2ステップ合意部220で実行される。
 更新部130は、全サーバ1の1/2台(選択クォーラム)から前段部220-Aがデータを受信するまで待機する(S21)。更新部130は、選択クォーラムを構成する全サーバ1の1/2台からデータを受信すると、当該サーバ1が受信したデータと、これらのデータが全て一致したか否かを判定する(S22)。全てのデータが一致した場合にはステップS23へ進み、そうでない場合にはステップS24へ進む。
 ステップS23では、前段部220-Aが他のサーバ1から受信したデータを、各サーバ1の後段部220-Bへ送信する。一方、選択クォーラムの全てのデータが一致しなかったステップS24では、前段部220-Aが各サーバ1の後段部220-Bへ空のデータを送信する。
 次に、ステップS25では、全サーバ1の1/2台(計数クォーラム)から後段部220-Bがデータを受信するまで待機する(S25)。更新部130は、計数クォーラムを構成する全サーバ1の1/2台からデータを受信すると、当該サーバ1が受信したデータと、これらのデータが全て一致したか否かを判定する(S26)。全てのデータが一致した場合にはステップS27へ進み、そうでない場合にはステップS28へ進む。
 ステップS28では、後段部220-Bが受信したデータは全て空のデータであるか否かを判定する。更新部130は、後段部220-Bが受信したデータが全て空でない場合には、ステップS29へ進んで、いずれかのデータを推定値として決定する。
 一方、後段部220-Bが受信したデータが全て空の場合には、ステップS30へ進んで、データは予め設定した解決値として決定する。なお、解決値は、当該サーバ1が受信したデータ等を用いることができる。
 次に、ステップS31で、更新部130は、上記ステップS27、S29、S30の何れかで決定したデータを組み合わせ部240へ出力する。
 上記処理により、2ステップ合意アルゴリズムによる選択クォーラムと計数クォーラムが受信したデータに基づいて、更新部130は確定値または推定値を得ることができる。
 図9は、図6のステップS6で行われる組み合わせ部240の処理の一例を示すフローチャートである。
 まず、組み合わせ部240は、省プロセス1ステップ合意処理(S4)と2ステップ合意処理(S5)の出力を受け付ける(S41)。組み合わせ部240は、省プロセス1ステップ合意処理の出力と、2ステップ合意処理(S5)の出力の何れかに確定値があるか否かを判定する(S42)。何れかの出力に確定値が存在する場合にはステップS43へ進み、そうでない場合にはステップS45へ進む。
 ステップS43で、組み合わせ部240は省プロセス1ステップ合意処理と2ステップ合意処理の何れかの出力から確定値を選択する。次に、ステップS44では、組み合わせ部240が選択した確定値を合意値とする。
 ステップS45で、組み合わせ部240は2ステップ合意処理の出力に推定値が存在するか否かを判定する。推定値が存在する場合には、ステップS46へ進み、そうでない場合にはステップS47へ進む。
 ステップS46で、組み合わせ部240は、2ステップ合意処理の推定値を選択してステップS50に進む。
 ステップS47で、組み合わせ部240は、省プロセス1ステップ合意(図中S1-STEP)処理の出力に推定値が存在するか否かを判定する。推定値が存在する場合には、ステップS48へ進み、そうでない場合にはステップS49へ進む。
 ステップS48で、組み合わせ部240は、省プロセス1ステップ合意処理の推定値を選択してステップS50に進む。一方、ステップS49では、組み合わせ部240が解決値を選択してステップS50に進む。ここで、解決値は、組み合わせ部240で予め設定された値や、送受信部110で受け付けた値などを用いればよい。
 次に、ステップS50では、ステップS46、S45、S49の何れかで組み合わせ部240が選択した値をPAXOS合意部230へ入力する。ステップS51では、PAXOS合意部230が他のサーバ1との間で合意値を演算して出力する。なお、PAXOS合意部230については、前記従来例の特許文献1等と同様であるのでここでは詳述しない。そして、ステップS52では、組み合わせ部240がPAXOS合意部230の確定値を合意値とする。
 そして、ステップS53では、上記ステップS44、S52の何れか一方で得られた合意値を組み合わせ部240が出力する。
 上記処理によって、更新部130の組み合わせ部240では、省プロセス1ステップ合意部210または2ステップ合意部220の何れかの確定値を合意値とすることができる。また、省プロセス1ステップ合意部210または2ステップ合意部220の双方で確定値が得られない場合には、推定値または解決値を入力としてPAXOS合意部230から合意値をえることができる。
 以上のように本実施例1では、省プロセス1ステップ合意部210と2ステップ合意部220を組み合わせ、さらに補助合意部としてPAXOS合意部230を採用することで、上述のように、必要なプロセス数nを1ステップ合意アルゴリズムよりも少なく、PAXOSと同等の値とすることができる。さらに、本発明の許容故障数eは、PAXOSと同等のe<n/2を維持し、かつ最小通信回数δは、PAXOSよりも小さく、1ステップ合意アルゴリズムと同等の2回となる。したがって、1ステップ合意アルゴリズムよりも計算機資源(プロセス数n)を低減しながら、PAXOSと同等の許容故障数eを維持し、さらには、1ステップ合意アルゴリズムと同等の最小通信回数δを確保できる。これにより、分散データ管理システムの可用性を確保しながらレイテンシー(最小通信回数)を削減し、かつ、計算機資源が増大するのを抑制することができるのである。また、本発明ではPAXOSのようにマスタ計算機を必要としないため、マスタ計算機の故障や遅延による影響を受けることがない。
 なお、省プロセス1ステップ合意部210または2ステップ合意部220の双方から確定値が出力されない場合には、PAXOS合意部230で合意値を演算することになるが、PAXOS合意部230が頻繁に実行されるとレイテンシーが増大する。
 この場合、単位時間(例えば、10秒ないし1分)内で所定の回数を超えてPAXOS合意部230を実行する場合、更新部130は省プロセス1ステップ合意部210及び2ステップ合意部220を実行せずにPAXOS合意部230のみで合意値を算出するようにしてもよい。この状況で更新部130は、省プロセス1ステップ合意部210及び2ステップ合意部220の実行を停止しても良いし、省プロセス1ステップ合意部210及び2ステップ合意部220へのデータの入力を停止してもよい。
 図10は、第2の実施例を示し、クライアント3からのデータを全順序で処理する場合に組み合わせ部240で行われる処理の一例を示すフローチャートである。本実施例2は、前記実施例1の組み合わせ部240の処理を変更したもので、その他の構成は前記実施例1と同様である。
 全順序は、各送受信部110が受信したデータをその都度比較することを示す。そして、本実施例2では、優先順位が上位のデータが入手できると、優先順位が下位のデータを破棄し、優先順位が上位のデータのみを利用してデータの一貫性を保証する。図10の処理は、前記第1の実施例の図6に示したステップS6の組み合わせ部の処理で実行される。
 組み合わせ部240は、ステップS61で、省プロセス1ステップ合意処理(図中S1-STEP)または2ステップ合意処理(図中2-STEP)の何れかの出力結果が入力されるまで待機する。
 組み合わせ部240は、出力結果が入力されると、当該出力結果が確定値で、かつ優先順位の高い省プロセス1ステップ合意処理の出力であるか否かを判定する(S62)。組み合わせ部240は、優先順位の高い省プロセス1ステップ合意処理からの確定値であれば合意が確定したと判定してステップS70に進む。一方、組み合わせ部240は、優先順位の低い2ステップ合意の確定値や、推定値などの確定値以外の場合にはステップS63へ進んで、他方の出力結果が入力されるまで待機する(S63)。
 組み合わせ部240は、他方の出力結果を受け付けると、確定値であるか否かを判定する(S64)。受け付けた出力結果が確定値であれば、2ステップ合意処理と省プロセス1ステップ合意処理(第1の優先順位)のそれぞれから確定値が入力されたので、組み合わせ部240は、合意が確定したと判定してステップS70に進む。ステップS70では、組み合わせ部240が、ステップS62、S64で合意が確定した確定値を合意値として出力する。一方、組み合わせ部240は、入力された出力結果が確定値でない場合にはステップS65へ進む。
 ステップS65では、組み合わせ部240が、2ステップ合意処理の出力結果を参照し、ステップS66で、推定値であるか否かを判定する。組み合わせ部240は、出力結果が第2の優先順位である2ステップ合意処理の推定値であれば、ステップS71へ進んで当該推定値をPAXOS合意部230へ入力する。一方、出力結果が2ステップ合意処理の推定値でない場合には、ステップS67へ進む。
 ステップS67では、組み合わせ部240が、省プロセス1ステップ合意処理の出力結果を参照し、ステップS68で、推定値であるか否かを判定する。組み合わせ部240は、出力結果が第3の優先順位である省プロセス1ステップ合意処理の推定値であれば、ステップS71へ進んで当該推定値をPAXOS合意部230へ入力する。一方、出力結果が省プロセス1ステップ合意処理の推定値でない場合には、ステップS69へ進む。
 ステップS69では、組み合わせ部240が、省プロセス1ステップ合意処理の入力または2ステップ合意処理の入力(クライアント3からの入力または他のサーバ1の前段部220-Aからの入力)を参照し、何れか一方の入力を選択する。そして、ステップS71では、組み合わせ部240が、上記ステップS66、S68で参照した推定値または、ステップS69で選択した入力をPAXOS合意部230へ入力し、各サーバ1との間で合意値を演算させる。そして、ステップS72では、PAXOS合意部230からの出力を合意値として出力する。
 前記第1の実施例では、省プロセス1ステップ合意処理と2ステップ合意処理の双方の出力を受け付ける例を示したが、本実施例2では、省プロセス1ステップ合意処理と2ステップ合意の出力の何れか一方を受け付けたときに実行する。
 この場合、他のサーバ1との通信回数が少ない省プロセス1ステップ合意処理で確定値が得られれば、この確定値を合意値とすることで、2ステップ合意処理を待たずに処理を完了することができ、処理の高速化を実現できる。
 換言すれば、更新部130では、確定値(判定結果)に優先順位を設定しておき、優先順位が上位の確定値が取得できると、優先順位が下位の判定結果を破棄する。そして、更新部130は優先順位が上位の確定値のみで、データの一貫性を保証する。
 図11~図14は、本発明の第3の実施例を示し、クライアント3からのデータを半順序で処理する例を示す。
 図11は、本発明の第3の実施例を示し、クライアント3からのデータを半順序で処理する場合、各サーバ1の送受信部110で受け付けたデータの一例を示すブロック図である。
 図11において、送受信部1~n(110-1~110-n)は、サーバ1-1~1-nの構成要素であり、各送受信部110は、複数のデータを到着順で格納可能なバッファ115を有する。その他の構成は、前記第1の実施例と同様である。なお、図11の更新部130-1、130-2は、サーバ1-1、1-2の構成要素である。
 ここで半順序処理は、入力されたデータが順序を交換可能であれば、各送受信部110が更新部130へ異なる順序でデータを配送しても、更新部130では入力されたデータを処理した最終的な結果が、すべてのサーバ1の更新部130で同じとなる。本実施例3は、データの順序を交換することでデータが一致する場合には、送受信部110が更新部130へ送信するデータの順序を変更することで、各サーバ1の更新部130のデータを一致させることで、衝突(データの不一致)の発生を低減させるものである。
 半順序処理は、クライアント3-1がマルチキャストで送信した一組のデータではなく、サーバ1の送受信部110が順序を交換可能なデータを受信している限り、バッファ115内のすべてのデータの中からクォーラムの個数(図示の例では5個)が一致するデータを確定値として更新部130へ送信する順序を決定する。半順序処理では、順序が交換可能でないデータを受信した場合に衝突の解決を行う。
 図11以後の図においては、同一の文字の大文字と小文字のデータ同士は順序を交換不可であり、それ以外は順序を交換可能として記述する。例えば、データAとデータaは順序の交換が不可であり、データAとデータB及びデータAとデータbは順序の交換が可能である。
 図12は、半順序処理でデータの衝突を解決する計算機システムの一例を示すブロック図である。図12は、省プロセス1ステップ合意部210と2ステップ合意部220(前段部220-A及び後段部220-B)及び組み合わせ部240で半順序処理を適用し、データの衝突の解決を行う例を示す。
 図12において、送受信部110-1~110-5、前段部1~5(220A)は、サーバ1~5の構成要素を示し、サーバ1とサーバ5の更新部130-1、130-5で合意を行う例を示す。なお、送受信部110-1~110-5は、上述のように複数のデータを入力順で保持するバッファ115をそれぞれ有する。
 送受信部110-1、110-2のバッファ115には、データ「C」、「B」、「A」が保持され、送受信部110-3のバッファ115には、データ「C」、「A」、「b」が保持され、送受信部110-4のバッファ115には、データ「C」、「b」、「a」が保持され、送受信部110-5のバッファ115には、データ「A」、「a」が保持される。
 上記では、送受信部110-1、101-2のバッファ115のデータは同一であり、送受信部110-3~110-5のバッファ115では、データ「A」、「C」、「a」、「b」が衝突する。
 この例では、サーバ1の省プロセス1ステップ合意部210の推定値は、「C」、「B」、「A」となり、2ステップ合意部220の推定値は「C」、「A」となる。同様に、サーバ5の省プロセス1ステップ合意部210の推定値は、「C」、「a」、「b」となり、2ステップ合意部220の推定値は「C」、「A」となる。
 衝突の解決では、2ステップ合意部220の推定値(以下、2ステップ(図中2-STEP)推定値とする)と省プロセス1ステップ合意部210の推定値(以下、1ステップ(図中S1-STEP)推定値とする)をそれぞれ決定する。そして、後述するように、2ステップ推定値と1ステップ推定値の順に組み合わせ部240へ出力する。
 組み合わせ部240では、入力された2ステップ推定値と1ステップ推定値を結合し、結合した推定値を補助合意部であるPAXOS合意部230へ入力し、他のサーバ1と合意を行う。
 更新部130は、PAXOS合意部230の出力である合意の結果を、再度、2ステップ推定値と1ステップ推定値に分離し、この順に各更新部130へ出力する。
 2ステップ推定値と1ステップ推定値の順序に従わないで出力すると、1ステップ推定値が先に送信される可能性があり、更新部130-1にデータAが送信済みであるにもかかわらず、更新部130-5にデータAと順序を交換できないデータaが先に送信され、データの一貫性を失うことになる。
 そこで、本発明では上述のように衝突が発生した場合には、2ステップ推定値の次に1ステップ推定値を決定し、これらを結合した推定値でPAXOS合意(補助合意)を行い、PAXOS合意の結果を再度、2ステップ推定値と、1ステップ推定値に分離し、この順序で出力する。
 以上の処理により、省プロセス1ステップ合意部210と2ステップ合意部220を組み合わせて半順序処理を行う際には、優先順位が最上位の合意したデータが取得できない場合には、優先順位が下位の値まで全てを使用して補助合意を行う。これにより、データの衝突が発生した場合でも、データの一貫性を保証することが可能となる。
 図13は、組み合わせ部240で行われる半順序処理の一例を示すフローチャートである。また、図14は、図13の衝突解決処理S84で行われる処理の一例を示すフローチャートである。
 組み合わせ部240は、まず、ステップS81で、省プロセス1ステップ合意部210からの確定値、または2ステップ合意部220からの確定値、あるいは衝突判定値の何れかの入力を待つ。なお、衝突判定値は、推定値または解決値(または不定あるいは任意の値)で、省プロセス1ステップ合意部210または2ステップ合意部220の何れかからの入力である。組み合わせ部240は、入力を受け付けると、受け付けたデータが衝突判定値であるか否かを判定する(S82)。衝突判定値が入力された場合にはステップS84へ進み、確定値が入力された場合にはステップS83へ進む。
 ステップS83では、組み合わせ部240が、受け付けた確定値を合意値として出力し、上記ステップS81に戻って処理を繰り返す。ステップS84では、組み合わせ部240が図14に示す衝突解決処理を実行し、衝突を解決した後に上記ステップS81に戻って処理を繰り返す。
 図14の衝突解決処理について以下に説明する。ステップS91では、組み合わせ部240が優先順位の高い、2ステップ合意部220からの推定値を取得する。2ステップ合意部220からの推定値が存在する場合、組み合わせ部240は、当該推定値を推定値集合2とする。なお、2ステップ合意部220からの推定値が存在しない場合には、推定値集合2を空集合として次のステップに進む。
 ステップS92では、組み合わせ部240が優先順位の高い、省プロセス1ステップ合意部210からの推定値を取得する。省プロセス1ステップ合意部210からの推定値が存在する場合、組み合わせ部240は、推定値からステップS91で設定した推定値集合2のデータを除いた部分を推定値集合1とする。なお、省プロセス1ステップ合意部210からの推定値が存在しない場合には、推定値集合1を空集合として次のステップに進む。
 ステップS93では、組み合わせ部240が優先順位の低い、省プロセス1ステップ合意部210からの解決値を取得する。省プロセス1ステップ合意部210からの解決値が存在する場合、組み合わせ部240は、解決値からステップS92で設定した推定値集合1とステップS91で設定した推定値集合2を除いた部分を不定集合とする。なお、省プロセス1ステップ合意部210からの解決値が存在しない場合には、不定集合を空集合として次のステップに進む。
 ステップS94では、組み合わせ部240が上記推定値集合1、推定値集合2、不定集合の順でPAXOS合意部230へ入力し、他のサーバ1との間でPAXOS合意を実行させる。
 ステップS95では、PAXOS合意部230が、推定値集合1に対応するPAXOS合意値を無衝突集合1と、推定値集合2に対応するPAXOS合意値を無衝突集合2と、不定集合に対応するPAXOS合意値を衝突集合として出力する。
 ステップS96では、更新部130は、まず、推定値集合2に対応する無衝突集合2を出力する。次に、ステップS97では、更新部130が、推定値集合1に対応する無衝突集合1を出力する。最後にステップS97では、更新部130が不定集合に対応する衝突集合を所定の順序で出力する。
 以上の処理により、更新部130を構成する組み合わせ部240は、衝突の解決を行ってPAXOS合意によるデータの一貫性を保証することができるのである。なお、図12では、不定集合及び衝突集合の記載を省略したが、不定集合が発生した場合には図14と同様に処理すればよい。
 換言すれば、更新部130では、判定結果に優先順位を設定しておき、優先順位が最上位の確定値(判定結果)が取得できない場合には、優先順位が下位の判定結果を利用してデータの一貫性を保証する。なお、優先順位が下位の判定結果は、全て利用することが望ましい。
 なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
 また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体(例えば、非一時的な記憶媒体)に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
 また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
<補足>
 サーバを制御するプログラムを格納した記憶媒体であって、
 多重化されたデータの一貫性を判定する第1の判定部で、受信したデータの一貫性を判定する第1のステップと、
 前記第1の判定部よりも前記サーバの許容故障数は小さいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部で、前記受信したデータの一貫性を判定する第2のステップと、
 前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する第3のステップと、
 前記一貫性が保証されたデータを格納する第4のステップと、
を前記サーバに実行させるプログラムを格納した非一時的計算機読み取り可能な記憶媒体。

Claims (16)

  1.  プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、前記データを多重化して保持するデータ管理システムであって、
     前記サーバは、
     前記多重化された前記データの一貫性を判定する第1の判定部と、
     前記多重化された前記データの一貫性を判定する際に、前記第1の判定部よりも前記サーバの許容故障数は大きいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部と、
     前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する組み合わせ部と、
     前記組み合わせ部が出力した前記データを格納するデータ格納部と、
    を備えることを特徴とするデータ管理システム。
  2.  請求項1に記載のデータ管理システムであって、
     前記第2の判定部は、
     前記データの一貫性の判定を行って第1の判定結果を出力する前段判定部と、
     他のサーバの前記前段判定部から前記第1の判定結果を受信し、複数の前記第1の判定結果から前記データの一貫性を判定し、第2の判定結果を出力する後段判定部と、を含み、
     前記組み合わせ部は、
     前記第1の判定部と第2の判定部の双方の判定結果が一貫性を保証できない場合には、前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータを出力することを特徴とするデータ管理システム。
  3.  請求項2に記載のデータ管理システムであって、
     前記第1の判定部は、
     全てのサーバの過半数から受信したデータに基づいて前記データの一貫性を判定し、
     前記組み合わせ部は、
     前記第2の判定部の後段判定部が前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合、前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータを出力することを特徴とするデータ管理システム。
  4.  請求項3に記載のデータ管理システムであって、
     前記組み合わせ部は、
     前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータがない場合には、前記第1の判定部または第2の判定部から所定の解決値を取得し、当該解決値を出力することを特徴とするデータ管理システム。
  5.  請求項2に記載のデータ管理システムであって、
     PAXOSアルゴリズムを用いて前記データの一貫性の判定を行う第3の判定部をさらに有し、
     前記組み合わせ部は、
     前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合には、前記第3の判定部の判定結果に基づくデータを出力することを特徴とするデータ管理システム。
  6.  請求項5に記載のデータ管理システムであって、
     前記第3の判定部が所定時間内に予め設定した回数を超えて実行された場合には、前記第1の判定部と第2の判定部の処理を実行せずに、前記第3の判定部が出力したデータを前記データ格納部で格納することを特徴とするデータ管理システム。
  7.  請求項1に記載のデータ管理システムであって、
     前記組み合わせ部は、
     前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が上位の判定結果が取得できた場合には、優先順位が下位の判定結果を破棄し、前記優先順位が上位の判定結果でデータの一貫性を保証することを特徴とするデータ管理システム。
  8.  請求項1に記載のデータ管理システムであって、
     前記組み合わせ部は、
     前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が最上位の判定結果が取得できない場合には、優先順位が下位の判定結果を利用してデータの一貫性を保証することを特徴とするデータ管理システム。
  9.  プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、前記データを多重化して保持するデータ管理方法であって、
     前記サーバが、前記多重化された前記データの一貫性を判定する第1の判定部で、前記受信したデータの一貫性を判定する第1のステップと、
     前記サーバが、前記第1の判定部よりも前記サーバの許容故障数は大きいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部で、前記受信したデータの一貫性を判定する第2のステップと、
     前記サーバが、前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する第3のステップと、
     前記サーバが、前記一貫性が保証されたデータを格納する第4のステップと、
    を含むことを特徴とするデータ管理方法。
  10.  請求項9に記載のデータ管理方法であって、
     前記第2の判定部は、
     前記データの一貫性の判定を行って第1の判定結果を出力する前段判定部と、
     他のサーバの前記前段判定部から前記第1の判定結果を受信し、複数の前記第1の判定結果から前記データの一貫性を判定し、第2の判定結果を出力する後段判定部と、を含み、
     前記第3のステップは、
     前記第1の判定部と第2の判定部の双方の判定結果が一貫性を保証できない場合には、前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータを出力することを特徴とするデータ管理方法。
  11.  請求項10に記載のデータ管理方法であって、
     前記第1の判定部は、
     全てのサーバの過半数から受信したデータに基づいて前記データの一貫性を判定し、
     前記第3のステップは、
     前記第2の判定部の後段判定部が前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合、前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータを出力することを特徴とするデータ管理方法。
  12.  請求項11に記載のデータ管理方法であって、
     前記第3のステップは、
     前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータがない場合には、前記第1の判定部または第2の判定部から所定の解決値を取得し、当該解決値を出力することを特徴とするデータ管理方法。
  13.  請求項10に記載のデータ管理方法であって、
     前記サーバは、PAXOSアルゴリズムを用いて前記データの一貫性の判定を行う第3の判定部をさらに有し、
     前記第3のステップは、
     前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合には、前記第3の判定部の判定結果に基づくデータを出力することを特徴とするデータ管理方法。
  14.  請求項13に記載のデータ管理方法であって、
     前記第3のステップは、
     前記第3の判定部が所定時間内に予め設定した回数を超えて実行された場合には、前記第1の判定部と第2の判定部の処理を実行せずに、前記第3の判定部が出力したデータを格納することを特徴とするデータ管理方法。
  15.  請求項9に記載のデータ管理方法であって、
     前記第3のステップは、
     前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が上位の判定結果が取得できた場合には、優先順位が下位の判定結果を破棄し、前記優先順位が上位の判定結果でデータの一貫性を保証することを特徴とするデータ管理方法。
  16.  請求項9に記載のデータ管理方法であって、
     前記第3のステップは、
     前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が最上位の判定結果が取得できない場合、優先順位が下位の判定結果を利用してデータの一貫性を保証することを特徴とするデータ管理方法。
PCT/JP2014/064739 2014-06-03 2014-06-03 データ管理システム及びデータ管理方法 WO2015186191A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2014/064739 WO2015186191A1 (ja) 2014-06-03 2014-06-03 データ管理システム及びデータ管理方法
US15/125,715 US10545949B2 (en) 2014-06-03 2014-06-03 Data management system and data management method
JP2016524971A JP6271003B2 (ja) 2014-06-03 2014-06-03 データ管理システム及びデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/064739 WO2015186191A1 (ja) 2014-06-03 2014-06-03 データ管理システム及びデータ管理方法

Publications (1)

Publication Number Publication Date
WO2015186191A1 true WO2015186191A1 (ja) 2015-12-10

Family

ID=54766291

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/064739 WO2015186191A1 (ja) 2014-06-03 2014-06-03 データ管理システム及びデータ管理方法

Country Status (3)

Country Link
US (1) US10545949B2 (ja)
JP (1) JP6271003B2 (ja)
WO (1) WO2015186191A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020115315A (ja) * 2019-01-18 2020-07-30 株式会社日立製作所 分散処理方法及び分散処理システム
JP2020187526A (ja) * 2019-05-14 2020-11-19 株式会社日立製作所 分散処理方法、分散処理システム及びサーバ
JP2022160937A (ja) * 2021-04-07 2022-10-20 株式会社日立製作所 分散合意方法、分散システム及び分散合意プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155614A (ja) * 2004-11-23 2006-06-15 Microsoft Corp 一般化されたPaxos
JP2010122773A (ja) * 2008-11-18 2010-06-03 Hitachi Ltd 分散処理システム、処理割当方法、および情報処理装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261085A (en) 1989-06-23 1993-11-09 Digital Equipment Corporation Fault-tolerant system and method for implementing a distributed state machine
US20020143724A1 (en) * 2001-01-16 2002-10-03 International Business Machines Corporation Method, system and computer program product to partition filter rules for efficient enforcement
AU2003217599A1 (en) * 2002-02-22 2003-09-09 Bea Systems, Inc. System and method for using a data replication service to manage a configuration repository
US7395279B2 (en) * 2003-11-17 2008-07-01 International Business Machines Corporation System and method for achieving different levels of data consistency
US7353285B2 (en) * 2003-11-20 2008-04-01 International Business Machines Corporation Apparatus, system, and method for maintaining task prioritization and load balancing
US8549180B2 (en) * 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US20080071878A1 (en) * 2006-09-18 2008-03-20 Reuter James M Method and system for strong-leader election in a distributed computer system
JP5213108B2 (ja) * 2008-03-18 2013-06-19 株式会社日立製作所 データ複製方法及びデータ複製システム
US20110004521A1 (en) * 2009-07-06 2011-01-06 Yahoo! Inc. Techniques For Use In Sorting Partially Sorted Lists
JP2011123817A (ja) * 2009-12-14 2011-06-23 Fujitsu Ltd ジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法
US8726036B2 (en) * 2011-09-20 2014-05-13 Wallrust, Inc. Identifying peers by their interpersonal relationships
US9747310B2 (en) * 2012-06-04 2017-08-29 Google Inc. Systems and methods of increasing database access concurrency using granular timestamps

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155614A (ja) * 2004-11-23 2006-06-15 Microsoft Corp 一般化されたPaxos
JP2010122773A (ja) * 2008-11-18 2010-06-03 Hitachi Ltd 分散処理システム、処理割当方法、および情報処理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CAMARGOS ET AL., MULTICOORDINATED PAXOS, IN: PODC '07 PROCEEDINGS OF THE TWENTY-SIXTH ANNUAL ACM SYMPOSIUM ON PRINCIPLES OF DISTRIBUTED COMPUTING, 2007, pages 316 - 317, XP055240877, ISBN: 978-1-59593-616-5 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020115315A (ja) * 2019-01-18 2020-07-30 株式会社日立製作所 分散処理方法及び分散処理システム
US11106552B2 (en) 2019-01-18 2021-08-31 Hitachi, Ltd. Distributed processing method and distributed processing system providing continuation of normal processing if byzantine failure occurs
JP2020187526A (ja) * 2019-05-14 2020-11-19 株式会社日立製作所 分散処理方法、分散処理システム及びサーバ
US11354206B2 (en) 2019-05-14 2022-06-07 Hitachi, Ltd. Distributed processing method, distributed processing system, and server
JP2022160937A (ja) * 2021-04-07 2022-10-20 株式会社日立製作所 分散合意方法、分散システム及び分散合意プログラム
JP7225298B2 (ja) 2021-04-07 2023-02-20 株式会社日立製作所 分散合意方法、分散システム及び分散合意プログラム

Also Published As

Publication number Publication date
JPWO2015186191A1 (ja) 2017-04-20
JP6271003B2 (ja) 2018-01-31
US20170011086A1 (en) 2017-01-12
US10545949B2 (en) 2020-01-28

Similar Documents

Publication Publication Date Title
US10148751B1 (en) Asymmetric active-active storage for hyper-converged system
EP3274853B1 (en) Direct memory access descriptor processing
US20170054802A1 (en) Read-after-write consistency in data replication
US10489378B2 (en) Detection and resolution of conflicts in data synchronization
US10430217B2 (en) High availability using dynamic quorum-based arbitration
US10503415B2 (en) Snapshot processing method and related device
CN105677673B (zh) 业务处理方法、装置及系统
US10108605B1 (en) Natural language processing system and method
JP6271003B2 (ja) データ管理システム及びデータ管理方法
CN112884086A (zh) 模型训练方法、装置、设备、存储介质以及程序产品
US20170177696A1 (en) Usage of modeled validations on mobile devices in online and offline scenarios
US8972365B2 (en) Storage system and storage device
CN112527901A (zh) 数据存储系统、方法、计算设备及计算机存储介质
WO2016101759A1 (zh) 一种数据路由方法、数据管理装置和分布式存储系统
EP2620876B1 (en) Method and apparatus for data processing, pci-e bus system and server
US20160057068A1 (en) System and method for transmitting data embedded into control information
US20150213102A1 (en) Synchronous data replication in a content management system
US9208114B2 (en) Storage device, computer-readable recording medium, and storage control method
CN108011926B (zh) 一种报文发送方法、处理方法、服务器及系统
US10831561B2 (en) Method for changing allocation of data using synchronization token
RU2698766C1 (ru) Способ и устройство для передачи, отправки и получения информации
US10353735B2 (en) Computing system including independent coupling facilities maintaining equivalency based on sequence values
US20170300356A1 (en) Fine-grain synchronization in data-parallel jobs
US11327785B2 (en) Computing system including enhanced application performance based on last completed operation sequence value
US20150052263A1 (en) Information processing system and control method of information processing system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14893815

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016524971

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15125715

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14893815

Country of ref document: EP

Kind code of ref document: A1