DETAILED ACTION
In response to communication filed on 13 January 2026, claims 1, 11, 20 and 22 are amended. Claims 4 and 14 are canceled. Claims 1-3, 5-13 and 15-22 are pending.
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Arguments
Applicant’s arguments, see “Double Patenting”, filed 13 January 2026, have been carefully considered and are not considered to be persuasive since it mentions holding the rejection in abeyance. Based on the claim amendments, the double patenting rejection below has been updated.
Applicant’s arguments, see “Claim Rejections – 35 U.S.C. § 103”, filed 13 January 2026, have been carefully considered and are not persuasive. The arguments are related to newly added limitations and they are addressed in the rejection below.
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The filing of a terminal disclaimer by itself is not a complete reply to a nonstatutory double patenting (NSDP) rejection. A complete reply requires that the terminal disclaimer be accompanied by a reply requesting reconsideration of the prior Office action. Even where the NSDP rejection is provisional the reply must be complete. See MPEP § 804, subsection I.B.1. For a reply to a non-final Office action, see 37 CFR 1.111(a). For a reply to final Office action, see 37 CFR 1.113(c). A request for reconsideration while not provided for in 37 CFR 1.113(c) may be filed after final for consideration. See MPEP §§ 706.07(e) and 714.13.
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The actual filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/apply/applying-online/eterminal-disclaimer.
Claims 1-3, 5-13 and 15-22 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-4 and 7-9 of U.S. Patent No. 12,153,575 B2 in view of Eblighatian et al. (US 2015/0046429 A1, hereinafter “Eblighatian”). The patented claim teaches the limitations of the claim as shown by comparison below in bold.
Current Application
(Application# 18924767)
U.S. Patent No. 12,153,575 B2
Claim 1: A method, comprising:
Claim 1: A method, comprising:
receiving a query; and
receiving a… query;
executing the query at a database instance that supports a first database service and a second database service by:
determining whether the database query is to be processed by a first database, a second database, or at least in part processed by both the first database and the second
database.
determining, based on historical performance data, an execution path of the query includes splitting the query across the first database service and the second database service;
determining based at least in part on historical performance data that there exists a performance improvement to split the database query and use both the first database and the second database.
wherein the first database service and the second database service store synchronized records responsive to the query in different formats; wherein the synchronized records are replicated between the first database service and the second database service such that the first database service and the second database service include the same data;
wherein the first database and the second database store shared synchronized records, the first database is configured to store the synchronized records in a column oriented format, and the second database is configured to store the synchronized records in a row oriented format;
in response to determining the execution path, splitting the query into:
a first component query in a first query language compatible with the first database service; and a second component query in a second query language compatible with the second database service;
in response to the determination that the database query meets the criteria to split the database query, generating a first component query of the database query for the first database and a second component query of the database query for the second database,
executing the first component query at the first database service; and executing the second component query at the second database service,
pipelining execution of the first component query and the second component query.
wherein the first component query is based on a WHERE clause or a JOIN clause of the query,
wherein the result of the first component query including a result of a column-store component query generated from a WHERE clause or a JOIN clause
wherein the second component query is based on a SELECT clause of the query.
the second component query including a row-store component query generated from a SELECT clause of the database query.
Claim 2: wherein the first component query is based on a first clause of the query.
Claim 1: wherein the result of the first component query including a result of a column-store component query generated
from a… clause.
Claim 3: wherein the second component query is based on a second clause of the query.
Claim 1: … clause of the database query is used to generate the second component
query.
Claim 5: … includes determining whether a number of aggregate functions included in the query exceeds a threshold.
Claim 3: determining whether the
determined number of aggregate functions of the database query exceeds a configured aggregate functions threshold value.
Claim 6: … includes determining a number of projections of the query and determining whether the determined number of projections of the query exceeds a configured projections threshold value.
Claim 2: includes determining a number of projections of the database query and determining whether the determined number of projections of the database query exceeds a configured projections threshold value.
Claim 7: … includes determining a number of tables referenced by an operation of the query and determining whether the determined number of the tables referenced by the operation exceeds a configured operation threshold value.
Claim 4: determining a number of tables referenced by a… operation of the database query and determining whether the determined number of the tables referenced by the… operation exceeds a configured… operation threshold value.
Claim 8: wherein the first component query is translated to the first query language from the second query language.
Claim 7: translating the first component query to a first database query language of the first database from a second database query language of the second database.
Claim 9: … includes creating a query tree of the query and identifying a first node of the query tree corresponding to the first component query and a second node of the query tree corresponding to the second component query.
Claim 8: includes creating a query tree of the database query and identifying a first node of the query tree corresponding to the first component query and a second node of the query tree corresponding to the second component query.
Claim 10: wherein the first node of the query tree corresponds to a sub-tree of the query tree and the second node of the query tree corresponds to a root node of the query tree.
Claim 9: wherein the first node of the query tree corresponds to a sub-tree of the query tree and the second node of the query tree corresponds to a root node of the query tree.
Claim 21: wherein the first database service is in a first format and the second database service is in a different format.
Claim 1: the first database is configured to store the synchronized records in a column oriented format, and the second database is
configured to store the synchronized records in a row oriented format;
Claim 22: wherein the first format is in a column-store format, wherein the second format is in a row-store format
Claim 1: the first database is configured to store the synchronized records in a column oriented format, and the second database is
configured to store the synchronized records in a row oriented format;
Regarding claim 1, of the current application recites splitting of database queries. Here claim 1 of U.S. Patent No. 12,153,575 B2 recites a method of splitting of database queries. These claims differ as the current claim recites wherein the synchronized records are replicated between the first database service and the second database service such that the first database service and the second database service include the same data. Claim 1 of U.S. Patent No. 12,153,575 B2 recites wherein the first database and the second database store shared synchronized records, Both of these limitations appear to be reciting the same information. Also, these method claims differ from claim 1 in that it fails to disclose the component generating execution path. Eblighatian teaches query plans based on the historical performances. See Eblighatian [0023] and [0027]. Therefore it would have been obvious to modify the method of claim 1 of the patent such that splitting of queries are performed based on execution plan. One having ordinary skill in the art would have been motivated to make such a modification to improve responsiveness as per the teachings of Eblighatian [0001].
Claims 11 and 20 incorporate substantively all the limitations of claim 1 in a system and computer-readable medium form and are rejected under the same rationale.
Regarding claims 2 and 3, of the current application recites broadly a first clause and a second clause. Here claim 1 of U.S. Patent No. 12,153,575 B2 recites specifics of plurality of clauses. Thus claims 2-3 of instant application falls entirely within the scope of claim 1, or in other words, claims 2-3 are anticipated by claim 1 of U.S. Patent No. 12,153,575 B2.
Claims 12-13 incorporate substantively all the limitations of claims 2-3 in a system form and are rejected under the same rationale.
Claims 5-6 and 8-10 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1, 3, 2 and 7-9 respectively of U.S. Patent No. 12,153,575 B2. Thus claims 5, 6 and 8-10 of instant application falls entirely within the scope of claims 3, 2 and 7-9, or in other words, claims 5, 6 and 8-10 are anticipated by claims 1, 3, 2 and 7-9 respectively of U.S. Patent No. 12,153,575 B2.
Claims 15-16 and 18-19 incorporate substantively all the limitations of claims 5-6 and 8-9 in a system form and are rejected under the same rationale.
Regarding claim 7, of the current application recites broadly an operator. Here claim 4 of U.S. Patent No. 12,153,575 B2 recites a specifics of an operator. Thus claim 7 of instant application falls entirely within the scope of claim 4, or in other words, claim 7 is anticipated by claim 4 of U.S. Patent No. 12,153,575 B2.
Claim 17 incorporate substantively all the limitations of claim 7 in a system form and are rejected under the same rationale.
Regarding claim 21, of the current application recites first format and different format. Here claim 1 of U.S. Patent No. 12,153,575 B2 recites specifics of row oriented format and column oriented format which are first format and another different format so these limitations are referring to the same thing. Thus claim 21 of instant application falls entirely within the scope of claim 1, or in other words, claim 21 is anticipated by claim 1 of U.S. Patent No. 12,153,575 B2.
Regarding claim 22, is rejected on the ground of nonstatutory double patenting as being unpatentable over claim 1 of U.S. Patent No. 12,153,575 B2 Thus claim 22 of instant application falls entirely within the scope of claim 1, or in other words, claim 22 is anticipated by claim 1 of U.S. Patent No. 12,153,575 B2.
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.
Claims 1, 11 and 20-22 are rejected under 35 U.S.C. 103 as being unpatentable over Brodt et al. (US 2018/0046643 A1, hereinafter “Brodt”) in view of Eblighatian et al. (US 2015/0046429 A1, hereinafter “Eblighatian”) further in view of Joshi et al. (US 10,049,143 B2, hereinafter “Joshi”).
Regarding claim 1, Joshi teaches
A method, comprising: (see Brodt, [0042] “the method may be used for processing a query against a table in a data processing system”).
receiving a query; and (see Brodt, [0048] “to receiving the query, a determination may be made as to which engine will execute the query, as in decision block 013”).
executing the query at a database instance that supports a first database service and a second database service by: (see Brodt, [0138] “DBMS comprising at least a first database engine (or first "engine") and a second database engine ("second engine") whereby the first engine is configured to process a query received by the hybrid DBMS on instances of one or more database tables stored in a first database and wherein the second engine is configured to process query received by the hybrid DBMS on instances of the one or more tables stored in a second database. The first and the second engine may be speed optimized for different types of queries and/or data formats”).
… includes splitting the query across the first database service and the second database service, (see Brodt, [0083] “Thereby, the query is split into parts such that the part of the query configured to access the first table is dispatched to the first engine and the part of the query configured to access the second table is dispatched to the second engine”; [0158] “decides if a particular query… should be split into at least a first query part to be executed by the first engine and a second query part to be executed by the second engine”) wherein the first database service and the second database service store synchronized records (see Brodt, [0077] “one traditional approach used in federated databases managing two copies of a database to ensure data consistency is to have all write transactions make their modifications to both copies of the database or individual tables directly. These write transactions and the changes they impose are typically synchronized between the databases”; [0158] “The first engine 116 maintains a first database 102 comprising one or more database tables T1, T2, T3. The second engine 170 maintains a second database comprising further instances Tl', T2', T3' of the tables, whereby a replication module 172 repeatedly replicates data from the source table instances T1 , T2, T3 to the target table instances T1', T2', T3'”) responsive to the query (see Brodt, [0117] “the replication module generates a replication batch for performing the replication in response to receiving the query”) in different formats, (see Brodt, [0138] “a DBMS comprising at least a first database engine ( or first "engine") and a second database engine ("second engine") whereby the first engine is configured to process a query received by the hybrid DBMS on instances of one or more database tables stored in a first database and wherein the second engine is configured to process query received by the hybrid DBMS on instances of the one or more tables stored in a second database... Thus, every engine owns a copy of some data in its own format that is optimized for the specific workload. The formats differ, for example, in compression, row-oriented vs. column-oriented storage, etc… Thus, every engine owns a copy of the data of the shared tables in its own format that is optimized for a type of query”) wherein the synchronized records are replicated between the first database service and the second database service such that the first database service and the second database service (see Brodt, [0077] “one traditional approach used in federated databases managing two copies of a database to ensure data consistency is to have all write transactions make their modifications to both copies of the database or individual tables directly. These write transactions and the changes they impose are typically synchronized between the databases”; [0121] “The first engine is solely responsible for managing a first database comprising first instances of a plurality of database tables. The second engine is solely responsible for managing a second database comprising second instances of the plurality of tables, whereby the data of tables having an instance in the first and in the same database the data changes in the first instance is regularly replicated to the second instance of the table”; [0158] “The first engine 116 maintains a first database 102 comprising one or more database tables T1, T2, T3. The second engine 170 maintains a second database comprising further instances Tl', T2', T3' of the tables, whereby a replication module 172 repeatedly replicates data from the source table instances T1 , T2, T3 to the target table instances T1', T2', T3'”) include the same data; (see Brodt, [0067] “Ensuring that both engines operate on the same data state can be highly advantageous as it may increase the flexibility of the hybrid DBMS to dispatch received queries completely or even partially to the second DBMS”).
… splitting the query into: (see Brodt, [0083] “Thereby, the query is split into parts such that the part of the query configured to access the first table is dispatched to the first engine and the part of the query configured to access the second table is dispatched to the second engine”; [0158] “decides if a particular query… should be split into at least a first query part to be executed by the first engine and a second query part to be executed by the second engine”).
a first component query… (see Brodt, [0158] “a first query part to be executed by the first engine”).
a second component query… (see Brodt, [0158] “a second query part to be executed by the second engine”).
executing the first component query at the first database service; and (see Brodt, [0158] “a first query part to be executed by the first engine”; [0163]-[0164] “If the query contains a first and a second query part… the first part will be dispatched to the first engine and the second part will be dispatched to the second engine… This allows the first and second engines to execute their respective parts of the query”).
executing the second component query at the second database service, (see Brodt, [0158] “a second query part to be executed by the second engine”; [0163]-[0164] “If the query contains a first and a second query part… the first part will be dispatched to the first engine and the second part will be dispatched to the second engine… This allows the first and second engines to execute their respective parts of the query”) wherein the first component query is based on a JOIN clause of the query, (see Brodt, [0078] “the first engine computes the final result by combining the first and second result via a SQL operation selected, for example, from a group comprising: a JOIN operation (e.g. [NOT] IN, [NOT] EXISTS, left/right/full outer JOIN, inner JOIN, etc.), a set operation (e.g. INTERSECT, UNION, EXCEPT), a UNION operation, an arithmetic expression (e.g. "+"), or a function like AVG (first_result, second_result)”) wherein the second component query is based on a SELECT clause of the query (see Brodt, [0079]-[0080] “the second instance being stored in the second database and processed by the second engine, could be:.. "SELECT (SELECT SUM(amount) from T1 [ ...])+(SELECT SUM(amount) from T1') [ ... ]"”).
Brodt does not explicitly teach determining, based on historical performance data, an execution path of the query; in response to determining the execution path, splitting the query; a first component query in a first query language compatible with the first database service; and a second component query in a second query language compatible with the second database service.
However, Eblighatian discloses and teaches
determining, based on historical performance data, an execution path of the query (see Eblighatian, [0023] “A query plan 22 may be generated at block 32 based on the visualization characteristics 30, a historical performance 34 (e.g., response time of individual service endpoints, composite response time, network latency, functional profile of two or more similar service endpoints, re-query attempt history, etc.) of the network infrastructure… provides for generating a response to a query from the application in accordance with the query plan”; [0027] “therefore reroute queries between service endpoints based on presentation characteristics, UI constraints, etc., in order to optimize performance”).
in response to determining the execution path, response is generated (see Eblighatian, [0023] “A query plan 22 may be generated at block 32 based on the visualization characteristics 30, a historical performance 34 (e.g., response time of individual service endpoints, composite response time, network latency, functional profile of two or more similar service endpoints, re-query attempt history, etc.) of the network infrastructure… provides for generating a response to a query from the application in accordance with the query plan”; [0027] “therefore reroute queries between service endpoints based on presentation characteristics, UI constraints, etc., in order to optimize performance”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of execution path based on historical performance data being disclosed and taught by Eblighatian, in the system taught by Brodt to yield the predictable results of improving responsiveness (see Eblighatian, [0001] “generally relate to the processing of data queries. More importantly, embodiments relate to smart query plans having visual optimizations to improve responsiveness”).
The proposed combination of Brodt and Eblighatian does not explicitly teach a first component query in a first query language compatible with the first database service; and a second component query in a second query language compatible with the second database service.
However, Joshi discloses supporting languages for query components and teaches
query components in a first query language compatible with the first database service; and (see Joshi, [col 7 lines 1-8] “for data sources that do not support SPARQL queries… OHM will break a SPARQL query into its component parts, or basic graph patterns. The basic graph patterns are the atomic components of a SPARQL query that every data source 110d may support. These component queries may then each be issued and mapped by OHM to the data sources 110 that do not support complex SPARQL queries”; [col 16 line 57 – col 17 line 4] “splitting, by the computer, the query into query components… issuing the translated query, by the computer, to the one or more second databases organized according to the respective ontology of the translated query, wherein respective translated queries from different query components are issued to different databases”; [col 6 lines 37-58] “each data source 110 contains a SPARQL, or RDF query language, endpoint… data source 110a may represent a customized database that does not support open standards like SPARQL and RDF… a data source 110b may be a cloud based database that does not support RDF or SPARQL… a data source 110d may be any external data source, such as a structured source, an abstract database, a spreadsheet, a relational database, etc. that does not support open standards”; [col 8 lines 10-11] “ontologies may be implemented in many different formats and languages” – there are plurality of query components issued to different databases with different languages and formats).
query components in a second query language compatible with the second database service; (see Joshi, [col 7 lines 1-8] “for data sources that do not support SPARQL queries… OHM will break a SPARQL query into its component parts, or basic graph patterns. The basic graph patterns are the atomic components of a SPARQL query that every data source 110d may support. These component queries may then each be issued and mapped by OHM to the data sources 110 that do not support complex SPARQL queries”; [col 16 line 57 – col 17 line 4] “splitting, by the computer, the query into query components… issuing the translated query, by the computer, to the one or more second databases organized according to the respective ontology of the translated query, wherein respective translated queries from different query components are issued to different databases”; [col 6 lines 37-58] “each data source 110 contains a SPARQL, or RDF query language, endpoint… data source 110a may represent a customized database that does not support open standards like SPARQL and RDF… a data source 110b may be a cloud based database that does not support RDF or SPARQL… a data source 110d may be any external data source, such as a structured source, an abstract database, a spreadsheet, a relational database, etc. that does not support open standards”; [col 8 lines 10-11] “ontologies may be implemented in many different formats and languages” – there are plurality of query components issued to different databases with different languages and formats).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of query components directed to database based on languages being disclosed and taught by Joshi, in the system taught by the proposed combination of Brodt and Eblighatian to yield the predictable results of running the queries effectively (see Joshi, [col 2 lines 1-11] “For each of the queries, issuing the query to a respective database organized according to the respective ontology of the query, and receiving a respective result set for the query, wherein the respective result set corresponds to the respective ontology of the query. The method further comprises translating the respective result set into a translated result set corresponding to the first ontology, aggregating the result sets into an aggregated result set corresponding to the first ontology, and returning the aggregated results set corresponding to the first ontology”).
Claims 11 and 20 incorporate substantively all the limitations of claim 1 in a system (see Brodt, [0157] “a single computer system comprising one or more processors 108, one or more non-volatile storage devices 110 and comprising program logic for executing the method according to embodiments of the disclosure”) and computer-readable medium form (see Brodt, [0130] “The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure”) and are rejected under the same rationale.
Regarding claim 21, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein the first database service is in a first format and the second database service is in a different format (see Brodt, [0138] “a DBMS comprising at least a first database engine ( or first "engine") and a second database engine ("second engine") whereby the first engine is configured to process a query received by the hybrid DBMS on instances of one or more database tables stored in a first database and wherein the second engine is configured to process query received by the hybrid DBMS on instances of the one or more tables stored in a second database... Thus, every engine owns a copy of some data in its own format that is optimized for the specific workload. The formats differ, for example, in compression, row-oriented vs. column-oriented storage, etc… Thus, every engine owns a copy of the data of the shared tables in its own format that is optimized for a type of query”).
Regarding claim 22, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein the first format is in a column-store format, wherein the second format is in a row-store format (see Brodt, [0088] “the first engine maintains a first database comprising the first table instance and instances of one or more further tables. The second engine maintaining a second database comprising the second table instance and instances of the one or more further tables… other combination of database engine types may likewise be possible, e.g. row vs. column centric databases”; [0138] “Thus, every engine owns a copy of some data in its own format that is optimized for the specific workload. The formats differ, for example, in compression, row-oriented vs. column-oriented storage, etc.”).
Claims 2-3 and 12-13 are rejected under 35 U.S.C. 103 as being unpatentable over Brodt, Eblighatian and Joshi in view of Wayn et al. (US 2010/0017395 A1, hereinafter “Wayn”).
Regarding claim 2, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein the first component query… (see Brodt, [0158] “a first query part to be executed by the first engine”).
The proposed combination of Brodt, Eblighatian and Joshi does not explicitly teach component query is based on a first clause of the query.
However, Wayn discloses SQL breaker and teaches
component is based on a first clause of the query (see Wayn, [0130] “The pre-processed SQL queries provided by the pre-processor 20 are typically fed to an SQL query breaker 30 which is operative to break up some, or typically each, of the pre-processed SQL queries into clause components” – the queries are broken down into plurality of clause components).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of clauses of query being disclosed and taught by Wayn, in the system taught by the proposed combination of Brodt, Eblighatian and Joshi to yield the predictable results of quickly, efficiently, and automatically creating an MDX representation of any customer-submitted SQL request (see Wayn, [0118] “One possible solution is to convert poorly structured SQL expressions to well structured MDX expressions, using a system and associated method for quickly, efficiently, and automatically creating an MDX representation of any customer-submitted SQL request”).
Claim 12 incorporates substantively all the limitations of claim 2 in a system form and is rejected under the same rationale.
Regarding claim 3, the proposed combination of Brodt, Eblighatian, Joshi and Wayn teaches
wherein the second component query (see Brodt, [0158] “a second query part to be executed by the second engine”) is based on a second clause of the query (see Wayn, [0130] “The pre-processed SQL queries provided by the pre-processor 20 are typically fed to an SQL query breaker 30 which is operative to break up some, or typically each, of the pre-processed SQL queries into clause components” – the queries are broken down into plurality of clause components). The motivation for the proposed combination is maintained.
Claim 13 incorporates substantively all the limitations of claim 3 in a system form and is rejected under the same rationale.
Claims 5 and 15 are rejected under 35 U.S.C. 103 as being unpatentable over Brodt, Eblighatian and Joshi in view of Kamath et al. (US 9,971,808 B2, hereinafter “Kamath”).
Regarding claim 5, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein determining the execution path of the query includes (see Eblighatian, [0023] “A query plan 22 may be generated at block 32 based on the visualization characteristics 30, a historical performance 34 (e.g., response time of individual service endpoints, composite response time, network latency, functional profile of two or more similar service endpoints, re-query attempt history, etc.) of the network infrastructure… provides for generating a response to a query from the application in accordance with the query plan”; [0027] “therefore reroute queries between service endpoints based on presentation characteristics, UI constraints, etc., in order to optimize performance”) splitting the query includes… (see Brodt, [0083] “Thereby, the query is split into parts such that the part of the query configured to access the first table is dispatched to the first engine and the part of the query configured to access the second table is dispatched to the second engine”; [0158] “decides if a particular query… should be split into at least a first query part to be executed by the first engine and a second query part to be executed by the second engine”).
The proposed combination of Brodt, Eblighatian and Joshi does not explicitly teach determining whether a number of aggregate functions included in the query exceeds a threshold.
However, Kamath discloses aggregating values in the groups and teaches
determining whether a number of aggregate functions included in the query exceeds a threshold (see Kamath, [col 7 lines 14-61] “may estimate the number of groups that may be needed to process the group by/aggregate query as the optimizer analyzes the input query and generates the execution plan… If it is determined that the estimated number of groups does exceed the threshold value”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of aggregate functions being disclosed and taught by Kamath, in the system taught by the proposed combination of Brodt, Eblighatian and Joshi to yield the predictable results of improving the technical field of group by/aggregate query processing in columnar databases by utilizing the parallel processing abilities of a GPU to process group by/aggregate queries (see Kamath, [col 5 lines 6-10] “the present embodiment has the capacity to improve the technical field of group by/aggregate query processing in columnar databases by utilizing the parallel processing abilities of a GPU to process group by/aggregate queries”).
Claim 15 incorporates substantively all the limitations of claim 5 in a system form and is rejected under the same rationale.
Claims 6 and 16 are rejected under 35 U.S.C. 103 as being unpatentable over Brodt, Eblighatian and Joshi in view of Dettinger et al. (US 2005/0283465 A1, hereinafter “Dettinger”).
Regarding claim 6, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein determining the execution path of the query includes (see Eblighatian, [0023] “A query plan 22 may be generated at block 32 based on the visualization characteristics 30, a historical performance 34 (e.g., response time of individual service endpoints, composite response time, network latency, functional profile of two or more similar service endpoints, re-query attempt history, etc.) of the network infrastructure… provides for generating a response to a query from the application in accordance with the query plan”; [0027] “therefore reroute queries between service endpoints based on presentation characteristics, UI constraints, etc., in order to optimize performance”) splitting the query includes… (see Brodt, [0083] “Thereby, the query is split into parts such that the part of the query configured to access the first table is dispatched to the first engine and the part of the query configured to access the second table is dispatched to the second engine”; [0158] “decides if a particular query… should be split into at least a first query part to be executed by the first engine and a second query part to be executed by the second engine”).
The proposed combination of Brodt, Eblighatian and Joshi does not explicitly teach determining a number of projections of the query and determining whether the determined number of projections of the query exceeds a configured projections threshold value.
However, Dettinger discloses database environment imposing limitations and also teaches
determining a number of projections of the query and determining whether the determined number of projections of the query exceeds a configured projections threshold value (see Dettinger, [0041] “queries are split into sub-queries on the basis of the table boundaries of the tables in which the result fields of the query are located… the query manager 106 may be configured with a table boundaries determination unit 116 which operates to interrogate the tables 112 in the database environment 108 and determine the table boundaries… queries are split into sub-queries on the basis of the maximum number of columns capable of being returned for a given query… maximum column count may be, for example, an inherent limitation of the query language protocol. Where queries are split on the basis of a maximum column count, the query manager 106 may include maximum column count metadata”)..
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of number of projections as being disclosed and taught by Dettinger, in the system taught by the proposed combination of Brodt, Eblighatian and Joshi to yield the predictable results of effectively accommodating requests for voluminous data (see Dettinger, [0015] “Therefore, there is a need for a database environment capable of accommodating requests for voluminous data”).
Claim 16 incorporates substantively all the limitations of claim 6 in a system form and is rejected under the same rationale.
Claims 7 and 17 are rejected under 35 U.S.C. 103 as being unpatentable over Brodt, Eblighatian and Joshi in view of Beavin et al. (US 2003/0212701 A1, hereinafter “Beavin”).
Regarding claim 7, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein determining the execution path of the query includes (see Eblighatian, [0023] “A query plan 22 may be generated at block 32 based on the visualization characteristics 30, a historical performance 34 (e.g., response time of individual service endpoints, composite response time, network latency, functional profile of two or more similar service endpoints, re-query attempt history, etc.) of the network infrastructure… provides for generating a response to a query from the application in accordance with the query plan”; [0027] “therefore reroute queries between service endpoints based on presentation characteristics, UI constraints, etc., in order to optimize performance”) splitting the query includes (see Brodt, [0083] “Thereby, the query is split into parts such that the part of the query configured to access the first table is dispatched to the first engine and the part of the query configured to access the second table is dispatched to the second engine”; [0158] “decides if a particular query… should be split into at least a first query part to be executed by the first engine and a second query part to be executed by the second engine”).
The proposed combination of Brodt, Eblighatian and Joshi does not explicitly teach determining a number of tables referenced by an operation of the query and determining whether the determined number of the tables referenced by the operation exceeds a configured operation threshold value.
However, Beavin discloses database environment imposing limitations and also teaches
determining a number of tables referenced by an operation of the query and determining whether the determined number of the tables referenced by the operation exceeds a configured operation threshold value (see Beavin, [0007] “if the number of tables in the join query exceeds a predetermined threshold”; [0008] “dynamic programming query evaluation techniques as the number of tables involved in the query exceeds ten”; [0036] “used to restrict the number of joins considered in the current and/or subsequent iterations, either by reducing the number of join combinations considered in a previous iteration of (i-1)-way joins or reducing the number of tables combined with the combinations from the previous iteration to form i-way joins”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of tables in a join operation as being disclosed and taught by Beavin, in the system taught by the proposed combination of Brodt, Eblighatian and Joshi to yield the predictable results of improving query optimization techniques (see Beavin, [0009] “Notwithstanding current query optimization techniques, there is a continued need in the art for improved query optimization techniques”).
Claim 17 incorporates substantively all the limitations of claim 7 in a system form and is rejected under the same rationale.
Claims 8 and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Brodt, Eblighatian and Joshi in view of Bendel et al. (US 2016/0210328 A1, hereinafter “Bendel”).
Regarding claim 8, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein the first component query (see Brodt, [0158] “a first query part to be executed by the first engine”).
The proposed combination of Brodt, Eblighatian and Joshi does not explicitly teach component query is translated to the first query language from the second query language.
However, Bendel discloses accelerator system and also teaches
component is translated to the first query language from the second query language (see Bendel, [0044] “if the data requested in a query is retrieved by the first DBMS from a first data container or by the accelerator system from a second data container or from a combination of first and second data containers… the single interface may be configured to decompose the query into subqueries, that is, individual database statements, for deciding if a particular statement should be dispatched to the accelerator system or not… where the first DBMS employs a different database query language than the accelerator system, the single interface and/or a component of the first DBMS may selectively translate the dispatched statement into the query language of the accelerator system”).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of translating query languages as being disclosed and taught by Bendel, in the system taught by the proposed combination of Brodt, Eblighatian and Joshi to yield the predictable results of supporting different SQL dialects to quickly process different kinds of database queries (see Bendel, [0095] “The creating, updating or deleting, by the accelerator system, comprises executing the translated DDL statement by the accelerator system. This may be beneficial, as the distributed system may support different SQL dialects. Thus, a plurality of different database management systems and/or accelerator system modules may freely be combined which are respectively optimized for quickly processing different kinds of database queries”).
Claim 18 incorporates substantively all the limitations of claim 8 in a system form and is rejected under the same rationale.
Claims 9-10 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Brodt, Eblighatian and Joshi in view of Elias et al. (US 2015/0169686 A1, hereinafter “Elias”).
Regarding claim 9, the proposed combination of Brodt, Eblighatian and Joshi teaches
wherein determining the execution path of the query includes (see Eblighatian, [0023] “A query plan 22 may be generated at block 32 based on the visualization characteristics 30, a historical performance 34 (e.g., response time of individual service endpoints, composite response time, network latency, functional profile of two or more similar service endpoints, re-query attempt history, etc.) of the network infrastructure… provides for generating a response to a query from the application in accordance with the query plan”; [0027] “therefore reroute queries between service endpoints based on presentation characteristics, UI constraints, etc., in order to optimize performance”) splitting the query includes… (see Brodt, [0083] “Thereby, the query is split into parts such that the part of the query configured to access the first table is dispatched to the first engine and the part of the query configured to access the second table is dispatched to the second engine”; [0158] “decides if a particular query… should be split into at least a first query part to be executed by the first engine and a second query part to be executed by the second engine”) the first component query and… (see Brodt, [0158] “a first query part to be executed by the first engine”) the second component query (see Brodt, [0158] “a second query part to be executed by the second engine”).
The proposed combination of Brodt, Eblighatian and Joshi does not explicitly teach creating a query tree of the query and identifying a first node of the query tree corresponding to the first component query and a second node of the query tree corresponding to the second component query.
However, Elias discloses organizing query plan as a tree and also teaches
creating a query tree of the query and identifying a first node of the query tree corresponding to the estimated cost a second node of the query tree corresponding to the estimated cost (see Elias, Fig. 5; [0044] “Query plan 520 demonstrates a query building process where the federated query engine does most of the data matching, reduction, and organizing that is specified in query 510. Query plan 520 is organized as a tree and includes processing operations for a projecting 521, a limiting 522, a sorting 523, a selecting 524, a joining 525, and two accessing 526 and 527 operations. Query plan 520 is generally processed from bottom to top beginning with the accessing operations 526 and 527 and ending with the projection operation 521”; [0049] “The evaluation includes traversing the respective query plan tree to determine an estimated cost for performing the query received during process 305 using a data source of the type associated with the respective query plan. In performing the query plan evaluation, each of the nodes in the query plan trees is assigned a cost and the costs are totaled” – there are plurality of nodes).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to include the functionality of query tree as being disclosed and taught by Elias, in the system taught by the proposed combination of Brodt, Eblighatian and Joshi to yield the predictable results of making it easier for services and/or applications to make an intelligent selection from multiple available data sources and then to direct a query to the selected data source (see Elias, [0005] “Accordingly, it would be desirable to provide systems and methods to make it easier for services and/or applications to make an intelligent selection from multiple available data sources and then to direct a query to the selected data source”).
Claim 19 incorporates substantively all the limitations of claim 9 in a system form and is rejected under the same rationale.
Regarding claim 10, the proposed combination of Brodt, Eblighatian, Joshi and Elias teaches
wherein the first node of the query tree corresponds (see Elias, Fig. 5; [0044] “Query plan 520 demonstrates a query building process where the federated query engine does most of the data matching, reduction, and organizing that is specified in query 510. Query plan 520 is organized as a tree and includes processing operations for a projecting 521, a limiting 522, a sorting 523, a selecting 524, a joining 525, and two accessing 526 and 527 operations. Query plan 520 is generally processed from bottom to top beginning with the accessing operations 526 and 527 and ending with the projection operation 521”; [0049] “The evaluation includes traversing the respective query plan tree to determine an estimated cost for performing the query received during process 305 using a data source of the type associated with the respective query plan. In performing the query plan evaluation, each of the nodes in the query plan trees is assigned a cost and the costs are totaled” – there are plurality of nodes) to a sub-tree of the query tree and (see Elias, [0056] “When the current node is a join operation node, this indicates that the query plan is going to split below the current node and at least two sub-query plans are to be evaluated”) the second node of the query tree corresponds to (see Elias, Fig. 5; [0044] “Query plan 520 demonstrates a query building process where the federated query engine does most of the data matching, reduction, and organizing that is specified in query 510. Query plan 520 is organized as a tree and includes processing operations for a projecting 521, a limiting 522, a sorting 523, a selecting 524, a joining 525, and two accessing 526 and 527 operations. Query plan 520 is generally processed from bottom to top beginning with the accessing operations 526 and 527 and ending with the projection operation 521”; [0049] “The evaluation includes traversing the respective query plan tree to determine an estimated cost for performing the query received during process 305 using a data source of the type associated with the respective query plan. In performing the query plan evaluation, each of the nodes in the query plan trees is assigned a cost and the costs are totaled” – there are plurality of nodes) a root node of the query tree (see Elias, [0054] “the root node of the query plan is selected”). The motivation for the proposed combination is maintained.
Conclusion
THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to VAISHALI SHAH whose telephone number is (571)272-8532. The examiner can normally be reached Monday - Friday (7:30 AM to 4:00 PM).
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, AJAY BHATIA can be reached at (571)272-3906. 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.
/VAISHALI SHAH/Primary Examiner, Art Unit 2156