DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This Office action is issued in response to application, 19/286,847, filed on 7/31/2025.
Claim(s) 1-20 is/are pending.
Priority
Acknowledgment is made of applicant’s claim for priority to application, 18/648,342, filed on 4/27/2024, which claims priority to application, 16/267,608, filed on 2/5/2019, issued as U.S. 11,977,545, which claims priority to provisional application, 62/745,787, filed on 10/18/2018.
Specification
The abstract of the disclosure is objected to because it is over 150 words (i.e., 151 words). A corrected abstract of the disclosure is required and must be presented on a separate sheet, apart from any other text. See MPEP § 608.01(b).
The lengthy specification has not been checked to the extent necessary to determine the presence of all possible minor errors. Applicant’s cooperation is requested in correcting any errors of which applicant may become aware in the specification.
Claim Objections
Claim(s) 1 is/are objected to because of the following informalities: in line 14, “an IO level” should be corrected to “an input output (IO) level”. Appropriate correction is required.
Claim(s) 12 is/are objected to because of the following informalities: in line 12, “an IO level” should be corrected to “an input output (IO) level”. Appropriate correction is required.
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claim(s) 9, 19 and 20 is/are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
The term “efficiency” in claims 9 and 19 is a relative term which renders the claim indefinite. The term “efficiency” is not defined by the claim, the specification does not provide a standard for ascertaining the requisite degree, and one of ordinary skill in the art would not be reasonably apprised of the scope of the invention (i.e., What is used to determine efficiency? What is deemed as the threshold to be efficient? 10% of what? 95% of what?). Because “efficiency” is not defined and it cannot be determined when a path is efficient, the claims are indefinite and are rejected for that reason.
Claim(s) 20 inherit(s) the deficiencies of the claim it/they depend(s) from.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claim(s) 1 and 3-11 is/are rejected under 35 U.S.C. 101 because the claimed invention is directed to non-statutory subject matter.
Claim(s) 1 is/are rejected because the claimed invention is directed to non-statutory subject matter. The claim(s) does/do not fall within at least one of the four categories of patent eligible subject matter because it is directed to software per se. The claim does not recite a “processor”. The claim(s) only recite(s) “a database system”, “a parallelized data input sub-system”, “a parallelized data store, retrieve, and process sub-system”, “a first plurality of nodes”, “a second plurality of nodes”, “a third plurality of nodes” and “a first node of the third plurality of nodes”, which are not defined, which, using the broadest reasonable interpretation, could all be implemented entirely in software. Such limitations, as currently claimed, are just software without having a computer system to execute the steps as claimed. Therefore, claim(s) 1 is/are directed to software that is not tied to a technological art, environment or machine to form the basis of statutory subject matter under 35 U.S.C. 101. Note: The examiner suggests amending the claim(s) to add a “processor” or a “hardware processor” to overcome the rejection(s).
Claim(s) 3-11 inherit(s) the deficiencies of the claim it/they depend(s) from.
Note: Claim 2 includes a memory, which is hardware, and which would make the claim patent eligible.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Bayliss et al., US 2004/0098373 A1 (hereinafter “Bay”) in view of Shi et al., CN 109359164 A (hereinafter “Shi”).
Claims 1 and 12
Bay discloses a database system comprises:
a parallelized data input sub-system including a first plurality of nodes of pluralities of nodes (Bay, Fig. 7A, see overall system [i.e., corresponds to the “parallelized data input sub-system”] and see in particular Collator 704 managing Nodes 710 and 712 [i.e., corresponds to the “first plurality of nodes of the plurality of nodes]);
a parallelized data store, retrieve, and process sub-system including a second plurality of nodes of the pluralities of nodes (Bay, Fig. 7A, see Collators 704, 706 and 708 [i.e., corresponds to the “parallelized data store, retrieve and process sub-system”] and see in particular Collator 706 managing Nodes 714 and 716 [i.e., corresponds to the “second plurality of nodes of the plurality of nodes]);
a parallelized query and response sub-system including a third plurality of nodes of the pluralities of nodes (Bay, Fig. 7A, see Global-results processing matrix 118 [i.e., corresponds to the “parallelized query and response sub-system”] and see in particular Collator 708 managing Nodes 718 and 720 [i.e., corresponds to the “third plurality of nodes of the plurality of nodes]), wherein a node of the pluralities of nodes includes a plurality of processing core resources (Bay, [0152], see each processing node 1620 includes one or more processors 1622 [i.e., corresponds to the “processing core resource”]), and wherein the third plurality of nodes is operable to:
receive a plurality of queries in parallel (Bay, [0040], see the system 100 is adapted to receive and process one or more queries received from one or more clients; Bay, [0036], see parallel processing of database queries; and Bay, [0084], see the system 100 can be adapted to process the query using two or more of the same type of processing matrices in sequence or in parallel); and
assign a first query of the plurality of queries to a first node of the third plurality of nodes (Bay, [0052], see generating a DLL representing a submitted query; Bay, [0106], see the query server 102 generates a DLL 700 and provides the DLL 700 to the master node 702 of the processing matrix 120. In the illustrated example, the DLL includes three portions A-C, each portion to be executed by processing nodes [i.e., where portion A assigned to processing nodes, wherein one of the nodes corresponds to the “first node of the plurality of nodes”] of a specified level of the tree), wherein the first node is operable to:
identify a dataset for the first query, wherein the first query includes an instruction set in a standard query format (Bay, [0052], see generating a DLL representing a submitted query; Bay, [0057], see the query agent 104 submits an SQL or XQL query [i.e., corresponds to the “first query” in a “standard query format”] to one or both of the processing matrices. 120, 122 for execution. The SQL/XQL query can be embedded in the DLL 150 by the query server 102, extracted by the query agent 104, and then provided to the processing matrix 120/processing matrix 122. Upon receipt of the SQL/XQL query, the master node of the processing matrix 120/122 is adapted to generate another executable (e.g., another DLL) from the embedded SQL/XQL instructions [i.e., where SQL statements tell where to retrieve data in the FROM statements, which corresponds to the “dataset”]);
convert the instruction set into a hierarchical tree structure of code constructs (Bay, [0074], see convert the query to the intermediary source code using predefined code segments [i.e., corresponds to the “code constructs”], the query server 102 converts the source-code instructions of the submitted query into a parse tree (also known as a syntax tree) [i.e., parse/syntax tree corresponds to the “hierarchical tree structure”]. The query server 102 then analyzes each node as it traverses the parse tree. At each node, the query server 102 selects the most appropriate predefined code segment based on the analysis of the node. General methods for converting source code using parse trees are well known to those skilled in the arts), wherein the hierarchical tree structure of code constructs includes an IO level and a root level (Bay, [0087], see the method 500 initiates at step 506, whereby the master node (master node 702, FIG. 7) of the matrix 120 (or matrix 122) is adapted to identify and extract the SQL statements 502, 504 [i.e., where SQL statements tell where to retrieve data in the FROM statements and what is outputted in the SELECT statements, which corresponds to the Input/Output/IO] from the DLL 500; Bay, [0099], see the nodes of the processing matrix 120 preferably are logically arranged in an n-ary tree structure of N levels. The node at the root of the tree [i.e., corresponds to the “root level”] is designated as the master node and each node at the bottom level of the tree structure is dedicated as a slave node; and Bay, Fig. 7A, see Master 702 is the root node over the Nodes 710, 712, 714, 716, 718 and 720), wherein the root level is upstream from the IO level (Bay, Fig. 7A, see Master 702 is the root node upstream over the Nodes 710, 712, 714, 716, 718 and 720, which process the SQL statements/IO);
determine dataset storage information (Bay, [0127], see, since each slave node is likely to have an at least slightly different partitioning scheme from the other slave nodes, each slave node submits its suggested partitioning scheme [i.e., corresponds to the “dataset storage information”] to the master node. Each slave node also sends an indication of the number of records from its own data portion that fall within each “bucket” of its suggested partitioning scheme);
determine a set of available nodes of the second plurality of nodes for processing the first query (Bay, [0127], see, at step 1106, the master node determines a tentative partitioning scheme for the entire database distributed among the slave nodes [i.e., corresponds to the “set of available nodes”]);
map database operations to the hierarchical tree structure of code constructs to produce a hierarchical tree structure of database operations (Bay, [0074], see convert the query [i.e., “database operations”] to the intermediary source code using predefined code segments [i.e., corresponds to the “code constructs”], the query server 102 converts the source-code instructions of the submitted query into a parse tree (also known as a syntax tree) [i.e., parse/syntax tree corresponds to the “hierarchical tree structure”]. The query server 102 then analyzes each node as it traverses the parse tree. At each node, the query server 102 selects the most appropriate predefined code segment based on the analysis of the node. General methods for converting source code using parse trees are well known to those skilled in the arts);
generate an initial query plan from the hierarchical tree structure of database operations in accordance with the dataset storage information and the set of available nodes (Bay, [0127], see, at step 1106, the master node determines a tentative partitioning scheme [i.e., corresponds to the “initial query plan”] for the entire database distributed among the slave nodes),
optimize the initial query plan to produce an optimized query plan (Bay, [0128], see, using the responses of the slave nodes, the master node determines the effect of the tentative partitioning scheme at step 1110. If the effect is tolerable (i.e., the data is relatively equally distributed, no single slave node is over capacity, etc.), the master node can elect to use the tentative partitioning scheme to partition the data. Otherwise, the master node revises the tentative partitioning scheme based on the responses [i.e., the tolerable partitioning scheme and/or the revised partitioning scheme corresponds to the “optimized query plan”] from the slave nodes at step 1106 and steps 1106-1108 are repeated until an acceptable or optimal partitioning scheme is determined); and
send the optimized query plan to nodes of the set of available nodes for execution (Bay, [0131], see, at step 1120, one of the slave nodes of each subset is nominated to calculate a sub-partitioning scheme for the nodes of the subset. For example, for a subset of four nodes, the nominated slave node could determine a partitioning scheme that would split the data associated with the subset in half, each half going to one of two subsets of two nodes each. At step 1122, the nodes of the subset are assigned to sub-subsets. At step 1124, the steps 1120 and 1122 are repeated until each subset includes a single slave node with its own database. In effect, this recursive partitioning is analogous to a binary search, whereby the problem is divided and subdivided until the solution is determined. After the recursive partitioning of steps 1116-1124 has completed, the data is transferred between the slave nodes at step 1112 and merge sorted at step 1114).
Bay does not appear to explicitly disclose wherein the initial query plan is divided into a plurality of parallel paths from the IO level to the root level.
Shi discloses wherein the initial query plan is divided into a plurality of parallel paths from the IO level to the root level (Shi, page 2, Summary of the invention, 2nd paragraph, see predicted probability range query [i.e., corresponds to the “initial query plan”] method comprises the following steps: step 1: according to the Hash table locating inquiry condition where road RID spatial index leaf node, locating a corresponding time index B + optimizing root; step 2: finding all mobile object OID tc to the forecast time of latest sampling point samples, forming a samples data set, step 3: the all samples data set to be inquired into M segments, M corresponding to Map task; step 4: transferring the Map function processing space limit, realize the Map operation; step 5: calling the Reduce function processing possible route query and probability calculation and realize the Reduce operation, step 6 of setting the input and output path, starting the MapReduce parallel operation; step 7: sub-query result merging procedure, all the query results into a complete result).
Bay and Shi are analogous art because they are from the same field of endeavor of query optimization.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the invention, having the teachings of Bay and Shi before him/her, to modify the query optimization of Bay to include the IO path setting of Shi because it would increase processing efficiency.
The suggestion/motivation for doing so would have been to improve query precision and have high production efficiency, see Shi, page 4, 1st paragraph.
Therefore, it would have been obvious to combine Shi with Bay to obtain the invention as specified in the instant claim(s).
Claim(s) 12 recite(s) similar limitations to claim 1 and is/are rejected under the same rationale.
With respect to claim 12, Bay discloses a computer readable memory comprises:
a first memory section (Bay, [0012], see memory);
a second memory section (Bay, [0012], see memory).
Claim 2
With respect to claim 2, the combination of Bay and Shi discloses wherein a processing core resource of the plurality of processing core resources comprises:
a processing module (Bay, [0012], see processor);
memory operably coupled to the processing module (Bay, [0012], see memory); and
a network interface memory operably coupled to the processing module (Bay, [0012], see network interface).
Claims 3 and 13
With respect to claims 3 and 13, the combination of Bay and Shi discloses wherein the third plurality of nodes is further operable to:
assign a second query of the plurality of queries to a second node of the third plurality of nodes (See below);
assign a third query of the plurality of queries to a third node of the third plurality of nodes (See below); and
assign a fourth query of the plurality of queries to a fourth node of the third plurality of nodes (Bay, [0100], see the master node 702 is adapted to prepare the processing matrix 120 for processing a DLL/SQL query received from the query agent 104; to distribute the DLL to its children; and to process the results supplied from its children. The slave nodes of the processing matrix 120 can be viewed as the “workhorses” of the processing matrix 120 by performing the processing-intensive operations of the submitted query. Each collator node between the slave nodes and the master nodes manages the results from its children and then provides the results of its processing to its parent node, which may include another collator node or the master node. The master node then processes the results from its children nodes; and Bay, Fig. 9B, see Master 902 sending DLL [i.e., corresponds to “second query”] to Slave node 914, Master 902 sending DLL [i.e., corresponds to “third query”] to Slave node 916 and Master 902 sending DLL [i.e., corresponds to “fourth query”] to Slave node 918).
Claims 4 and 14
With respect to claims 4 and 14, the combination of Bay and Shi discloses wherein the first node is operable to convert the instruction set into the hierarchical tree structure of code constructs by:
performing a language recognition function on the instruction set to translate generic language of the instruction set to parsed language statements (See below); and
performing an abstract syntax tree generator function on the parsed language statements to produce the hierarchical tree structure of code constructs (Bay, [0074], see convert the query to the intermediary source code [i.e., system must recognize what language the query/instruction is written in in order to properly convert the query/instruction] using predefined code segments [i.e., corresponds to the “code constructs”], the query server 102 converts the source-code instructions of the submitted query into a parse tree (also known as a syntax tree) [i.e., parse/syntax tree corresponds to the “hierarchical tree structure”]. The query server 102 then analyzes each node as it traverses the parse tree. At each node, the query server 102 selects the most appropriate predefined code segment based on the analysis of the node. General methods for converting source code using parse trees are well known to those skilled in the arts).
Claims 5 and 15
With respect to claims 5 and 15, the combination of Bay and Shi discloses wherein the first node is further operable to:
perform a validation function on the hierarchical tree structure of code constructs to produce a verified hierarchical tree structure of code constructs as the hierarchical tree structure of code constructs (Bay, [0074], see convert the query to the intermediary source code using predefined code segments [i.e., corresponds to the “code constructs”], the query server 102 converts the source-code instructions of the submitted query into a parse tree (also known as a syntax tree) [i.e., parse/syntax tree corresponds to the “hierarchical tree structure”]. The query server 102 then analyzes each node as it traverses the parse tree. At each node, the query server 102 selects the most appropriate predefined code segment based on the analysis of the node. General methods for converting source code using parse trees are well known to those skilled in the arts; and Bay, claim 19, see verify a correct operation of the first general-purpose processing matrix after distributing the software).
Claims 6 and 16
With respect to claims 6 and 16, the combination of Bay and Shi discloses wherein the dataset storage information comprises:
a storage location of the dataset (Bay, [0051], see physical location of the data set; and Bay, [0142], see storage location of back-up copies of data portions); and
dataset storage parameters, wherein the dataset storage parameters include two or more of:
a number of rows of the dataset;
a number of columns of the dataset;
a number of partitions that the dataset was divided into (Bay, [0125], see partitioning data between slave nodes);
a data redundancy encoding scheme (Bay, [0142], see storage location of back-up copies of data portions and/or results provides flexibility and allows additional redundancy);
a number of storage clusters of the parallelized data store, retrieve, and process sub-system storing the dataset, wherein a storage cluster includes a plurality of computing devices;
a number of computing devices within the storage cluster;
a number of nodes within a computing device; and
a number of processing core resources within a node.
Claims 7 and 17
With respect to claims 7 and 17, the combination of Bay and Shi discloses wherein the first node is operable to generate the initial query plan from the hierarchical tree structure of database operations by:
determining an amount of parallel paths of the plurality of parallel paths based on the set of available nodes and the dataset storage information (Shi, page 2, Summary of the invention, 2nd paragraph, see optimizing the root and setting the input and output paths using MapReduce in parallel; and Shi, page 2, Summary of the invention, 3rd paragraph, see index layer granularity based on the sampling point; query to gradually record the route between node boundary vertices [i.e., where it can be determined the number of nodes within the boundary, which discloses the number of available nodes]);
adjusting the hierarchical tree structure of database operations based on the plurality of parallel paths (Shi, page 2, Summary of the invention, 2nd paragraph, see optimizing the root and setting the input and output paths using MapReduce in parallel; and Shi, page 2, Summary of the invention, 3rd paragraph, see index layer granularity based on the sampling point; query to gradually record the route between node boundary vertices [i.e., where it can be determined the number of nodes within the boundary, which discloses the number of available nodes]); and
mapping database operations of the adjusted hierarchical tree structure of database operations to nodes of the set of available nodes to produce the initial query plan (Shi, page 2, Summary of the invention, 2nd paragraph, see predicted probability range query [i.e., corresponds to the “initial query plan”] method comprises the following steps: step 1: according to the Hash table locating inquiry condition where road RID spatial index leaf node, locating a corresponding time index B + optimizing root; step 2: finding all mobile object OID tc to the forecast time of latest sampling point samples, forming a samples data set, step 3: the all samples data set to be inquired into M segments, M corresponding to Map task; step 4: transferring the Map function processing space limit, realize the Map operation; step 5: calling the Reduce function processing possible route query and probability calculation and realize the Reduce operation, step 6 of setting the input and output path, starting the MapReduce parallel operation; step 7: sub-query result merging procedure, all the query results into a complete result [i.e., see mapping data to the M segments including setting input and output paths]).
Claims 8 and 18
With respect to claims 8 and 18, the combination of Bay and Shi discloses wherein the first node is further operable to:
determine a timing scheme for executing the first query (Bay, [0053], see the scheduling services module 114 determines the next available time that the query can be processed); and
include the timing scheme in the initial query plan (Bay, [0053], see the scheduling services module 114 determines the next available time that the query can be processed and generates a token associated with the scheduling request. The token is provided to the query agent 104 having the corresponding DLL 150, either directly or via the query server 102. The query agent 104 then informs the scheduling services module 114 that it has received the token and requests that the scheduling services module 114 notify the query agent 104 when it has permission to proceed [i.e., where knowing when the query can be processed goes into the timing of the query plan]).
Claims 9 and 19
With respect to claims 9 and 19, the combination of Bay and Shi discloses wherein the first node is operable to optimize the initial query plan by:
analyzing the plurality of parallel paths for optimization conditions based on one or more of efficiency (Shi, page 2, Summary of the invention, 2nd paragraph, see optimizing the root and setting the input and output paths using MapReduce in parallel; and Shi, page 4, Specific implementation methods, 6th paragraph, see optimizing index creating way, index based on upper layer granularity sampling time point. query to gradually record the route between node boundary vertices stored in Region table form to achieve indirect index part data and improve the inquiry efficiency), cost, speed, and resource usage.
Claims 10 and 20
With respect to claims 10 and 20, the combination of Bay and Shi discloses wherein an optimization condition of the optimization conditions includes:
an indication to distribute a database operation amongst one or more levels of the plurality of parallel paths (Shi, page 2, Summary of the invention, 2nd paragraph, see optimizing the root and setting the input and output paths using MapReduce in parallel).
Claim 11
With respect to claim 11, the combination of Bay and Shi discloses wherein the first node is further operable to:
determine available nodes of the third plurality of nodes for processing the first query (Bay, [0127], see, at step 1106, the master node determines a tentative partitioning scheme for the entire database distributed among the slave nodes [i.e., corresponds to the “available nodes”]); and
include the available nodes of the third plurality of nodes in the set of available nodes (Bay, [0127], see, at step 1106, the master node determines a tentative partitioning scheme for the entire database distributed among the slave nodes [i.e., corresponds to the “available nodes”, where if the third plurality of nodes is available, they would be included in this group]).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
– Agarwal et al., 5822749 for improving query performance with cache optimization strategies;
– Arnold et al., 2024/0281439 for level structure in query plan;
– Bayliss et al., 2004/0098359 for parallel processing of database queries;
– Bayliss et al., 2004/0098374 for query scheduling in a parallel-processing database;
– Bayliss et al., 2004/0098372 for global-results processing matrix for processing queries;
– Liu et al., 2018/0314735 for using machine learning to estimate query resource consumption; and
– Bayliss et al., 2004/0098371 for failure recovery in a parallel-processing database.
Point of Contact
Any inquiry concerning this communication or earlier communications from the examiner should be directed to HUBERT G CHEUNG whose telephone number is (571) 270-1396. The examiner can normally be reached M-R 8:00A-5:00P EST; alt. F 8:00A-4:00P EST.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Apu Mofiz can be reached at (571) 272-4080. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
HUBERT G. CHEUNG
Assistant Examiner
Art Unit 2161
Examiner: Hubert Cheung
/Hubert Cheung/Assistant Examiner, Art Unit 2161Date: June 4, 2026
/APU M MOFIZ/Supervisory Patent Examiner, Art Unit 2161