IP Library › Granted Patent US 11,475,003
Granted Patent B1
US 11,475,003 · App. 16/176,597 · Granted Oct 18, 2022

Method and system for servicing query requests using dataspaces

Inventor: Thomas Francis Shackell (Leeds, GB)
Assignee: Anaplan, Inc.
G06F16/24539G06F16/24552G06F16/27
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 11,475,003
App. No.
16/176,597
Filed
Oct 31, 2018
Granted
Oct 18, 2022
Kind
B1
Art Unit
2164
USPC
707/717
Abstract

In general, the invention relates to a method for servicing query requests in distributed systems. The method includes making a first determination by a query node that it is associated with a dataspace, making a second determination that data associated with a first input sub-region is not present on the query node, where the first input sub-region is associated with the dataspace. Based on the first determination and the second determination, the method includes obtaining data for the entire dataspace from persistent storage, associating at least a portion of the obtained data with the first input sub-region to obtain a populated first input sub-region, and servicing a query request using the populated first input sub-region.

Claims (59)

1. A method for servicing query requests from at least one client by a query system, wherein the query system comprises a plurality of query nodes, the method comprising:

making a first determination, by a query node of the plurality of query nodes, that it is associated with a dataspace,

wherein the dataspace is a region including one or more versions of user data,

wherein the user data includes a plurality of attributes comprising at least a first attribute and a second attribute, wherein the first attribute includes at least one unique first sub-attribute and the second attribute comprises a plurality of unique second sub-attributes;

making, by the query node, a second determination that user data associated with a first input sub-region is not present on the query node, wherein the first input sub-region is associated with the dataspace;

based on the first determination and the second determination, obtaining, by the query node, the user data for the dataspace from persistent storage;

dividing the obtained user data based on the plurality of unique second sub-attributes to obtain a plurality of sub-regions,

wherein each of the plurality of sub-regions comprises a portion of the obtained user data,

wherein a sub-region of the one of the plurality of sub-regions corresponds to the first input sub-region,

wherein each of the plurality of sub-regions includes an outer dimension and an inner dimension,

wherein the outer dimension is based on the first attribute and each of the plurality of sub-regions is based on a same one of the at least one first sub-attribute, and

wherein the inner dimension is based on the second attribute and each of the plurality of sub-regions is based on a different one of the unique second sub-attributes of the second attribute;

associating at least a portion of the obtained user data in the sub-region of the plurality of sub-regions with the first input sub-region to obtain a populated first input sub-region,

servicing, by the query node, a query request using a populated first input sub-region, wherein the populated first input sub-region comprises data associated with one of the plurality of sub-regions;

making a third determination by the query node that it is not associated with a second dataspace and that a second query node is associated with the second dataspace;

based on the third determination, issuing by the query node to the second query node, a user data request to the second query node;

receiving, from the second query node, a user data response in response to the user data request, wherein the user data response comprises user data that is used to obtain a populated second input sub-region on the query node; and

servicing, by the query node, a second query request using the populated second input sub-region.

2. The method of claim 1 , wherein at least a portion of the populated first input sub-region is stored in a cache on the query node.

3. The method of claim 2 , wherein the populated first input sub-region comprises a first version of user data for the first input sub-region and a second version of user data for the first input sub-region.

4. The method of claim 3 , wherein only the second version of the user data for the first input sub-region is stored in the cache.

5. The method of claim 1 , further comprising:

receiving, by the query node, additional user data associated with the dataspace from the persistent storage; and

associating at least a portion of the additional user data with the populated first input sub-region to obtain an updated populated first sub-region.

6. The method of claim 1 , further comprising:

associating at least a second portion of the obtained user data with a second input sub-region to obtain a populated second input sub-region,

wherein the second input sub-region is associated with the dataspace;

wherein there is no overlap of data between the first input sub-region and the second input sub-region.

7. The method of claim 1 , wherein making the first determination comprises using a distribution key and a node distribution key list to identify the query node as being associated with the dataspace, wherein the distribution key is associated with the sub-region of the plurality of sub-regions, wherein the distribution key is generated by applying a function to the outer dimension associated with the sub-region.

8. The method of claim 1 , wherein making the first determination comprises using a distribution key and a node distribution key list to identify the query node as being associated with the dataspace, wherein the distribution key is a value generated using consistent hashing and a dataspace identifier for the dataspace.

9. The method of claim 1 , wherein making the second determination comprises determining that user data associated with the first input sub-region is present on the query node, that the associated user data is for a second version of data associated with the first input sub-region, and that the query request requires a first version of data associated with the first input sub-region.

10. A non-transitory computer readable medium comprising computer readable program code, which when executed by a computer processor enables the computer processor to perform a method for servicing query requests, from at least one client by a query system, wherein the query system comprises a plurality of query nodes, the method comprising:

making a first determination, by a query node of the plurality of query nodes, that it is associated with a dataspace,

wherein the dataspace is associated with one or more versions of user data,

wherein the user data includes a plurality of attributes comprising at least a first attribute and a second attribute, wherein the first attribute includes at least one unique first sub-attribute and the second attribute comprises a plurality of unique second sub-attributes,

making, by the query node, a second determination that user data associated with a first input sub-region is not present on the query node, wherein the first input sub-region is associated with the dataspace;

based on the first determination and the second determination, obtaining, by the query node, the user data for an entire dataspace from persistent storage;

dividing the obtained user data based on the plurality of unique second sub-attributes to obtain a plurality of sub-regions,

wherein each of the plurality of sub-regions comprises a portion of the obtained user data,

wherein a sub-region of the one of the plurality of sub-regions corresponds to the first input sub-region,

wherein each of the plurality of sub-regions includes an outer dimension and an inner dimension,

wherein the outer dimension is based on the first attribute and each of the plurality of sub-regions is based on a same one of the at least one first sub-attribute, and

wherein the inner dimension is based on the second attribute and each of the plurality of sub-regions is based on a different one of the unique second sub-attributes of the second attribute;

associating at least a portion of the obtained user data in the sub-region with the first input sub-region to obtain a populated first input sub-region;

servicing, by the query node, a query request using a populated first input sub-region, wherein the populated first input sub-region comprises data associated with one of the plurality of sub-regions;

making a third determination by the query node that it is not associated with a second dataspace and that a second query node is associated with the second dataspace;

based on the third determination, issuing by the query node to the second query node, a user data request to the second query node;

receiving, from the second query node, a user data response in response to the user data request, wherein the user data response comprises user data that is used to obtain a populated second input sub-region on the query node; and

servicing, by the query node, a second query request using the populated second input sub-region.

11. The non-transitory computer readable medium of claim 10 , wherein the populated first input sub-region comprises a first version of the user data for the first input sub-region and a second version of the user data for the first input sub-region.

12. The non-transitory computer readable medium of claim 11 , wherein only the second version of the user data for the first input sub-region is stored in a cache on the query node.

13. The non-transitory computer readable medium of claim 10 , wherein the method further comprises:

receiving, by the query node, additional user data associated with the dataspace from the persistent storage; and

associating at least a portion of the additional user data with the populated first input sub-region to obtain an updated populated first sub-region.

14. The non-transitory computer readable medium of claim 10 , wherein the method further comprises:

associating at least a second portion of the obtained user data with a second input sub-region to obtain a populated second input sub-region,

wherein the second input sub-region is associated with the dataspace;

wherein there is no overlap of the user data between the first input sub-region and the second input sub-region.

15. The non-transitory computer readable medium of claim 10 , wherein making the second determination comprises determining that user data associated with the first input sub-region is present on the query node, that the associated user data is for a second version of data associated with the first input sub-region, and that the query request requires a first version of the user data associated with the first input sub-region.

Assignments (2)
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 22, 2022
From: ANAPLAN, INC.
To: OWL ROCK CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 060408/0434 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2019
From: SHACKELL, THOMAS FRANCIS
To: ANAPLAN, INC.
Reel/Frame 048145/0476 →
Cited By (1)
US 12,455,900