← Back to Patent Explorer
US5555404A Expired / Lapsed US ⏱️ 0.0 years remaining

Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas

Assignee: Clustra Systems Inc
•
Filing: 1995-05-26
•
Granted: 1996-09-10
•
Expires: 2015-05-26
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A database server with a "shared nothing" system architecture has multiple nodes, each having its own central processing unit, primary and secondary memory for storing database tables and other data structures, and communication channels for communication with other ones of the nodes. The nodes are divided into at least two groups that share no resources. Each database table in the system is divided into fragments distributed for storage purposes over all the nodes in the system. To ensure continued data availability after a node failure, a "primary replica" and a "standby replica" of each fragment are each stored on nodes in different ones of the groups. Database transactions are performed using the primary fragment replicas, and the standby replicas are updated using transaction log records. Every node of the system includes a data dictionary that stores information indicating where each primary and standby fragment replica is stored. The fragments are allocated as evenly as possible among the system nodes using a fragment to node assignment equation. A transaction manager on each node responds to database queries by determining which fragment of a database is being accessed by the query and then forwarding the database query to the node processor on which the primary replica of that fragment is stored. Upon failure of any one of the data processors in the system, each node updates the information in its data dictionary accordingly. In addition, the fragment replicas made unavailable by the node failure are regenerated and stored on the remaining available nodes in the same node group as the failed node.

Inventors

  • 👤 .O slashed.ystein Torbj.o slashed.rnsen
  • 👤 Svein-Olaf Hvasshovd

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 23:05
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/16; G06F11/20; G06F11/2097; G06F11/2053; G06F11/2094; G06F16/00; G06F16/20; G06F16/27; G06F16/273; G06F16/278; G06F2201/00; G06F2201/80; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99952; Y10S707/99953

Claims Analysis

Total Claims: 9
Claim 1
Independent Claim 469 words
A multiprocessor computer system, comprising: N data processors, wherein N is a positive integer greater than three, each data processor having its own, separate, central processing unit, memory for storing database tables and other data structures, and communication channels for communication with other ones of said N data processors; each of said N data processors independently executing a distinct instruction data stream; at least a plurality of said N data processors including a communications processor for receiving transaction requests and for transmitting responses thereto; said N data processors being divided into at least two groups, each having at least two data processors; each data processor including: fragmenting means for fragmenting each of said database tables into N fragments, and for storing replicas of each fragment in different ones of said N data processors, wherein said different ones of said N data processors are in different ones of said groups of data processors such that a complete copy of each of said database tables is located within each said group of data processors and such that simultaneous failure of all data processors in either of said groups would leave a complete copy of each of said database tables in the other of said groups of data processors; a data dictionary that stores information indicating where each said replica replica of each fragment of said database tables is stored among said N data processors; said fragmenting means further adapted for changing the information stored in said data dictionary upon failure of any one of said N data processors to indicate that the replicas stored on the failed data processor are not available, and for regenerating said replicas on the failed data processor in non-failed ones, if any, of the data processors in the same group of data processors as the failed data processor; and said fragmenting means further adapted for dividing said database tables into F fragments F S x , for storing said F fragments in the data processors in each said group, where for a particular fragment F S x , S identifies the group of data processors in which the fragment is stored and x is an index that identifies the fragment and has a value between 0 and F-1; said fragmenting means adapted to assign each fragment F S x to a data processor y in group S in accordance with the following fragment to node assignment equation: y=(x+(xdiv N.sub.S)·Q(S) ) modulo avail where y identifies which data processor fragment F S x is assigned to, N S is the number of data processors in group S used for storing database fragments, Q(S) is an integer between 0 and N S -1 where Q(S) is a distinct value for each said group, and avail is the number of said N S data processors that have not failed.
Claim 2
Dependent Claim 469 words
A multiprocessor computer system, comprising: N data processors, wherein N is a positive integer greater than three, each data processor having its own, separate, central processing unit, memory for storing database tables and other data structures, and communication channels for communication with other ones of said N data processors; each of said N data processors independently executing a distinct instruction data stream; at least a plurality of said N data processors including a communications processor for receiving transaction requests and for transmitting responses thereto; said N data processors being divided into at least two groups, each having at least two data processors; each data processor including: fragmenting means for fragmenting each of said database tables into N fragments, and for storing replicas of each fragment in different ones of said N data processors, wherein said different ones of said N data processors are in different ones of said groups of data processors such that a complete copy of each of said database tables is located within each said group of data processors and such that simultaneous failure of all data processors in either of said groups would leave a complete copy of each of said database tables in the other of said groups of data processors; a data dictionary that stores information indicating where each said replica replica of each fragment of said database tables is stored among said N data processors; said fragmenting means further adapted for changing the information stored in said data dictionary upon failure of any one of said N data processors to indicate that the replicas stored on the failed data processor are not available, and for regenerating said replicas on the failed data processor in non-failed ones, if any, of the data processors in the same group of data processors as the failed data processor; and said fragmenting means further adapted for dividing said database tables into F fragments F S x , for storing said F fragments in the data processors in each said group, where for a particular fragment F S x , S identifies the group of data processors in which the fragment is stored and x is an index that identifies the fragment and has a value between 0 and F-1; said fragmenting means adapted to assign each fragment F S x to a data processor y in group S in accordance with the following fragment to node assignment equation: y=(x+(xdiv N.sub.S)·Q(S) ) modulo avail where y identifies which data processor fragment F S x is assigned to, N S is the number of data processors in group S used for storing database fragments, Q(S) is an integer between 0 and N S -1 where Q(S) is a distinct value for each said group, and avail is the number of said N S data processors that have not failed.
Claim 3
Dependent Claim 23 words
The multiprocessor computer system of claim 1, wherein each of said groups of data processors have different power supplies and different cooling systems.
Claim 4
Dependent Claim 98 words
The multiprocessor computer system of claim 1, wherein said fragmenting means is adapted to respond to failure of a data processor in one of said groups by (A) remapping data processor indices y associated with said one group into a contiguous set ranging from 0 to avail-1, where avail is the number of said data processors at said one site that have not failed, and (B) reassigning each fragment F S x previously stored on said failed data processor to another data processor y in said one group S in accordance with said fragment to node assignment equation.
Claim 5
Dependent Claim 122 words
The multiprocessor computer system of claim 1, wherein said fragmenting means in each data processor is adapted to respond to failure of one of said N data processors by (A) updating said data dictionary to indicate that the fragment replicas on said one data processor are not available, (B) locating available ones of said fragment replicas corresponding to the fragment replicas on said one data processor, and (C) storing on a subset of said N data processors that have not failed, new replicas of the fragment replicas made unavailable by said failure on said one data processor such that a replica of each said database table fragment is stored in data processors that have not failed in each group of data processors.
Claim 6
Independent Claim 468 words
A method of distributing data storage and transactional workloads in multiprocessor computer system having: N data processors, wherein N is a positive integer greater than three, each data processor having its own, separate, central processing unit, memory for storing database tables and other data structures, and communication channels for communication with other ones of said N data processors; at least a plurality of said N data processors including a communications processor that receives transaction requests and transmits responses thereto; said N data processors being divided into at least two groups, each having at least two data processors; the steps of the method comprising: independently executing a distinct instruction data stream on each of said N data processors; fragmenting each of said database tables into N fragments, and storing replicas of each fragment in different ones of said N data processors, wherein said different ones of said N data processors are in different ones of said groups of data processors such that a complete copy of each of said database tables is located within each said group of data processors and such that simultaneous failure of all data processors in either of said groups would leave a complete copy of each of said database tables in the other of said groups of data processors; said fragmenting step including allocating each record in any one of said database tables to a particular one of its N fragments in accordance with predefined criteria; storing in a data dictionary in each of said N data processors information indicating where each said replica of each fragment of said database tables is stored among said N data processors; and upon failure of any one of said N data processors, changing the information stored in said data dictionary to indicate that the replicas stored on the failed data processor are not available; said fragmenting step including dividing said database tables into F fragments F S x , storing said F fragments in the data processors in each said group, where for a particular fragment F S x , S identifies the group of data processors in which the fragment is stored and x is an index that identifies the fragment and has a value between 0 and F-1; said fragmenting step assigning each fragment F S x to a data processor y in group S in accordance with the following fragment to node assignment equation: y=(x+(x div N.sub.S)·Q(S) ) modulo avail where y identifies which data processor fragment F S x is assigned to, N S is the number of data processors in group S used for storing database fragments, Q(S) is an integer between 0 and N S -1 where Q(S) is a distinct value for each said group, and avail is the number of said N S data processors that have not failed.
Claim 7
Independent Claim 468 words
A method of distributing data storage and transactional workloads in multiprocessor computer system having: N data processors, wherein N is a positive integer greater than three, each data processor having its own, separate, central processing unit, memory for storing database tables and other data structures, and communication channels for communication with other ones of said N data processors; at least a plurality of said N data processors including a communications processor that receives transaction requests and transmits responses thereto; said N data processors being divided into at least two groups, each having at least two data processors; the steps of the method comprising: independently executing a distinct instruction data stream on each of said N data processors; fragmenting each of said database tables into N fragments, and storing replicas of each fragment in different ones of said N data processors, wherein said different ones of said N data processors are in different ones of said groups of data processors such that a complete copy of each of said database tables is located within each said group of data processors and such that simultaneous failure of all data processors in either of said groups would leave a complete copy of each of said database tables in the other of said groups of data processors; said fragmenting step including allocating each record in any one of said database tables to a particular one of its N fragments in accordance with predefined criteria; storing in a data dictionary in each of said N data processors information indicating where each said replica of each fragment of said database tables is stored among said N data processors; and upon failure of any one of said N data processors, changing the information stored in said data dictionary to indicate that the replicas stored on the failed data processor are not available; said fragmenting step including dividing said database tables into F fragments F S x , storing said F fragments in the data processors in each said group, where for a particular fragment F S x , S identifies the group of data processors in which the fragment is stored and x is an index that identifies the fragment and has a value between 0 and F-1; said fragmenting step assigning each fragment F S x to a data processor y in group S in accordance with the following fragment to node assignment equation: y=(x+(x div N.sub.S)·Q(S) ) modulo avail where y identifies which data processor fragment F S x is assigned to, N S is the number of data processors in group S used for storing database fragments, Q(S) is an integer between 0 and N S -1 where Q(S) is a distinct value for each said group, and avail is the number of said N S data processors that have not failed.
Claim 8
Dependent Claim 84 words
The method of claim 5, wherein when a data processor in one of said groups fails, indices y associated with said groups are remapped into a contiguous set ranging from 0 to avail-1, where avail is the number of said data processors at said one site that have not failed, and then reassigning each fragment F S x previously stored on said failed data processor to another data processor y in said one group S in accordance with said fragment to node assignment equation.
Claim 9
Dependent Claim 111 words
The method of claim 5, further including responding to failure of one of said N data processors by (A) updating said data dictionary to indicate that the fragment replicas on said one data processor are not available, (B) locating available ones of said fragment replicas corresponding to the fragment replicas on said one data processor, and (C) storing on a subset of said N data processors that have not failed, new replicas of the fragment replicas made unavailable by said failure on said one data processor such that a replica of each said database table fragment is stored in data processors that have not failed in each group of data processors.

References Cited (Backward Citations)

US5006978A Cited
US4432057A Cited
US4716528A Cited
US5333314A Cited
US4933838A Cited
US5170482A Cited
US5005174A Cited
US5282201A Cited
US5170480A Cited
US5276871A Cited
US5423037A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-09-10 2000-03-11 2000-09-10 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-09-10 2004-03-11 2004-09-10 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-09-10 2008-03-11 2008-09-10 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag