IP Library Granted Patent US 11,281,706
Granted Patent B2
US 11,281,706 · App. 15/665,159 · Granted Mar 22, 2022

Multi-layer partition allocation for query execution

Inventors: Sourav Pal (Foster City, CA); Arindam Bhattacharjee (Fremont, CA); Kishore Reddy Ramasayam (Dublin, CA); Alexander Douglas James (Sammamish, WA)
Assignee: Splunk Inc.
G06F16/335G06F16/2465G06F16/2471G06F16/24535G06F16/26G06F16/328
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,281,706
App. No.
15/665,159
Granted
Mar 22, 2022
Kind
B2
Abstract

Systems and methods are disclosed for processing and executing queries against one or more dataset sources, where the queries identify a set of data to be processed and a manner of processing the set of data. To query the dataset sources, a query coordinator generates a query processing scheme that includes a dynamic allocation of multiple layers of partitions. The query is then executed based on the query processing scheme.

Claims (49)

1. A method comprising:

receiving, by a data intake and query system, a query identifying a set of data to be processed and a manner of processing the set of data;

defining, by the data intake and query system, a query processing scheme for obtaining and processing the set of data;

dynamically allocating a plurality of processors to multiple layers of processors to execute the query based on defining the query processing scheme, wherein dynamically allocating the plurality of processors to multiple layers of processors to execute the query comprises:

dynamically allocating a first subset of the plurality of processors to a first layer of processors to obtain, from one or more dataset sources, the set of data based on the query identifying the set of data to be processed, and

dynamically allocating a second subset of the plurality of processors to a second layer of processors to process the set of data based on the query identifying the manner of processing the set of data, wherein each of the first layer of processors and the second layer of processors can obtain the set of data and process the set of data; and

executing the query based on the query processing scheme.

2. The method of claim 1 , wherein the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from at least one dataset source of the one or more dataset sources.

3. The method of claim 1 , wherein the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from at least one dataset source of the one or more dataset sources and a third layer of processors comprises a storage layer including at least one processor to communicate data to a dataset destination.

4. The method of claim 1 , wherein the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from at least one dataset source of the one or more dataset sources and a third layer of processors comprises a branch layer including at least one processor to communicate data to multiple locations.

5. The method of claim 1 , wherein the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from at least one dataset source of the one or more dataset sources, the second layer of processors comprises a processing layer including the second subset of the plurality of processors to receive and process the set of data from the intake layer, and a third layer of processors comprises a collector layer including a third subset of the plurality of processors to collect data from the processing layer.

6. The method of claim 1 , wherein dynamically allocating the first subset of the plurality of processors to the first layer of processors to obtain, from the one or more dataset sources, the set of data is further based on a determined processing capability of a dataset source of the one or more dataset sources.

7. The method of claim 1 , wherein the first layer of processors comprises an intake layer, wherein dynamically allocating the first subset of the plurality of processors to the first layer of processors to obtain, from the one or more dataset sources, the set of data, comprises dynamically allocating a particular portion of the plurality of processors to the intake layer for each of the one or more dataset sources.

8. The method of claim 1 , wherein defining the query processing scheme comprises determining a processing capability of a dataset source of the one or more dataset sources, wherein dynamically allocating the plurality of processors to the multiple layers of processors is based on the determining the processing capability.

9. The method of claim 1 , wherein defining the query processing scheme comprises determining a processing capability of a dataset source of the one or more dataset sources and generating a subquery for the dataset source based on the determining the processing capability, the subquery identifying at least a portion of the set of data to be processed and a manner of processing the at least a portion of the set of data.

10. The method of claim 1 , wherein defining the query processing scheme comprises generating instructions for execution by the plurality of processors, and wherein executing the query comprises communicating the instructions to the plurality of processors.

11. The method of claim 1 , wherein the one or more dataset sources comprise an external data source.

12. The method of claim 1 , wherein the one or more dataset sources comprise an external data source and the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from the external data source.

13. The method of claim 1 , wherein the one or more dataset sources comprise an external data source and the first layer of processors comprises an intake layer including a processor for each processor supported by the external data source.

14. The method of claim 1 , wherein the one or more dataset sources comprise a plurality of buckets from a common storage.

15. The method of claim 1 , wherein the one or more dataset sources comprise a plurality of buckets from a common storage and the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from the plurality of buckets.

16. The method of claim 1 , wherein the one or more dataset sources comprise a plurality of buckets from a common storage and the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from the plurality of buckets based on a determined quantity of available processors.

17. The method of claim 1 , wherein the one or more dataset sources comprise a plurality of indexers and the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from the plurality of indexers.

18. The method of claim 1 , wherein the one or more dataset sources comprise a plurality of indexers and the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from the plurality of indexers based on a determined quantity of available processors.

19. The method of claim 1 , wherein the one or more dataset sources comprise an ingested data buffer.

20. The method of claim 1 , wherein the one or more dataset sources comprise an ingested data buffer and the first layer of processors comprises an intake layer including the first subset of the plurality of processors to obtain the set of data from the ingested data buffer.

21. The method of claim 1 , wherein the one or more dataset sources comprise an ingested data buffer and the first layer of processors comprises an intake layer including a processor for each processor supported by the ingested data buffer.

22. The method of claim 1 , wherein the query processing scheme is defined based on query requirements, determined available resources, and an identification of the one or more dataset sources.

23. The method of claim 1 , wherein defining the query processing scheme comprises generating directed acyclic graph instructions to execute the query on the plurality of processors.

24. The method of claim 1 , wherein defining the query processing scheme comprises generating directed acyclic graph instructions to execute the query on the plurality of processors, and wherein executing the query comprises communicating the directed acyclic graph instructions to the plurality of processors.

25. The method of claim 1 , wherein executing the query comprises receiving results from the plurality of processors, processing the results, and communicating the processed results to a client device.

26. The method of claim 1 , wherein executing the query comprises receiving results from the plurality of processors, collating the results based on time, and communicating the collated results to a client device.

27. The method of claim 1 , wherein executing the query comprises storing results from the plurality of processors in a data store for later use.

28. A computing system, comprising:

one or more processing devices configured to:

receive a query identifying a set of data to be processed and a manner of processing the set of data;

define a query processing scheme for obtaining and processing the set of data;

dynamically allocate a plurality of processors to multiple layers of processors to execute the query based on defining the query processing scheme, wherein dynamically allocating the plurality of processors to multiple layers of processors to execute the query comprises:

dynamically allocate a first subset of the plurality of processors to a first layer of processors to obtain, from one or more dataset sources, the set of data based on the query identifying the set of data to be processed, and

dynamically allocate a second subset of the plurality of processors to a second layer of processors to process the set of data based on the query identifying the manner of processing the set of data, wherein each of the first layer of processors and the second layer of processors can obtain the set of data and process the set of data; and

execute the query based on the query processing scheme.

29. The system of claim 28 , wherein the first layer of processors comprises an intake layer including the first subset of plurality of processors to obtain the set of data from at least one dataset source of the one or more dataset sources.

30. Non-transitory computer readable media comprising computer-executable instructions that, when executed by a computing system, cause the computing system to:

receive a query identifying a set of data to be processed and a manner of processing the set of data;

define a query processing scheme for obtaining and processing the set of data;

dynamically allocate a plurality of processors to multiple layers of processors to execute the query based on defining the query processing scheme, wherein dynamically allocating the plurality of processors to multiple layers of processors to execute the query comprises:

dynamically allocate a first subset of the plurality of processors to a first layer of processors to obtain, from one or more dataset sources, the set of data based on the query identifying the set of data to be processed, and

dynamically allocate a second subset of the plurality of processors to a second layer of processors to process the set of data based on the query identifying the manner of processing the set of data, wherein each of the first layer of processors and the second layer of processors can obtain the set of data and process the set of data; and

execute the query based on the query processing scheme.

Assignments (3)
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2017
From: PAL, SOURAV; BHATTACHARJEE, ARINDAM; RAMASAYAM, KISHORE REDDY; JAMES, ALEXANDER DOUGLAS
To: SPLUNK INC.
Reel/Frame 043837/0872 →
Continuity (2)
Continuation In Part 15276717 · Sep 26, 2016
Related Publication 20180089312A1 · Mar 29, 2018
Cited By (17)
US 12,204,536 US 12,204,593 US 12,248,484 US 12,265,525 US 12,271,389 US 12,287,790 US 12,287,812 US 12,393,631 US 12,405,958 US 12,436,963 US 12,481,679 US 12,585,638 US 12,613,864 US 12,639,379 US 12,650,965 US 12,670,152 US 12,717,822