Address generation in distributed systems using tree method
First Claim
1. A method for generating an identifier for a new data object to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node, the method comprising:
- selecting a path of a binary tree structure, in which the plurality of nodes are organized, based on a capacity of nodes along the path;
identifying a first node as one at an end of the path in which the new data object is to be stored;
generating a universal identifier for the new data object, the universal identifier having a node identifier part that uniquely identifies the first node in the cluster, a reserve part, and an object identifier part that uniquely identifies the object in the first node, the reserve part being at least in part generated as a pseudo-random value, wherein the node identifier part and the reserve part have a combined length that is a predetermined fixed length and the object identifier part does not uniquely identify the new data object on the cluster; and
in the event of a node split creating at least two new nodes from the first node, setting one or more bits of the reserve part to identify a particular node of the new nodes, on which the new data object is stored following the split.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatus, including computer program products, for managing a cluster of servers organized into nodes. A method of one aspect includes establishing a cluster; establishing a set of ultimate identifiers for nodes resulting from splitting in the cluster; and storing every new data object on a node that has a node identifier that identifies a subset of the set of ultimate identifiers, and providing for the object a universal identifier that combines (i) an object identifier that is unique on the node and (ii) a server identifier that is one of the ultimate identifiers in the subset. A method of another aspect includes generating for a new data object a universal identifier that has a node identifier part that uniquely identifies a node, a reserve part generated at least in part as a pseudo-random value, and an object identifier part that uniquely identifies the object in the node.
28 Citations
15 Claims
-
1. A method for generating an identifier for a new data object to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node, the method comprising:
-
selecting a path of a binary tree structure, in which the plurality of nodes are organized, based on a capacity of nodes along the path; identifying a first node as one at an end of the path in which the new data object is to be stored; generating a universal identifier for the new data object, the universal identifier having a node identifier part that uniquely identifies the first node in the cluster, a reserve part, and an object identifier part that uniquely identifies the object in the first node, the reserve part being at least in part generated as a pseudo-random value, wherein the node identifier part and the reserve part have a combined length that is a predetermined fixed length and the object identifier part does not uniquely identify the new data object on the cluster; and in the event of a node split creating at least two new nodes from the first node, setting one or more bits of the reserve part to identify a particular node of the new nodes, on which the new data object is stored following the split. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A non-transitory machine-readable storage medium, for generating an identifier for a new data object to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node, the medium storing instructions operable to cause data processing apparatus to:
-
select a path of a binary tree structure, in which the plurality of nodes are organized, based on a capacity of nodes along the path; determine a first node as a node at an end of the path; generate a universal identifier for the new data object, the universal identifier having a node identifier part that uniquely identifies the first node in the cluster, a reserve part, and an object identifier part that uniquely identifies the object in the first node, the reserve part being at least in part generated as a pseudo-random value, wherein the node identifier part and the reserve part have a combined length that is a predetermined fixed length and the object identifier part does not uniquely identify the new data object on the cluster; and in the event of a node split creating at least two new nodes from the first node, set one or more bits of the reserve part to identify a particular node of the new nodes, on which the new data object is stored following the split. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A system for generating an identifier for a new data object to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node, the system comprising:
-
means for selecting a path of a binary tree structure, in which the nodes are organized, based on a capacity of nodes along the path; means for determining a first node as a node at an end of the path in which the new data object is to be stored; means for generating a node identifier for the new data object that uniquely identifies the first node in the cluster for storing the new data object; means for generating a universal identifier for the new data object, the universal identifier having a node identifier part for the node identifier, a reserve part, and an object identifier part that uniquely identifies the object in the first node, the reserve part being at least in part generated as a pseudo-random value, wherein the node identifier part and the reserve part have a combined length that is a predetermined fixed length and the object identifier part does not uniquely identify the new data object on the cluster; and means for setting one or more bits of the reserve part, in the event of a node split creating at least two new nodes from the first node, to identify a particular node of the new nodes, on which the new data object is stored following the split. - View Dependent Claims (12, 13, 14, 15)
-
Specification