Universal Identifier Generation for Distributed Cluster Nodes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In distributed data storage systems, expanding cluster capacity by adding new servers is challenging, especially in object-oriented databases where data objects must be rehashed and identified by stable object identifiers, leading to complex data redistribution.

Innovation Solution

A method for managing data storage servers involves organizing back-end servers into nodes with unique identifiers, generating universal identifiers combining node and server identifiers, and splitting nodes to balance load, allowing for seamless addition of new nodes without redistributing data, using pseudo-random values and binary tree structures for load balancing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If a new server is added to the cluster to expand capacity, then the cluster capacity is increased, but data redistribution and rehashing are required which increases system complexity

Engineering Contradiction:
Improvecluster capacityVSAvoiddata redistribution complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The system segments the identifier space into non-overlapping subsets, with each node assigned a unique subset of ultimate identifiers. This segmentation allows new nodes to be added by allocating them new subsets of identifiers without requiring redistribution of existing data, as each data object's identifier permanently indicates its home node.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary action by pre-assigning non-overlapping subsets of ultimate identifiers to each node during cluster formation. This preliminary assignment of identifier subsets to nodes eliminates the need for data redistribution when nodes are added later, as the identifier structure already encodes the correct node assignment.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If data objects are rehashed to move them to new servers, then data is redistributed to balance load, but object identifiers must remain stable which complicates the rehashing process

Engineering Contradiction:
Improvedata redistribution efficiencyVSAvoididentifier stability constraint
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

Instead of rehashing data objects when adding nodes (the conventional approach), the system inverts the approach by having nodes claim specific subsets of the identifier space. Data objects are then automatically routed to the correct node based on their stable identifiers without requiring rehashing, as the identifier structure inherently encodes the destination node.

Inventive Principle:
Principle #13The other way round (Inversion)

3Adaptability or versatility

If nodes are organized with unique identifiers and identifier subsets are assigned to each node, then adding new nodes becomes simpler, but the initial cluster setup and identifier management becomes more complex

Engineering Contradiction:
Improvecluster scalabilityVSAvoididentifier management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system creates a universal identifier structure that serves multiple functions: it uniquely identifies data objects, encodes the home node information, and enables automatic data routing. This universal identifier approach simplifies cluster scalability while managing complexity through a unified identifier system that handles multiple purposes simultaneously.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8499078B2Address generation in distributed systems using tree method
Publication Date: 2013.07.30 SAP SE
  • US8499078B2 patent drawing
  • US8499078B2 patent drawing
  • US8499078B2 patent drawing

AI summary

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.