IP Library Granted Patent US 9,734,237
Granted Patent B2
US 9,734,237 · App. 13/731,211 · Granted Aug 15, 2017

Progressive analysis for big data

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 9,734,237
App. No.
13/731,211
Granted
Aug 15, 2017
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 (102)

1. A method comprising:

receiving, from a user device, a data query request that includes at least one search parameter;

searching for the at least one search parameter as being included in at least one data record within a plurality of files that are stored according to a hierarchical organizational structure, wherein

the hierarchical organizational structure includes at least one root and at least one tier including the plurality of files, and

each of the plurality of files includes the at least one data record;

determining whether a file of the plurality of files matches a portion of the at least one search parameter;

upon determining the file of the plurality of files matches the portion of the at least one search parameter, setting the file as a candidate file;

determining which record included by the candidate file includes the at least one search parameter, by:

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

for each respective query processing thread, determining a sub-portion of the candidate file, and

as each query processing thread generates resultant data, providing the resultant data to a result analyzer of one or more result analyzers;

generating, by the one or more result analyzers, query results from the resultant data; and

while continuing to generate the query results, 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.

2. The method of claim 1 , wherein parsing the candidate files starts after the discovery of one or more candidate files, but before the scanning of the plurality of files is completed; and

wherein generating query results starts after at least one resultant data is produced, but before parsing all of the candidate 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 at least one query status report is less than 2 seconds.

4. The method of claim 1 , wherein the hierarchical organizational structure dictates that directory names and file names include a 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.

5. The method of claim 1 , wherein a read-only portion of the plurality of files that are stored according to a hierarchical organizational structure 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.

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

data associated with user sessions is stored by splitting the data into two groups, completed data and in-progress data, and

wherein completed data is stored using a time-based file structure that includes completed files limited in size and timeframe, and

wherein in-progress data is stored in individual in-progress files, each in-progress file being associated with an identifier.

7. The method of claim 5 , wherein:

data related to web traffic in the hierarchical organizational structure 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 user device, a stop query request that includes the query identifier; and

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

10. The method of claim 1 , wherein generating query results includes:

summarizing the 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 file of the plurality of files based upon the hierarchical organizational structure,

copying the file selected to a temporary file,

writing the record to the temporary file, and

overwriting the file selected with the temporary file.

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

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

if so, moving the file selected 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 the data query request includes an indication 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 user device, a data query request that includes at least one search parameter;

search for the at least one search parameter in at least one data record within a plurality of files that are stored according to a hierarchical organizational structure, wherein

the hierarchical organizational structure includes at least one root and at least one tier including the plurality of files, and

each of the plurality of files includes the at least one data record; and

a processor configured to:

determine whether a file of the plurality of files matches a portion of the at least one search parameter;

upon determining the file of the plurality of files matches the portion of the at least one search parameter, set the file as a candidate file,

determine which record included by the candidate file includes the at least one search parameter, by:

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

for each respective query processing thread, determining a sub-portion of the candidate file, and as each query processing thread generates resultant data,

providing the resultant data for result analysis, and

generate, via the result analysis, query results from the resultant data; and

wherein the network interface is also configured to:

while continuing to generate the query results, stream, to the user device, the query results after at least one query result becomes available and before the query requests have been fully generated.

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 the plurality of fields according to a predefined 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 the data query request includes an indication 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 user device, a data query request that includes at least one search parameter;

search for the at least one search parameter as being included in at least one data record within a plurality of files that are stored according to a hierarchical organizational structure, wherein:

the hierarchical organizational structure includes at least one root and at least one tier including the plurality of files, and

each of the plurality of files includes the at least one data record;

determine whether a file of the plurality of files matches a portion of the at least one search parameter;

upon determining the file of the plurality of files matches the portion of the at least one search parameter, set the file as a candidate file;

determine which record included by the candidate file includes the at least one search parameter;

generate resultant data based on the record that includes the at least one search parameter;

generate, via result analysis, query results from the resultant data;

stream, to the user device, the query results after at least one query result becomes available and before the query requests have been fully generated;

generate a plurality of insertion processing threads;

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

associate an insertion processing thread with the record;

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

insert, 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.

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 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 →
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 →
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 052844/0646 →
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 →
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 AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2013
From: GINTER, JONATHAN
To: BMC SOFTWARE, INC.
Reel/Frame 030853/0076 →