IP Library Granted Patent US 10,706,088
Granted Patent B2
US 10,706,088 · App. 15/672,984 · Granted Jul 7, 2020

Progressive analysis for big data

Inventor: Jonathan Ginter (Montreal, CA)
Assignee: BMC Software, Inc.
G06F16/334G06F16/148G06F16/90335
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,706,088
App. No.
15/672,984
Granted
Jul 7, 2020
Kind
B2
Abstract

According to one general aspect, a method may include receiving a data query request that includes one or more search parameters to be searched for within a plurality of files that are stored according to a hierarchical organizational structure, wherein each file includes at least one data record. The method may include scanning a plurality of files to determine if one or more files match a sub portion of the search parameters. The method may further include parsing the candidate files to determine which, if any, records included by the respective candidate files meet the search parameters. The method may include generating, by one or more result analyzers, query results from the resultant data. The method may also include streaming, to the user device, the query results as at least one query result becomes available and to start streaming before the query requests have been fully generated.

Claims (77)

1. A method comprising:

receiving, from a computing device, a data query request that includes a set of search parameters to be searched for a target search within a plurality of files, wherein the plurality of files are stored in a database according to a hierarchical organizational structure, and wherein each file includes at least one data record;

in response to receiving the data query request, scanning the plurality of files to determine if one or more files match a sub portion of the search parameters, wherein scanning the plurality of files results in one or more candidate files;

parsing the candidate file/files to determine data records that match the search parameters for the target search; and

streaming, to the computing device, the matched data records from a first parsed candidate file as a partial query result for the target search while other candidate files are being parsed, to determine other matched data records to complete the target search,

wherein data associated with the data query request is stored by splitting the data into two groups, completed data and in-progress data,

wherein the completed data is stored using a time-based file structure, and

wherein the in-progress data is stored in individual in-progress files.

2. The method of claim 1 , wherein parsing the candidate files starts once one or more candidate files have been discovered but before scanning the plurality of files has completed.

3. The method of claim 1 , wherein the plurality of files includes at least one-hundred million data records; and

wherein a time between receiving the data query request and streaming either at least one query result or a query status report is less than 2 seconds.

4. The method of claim 1 , wherein parsing includes:

generating a plurality of query processing threads associated with the query request;

for each respective query processing thread, parsing a sub-portion of the candidate files; and

as each query processing thread generates resultant data, providing the resultant data to a result analyzer.

5. The method of claim 1 , wherein the hierarchical organizational structure dictates that directory names and file names include an at least particularly time-based naming scheme; and

wherein scanning includes examining a time-based portion of the directory names and file names to determine if each respective file is a candidate file.

6. The method of claim 1 , wherein the hierarchical organizational structure defines that a read-only portion of the plurality of files is stored in a first portion of a file hierarchy, and a readable-and-writable portion of the plurality of files is stored in a second portion of the file hierarchy.

7. The method of claim 6 , wherein the hierarchical organizational structure defines that:

data related to web traffic is stored in a time-based file structure that includes files limited in size and timeframe.

8. The method of claim 1 , wherein parsing the candidate files includes: reading at least a portion of a metadata file associated with a respective candidate file, wherein the metadata file includes a list of values included in a specified field within the associated candidate file.

9. The method of claim 1 , further including:

responding to the query request with a query identifier that identifies the query resulting from the query request;

receiving, from the computing device, a stop query request that includes the query identifier; and

terminating the query before all query results have been streamed to the computing device.

10. The method of claim 1 , wherein generating query results includes: summarizing resultant data, as currently produced, to generate the query result; and

as new resultant data is produced, incorporating the new resultant data into the query result.

11. The method of claim 1 , further comprising:

receiving a record to add to the plurality of files;

determining, based upon the hierarchical organizational structure, a file in which the record is to be stored; and

inserting the record into the determined file.

12. The method of claim 1 , further comprising:

generating a plurality of insertion processing threads;

receiving a record that includes a plurality of fields to add to the plurality of files;

associating an insertion processing thread with the record;

formatting, via the associated insertion processing thread, the record and fields according to a predefined defined data schema, wherein formatting creates a formatted record; and

inserting, via the associated insertion processing thread, the formatted data record into a selected file of the plurality of files, wherein the selected file is determined based upon the hierarchical organizational structure.

13. The method of claim 1 , further comprising:

receiving a record to add to the plurality of files;

determining if the record pertains to either atomic data or non-atomic data; and if the record pertains to non-atomic data:

selecting a selected file of the plurality of files based upon the hierarchical organizational structure,

copying the selected file to a temporary file, writing

the record to the temporary file, and

overwriting the selected file with the temporary file.

14. The method of claim 13 , wherein overwriting the selected file with the temporary file includes:

determining if, based a set of predefined criteria, if the selected file is to be made read-only, and

if so, moving the selected file to a read-only portion of the plurality of files as dictated by the hierarchical organizational structure.

15. The method of claim 1 , wherein the hierarchical organizational structure defines that for each tenant of a multi-tenant computing system, only files associated with the respective tenant are stored within a respective partitioned portion of the plurality of files;

wherein data query request includes an indication that of one or more indicated tenants whose data is to be searched; and

wherein scanning a plurality of files includes scanning only the partitioned portions of the plurality of files associated with the indicated tenants.

16. An apparatus comprising:

a network interface configured to:

receive, from a computing device, a data query request that includes a set of search parameters to be searched for a target search within a plurality of files, wherein the plurality of files are stored in a database according to a hierarchical organizational structure, and wherein each file includes at least one data record; and

a processor configured to:

in response to receiving the data query request, scan the plurality of files to determine if one or more files match a sub portion of the search parameters, wherein scanning the plurality of files results in one or more candidate files,

parse the candidate file/files to determine data records that match the search parameters,

stream, to the computing device, the matched data records from a first parsed candidate file as a partial query result for the target search while other candidate files are being parsed, to determine other matched data records to complete the target search,

wherein data associated with the data query request is stored by splitting the data into two groups, completed data and in-progress data,

wherein the completed data is stored using a time-based file structure, and

wherein the in-progress data is stored in individual in-progress files.

17. The apparatus of claim 16 , wherein the network interface is configured to:

receive a record that includes a plurality of fields to add to the plurality of files; and

wherein the processor is configured to:

execute a plurality of insertion processing threads,

associate an insertion processing thread with the record, format, via the associated insertion processing thread, the record and fields according to a predefined defined data schema, wherein formatting creates a formatted record, and

cause to be inserted, via the associated insertion processing thread, the formatted data record into a selected file of the plurality of files, wherein the selected file is determined based upon the hierarchical organizational structure.

18. The apparatus of claim 16 , wherein the hierarchical organizational structure defines that for each tenant of a multi-tenant computing system, only files associated with the respective tenant are stored within a respective partitioned portion of the plurality of files;

wherein data query request includes an indication that of one or more indicated tenants whose data is to be searched; and

wherein the processor is configured to scan only the partitioned portions of the plurality of files associated with the indicated tenants.

19. A computer program product for storing and providing information, the computer program product being tangibly and non-transitorily embodied on a computer readable medium and including executable code that, when executed, is configured to cause an apparatus to:

receive, from a computing device, a data query request that includes a set of search parameters to be searched for a target search within a plurality of files, wherein the plurality of files are stored in a database according to a hierarchical organizational structure, and wherein each file includes at least one data record;

in response to receiving the data query request, scan the plurality of files to determine if one or more files match a sub portion of the search parameters, wherein scanning the plurality of files results in one or more candidate files;

parse the candidate file/files to determine data records that match the search parameters for the target search; and

stream, to the computing device, the matched data records from a first parsed candidate file as a partial query result for the target search while other candidate files are being parsed, to determine other matched data records to complete the target search,

wherein data associated with the data query request is stored by splitting the data into two groups, completed data and in-progress data,

wherein the completed data is stored using a time-based file structure, and

wherein the in-progress data is stored in individual in-progress files.

Assignments (14)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY INTEREST Recorded Jun 22, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046176/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2017
From: GINTER, JONATHAN
To: BMC SOFTWARE, INC.
Reel/Frame 043323/0862 →
Continuity (4)
Continuation 13731211 · Dec 31, 2012
Provisional Application 61714222 · Oct 15, 2012
Provisional Application 61711189 · Oct 8, 2012
Related Publication 20170364584A1 · Dec 21, 2017