DETAILED ACTION
Claims 1-20 are pending. Claims 1, 5, and 14 have been amended. Claims 1-20 are rejected.
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 .
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 03/09/2026 has been entered.
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.
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to an abstract idea without significantly more.
Step 1 (All Claims)
According to the first part of the analysis, in the instant case, claims 1-4 are directed to a system comprising a processor and memory, claims 5-13 are directed to a method, claims 14-20 are directed to non-transitory computer readable storage media. Thus, each of the claims falls within one of the four statutory categories (i.e. process, machine, manufacture, or composition of matter).
Step 2A, Prong 1 (Claims 1, 5, and 14)
Regarding claim 1, the following limitations are abstract ideas:
create the secondary index that enforces the unique value constraint for indexed columns according to the request to create the secondary index, wherein to create the secondary index, is a step that can be performed as a mental process, with the aid of pen and paper.
after completion of the backfill operation of the secondary index: scan the initial version of the secondary index to determine whether a unique constraint violation occurs in the initial version of the secondary index; is a step that can be practically performed in the human mind and is a mental process which encompasses observation, evaluation and/or judgement.
determine according to the scan that the initial version of the secondary index includes a unique constraint violation; is a step that can be practically performed in the human mind and is a mental process which encompasses observation, evaluation and/or judgement.
The above analysis applies to each independent claim as they contain similar limitations.
Step 2A, Prong 2 (Claims 1, 5, and 14)
Regarding claim 1, the following limitations are additional elements:
A system, comprising: at least one processor; is a high-level recitation of a generic computer component and represents mere instructions to apply on a computer as in MPEP 2106.05(f), which does not provide integration into a practical application.
a memory, storing program instructions that when executed by the at least one processor, cause the at least one processor to implement a database system, wherein the database system is configured to: is a high-level recitation of a generic computer component and represents mere instructions to apply on a computer as in MPEP 2106.05(f), which does not provide integration into a practical application.
receive, via an interface of the database system, a request to create a secondary index that enforces a unique value constraint for indexed columns, wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index; is directed to the insignificant extra-solution activity of mere data gathering and selecting a particular data source or type of data to be manipulated as identified in MPEP 2106.05(g).
the database system is configured to: is directed to generally linking the use of a judicial exception to a particular technological environment or field of use as identified in MPEP 2106.05(h).
perform a backfill operation to create an initial version of the secondary index that does not enforce the unique value constraint by querying data from the one or more columns in the at least one table, wherein the querying accesses a version of the at least one database table at or before a point in time, wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index; is directed to the insignificant extra-solution activity of mere data gathering and selecting a particular data source or type of data to be manipulated as identified in MPEP 2106.05(g).
enforce for subsequent updates to the at least one database table the unique value constraint; is directed to the insignificant extra-solution activity of mere data gathering and selecting a particular data source or type of data to be manipulated as identified in MPEP 2106.05(g).
provide an identifier for one or more rows in the at least one database table that caused the unique constraint violation. is directed to the insignificant extra-solution activity of mere data gathering and selecting a particular data source or type of data to be manipulated as identified in MPEP 2106.05(g).
The above analysis applies to each independent claim as they contain similar limitations.
Step 2B (Claims 1, 5, and 14)
Regarding claim 1, the following limitations are additional elements:
A system, comprising: at least one processor; ((i.e., generic computer components performing generic computer functions) such that they amount to no more than components comprising mere instructions to apply the exception. Accordingly, these additional elements do not integrate the abstract idea(s) into a practical application because they do not impose any meaningful limits on practicing the abstract idea(s))
a memory, storing program instructions that when executed by the at least one processor, cause the at least one processor to implement a database system, wherein the database system is configured to: ((i.e., generic computer components performing generic computer functions) such that they amount to no more than components comprising mere instructions to apply the exception. Accordingly, these additional elements do not integrate the abstract idea(s) into a practical application because they do not impose any meaningful limits on practicing the abstract idea(s))
receive, via an interface of the database system, a request to create a secondary index that enforces a unique value constraint for indexed columns, wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index; is directed to the well-understood, routine, and conventional activity of receiving or transmitting data as identified in MPEP 2106.05(d)II “i. Receiving or transmitting data over a network, e.g., using the Internet to gather data, Symantec, 838 F.3d at 1321, 120 USPQ2d at 1362 (utilizing an intermediary computer to forward information); TLI Communications LLC v. AV Auto. LLC, 823 F.3d 607, 610, 118 USPQ2d 1744, 1745 (Fed. Cir. 2016) (using a telephone for image transmission); OIP Techs., Inc., v. Amazon.com, Inc., 788 F.3d 1359, 1363, 115 USPQ2d 1090, 1093 (Fed. Cir. 2015) (sending messages over a network); buySAFE, Inc. v. Google, Inc., 765 F.3d 1350, 1355, 112 USPQ2d 1093, 1096 (Fed. Cir. 2014) (computer receives and sends information over a network);”
the database system is configured to: is directed to generally linking the use of a judicial exception to a particular technological environment or field of use as identified in MPEP 2106.05(h).
perform a backfill operation to create an initial version of the secondary index that does not enforce the unique value constraint by querying data from the one or more columns in the at least one table, wherein the querying accesses a version of the at least one database table at or before a point in time, wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index; is directed to the well-understood, routine, and conventional activity of receiving or transmitting data as identified in MPEP 2106.05(d)II “i. Receiving or transmitting data over a network, e.g., using the Internet to gather data, Symantec, 838 F.3d at 1321, 120 USPQ2d at 1362 (utilizing an intermediary computer to forward information); TLI Communications LLC v. AV Auto. LLC, 823 F.3d 607, 610, 118 USPQ2d 1744, 1745 (Fed. Cir. 2016) (using a telephone for image transmission); OIP Techs., Inc., v. Amazon.com, Inc., 788 F.3d 1359, 1363, 115 USPQ2d 1090, 1093 (Fed. Cir. 2015) (sending messages over a network); buySAFE, Inc. v. Google, Inc., 765 F.3d 1350, 1355, 112 USPQ2d 1093, 1096 (Fed. Cir. 2014) (computer receives and sends information over a network);”
enforce for subsequent updates to the at least one database table the unique value constraint; is directed to the well-understood, routine, and conventional activity of receiving or transmitting data as identified in MPEP 2106.05(d)II “i. Receiving or transmitting data over a network, e.g., using the Internet to gather data, Symantec, 838 F.3d at 1321, 120 USPQ2d at 1362 (utilizing an intermediary computer to forward information); TLI Communications LLC v. AV Auto. LLC, 823 F.3d 607, 610, 118 USPQ2d 1744, 1745 (Fed. Cir. 2016) (using a telephone for image transmission); OIP Techs., Inc., v. Amazon.com, Inc., 788 F.3d 1359, 1363, 115 USPQ2d 1090, 1093 (Fed. Cir. 2015) (sending messages over a network); buySAFE, Inc. v. Google, Inc., 765 F.3d 1350, 1355, 112 USPQ2d 1093, 1096 (Fed. Cir. 2014) (computer receives and sends information over a network);”
provide an identifier for one or more rows in the at least one database table that caused the unique constraint violation. is directed to the well-understood, routine, and conventional activity of receiving or transmitting data as identified in MPEP 2106.05(d)II “i. Receiving or transmitting data over a network, e.g., using the Internet to gather data, Symantec, 838 F.3d at 1321, 120 USPQ2d at 1362 (utilizing an intermediary computer to forward information); TLI Communications LLC v. AV Auto. LLC, 823 F.3d 607, 610, 118 USPQ2d 1744, 1745 (Fed. Cir. 2016) (using a telephone for image transmission); OIP Techs., Inc., v. Amazon.com, Inc., 788 F.3d 1359, 1363, 115 USPQ2d 1090, 1093 (Fed. Cir. 2015) (sending messages over a network); buySAFE, Inc. v. Google, Inc., 765 F.3d 1350, 1355, 112 USPQ2d 1093, 1096 (Fed. Cir. 2014) (computer receives and sends information over a network);”
The above analysis applies to each independent claim as they contain similar limitations.
The dependent claims are directed to the same abstract ideas as their parent claims. The dependent claims are further directed to elements such as sorting, further determinations, or clarifying aspects of the independent claims. These elements are similar to the above identified abstract idea and additional elements. Therefore, the dependent claims are directed to an abstract idea and rejected under 35 U.S.C. 101.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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 Nelson et al., Patent Application Publication No. 2023/0010652 (hereinafter Nelson) in view of Werner et al., Patent Application Publication No. 2023/0081900 (hereinafter Werner) and Weaver et al., Patent Application Publication No. 2019/0361916 (hereinafter Weaver).
Regarding claim 1, Nelson teaches:
A system, comprising: at least one processor (Nelson Paragraph [0003], a database system may include at least one processor operatively connected to a memory, the at least one processor may be executed to determine a candidate index to be created in the database system); and
a memory, storing program instructions that when executed by the at least one processor, cause the at least one processor to implement a database system, wherein the database system is configured to (Nelson Paragraph [0003], a database system may include at least one processor operatively connected to a memory, the at least one processor may be executed to determine a candidate index to be created in the database system):
receive, via an interface of the database system (Nelson Paragraph [0004], The automation agent can be executed as a background process, such as a daemon, and can receive requests (e.g., for creating an index)), a request to create a secondary index that enforces a unique value constraint for indexed columns (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc.),
create the secondary index that enforces the unique value constraint for indexed columns according to the request to create the secondary index (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc. (Werner teaches the column)), wherein to create the secondary index, the database system is configured to (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc.):
Nelson does not expressly disclose:
perform a backfill operation to create an initial version of the secondary index that does not enforce the unique value constraint by querying data from the one or more columns in the at least one table, wherein the querying accesses a version of the at least one database table at or before a point in time, wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index;
after completion of the backfill operation of the secondary index:
scan the initial version of the secondary index to determine whether a unique constraint violation occurs in the initial version of the secondary index; and
enforce for subsequent updates to the at least one database table the unique value constraint;
determine according to the scan that the initial version of the secondary index includes a unique constraint violation;
provide an identifier for one or more rows in the at least one database table that caused the unique constraint violation.
However, Werner teaches:
perform a backfill operation to create an initial version of the secondary index that does not enforce the unique value constraint by querying data from the one or more columns in the at least one table (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein, Paragraph [0212], the concurrent transaction determines the constraint change has not been committed, the concurrent transaction may cause the constraint change to not commit to the column and may return a flag indicator to a SQL client corresponding to the concurrent transaction), wherein the querying accesses a version of the at least one database table at or before a point in time (Werner Paragraph [0155], the source index may be the added index corresponding to the table at a fixed time instant. After filling the added index with data from the source index, the added index may replace the source index in the table at each node of the cluster 102. During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein), wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index (Werner Paragraph [0155], the source index may be the added index corresponding to the table at a fixed time instant, Paragraph [0212], a transactional schema change may include a schema change corresponding to a constraint. For example, a constraint may be added, dropped, or changed using a transactional schema change);
after completion of the backfill operation of the secondary index (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein):
scan the initial version of the secondary index to determine whether a unique constraint violation occurs in the initial version of the secondary index (Werner Paragraph [0212], Concurrent transactions may observe the constraint being added or changed in a “validating” state, such that the concurrent transactions may detect whether they would violate the constraint (e.g., if the constraint was public) and whether the constraint change has been committed by its transaction); and
enforce for subsequent updates to the at least one database table the unique value constraint (Werner Paragraph [0213], to ensure that an ongoing (e.g., non-committed) constraint change operation of a transactional schema change will not be violated by a concurrent write operation, the concurrent write operation may transparently prevent the transactional schema change from being applied in order to avoid leaking the existence of the uncommitted schema change to the user);
determine according to the scan that the initial version of the secondary index includes a unique constraint violation (Werner Paragraph [0212], concurrent transactions that write to a column undergoing a constraint change or addition may observe a state of the constraint. Concurrent transactions may observe the constraint being added or changed in a “validating” state, such that the concurrent transactions may detect whether they would violate the constraint (e.g., if the constraint was public) and whether the constraint change has been committed by its transaction);
provide an identifier for one or more rows in the at least one database table that caused the unique constraint violation (Werner Paragraph [0131], For a column configured with a primary key constraint, values stored in the column must uniquely identify each row (Werner teaches identifying rows while Nelson teaches identifiers in paragraph 17)).
The claimed invention and Werner are from the analogous art of constraint systems. It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention having the teachings of Nelson in view of Werner to have combined Nelson in view of Werner. Werner teaches improving transaction latency by using a configuration that allows for applications and systems that rely on database to operate without downtime (Paragraph 4).
Nelson in view of Werner does not expressly disclose:
wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index;
However, Weaver teaches:
wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index (Weaver Paragraph [0066], uses an object-relational data model having constraints that are enforced using indexes for the transactional database, Paragraph [0140], indexes 108 may be expressed as partially applied queries and may transform, cover, and order their inputs, enforce unique constraints);
The claimed invention and Weaver are from the analogous art of database constraint systems. It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention having the teachings of Nelson in view of Werner and Weaver to have combined Nelson in view of Werner and Weaver. Weaver teaches an improved database platform with features that allow for significant improvement in operational and other database used by enterprises (Paragraph 4).
Regarding claim 2, Nelson in view of Werner and Weaver further teaches:
The system of claim 1, wherein the database system is further configured to: receive, via the interface of the database system, a request to resume creation of the secondary index (Werner Paragraph [0068], The lock table may provide locking and sequencing of requests (in combination with the latch manager). The lock table may be a per-node, in-memory data structure. The lock table may hold a collection of locks acquired by transactions that are in-progress as to be described herein (Nelson teaches the creation while Werner teaches holding/pausing));
resume creation of the secondary index by a further evaluation of the initial version of the secondary index to determine whether a further unique constraint violation occurs in the initial version of the secondary index (Werner Paragraph [0068], The lock table may provide locking and sequencing of requests (in combination with the latch manager). The lock table may be a per-node, in-memory data structure. The lock table may hold a collection of locks acquired by transactions that are in-progress as to be described herein (Nelson teaches the creation while Werner teaches holding/pausing));
determine according to the further evaluation that the initial version of the secondary index does not include the further unique constraint violation (Werner Paragraph [0212], prevent concurrent write operations from violating a constraint of a column, concurrent transactions that write to a column undergoing a constraint change or addition may observe a state of the constraint); and
make the initial version of the secondary index available for access as the secondary index that enforces the unique value constraint (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc.).
Regarding claim 3, Nelson in view of Werner and Weaver further teaches:
The system of claim 1, wherein the database system is configured to make the initial version of the secondary index available as a secondary index that does not enforce the unique value constraint (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein, Paragraph [0212], the concurrent transaction determines the constraint change has not been committed, the concurrent transaction may cause the constraint change to not commit to the column and may return a flag indicator to a SQL client corresponding to the concurrent transaction).
Regarding claim 4, Nelson in view of Werner and Weaver further teaches:
The system of claim 1, wherein the database system is a database service implemented as part of a provider network across a plurality of regions of the provider network and wherein the at least one database table and the initial version of the secondary index are stored in respective copies in individual ones of the plurality of regions of the provider network (Nelson Paragraph [0018], A database cluster may be a replica set or a sharded cluster, and may be used to refer to a part of database deployment. A database deployment may have multiple datasets in different collections and databases internally. A database cluster may have a plurality of cluster tiers, each tier may have one or more clusters, where each cluster tier may dictate a respective memory and storage space).
Regarding claim 5, Nelson teaches:
A method, comprising: initiating, by a database system, creation of a secondary index that enforces a unique value constraint for indexed columns according to a request to create the secondary index received (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc.),
Nelson does not expressly disclose:
querying, by the database system, the at least one database table to backfill an initial version of the secondary index that does not enforce the unique value constraint when obtaining data from the one or more columns, wherein the querying accesses a version of the at least one database table at or before a point in time, wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index;
after completion of the backfilling of the initial version of the secondary index, evaluating, by the database system, the initial version of the secondary index to determine whether a unique constraint violation occurs in the initial version of the secondary index;
determining, by the database system, according to the evaluating that the initial version of the secondary index includes a unique constraint violation; and
providing, by the database system, a cause of the unique constraint violation in the at least one database table.
However, Werner teaches:
querying, by the database system, the at least one database table to backfill an initial version of the secondary index that does not enforce the unique value constraint when obtaining data from the one or more columns (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein, Paragraph [0212], the concurrent transaction determines the constraint change has not been committed, the concurrent transaction may cause the constraint change to not commit to the column and may return a flag indicator to a SQL client corresponding to the concurrent transaction), wherein the querying accesses a version of the at least one database table at or before a point in time (Werner Paragraph [0155], the source index may be the added index corresponding to the table at a fixed time instant. After filling the added index with data from the source index, the added index may replace the source index in the table at each node of the cluster 102. During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein), wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index (Werner Paragraph [0155], the source index may be the added index corresponding to the table at a fixed time instant, Paragraph [0212], a transactional schema change may include a schema change corresponding to a constraint. For example, a constraint may be added, dropped, or changed using a transactional schema change);
after completion of the backfilling of the initial version of the secondary index (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein), evaluating, by the database system, the initial version of the secondary index to determine whether a unique constraint violation occurs in the initial version of the secondary index (Werner Paragraph [0212], Concurrent transactions may observe the constraint being added or changed in a “validating” state, such that the concurrent transactions may detect whether they would violate the constraint (e.g., if the constraint was public) and whether the constraint change has been committed by its transaction);
determining, by the database system, according to the evaluating that the initial version of the secondary index includes a unique constraint violation (Werner Paragraph [0212], concurrent transactions that write to a column undergoing a constraint change or addition may observe a state of the constraint. Concurrent transactions may observe the constraint being added or changed in a “validating” state, such that the concurrent transactions may detect whether they would violate the constraint (e.g., if the constraint was public) and whether the constraint change has been committed by its transaction); and
providing, by the database system, a cause of the unique constraint violation in the at least one database table (Werner Paragraph [0131], For a column configured with a primary key constraint, values stored in the column must uniquely identify each row).
The claimed invention and Werner are from the analogous art of constraint systems. It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention having the teachings of Nelson in view of Werner to have combined Nelson in view of Werner. Werner teaches improving transaction latency by using a configuration that allows for applications and systems that rely on database to operate without downtime (Paragraph 4).
Nelson in view of Werner does not expressly disclose:
via an interface of the database system, wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index;
However, Weaver teaches:
via an interface of the database system, wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index (Weaver Paragraph [0066], uses an object-relational data model having constraints that are enforced using indexes for the transactional database, Paragraph [0140], indexes 108 may be expressed as partially applied queries and may transform, cover, and order their inputs, enforce unique constraints);
The claimed invention and Weaver are from the analogous art of database constraint systems. It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention having the teachings of Nelson in view of Werner and Weaver to have combined Nelson in view of Werner and Weaver. Weaver teaches an improved database platform with features that allow for significant improvement in operational and other database used by enterprises (Paragraph 4).
Regarding claim 6, Nelson in view of Werner and Weaver further teaches:
The method of claim 5, wherein after completion of the backfilling of the initial version of the secondary index, enforcing for subsequent updates to the at least one database table the unique value constraint (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein, Paragraph [0212], the concurrent transaction determines the constraint change has not been committed, the concurrent transaction may cause the constraint change to not commit to the column and may return a flag indicator to a SQL client corresponding to the concurrent transaction);
wherein the method further comprises: receiving, via the interface of the database system, a request to resume creation of the secondary index (Werner Paragraph [0068], The lock table may provide locking and sequencing of requests (in combination with the latch manager). The lock table may be a per-node, in-memory data structure. The lock table may hold a collection of locks acquired by transactions that are in-progress as to be described herein (Nelson teaches the creation while Werner teaches holding/pausing));
resuming, by the database system, creation of the secondary index by further evaluating, by the database system, the initial version of the secondary index to determine whether a further unique constraint violation occurs in the initial version of the secondary index (Werner Paragraph [0068], The lock table may provide locking and sequencing of requests (in combination with the latch manager). The lock table may be a per-node, in-memory data structure. The lock table may hold a collection of locks acquired by transactions that are in-progress as to be described herein (Nelson teaches the creation while Werner teaches holding/pausing));
determining, by the database system, according to the evaluating that the initial version of the secondary index does not include the further unique constraint violation (Werner Paragraph [0212], prevent concurrent write operations from violating a constraint of a column, concurrent transactions that write to a column undergoing a constraint change or addition may observe a state of the constraint); and
making, by the database system, the initial version of the secondary index available for access as the secondary index that enforces the unique value constraint (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc.).
Regarding claim 7, Nelson in view of Werner and Weaver further teaches:
The method of claim 5, wherein the method further comprises deleting the initial version of the secondary index after providing the cause of the unique constraint violation in the at least one database table (Werner Paragraph [0134], To change a unique constraint, a user may issue a transaction that adds a new unique constraint (via an add constraint operation) and the removes the existing unique constraint (via a drop constraint operation), Paragraph [0228], concurrent write transactions that violate the constraint of the column may write to the constraint coordination table to indicate that the transaction may not commit without violating the constraint).
Regarding claim 8, Nelson in view of Werner and Weaver further teaches:
The method of claim 5, further comprising: replicating, by the database system, secondary index updates to different respective regions of a provider network implementing the database system based on the data obtained from the one or more columns to perform the backfilling (Nelson Paragraph [0018], A database cluster may be a replica set or a sharded cluster, and may be used to refer to a part of database deployment. A database deployment may have multiple datasets in different collections and databases internally. A database cluster may have a plurality of cluster tiers, each tier may have one or more clusters, where each cluster tier may dictate a respective memory and storage space (Werner teaches the backfilling)), wherein the secondary index updates are written to respective copies of a journal for the secondary index in the different respective regions of the provider network without applying a concurrency control with respect to the at least one database table (Nelson Paragraph [0018], A database cluster may be a replica set or a sharded cluster, and may be used to refer to a part of database deployment. A database deployment may have multiple datasets in different collections and databases internally. A database cluster may have a plurality of cluster tiers, each tier may have one or more clusters, where each cluster tier may dictate a respective memory and storage space (Werner teaches a log)); and
applying, by the database system, the secondary index updates written to the respective copies of the journal to respective copies of the initial version of the secondary index in the different respective regions of the provider network (Werner Paragraph [0035], a time-ordered log of write transactions to a range, where the log of write transactions includes write transactions agreed to by a threshold number of the replicas of the range, Paragraph [0134], To change a unique constraint, a user may issue a transaction that adds a new unique constraint (via an add constraint operation) and the removes the existing unique constraint (via a drop constraint operation), Paragraph [0228], concurrent write transactions that violate the constraint of the column may write to the constraint coordination table to indicate that the transaction may not commit without violating the constraint).
Regarding claim 9, Nelson in view of Werner and Weaver further teaches:
The method of claim 8, wherein the querying, the replicating, and the applying may be performed in parallel according to different row range assignments of the at least one database table (Werner Paragraph [0081], the transaction layer may enable parallel commits. Parallel commits may be an atomic commit protocol that reduces the commit latency of a transaction (e.g., in half, from two rounds of consensus down to one)).
Regarding claim 10, Nelson in view of Werner and Weaver further teaches:
The method of claim 5, wherein evaluating the initial version of the secondary index to determine whether the unique constraint violation occurs in the initial version of the secondary index, comprises scanning a range of rows in the initial version of the secondary index to sort records by the one or more columns into respective batches (Werner Paragraph [0120], The DistSender may send a first Batch Request for each range in parallel. Based on receiving a provisional acknowledgment from a leaseholder node's evaluator (as to be described herein), the DistSender may send the next Batch Request for the range corresponding to the provisional acknowledgement, Paragraph [0136], an index may be a copy of the rows corresponding to a single table, where the rows are sorted by one or more columns (e.g., a column or a set of columns) of the table), wherein a size of one of the batches that is greater than one indicates the unique constraint violation (Werner Paragraph [0030], Successive ranges may split into one or more ranges based on reaching or exceeding a threshold storage size (Werner teaches the sorting, batches, and ranges while Nelson is the primary reference that teaches the constraints)).
Regarding claim 11, Nelson in view of Werner and Weaver further teaches:
The method of claim 10, wherein the scanning the range of rows in the initial version of the secondary index to sort records by the one or more columns into respective batches is performed in parallel with another range of rows in the initial version of the secondary index to sort records by the one or more columns into respective batches (Werner Paragraph [0120], The DistSender may send a first Batch Request for each range in parallel. Based on receiving a provisional acknowledgment from a leaseholder node's evaluator (as to be described herein), the DistSender may send the next Batch Request for the range corresponding to the provisional acknowledgement).
Regarding claim 12, Nelson in view of Werner and Weaver further teaches:
The method of claim 5, further comprising making the initial version of the secondary index available as a secondary index that does not enforce the unique value constraint (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein, Paragraph [0212], the concurrent transaction determines the constraint change has not been committed, the concurrent transaction may cause the constraint change to not commit to the column and may return a flag indicator to a SQL client corresponding to the concurrent transaction).
Regarding claim 13, Nelson in view of Werner and Weaver further teaches:
The method of claim 5, wherein the database system is a database service implemented as part of a provider network and wherein the cause of the unique constraint violation is provided as part of a failure event notification by the provider network for the creation of the secondary index (Nelson Paragraph [0018], A database cluster may be a replica set or a sharded cluster, and may be used to refer to a part of database deployment. A database deployment may have multiple datasets in different collections and databases internally. A database cluster may have a plurality of cluster tiers, each tier may have one or more clusters, where each cluster tier may dictate a respective memory and storage space, Paragraph [0050], an email will be sent to the user when an index fails to be created or when an index build is stalled).
Regarding claim 14, Nelson teaches:
One or more non-transitory, computer-readable storage media, storing program instructions that when executed on or across one or more computing devices cause the one or more computing devices to implement (Nelson Paragraph [0003], a database system may include at least one processor operatively connected to a memory, the at least one processor may be executed to determine a candidate index to be created in the database system):
receiving, via an interface of a database system, a request to create a secondary index that enforces a unique value constraint for indexed columns (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc.),
initiating, by the database system, creation of the secondary index that enforces the unique value constraint for indexed columns according to the request to create the secondary index (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc. (Werner teaches the column));
Nelson does not expressly disclose:
querying, by the database system, the at least one database table to backfill an initial version of the secondary index that does not enforce the unique value constraint when obtaining data from the one or more columns, wherein the query accesses a version of the at least one database table at or before a point in time, wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index;
after completion of the backfilling of the initial version of the secondary index, evaluating, by the database system, the initial version of the secondary index to determine whether a unique constraint violation occurs in the initial version of the secondary index;
determining, by the database system, according to the evaluating that the initial version of the secondary index includes a unique constraint violation; and
providing, by the database system, a cause of the unique constraint violation in the at least one database table.
However, Werner teaches:
querying, by the database system, the at least one database table to backfill an initial version of the secondary index that does not enforce the unique value constraint when obtaining data from the one or more columns (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein, Paragraph [0212], the concurrent transaction determines the constraint change has not been committed, the concurrent transaction may cause the constraint change to not commit to the column and may return a flag indicator to a SQL client corresponding to the concurrent transaction), wherein the query accesses a version of the at least one database table at or before a point in time (Werner Paragraph [0155], the source index may be the added index corresponding to the table at a fixed time instant. After filling the added index with data from the source index, the added index may replace the source index in the table at each node of the cluster 102. During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein), wherein updates to the at least one database table that occur after the point in time are performed both on the at least one database table and included in the initial version of the secondary index (Werner Paragraph [0155], the source index may be the added index corresponding to the table at a fixed time instant, Paragraph [0212], a transactional schema change may include a schema change corresponding to a constraint. For example, a constraint may be added, dropped, or changed using a transactional schema change);
after completion of the backfilling of the initial version of the secondary index (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein), evaluating, by the database system, the initial version of the secondary index to determine whether a unique constraint violation occurs in the initial version of the secondary index (Werner Paragraph [0212], Concurrent transactions may observe the constraint being added or changed in a “validating” state, such that the concurrent transactions may detect whether they would violate the constraint (e.g., if the constraint was public) and whether the constraint change has been committed by its transaction);
determining, by the database system, according to the evaluating that the initial version of the secondary index includes a unique constraint violation (Werner Paragraph [0212], concurrent transactions that write to a column undergoing a constraint change or addition may observe a state of the constraint. Concurrent transactions may observe the constraint being added or changed in a “validating” state, such that the concurrent transactions may detect whether they would violate the constraint (e.g., if the constraint was public) and whether the constraint change has been committed by its transaction); and
providing, by the database system, a cause of the unique constraint violation in the at least one database table (Werner Paragraph [0131], For a column configured with a primary key constraint, values stored in the column must uniquely identify each row (Werner teaches identifying rows while Nelson teaches identifiers in paragraph 17)).
The claimed invention and Werner are from the analogous art of constraint systems. It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention having the teachings of Nelson in view of Werner to have combined Nelson in view of Werner. Werner teaches improving transaction latency by using a configuration that allows for applications and systems that rely on database to operate without downtime (Paragraph 4)
Nelson in view of Werner does not expressly disclose:
wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index;
However, Weaver teaches:
wherein the request to create the secondary index specifies the unique value constraint that guarantees a unique value in one or more columns of at least one database table to index (Weaver Paragraph [0066], uses an object-relational data model having constraints that are enforced using indexes for the transactional database, Paragraph [0140], indexes 108 may be expressed as partially applied queries and may transform, cover, and order their inputs, enforce unique constraints);
The claimed invention and Weaver are from the analogous art of database constraint systems. It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention having the teachings of Nelson in view of Werner and Weaver to have combined Nelson in view of Werner and Weaver. Weaver teaches an improved database platform with features that allow for significant improvement in operational and other database used by enterprises (Paragraph 4).
Regarding claim 15, Nelson in view of Werner and Weaver further teaches:
The one or more non-transitory, computer-readable storage media of claim 14, storing further program instructions that when executed on or across the one or more computing devices, cause the one or more computing devices to further implement (Nelson Paragraph [0003], a database system may include at least one processor operatively connected to a memory, the at least one processor may be executed to determine a candidate index to be created in the database system):
receiving, via the interface of the database system, a request to resume creation of the secondary index (Werner Paragraph [0068], The lock table may provide locking and sequencing of requests (in combination with the latch manager). The lock table may be a per-node, in-memory data structure. The lock table may hold a collection of locks acquired by transactions that are in-progress as to be described herein (Nelson teaches the creation while Werner teaches holding/pausing));
resuming, by the database system, creation of the secondary index (Werner Paragraph [0068], The lock table may provide locking and sequencing of requests (in combination with the latch manager). The lock table may be a per-node, in-memory data structure. The lock table may hold a collection of locks acquired by transactions that are in-progress as to be described herein (Nelson teaches the creation while Werner teaches holding/pausing));
determining, by the database system, a new point in time for backfilling the initial version of the secondary index (Werner Paragraph [0147], the temporal interaction between a transaction and a lease of a table descriptor at particular timestamp, consider a time stamp, Paragraph [0212], a transactional schema change may include a schema change corresponding to a constraint. For example, a constraint may be added, dropped, or changed using a transactional schema change);
after completing backfilling the initial version of the secondary index to the new point in time, evaluating, by the database system, the initial version of the secondary index to determine whether a further unique constraint violation occurs in the initial version of the secondary index (Werner Paragraph [0148], then made public to allow for transactions (e.g., DMLs) to access the column with the constraint and to prevent transactions from violating the constraint when writing to the column, Paragraph [0147], the temporal interaction between a transaction and a lease of a table descriptor at particular timestamp, consider a time stamp);
determining, by the database system, according to the evaluating that the initial version of the secondary index does not include the further unique constraint violation (Werner Paragraph [0212], prevent concurrent write operations from violating a constraint of a column, concurrent transactions that write to a column undergoing a constraint change or addition may observe a state of the constraint); and
making, by the database system, the initial version of the secondary index available for access as the secondary index that enforces the unique value constraint (Nelson Paragraph [0041], the system can be configured to evaluate secondary index creation under similar constraints as for the indexes described above. In creating secondary indexes, the system may invoke additional constraints in addition to, for example, performance metrics, utilization, etc.).
Regarding claim 16, Nelson in view of Werner and Weaver further teaches:
The one or more non-transitory, computer-readable storage media of claim 14, wherein the method further comprises deleting the initial version of the secondary index after providing the cause of the unique constraint violation in the at least one database table (Werner Paragraph [0134], To change a unique constraint, a user may issue a transaction that adds a new unique constraint (via an add constraint operation) and the removes the existing unique constraint (via a drop constraint operation), Paragraph [0228], concurrent write transactions that violate the constraint of the column may write to the constraint coordination table to indicate that the transaction may not commit without violating the constraint).
Regarding claim 17, Nelson in view of Werner and Weaver further teaches:
The one or more non-transitory, computer-readable storage media of claim 14, storing further program instructions that when executed on or across the one or more computing devices, cause the one or more computing devices to further implement (Nelson Paragraph [0003], a database system may include at least one processor operatively connected to a memory, the at least one processor may be executed to determine a candidate index to be created in the database system):
replicating, by the database system, secondary index updates to different respective regions of a provider network implementing the database system based on the data obtained from the one or more columns to perform the backfilling (Nelson Paragraph [0018], A database cluster may be a replica set or a sharded cluster, and may be used to refer to a part of database deployment. A database deployment may have multiple datasets in different collections and databases internally. A database cluster may have a plurality of cluster tiers, each tier may have one or more clusters, where each cluster tier may dictate a respective memory and storage space (Werner teaches the backfilling)), wherein the secondary index updates are written to respective copies of a journal for the secondary index in the different respective regions of the provider network (Nelson Paragraph [0018], A database cluster may be a replica set or a sharded cluster, and may be used to refer to a part of database deployment. A database deployment may have multiple datasets in different collections and databases internally. A database cluster may have a plurality of cluster tiers, each tier may have one or more clusters, where each cluster tier may dictate a respective memory and storage space (Werner teaches a log)); and
applying, by the database system, the secondary index updates written to the respective copies of the journal to respective copies of the initial version of the secondary index in the different respective regions of the provider network (Werner Paragraph [0035], a time-ordered log of write transactions to a range, where the log of write transactions includes write transactions agreed to by a threshold number of the replicas of the range, Paragraph [0134], To change a unique constraint, a user may issue a transaction that adds a new unique constraint (via an add constraint operation) and the removes the existing unique constraint (via a drop constraint operation), Paragraph [0228], concurrent write transactions that violate the constraint of the column may write to the constraint coordination table to indicate that the transaction may not commit without violating the constraint).
Regarding claim 18, Nelson in view of Werner and Weaver further teaches:
The one or more non-transitory, computer-readable storage media of claim 14, wherein, in evaluating, the initial version of the secondary index to determine whether the unique constraint violation occurs in the initial version of the secondary index, the program instructions cause the one or more computing devices to implement scanning a range of rows in the initial version of the secondary index to sort records by the one or more columns into respective batches (Werner Paragraph [0120], The DistSender may send a first Batch Request for each range in parallel. Based on receiving a provisional acknowledgment from a leaseholder node's evaluator (as to be described herein), the DistSender may send the next Batch Request for the range corresponding to the provisional acknowledgement, Paragraph [0136], an index may be a copy of the rows corresponding to a single table, where the rows are sorted by one or more columns (e.g., a column or a set of columns) of the table), wherein a size of one of the batches that is greater than one indicates the unique constraint violation (Werner Paragraph [0030], Successive ranges may split into one or more ranges based on reaching or exceeding a threshold storage size (Werner teaches the sorting, batches, and ranges while Nelson is the primary reference that teaches the constraints)).
Regarding claim 19, Nelson in view of Werner and Weaver further teaches:
The one or more non-transitory, computer-readable storage media of claim 14, storing further program instructions that when executed on or across the one or more computing devices, cause the one or more computing devices to further implement making the initial version of the secondary index available as a secondary index that does not enforce the unique value constraint (Werner Paragraph [0155], During an index backfill, a primary index or a secondary index corresponding to the table may change due to the replacement of the source index with the added index as described herein, Paragraph [0212], the concurrent transaction determines the constraint change has not been committed, the concurrent transaction may cause the constraint change to not commit to the column and may return a flag indicator to a SQL client corresponding to the concurrent transaction).
Regarding claim 20, Nelson in view of Werner and Weaver further teaches:
The one or more non-transitory, computer-readable storage media of claim 14, wherein the database system is a database service implemented as part of a provider network and wherein the cause of the unique constraint violation is provided as part of a failure event notification by the provider network for the creation of the secondary index (Nelson Paragraph [0018], A database cluster may be a replica set or a sharded cluster, and may be used to refer to a part of database deployment. A database deployment may have multiple datasets in different collections and databases internally. A database cluster may have a plurality of cluster tiers, each tier may have one or more clusters, where each cluster tier may dictate a respective memory and storage space, Paragraph [0050], an email will be sent to the user when an index fails to be created or when an index build is stalled).
Response to Arguments
Applicant's arguments filed 03/09/2026 have been fully considered and they are either persuasive or they are not persuasive. A detailed explanation is provided below.
Applicant’s arguments, see pages 11-14, filed 03/09/2026, with respect to the rejection(s) of claim(s) 1-20 under 35 U.S.C. 103 have been fully considered and are persuasive. Therefore, the rejection has been withdrawn. However, upon further consideration, a new ground(s) of rejection is made in view of the amendment and the newly cited Weaver reference. Weaver teaches enforcing a unique constraint (Paragraph 140).
On page 14, Applicant argues that the claims are an improvement to a database system technology. The claims are not directed to an improvement to the functioning of a computer or to any other technology or technological field. Merely improving the field of the invention is not an improvement to any other technology or technological field. Furthermore, this is not an improvement to the functioning of a computer. Therefore, the claims are still rejected under 35 U.S.C. 101.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Martin et al., Patent Application Publication No. 2019/0065495 (hereinafter Martin). Martin teaches constraints defined in a database schema (Paragraph 23). Martin further teaches that it is sufficient of the analytical engine to own a copy of the column a id in order to enforce the primary key (i.e. unique) constraint of table a (Paragraph 89). Therefore, the claimed invention and Martin are analogous art as both are directed to database constraints.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to DUSTIN D EYERS whose telephone number is (408)918-7562. The examiner can normally be reached Monday-Thursday 9:00am-7:00pm ET.
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, Amy Ng can be reached at (571)270-1698. 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.
/DUSTIN D EYERS/ Examiner, Art Unit 2164
/AMY NG/ Supervisory Patent Examiner, Art Unit 2164