IP Library Granted Patent US 10,534,765
Granted Patent B2
US 10,534,765 · App. 15/482,352 · Granted Jan 14, 2020

Assigning segments of a shared database storage to nodes

Inventors: Benjamin M. Vandiver (Arlington, MA); Pratibha Rana (Waltham, MA); Pratyush Parimal (Cambridge, MA); Jason Michael Slaunwhite (Cambridge, MA); Eden Zik (Cambridge, MA); Shreya Prasad (Cambridge, MA); Seyed Amin Saeidi Nyasar (Cambridge, MA); Mark Edward Hayden (Cambridge, MA)
Assignee: MICRO FOCUS LLC
G06F16/2255G06F16/2272G06F16/284
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,534,765
App. No.
15/482,352
Granted
Jan 14, 2020
Kind
B2
Abstract

A technique includes applying a first mapping to associate a plurality of data records for a plurality of database nodes with a plurality of segments of a storage that is shared by the database nodes; and applying a many-to-many second mapping to associate the segments with the database nodes.

Claims (41)

1. A method comprising:

applying a first mapping to associate a plurality of data records for a plurality of database nodes with a plurality of segments of a storage shared by the plurality of database nodes, wherein applying the first mapping comprises, for a given data record of the plurality of data records, associating the given data record to a given segment of the plurality of segments based on a key value associated with the given data record; and

applying a many-to-many second mapping to associate the plurality of segments with the plurality of database nodes, including assigning primary responsibility for the given segment to a first node of the plurality of database nodes in processing a first query and assigning secondary responsibility for the given segment to a second node of the plurality of database nodes as backup should the first node become unavailable.

2. The method of claim 1 , wherein the given data record is associated with a column of a table, and the key value represents an attribute of the column.

3. The method of claim 1 , wherein associating the given data record to the given segment comprises applying a hash function based on the key value to generate a hash value associated with the given segment.

4. The method of claim 1 , further comprising adding another database node to the plurality of database nodes, comprising:

modifying the many-to-many second mapping to allocate a subset of segments of the plurality of segments to add the another database node.

5. The method of claim 4 , wherein adding the another database node to the plurality of database nodes further comprises:

modifying the many-to-many second mapping to remove allocation of at least one segment of the plurality of segments from a database node of the plurality of database nodes.

6. The method of claim 1 , wherein the many-to-many second mapping allocates multiple database nodes of the plurality of database nodes to a second given segment of the plurality of segments, the method further comprising:

using a first database node of the multiple database nodes to process a second query involving a second given data record of the plurality of data records assigned to the second given segment; and

using a second node of the multiple database nodes to process a third query involving the second given data record assigned to the second given segment independently from the processing of the second query.

7. An article comprising a non-transitory computer readable storage medium storing instructions that when executed by a node cause the node to:

in response to a database operation associated with a projection of a table, access a global catalog stored on the node to identify a segment of a plurality of segments of a shared storage associated with the database operation;

determine a hash value associated with a key value associated with the projection;

identify the segment of the shared storage associated with the database operation based on the hash value; and

based on data retrieved from the global catalog, determine whether the node serves the segment,

wherein:

the node is a member of a plurality of nodes;

the global catalog is visible to the plurality of nodes;

the global catalog stores first data representing primary subscriptions among the plurality of nodes to assign a first part of a many-to-many mapping of the plurality of nodes to the plurality of segments, wherein the primary subscriptions include assigning primary responsibility to a primary node of the plurality of nodes in processing a query; and

the global catalog stores second data representing secondary subscriptions among the plurality of nodes and the plurality of segments to assign a second part of the many-to-many mapping of the plurality of nodes to the plurality of segments, wherein the secondary subscriptions include assigning secondary responsibility to a secondary node of the plurality of nodes as backup should the primary node become unavailable.

8. The article of claim 7 , the storage medium to store instructions that when executed by the node cause the node to modify at least one of the primary subscriptions or the secondary subscriptions in response to another node of the plurality of nodes failing.

9. The article of claim 7 , wherein the plurality of nodes are part of a cluster of nodes, and the storage medium to store instructions that when executed by the node cause the node to modify at least one of the primary subscriptions or the secondary subscriptions in response to another node being added to the cluster.

10. An apparatus comprising:

a storage to store data records, wherein the storage comprises a plurality of segments;

a plurality of database nodes, wherein the plurality of database nodes share the storage, and a given database node of the plurality of database nodes comprises a processor and a memory storing instructions that when executed by the processor cause the processor to:

determine whether the given database node serves a given database operation based on data stored in a catalog, wherein the catalog stores data representing:

a first mapping to assign the data records to the plurality of segments;

a many-to-many second mapping to assign the plurality of segments to the plurality of database nodes;

data representing primary subscriptions among the plurality of database nodes to assign primary responsibilities for the plurality of segments onto the plurality of database nodes; and

data representing secondary subscriptions to assign secondary responsibilities for the plurality of segments to the plurality of database nodes;

generate a hash of a key value associated with the given database operation to identify a segment of the plurality of segments assigned to a hash space associated with the segment; and

execute a plan associated with the given database operation based on a result of the determination.

11. The apparatus of claim 10 , wherein the many-to-many second mapping assigns multiple nodes of the plurality of database nodes to a given segment of the plurality of segments and assigns multiple segments of the plurality of segments to a database node of the plurality of database nodes.

12. The apparatus of claim 10 , wherein:

the data records comprise read optimized storage containers, wherein each read optimized storage container is associated with a projection; and

the instructions when executed by the processor causes the processor to generate hashes based on the projections, and use the hashes based on the projections and the first mapping to identify the plurality of segments.

13. The apparatus of claim 10 , wherein the plurality of database nodes are part of a cluster of database nodes and the processor modifies the many-to-many second mapping in response to at least one of a database node being added to the cluster or a database node of the cluster failing.

14. The apparatus of claim 10 , wherein the data records represent a plurality of tables, and the first mapping assigns a subset of tables of the plurality of tables to a given segment of the plurality of segments.

15. The apparatus of claim 10 , wherein the catalog comprises a global catalog stored on each of the database nodes.

Assignments (7)
RELEASE OF SECURITY INTEREST REEL/FRAME 052295/0041 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062625/0754 →
RELEASE OF SECURITY INTEREST REEL/FRAME 052294/0522 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062624/0449 →
SECURITY AGREEMENT Recorded Apr 2, 2020
From: MICRO FOCUS LLC; BORLAND SOFTWARE CORPORATION; MICRO FOCUS SOFTWARE INC.; NETIQ CORPORATION; MICRO FOCUS (US), INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 052295/0041 →
SECURITY AGREEMENT Recorded Apr 2, 2020
From: MICRO FOCUS LLC; BORLAND SOFTWARE CORPORATION; MICRO FOCUS SOFTWARE INC.; NETIQ CORPORATION; MICRO FOCUS (US), INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 052294/0522 →
CHANGE OF NAME Recorded Aug 8, 2019
From: ENTIT SOFTWARE LLC
To: MICRO FOCUS LLC
Reel/Frame 050004/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2018
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: ENTIT SOFTWARE LLC
Reel/Frame 047917/0341 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2017
From: VANDIVER, BENJAMIN M.; RANA, PRATIBHA; PARIMAL, PRATYUSH; SLAUNWHITE, JASON MICHAEL; ZIK, EDEN; PRASAD, SHREYA; SAEIDI NYASAR, SEYED AMIN; HAYDEN, MARK EDWARD
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 041933/0712 →
Continuity (1)
Related Publication 20180293237A1 · Oct 11, 2018