System and method for synchronizing copies of data in a computer system
First Claim
1. A method comprising:
- reading a first copy of a primary data set in a primary memory location;
storing the first copy in a first memory location;
setting a first validity flag to indicate that the first copy is valid;
reading a second copy of the primary data set in the primary memory location;
storing the second copy in a second memory location;
setting a second validity flag to indicate that the second copy is valid;
modifying the first copy;
setting the second validity flag to indicate that the second copy is invalid after modifying the first copy;
replacing the primary data set with the modified first copy after the modifying of the first copy and before the setting of the second validity flag to indicate that the second copy is invalid;
replacing the second copy with the primary data set after the setting of the second validity flag to indicate that the second copy is invalid;
setting the second validity flag to indicate that the second copy is valid after replacing the second copy with the primary data set;
creating a first index corresponding to the first copy, wherein the first index is stored in a fourth memory location, wherein the first index is created after reading the first copy from the primary data set; and
creating a second index corresponding to the second copy, wherein the second index is stored in the fourth memory location, wherein the second index is created after reading the second copy from the primary data set;
locating the second validity flag by using the second index before setting the second validity flag to indicate that the second copy is invalid;
wherein an index comprises;
a first field comprising a description of a copy of the data for which the index was created; and
a second field comprising a memory location for a validity flag for the copy of the data set for which the index was created;
matching the first index and the second index by comparing the first field of the first index and the first field of the second index;
wherein locating the second validity flag further comprises locating the second validity flag by referencing contents of the second field of the second index;
wherein a first program is associated with the first copy and a second program is associated with the second copy;
the first program requesting that a third program synchronize the first copy with other copies of the primary data set;
the third program creating the first index corresponding to the first copy in the fourth memory location in response to the first program requesting that the third program synchronize the first copy with other copies of the primary data set;
the second program requesting that the third program synchronize the second copy with other copies of the primary data set; and
the third program creating the second index corresponding to the second copy in the fourth memory location in response to the second program requesting that the third program synchronize the second copy with other copies of the primary data set.
1 Assignment
0 Petitions
Accused Products
Abstract
An improved synchronization system and method for copies of data in a computer system. The computer system comprises a cluster, wherein each computer in the cluster may store a local copy of a data set along with a validity flag for the local copy. The computer system further comprises a coupling system which is connected to each of the computers in the cluster through a coupling system interface program, wherein the coupling system is configured to coordinate the data sharing and workload of the cluster. The computer system also comprises an external data storage shared by the computers in the cluster. One of the computers may read a first copy of the data set from a primary data set on the external data storage. The computer may then store the first copy locally and set a first validity flag to indicate that the first copy is valid. Another computer, server, or application program may make a second copy of the primary data set and set a second validity flag to valid. If the first copy is modified, then the second validity flag is set to invalid. The second copy may then be replaced with the modified copy, and the second validity flag may be set to valid again. A coupling system interface program may comprise an application programming interface for data synchronization, wherein the application programming interface is accessible by a plurality of application programs.
183 Citations
36 Claims
-
1. A method comprising:
-
reading a first copy of a primary data set in a primary memory location;
storing the first copy in a first memory location;
setting a first validity flag to indicate that the first copy is valid;
reading a second copy of the primary data set in the primary memory location;
storing the second copy in a second memory location;
setting a second validity flag to indicate that the second copy is valid;
modifying the first copy;
setting the second validity flag to indicate that the second copy is invalid after modifying the first copy;
replacing the primary data set with the modified first copy after the modifying of the first copy and before the setting of the second validity flag to indicate that the second copy is invalid;
replacing the second copy with the primary data set after the setting of the second validity flag to indicate that the second copy is invalid;
setting the second validity flag to indicate that the second copy is valid after replacing the second copy with the primary data set;
creating a first index corresponding to the first copy, wherein the first index is stored in a fourth memory location, wherein the first index is created after reading the first copy from the primary data set; and
creating a second index corresponding to the second copy, wherein the second index is stored in the fourth memory location, wherein the second index is created after reading the second copy from the primary data set;
locating the second validity flag by using the second index before setting the second validity flag to indicate that the second copy is invalid;
wherein an index comprises;
a first field comprising a description of a copy of the data for which the index was created; and
a second field comprising a memory location for a validity flag for the copy of the data set for which the index was created;
matching the first index and the second index by comparing the first field of the first index and the first field of the second index;
wherein locating the second validity flag further comprises locating the second validity flag by referencing contents of the second field of the second index;
wherein a first program is associated with the first copy and a second program is associated with the second copy;
the first program requesting that a third program synchronize the first copy with other copies of the primary data set;
the third program creating the first index corresponding to the first copy in the fourth memory location in response to the first program requesting that the third program synchronize the first copy with other copies of the primary data set;
the second program requesting that the third program synchronize the second copy with other copies of the primary data set; and
the third program creating the second index corresponding to the second copy in the fourth memory location in response to the second program requesting that the third program synchronize the second copy with other copies of the primary data set. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A system comprising:
-
a plurality of computers comprising a cluster, wherein a computer comprises a local memory and at least one validity flag, and wherein a copy of a data set that is stored in the local memory is assigned at least one corresponding validity flag;
a coupling system comprising a local memory, wherein the coupling system is connected to each of the computers in the cluster, and wherein the coupling system is configured to coordinate data sharing of the cluster; and
an external data storage shared by the computers in the cluster;
wherein the local memories of the computers or the coupling system store program instructions, wherein the program instructions are executable by the computers or the coupling system to;
read a first copy of a primary data set in a primary memory location;
store the first copy in a first memory location;
set a first validity flag to indicate that the first copy is valid;
read a second copy of the primary data set in the primary memory location;
store the second copy in a second memory location;
set a second validity flag to indicate that the second copy is valid;
modify the first copy;
set the second validity flag to indicate that the second copy is invalid after modifying the first copy;
replace the primary data set with the modified first copy after the modifying of the first copy and before the setting of the second validity flag to indicate that the second copy is invalid;
replace the second copy with the primary data set after the setting of the second validity flag to indicate that the second copy is invalid;
set the second validity flag to indicate that the second copy is valid after replacing the second copy with the primary data set;
create a first index corresponding to the first copy, wherein the first index is stored in a fourth memory location, wherein the first index is created after reading the first copy from the primary data set; and
create a second index corresponding to the second copy, wherein the second index is stored in the fourth memory location, wherein the second index is created after reading the second copy from the primary data set;
wherein the program instructions are further executable to locate the second validity flag by using the second index before setting the second validity flag to indicate that the second copy is invalid;
wherein an index comprises a first field comprising a description of a copy of the data the index was created for; and
a second field comprising a memory location for a validity flag for the copy of the data set the index was created for;
wherein the program instructions further comprise a first program associated with the first copy and a second program associated with the second copy;
wherein the program instructions further comprise a third program which is configured to manage the synchronization of copies of data sets being used by the first and second programs;
wherein the first program is executable to request that the third program synchronize the first copy with other copies of the data set;
wherein the third program is executable to create the first index corresponding to the first copy in the fourth memory location in response to the first program requesting that the third program synchronize the first copy with other copies of the data set;
wherein the second program is executable to request that the third program synchronize the second copy with other copies of the primary data set; and
wherein the third program is executable to create the second index corresponding to the second copy in the fourth memory location in response to the second program requesting that the third program synchronize the second copy with other copies of the data set. - View Dependent Claims (20, 21, 22, 23, 24, 25)
-
-
26. A system comprising:
-
a plurality of computers comprising a cluster, wherein a computer comprises a local memory and at least one validity flag, and wherein a copy of a data set that is stored in the local memory is assigned at least one corresponding validity flag;
a coupling system comprising a local memory, wherein the coupling system is connected to each of the computers in the cluster, and wherein the coupling system is configured to coordinate data sharing of the cluster;
an external data storage shared by the computers in the cluster;
wherein the local memories of the computers or the coupling system store program instructions, wherein the program instructions are executable by the computers or the coupling system to;
read a first copy of a primary data set in a primary memory location;
store the first copy in a first memory location;
set a first validity flag to indicate that the first copy is valid;
read a second copy of the primary data set in the primary memory location;
store the second copy in a second memory location;
set a second validity flag to indicate that the second copy is valid;
modify the first copy; and
set the second validity flag to indicate that the second copy is invalid after modifying the first copy;
wherein each computer further stores a coupling system interface program which is executable to communicate between the coupling system and a plurality of programs, running on the computer;
wherein the local memory of a first computer in the cluster comprises the first memory location, the local memory of a second computer in the cluster comprises the second memory location, the external data storage comprises the primary memory location, and the local memory of the coupling system comprises a fourth memory location;
create a copy of the primary data set in the local memory of a plurality of computers in the cluster, wherein in creating the copy, the program instructions are further executable to;
create an index corresponding to the copy of the primary data set in the local memory of the coupling system;
assign a validity flag to the copy of the primary data set; and
set the validity flag to indicate that the copy of the primary data set is valid;
wherein the first computer further includes a first program associated with the first copy, and the second computer further includes a second program associated with the second copy;
wherein the first program is executable to;
read the first copy of the data set from the primary data set in the primary memory location;
store the first copy in the first memory location;
create the first index to the first copy; and
send a request to synchronize the first copy with other copies of the data set to the coupling system interface, wherein the first program is executable to send the first index to a third program;
wherein the coupling system interface program is executable to forward the request to synchronize the first copy to the coupling system;
wherein the coupling system is executable to;
store the first index to the first copy in the fourth memory location in response to the request; and
send a first token to the coupling system interface, the first token comprising a location for the validity flag to be used for the first copy;
wherein the coupling system interface program is executable to send the first token to the-first program;
wherein the first program is executable to store the first token in the first memory;
wherein the second program is executable to;
read the second copy of the primary data set from the primary data set in the primary member location;
store the second copy in the second memory location;
create the second index to the second copy; and
send a request to synchronize the second copy with other copies of the primary data set to the coupling system interface, wherein the second program is executable to send the second index to the third program;
wherein the coupling system interface program is executable to forward the request to synchronize the second copy to the coupling system;
wherein the coupling system is executable to;
store the second index to the second copy in the fourth memory location in response to the request; and
send a second token to the coupling system interface, the second token comprising a location for the validity flag to be used for the second copy;
wherein the coupling system interface program is executable to send the second token to the second program; and
wherein the second program is executable to store the second token in the second memory. - View Dependent Claims (27, 28, 29, 30)
-
-
31. A computer readable medium containing program instructions, wherein the program instructions are executable by a machine to implement:
-
reading a first copy of a primary data set in a primary memory location;
storing the first copy in a first memory location;
setting a first validity flag to indicate that the first copy is valid;
reading a second copy of the primary data set in the primary memory location;
storing the second copy in a second memory location;
setting a second validity flag to indicate that the second copy is valid;
modifying the first copy;
setting the second validity flag to indicate that the second copy is invalid after modifying the first copy;
replacing the primary data set with the modified first copy after the modifying of the first copy and before the setting of the second validity flag to indicate that the second copy is invalid;
replacing the second copy with the primary data set after the setting of the second validity flag to indicate that the second copy is invalid;
setting the second validity flag to indicate that the second copy is valid after replacing the second copy with the primary data set;
creating a first index corresponding to the first copy, wherein the first index is stored in a fourth memory location, wherein the first index is created after reading the first copy from the primary data set; and
creating a second index corresponding to the second copy, wherein the second index is stored in the fourth memory location, wherein the second index is created after reading the second copy from the-primary data set;
wherein the program instructions are further executable by the machine to implement locating the second validity flag by using the second index before setting the second validity flag to indicate that the second copy is invalid;
wherein an index comprises;
a first field comprising a description of a copy of the data for which the index was created;
a second field comprising a memory location for a validity flag for the copy of the data set for which the index was created;
wherein the program instructions are further executable by the machine to implement matching the first index and the second index by comparing the first field of the first index and the first field of the second index; and
locating the second validity flat by referencing contents of the second field of the second index;
wherein a first program is associated with the first copy and a second program is associated with the second copy;
wherein the program instructions are further executable by a machine to implement the first program requesting that a third program synchronize the first copy with other copies of the data set;
the third program creating the first index corresponding to the first copy in the fourth memory location in response to the first program requesting that the third program synchronize the first copy with other copies of the data set;
the second program requesting that the third program synchronize the second copy with other copies of the data set; and
the third program creating the second index corresponding to the second copy in the fourth memory location in response to the second program requesting that the third program synchronize the second copy with other copies of the data set. - View Dependent Claims (32, 33, 34, 35, 36)
-
Specification