DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Information Disclosure Statement
The information disclosure statement (IDS) submitted on 12/11/2025 and 2/24/2026 are considered by the examiner.
Response to Arguments
Applicant's arguments filed on February 17th, 2026 have been fully considered but they are not persuasive.
Applicant argues on pages 8 and 9 that the cited reference fails to describe the limitation in Claim 1. “The cited reference fails to describe: wherein the one or more storage nodes are configured to: determine one or more rowblocks with respective record identifier ranges and time value ranges that include respective record identifiers for the one or more records and the time value; access one or more rowblock stores to retrieve the one or more records; and send the one or more records to the storage service engine; and as recited in Applicant's claim.
The Applicant further states on page 9, the cited portions of Helland do not describe one or more rowblocks with respective record identifier ranges and time value ranges. “For example, the Office Action argues that when "worker node 120 sends a record request to the location" this describes Applicant's feature because "worker node 120 stamps each record 115 with a value (e.g., a time, a numerical value indicative of a time period, etc.) indicated of when the record 115 was committed" so that "the key as a record identifier, internally corresponding to one or more rowblocks of memory and within the time provided in the request." Id. at page 5. This argument, however, fails to consider the specific language of Applicant's claim, which recites that "one or more rowblocks" are determined with "with respective record identifier ranges and time value ranges." The cited portions of Helland fail to describe any concept of a rowblock with a record identifier range and a time value range. Instead, Helland merely describes that a record has a value which indicate its commitment time.”
Respectively, the examiner disagrees with the above remarks and the distinctions between Helland and the claimed invention. The argued limitations are anticipated by Helland:
wherein the one or more storage nodes are configured to:
determine one or more rowblocks with respective record identifier
ranges and time value ranges that include respective record
identifiers for the one or more records and the time value;
access one or more rowblock stores to retrieve the one or more
records; and
send the one or more records to the storage service engine; and
Helland discloses various aspects of how each element in the claim are anticipated in the following analysis. Helland describes one or more rowblocks are determined with respective identifier ranges and time value ranges in para. [0334] As shown, database 110 stores records 115. A record 115(i.e. a record identifier), in various embodiments, is a key-value pair comprising data and a corresponding key that is usable to look up that record 115. As an example, a record 115(i.e. a record identifier) may correspond to a data row in a database table and specify values for one or more attributes/fields of that database table. In various embodiments, records 115(i.e. a record identifier) are immutable and thus to update the underlying database construct (e.g., a row in a table), a new record 115(i.e. a record identifier) is written. Accordingly, a database construct may be associated with multiple records 115(i.e. a record identifier), each of which is a different version of that database construct. Those records 115(i.e. a record identifier) can be referred to as “record versions” of the database construct. As an example, a first record 115(i.e. a record identifier) (a first record version) may initially be written that stores certain values for a database row and later a second record 115(i.e. a record identifier) (a second, subsequent record version) may be written that updates one or more of the values of the database row. Those two records 115(i.e. a record identifier) may be accessible using the same key. [0035] Worker nodes 120, in various embodiments, provide various database services, such as data storage, data retrieval, and/or data manipulation. In various embodiments, a worker node 120 is a set of software routines executable on hardware, while in some embodiments, a worker node 120 encompasses both the hardware and the software routines. The database services may be provided to other components in system 100 or to components external to system 100. For example, a worker node 120 may receive a transaction request 125 from an application node (not shown) to perform a database transaction. A database transaction, in various embodiments, is a logical unit of work (e.g., a specified set of database operations) to be performed in relation to database 110. For example, processing a database transaction may include executing a SQL SELECT command to select one or more rows from one or more database tables. The contents of a row may be specified in a record 115(i.e. a record identifier) and thus a worker node 120 may return one or more records 115(i.e. a record identifier) that correspond to the one or more table rows. Performing a database transaction can include a worker node 120 writing one or more records 115(i.e. a record identifier) to database 110. [0133] wherein the contents of a row may be defined in a database record and thus database server 2114 may locate and return one or more database records that correspond to the selected one or more table rows(e.g. row blocks). [0044] When attempting to access a record 115(i.e. a record identifier) from a location external to worker node 120, in various embodiments, worker node 120 sends a record request 204 to the location. Record request 204 may specify a key 215 corresponding to a record 115(i.e. a record identifier) that can be used by the receiver to attempt to locate that record 115(i.e. a record identifier). [0045] After processing a transaction (e.g., after writing all the requested records 115(i.e. a record identifier) for that transaction), in various embodiments, worker node 120 sends a commit request to a majority of the director nodes 135 of director cluster 130. The commit request may include the records 115(i.e. a record identifier) written for the transaction so that the director nodes 135 can check for record conflicts. In response to receiving approval from a majority of the director nodes 135 with no disapprovals, worker node 120 may commit the records 115(i.e. a record identifier). In some embodiments, disapprovals are allowed as long as a majority of director cluster 130 approves of the commit request. As part of the commit, in various embodiments, worker node 120 stamps each record 115(i.e. a record identifier) with a value(e.g., a time, a numerical value indicative of a time period(e.g. record identifier ranges and time value range), etc.) indicative of when the record 115(i.e. a record identifier) was committed.”) (Examiner interprets “the key as a record identifier, internally corresponding to one or more row blocks of memory and within the time provided in the request.”) Respectfully, the Examiner recommends further clarification to the claimed invention to distinguish the claimed invention from Helland. For example, the independent claims do not clarify, "one or more rowblocks" and "with respective record identifier ranges and time value ranges.”
The Applicant further states on page 9, the cited portions of Helland do not describe storage nodes as recited in Applicant's claim. “For example, the Office Action argues …Accordingly, the Office Action's mapping of Helland to Applicant's recited "storage nodes" fails.
The examiner respectfully disagrees with the above remarks. Helland describes storage nodes in para. [0033] Database 110, in various embodiments, is a collection of information that is organized in a manner that allows for access, storage, and manipulation of that information. Accordingly, database 110 may include supporting software (e.g., storage nodes) that allow for worker nodes 120 to carry out operations (e.g., accessing, storing, etc.) on the information stored at database 110. In various embodiments, database 110 is implemented using a single or multiple storage devices that are connected together on a network (e.g., a storage attached network (SAN)) and configured to redundantly store information in order to prevent data loss. The storage devices may store data persistently and thus database 110 may serve as a persistent storage for system 100. Information (e.g., records 115) that is written to database 110 by a worker node 120 may be accessible to other worker nodes 120. Helland further discloses a connection between the storage nodes, database 110 stores records and director nodes in para. [0069] In various embodiments, a director node 135 removes history records 225 from its history information 220 over time. In various cases, a new record version of a database construct (e.g., a database row) is approved for commitment that replaces a previous record version. As such, the director node 135 may replace the history record 225 of the previous record version with a new history record 225 of the new record version. In some cases, the director node 135 removes a history record 225 in response to a record 115 aging past a certain threshold. For example, the record 115 associated with history record 225A may be written out to an LSM tree of database 110 and merged down the levels of the LSM tree over time. After that record 115 has reached a certain level, a director node 135 may remove history record 225A from its history information 220 (if that director node 135 had approved the transaction of that record 115 and had created history record 225A). As a part of removing a history record 225 from its history information 220, in some embodiments, a director node 135 sends the history record 225 to database 110 such that it becomes accessible to worker nodes 120 from database 110. Respectfully, the Examiner recommends further clarification to the claimed invention to distinguish the claimed invention from Helland. The Examiner submits that storage nodes are utilized in the teaching of Helland (see Helland [0033]). For example, Helland discloses “database 110 may include supporting software (e.g., storage nodes).”
The Applicant recites Independent Claim 5 on page 11 and states “Helland fails to anticipate claim 5 for at least the reasons discussed above with regard to claim 1.”
Respectively, argument is not persuasive for at least the reasons the examiner responded above to claim 1.
The Applicant recites Independent Claim 14 on page 11 and states “Helland fails to anticipate claim 14 for at least the reasons discussed above with regard to claim 1.”
Respectively, argument is not persuasive for at least the reasons the examiner responded above to claim 1.
The Applicant asserts on page 12 that numerous ones of the dependent claims recite further distinctions over the cited references. Applicant traverses the rejections of these claims for at least the reasons given above in regard to the claims from which they depend. However, since the rejections have been shown to be unsupported for the independent claims, a further discussion of the dependent claims is not necessary at this time. Applicant reserves the right to present additional arguments.
Respectively, argument is not for at least the reasons the examiner responded above to claim 1.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
Claim(s) 1, 2, 4-7, 9-16, and 18-20 are rejected under 35 U.S.C. 102(a)(1) and 102(a)(2) as being anticipated by Helland (Pub. No. US 2022/0391376 A1).
Regarding Claim 1, Helland teaches a system, comprising: (Helland [0144] FIG. 22, “…computer system 2200...”).
a first plurality of nodes, respectively comprising at least one processor and a memory, that implement a database service that provides access to databases on behalf of clients of the database service; (Helland [0035] “Worker nodes 120…provide various database services, such as data storage,
data retrieval, and/or data manipulation. For example, processing a database transaction may include executing a SQL SELECT command to select one or more rows from one or more database tables.”) (Examiner interprets “database services, such as data storage, data retrieval and/or data manipulation” as core functions that provide access to databases on behalf of clients. Access may be database interaction (e.g., SELECT); (Helland [0039] FIG. 2, “…worker node 120 includes…, an in-memory cache 210...”)
a second plurality of nodes, respectively comprising at least one further processor and a further memory, that implement a distributed storage service that stores tables of the databases on behalf of the database service; (Helland [0028] “The system further includes a group of “director” nodes...);
(Helland [0032] FIG 1, “…director nodes 135 may thus execute on and utilize the available cloud resources of the cloud infrastructure (e.g., computing resources, storage resources, network resources, etc.) in order to facilitate their operation…”) (Examiner interprets “execute on the available cloud infrastructure (e.g., computing resources, storage resources, network resources, etc.) with respect to “implement a distributed storage service on behalf of the database service;”); (Helland [0033] “…a network (e.g., a storage attached network (SAN)) and configured to redundantly store information…”) (Examiner interprets Storage Area Network (SAN) with respect to “stores tables of the database.”)
wherein the database service comprises a data access node that implements a query engine for the database service and a storage service engine for the distributed storage service, wherein the storage service engine is configured to: (Helland [0133] “…a worker node 120. As an example, a database server 2114 may receive a database transaction request from an application server 2122 that is requesting data to be written to or read from data storage 2112. The database transaction request may specify an SQL SELECT command to select one or more rows from one or more database tables. The contents of a row may be defined in a database record and thus database
server 2114 may locate and return one or more database records that correspond to the selected one or more table rows. In various cases, the database transaction request may instruct database server 2114 to write one or more database records for the LSM tree—database servers 2114 maintain the LSM tree implemented on database platform 2110.”)
receive a request from the query engine to obtain one or more records of a table to perform an access request at the query engine; (Helland [0133] FIG. 21, “…As an example, a database server 2114 may receive a database transaction request from an application server 2122 that is requesting data to be written to or read from data storage 2112. The database transaction request may specify an SQL SELECT command to select one or more rows from one or more database tables.”)
identify a time value for the access request corresponding to a state of the table and one or more storage nodes of the distributed storage service that store the one or more records; (Helland [0042] “…the latest/newest record version of a row in a database table is found in a record 115 that is stored in in-memory cache 210… worker node 120 obtains history information 220 from director nodes 135 that identifies where a certain record 115 (e.g., the latest record version of a database row) may potentially be found. As such, worker node 120 may use history information 220 to identify what records 115 are stored within the in-memory caches 130 of other worker nodes 120.”); (Helland [0045] “…worker node 120 stamps each record 115 with a value (e.g., a time, a numerical value indicative of a time period, etc.) …”)
send respective requests to the one or more storage nodes to obtain the one or more records according to the time value for the access request; (Helland [0044] “…worker node 120 sends a record request 204 to the location…for example, worker node 120 sends a record request 204 to database 110. Record request 204 may specify a key 215 corresponding to a record 115 that can be
used by the receiver to attempt to locate that record 115. Thereafter, worker node 120 may receive a record response 206. In some cases, the record response 206 includes the requested record 115.”)
and
wherein the one or more storage nodes are configured to: (Helland [0033] “... (e.g., storage nodes) that allow for worker nodes 120 to carry out operations (e.g., accessing, storing, etc.) on the information stored at database 110.”)
determine one or more rowblocks with respective record identifier ranges and time value ranges that include respective record identifiers for the one or more records and the time value; (Helland [0044] “When attempting to access a record 115 from a location external to worker node 120, in various embodiments, worker node 120 sends a record request 204 to the location. Record request 204 may specify a key 215 corresponding to a record 115 that can be used by the receiver to attempt to locate that record 115.”); Helland [0045] “…worker node 120 stamps each record 115 with a value (e.g., a time, a numerical value indicative of a time period, etc.) indicative of when the record 115 was committed.”) (Examiner interprets “the key as a record identifier, internally corresponding to one or more rowblocks of memory and within the time provided in the request.”)
access one or more rowblock stores to retrieve the one or more records; and (Helland [0133] “…The database transaction request may specify an SQL SELECT command to select one or more rows from one or more database tables. The contents of a row may be defined in a database record and thus database server 2114 may locate and return one or more database records that correspond to the selected one or more table rows.”)
send the one or more records to the storage service engine; and (Helland [0133] “…the database transaction request may instruct database server 2114 to write one or more database records for the LSM tree—database servers 2114 maintain the LSM tree implemented on database platform 2110.”)
wherein the storage service engine is further configured to: (Helland [0131] “…the data stored at data storage 2112 is organized as part of a log-structured merge-tree (LSM tree—e.g., LSM tree 1100). An LSM tree normally includes two high-level components: an in-memory buffer and a persistent storage.”)
return a response, to the request to obtain the one or more records, to the query engine based, at least in part, on the one or more records received from the one or more storage nodes. (Helland [0133] “A database server 2114 may correspond to a worker node 120. As an example, a database server 2114 may receive a database transaction request from an application server 2122 that is requesting data to be written to or read from data storage 2112. The database transaction request may specify an SQL SELECT command to select one or more rows from one or more database tables. The contents of a row may be defined in a database record and thus database server 2114 may locate and return one or more database records that correspond to the selected one or more table rows.”)
Regarding Claim 2, Helland teaches the system of claim 1, wherein the one or more records are received as the one or more rowblocks from the one or more storage nodes. (Helland [0034] “… As an example, a record 115 may correspond to a data row in a database table and specify values for one or more attributes/fields of that database table. In various embodiments, records 115 are immutable and thus to update the underlying database construct (e.g., a row in a table), a new record 115 is written. Accordingly, a database construct may be associated with multiple records 115, each of which is a different version of that database construct.”); (Helland [0044] “Record request 204 may specify a key 215 corresponding to a record 115 that can be used by the receiver to attempt to locate that record 115. Thereafter, worker node 120 may receive a record response 206.”)
Regarding Claim 4, Helland teaches the system of claim 1, wherein the storage service engine is further configured to determine that respective responses received from the one or more storage nodes with the one or more records satisfy a quorum requirement. (Helland [0028] “…a worker node may interact with the director nodes to ensure that the actions of that worker node to do not interfere with actions of other worker nodes within the system. When interacting with the group of director nodes, the worker node sends a request to a set of the director nodes (e.g., some or all of them) and waits for approval responses from at least a majority of the group of director nodes before proceeding.”)
Regarding Claim 5, Helland teaches a method, comprising:
receiving, at a storage service engine of a distributed storage service, a request from a database access application to obtain one or more records of a table to perform an access request at the database access application; (Helland [0035] “For example, a worker node 120 may receive a transaction request 125 from an application node (not shown) to perform a database transaction.”); (Helland [0133] “…A database server 2114 may correspond to a worker node 120. In various cases, the database transaction request may instruct database server 2114 to write one or more database records for the LSM tree—… In some embodiments, database servers 2114 implement a relational database management system (RDMS) or object-oriented database management system (OODBMS) that facilitates storage and retrieval of information against data storage 2112.”)
identifying, by the storage service engine, a time value for the access request corresponding to a state of the table and one or more storage nodes of the distributed storage service that store the one or more records; (Helland [0043] “When looking for a certain record version of a database construct (e.g., the latest record 115 of a database row), worker node 120 may identify a set of history
records 225 based on a key 215 that corresponds to the database construct. Worker node 120 may thereafter identify, from timestamps, which history record 225 corresponds to the record version and then may use that history record 225 in order to attempt to access the record 115…a single history record 225 may store the locations of multiple records 115 of the same key 215.”); (Helland [0035] “The worker node 120 may also communicate with director nodes 135 when starting a transaction in order to obtain information about the state of records stored ...”)
sending, by the storage service engine, respective requests to the one or more storage nodes to obtain the one or more records according to the time value for the access request; (Helland [0043] “Worker node 120 may thereafter identify, form timestamps, which history record 225 corresponds to the record version and then may use the history record 225 in order to attempt to access the record 115.”); (Helland [0044] “…worker node 120 sends a record request 204 to the location. Record request 204 may specify a key 215 corresponding to a record 115 that can be used by the receiver to attempt to locate that record 115.”)
determining, by the one or more storage nodes, one or more rowblocks with respective record identifier ranges and time value ranges that include respective record identifiers for the one or more records and the time value to retrieve the one or more records; (Helland [0044] “Record request 204 may specify a key 215 corresponding to a record 115 that can be used by the receiver to attempt to locate that record 115.”); (Helland [0045] “…worker node 120 sends a commit request to a majority of the director nodes 135 of director cluster 130. The commit request may include the records 115 written for the transaction so that the director nodes 135 can check for record conflicts… worker node 120 stamps each record 115 with a value (e.g., a time, a numerical value indicative of a time period, etc.) indicative of when the record 115 was committed.”); (Helland [0095] “…director node determines whether the record conflicts with a set of records (e.g., identified in history information 220) provided… by other worker nodes of the plurality of worker nodes.”)
sending, by the one or more storage nodes, the one or more records to the storage service engine; and (Helland [0133] “…The database transaction request may specify an SQL SELECT command to select one or more rows from one or more database tables. The contents of a row may be defined in a database record and thus database server 2114 may locate and return one or more database records that correspond to the selected one or more table rows. In various cases, the database transaction request may instruct database server 2114 to write one or more database records for the LSM tree—database servers 2114 maintain the LSM tree implemented on database platform 2110…”)
returning, by the one or more storage nodes, a response, to the request to obtain the one or more records, to the database access application based, at least in part, on the one or more records received from the one or more storage nodes. (Helland [0035]” For example, processing a database transaction may include executing a SQL SELECT command to select one or more rows from one or more database tables. The contents of a row may be specified in a record 115 and thus a worker node 120 may return one or more records 115 that correspond to the one or more table rows.”)
Regarding Claim 6, Helland teaches the method of claim 5, wherein the one or more records are received as the one or more rowblocks from the one or more storage nodes. (Helland [0034] “As an example, a record 115 may correspond to a data row in a database table and specify values for one or more attributes/fields of that database table. In various embodiments, records 115 are immutable and thus to update the underlying database construct (e.g., a row in a table), a new record 115 is written. Accordingly, a database construct may be associated with multiple records 115, each of which is a different version of that database construct.”)
Regarding Claim 7, Helland teaches the method of claim 5, wherein the one or more records are received as respective partial portions of the one or more rowblocks from the one or more storage nodes. (Helland [0095] “…As such, the determining may include the director node determining whether there is a conflicting record in the set of records that is identified as being committed between the snapshot time and the commit time. In some cases, the set of records includes at least one record that is not included in another set of records stored by another director node for the plurality of director nodes.”)
Regarding Claim 9, Helland teaches the method of claim 5, wherein the access request is a read request. (Helland [0133] “…a database server 2114 may receive a database transaction request from an application server 2122 that is requesting data to be written to or read from data storage 2112.”)
Regarding Claim 10, Helland teaches the method of claim 5, wherein the access request is a write request. (Helland [0133] “…a database server 2114 may receive a database transaction request from an application server 2122 that is requesting data to be written to or read from data storage 2112.”)
Regarding Claim 11, Helland teaches the method of claim 5, wherein the access request is performed as part of a transaction. (Helland [0133] “…the database transaction request may instruct database server 2114 to write on or more database records.”)
Regarding Claim 12, Helland teaches the method of claim 5, further comprising determining, by the storage service engine, that respective responses received from the one or more storage nodes with the one or more records satisfy a quorum requirement. (Helland [0028] “…When interacting with the group of director nodes, the worker node sends a request to a set of the director nodes (e.g., some or all of them) and waits for the approval responses from at least a majority of the group of director nodes before proceeding.”)
Regarding Claim 13, Helland teaches the method of claim 5, wherein the database access application is hosted as part of a relational database service offered by a provider network that also implements the distributed storage service. (Helland FIG 21, [0133] “…database servers 2114 implement a relational database management system (RDMS…”)
Regarding Claim 14, Helland 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: (Helland [0140] “…Thus, various operations described herein may be performed by executing program instructions stored on a non-transitory computer-readable medium and executed by processing elements.”)
receiving, at a storage service engine of a distributed storage service, a request from a database access application to obtain one or more records of a table to perform an access request at the database access application; (Helland [0035] “For example, a worker node 120 may receive a transaction request 125 from an application node (not shown) to perform a database transaction.”); (Helland [0133] “…A database server 2114 may correspond to a worker node 120. In various cases, the database transaction request may instruct database server 2114 to write one or more database
records for the LSM tree—… In some embodiments, database servers 2114 implement a relational database management system (RDMS) or object-oriented database management system (OODBMS) that facilitates storage and retrieval of information against data storage 2112.”)
identifying, by the storage service engine, a time value for the access request corresponding to a state of the table and one or more storage nodes of the distributed storage service that store the one or more records; (Helland [0043] “When looking for a certain record version of a database construct (e.g., the latest record 115 of a database row), worker node 120 may identify a set of history records 225 based on a key 215 that corresponds to the database construct. Worker node 120 may thereafter identify, from timestamps, which history record 225 corresponds to the record version and then may use that history record 225 in order to attempt to access the record 115…a single history record 225 may store the locations of multiple records 115 of the same key 215.”); (Helland [0035] “The worker node 120 may also communicate with director nodes 135 when starting a transaction in order to obtain information about the state of records stored ...”)
sending, by the storage service engine, respective requests to the one or more storage nodes to obtain the one or more records according to the time value for the access request; (Helland [0043]” Worker node 120 may thereafter identify, form timestamps, which history record 225 corresponds to the record version and then may use the history record 225 in order to attempt to access the record 115.”); (Helland [0044] “…worker node 120 sends a record request 204 to the location. Record request 204 may specify a key 215 corresponding to a record 115 that can be used by the receiver to attempt to locate that record 115.”)
receiving, at the storage service engine, the one or more records from the one or more storage nodes, wherein the one or more storage nodes retrieved the one or more records from one or more
rowblocks with respective record identifier ranges and time value ranges that include respective record identifiers for the one or more records and the time value; (Helland [0034] “As shown, database 110 stores records 115. A record 115, in various embodiments, is a key-value pair comprising data and a corresponding key that is usable to look up that record 115. As an example, a record 115 may correspond to a data row in a database table and specify values for one or more attributes/fields of that database table. In various embodiments, records 115 are immutable and thus to update the underlying database construct (e.g., a row in a table), a new record 115 is written. Accordingly, a database construct may be associated with multiple records 115, each of which is a different version of that database construct.”); (Helland [0044] “Record request 204
may specify a key 215 corresponding to a record 115 that can be used by the receiver to attempt to locate that record 115. Thereafter, worker node 120 may receive a record response 206.”); (Helland [0045] In some embodiments, disapprovals are allowed as long as a majority of director cluster 130 approves of the commit request. As part of the commit, in various embodiments, worker node 120 stamps each record 115 with a value (e.g., a time, a numerical value indicative of a time period, etc.) indicative of when the record 115 was committed”) and
returning, by the one or more storage nodes, a response, to the request to obtain the one or more records, to the database access application based, at least in part, on the one or more records received from the one or more storage nodes. (Helland [0035] “For example, processing a database transaction may include executing a SQL SELECT command to select one or more rows from one or more database tables. The contents of a row may be specified in a record 115 and thus a worker node 120 may return one or more records 115 that correspond to the one or more table rows.”)
Regarding Claim 15, Helland teaches the one or more non-transitory, computer-readable storage media of claim 14, wherein the one or more records are received as the one or more rowblocks from the one or more storage nodes. (Helland [0034] “… As an example, a record 115 may correspond to a data row in a database table and specify values for one or more attributes/fields of that database table. In various embodiments, records 115 are immutable and thus to update the underlying database construct (e.g., a row in a table), a new record 115 is written. Accordingly, a database construct may be associated with multiple records 115, each of which is a different version of that database construct.”); (Helland [0044] “Record request 204 may specify a key 215 corresponding to a record 115 that can be used by the receiver to attempt to locate that record 115. Thereafter, worker node 120 may receive a record response 206.”)
Regarding Claim 16, Helland teaches the one or more non-transitory, computer-readable storage media of claim 14, wherein the one or more records are received as respective partial portions of the one or more rowblocks from the one or more storage nodes. (Helland [0095] “…As such, the determining may include the director node determining whether there is a conflicting record in the set of records that is identified as being committed between the snapshot time and the commit time. In some cases, the set of records includes at least one record that is not included in another set of records stored by another director node for the plurality of director nodes.”)
Regarding Claim 18, claim 18 is directed to the one or more non-transitory, computer-readable storage media of claim 14, that recites similar limitation as claim 9 and is being rejected based on the same rational as claim 9 above. Moreover, non-transitory computer readable storage media is thought on par. [0140] of Helland.
Regarding Claim 19, Helland teaches the one or more non-transitory, computer-readable storage media of claim 14, wherein the access request is performed as part of a transaction. (Helland [0133] “…the database transaction request may instruct database server 2114 to write on or more database records.”)
Regarding Claim 20, Helland teaches the one or more non-transitory, computer-readable storage media of claim 14, storing further programming instructions that when executed on or across the one or more computing devices cause the one or more computing devices to further implement determining, by the storage service engine, that respective responses received from the one or more storage nodes with the one or more records satisfy a quorum requirement. (Helland [0028] “…When
interacting with the group of director nodes, the worker node sends a request to a set of the director nodes (e.g., some or all of them) and waits for the approval responses from at least a majority of the group of director nodes before proceeding.”)
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 3, 8, and 17 are rejected under 35 U.S.C. 103 as being unpatentable over Helland
(US 2022/0391376 A1) in view of Pesala et al. (US 2022/0229837).
Regarding claim 3, Helland fails to explicitly teach wherein the storage service engine is further configured to apply one or more Multiversion concurrency control (MVCC) rules to select respective versions of the one or more records received from the one or more storage nodes to include in the response.
However, Pesala et al., teaches wherein the storage service engine is further configured to apply one or more Multiversion concurrency control (MVCC) rules to select respective versions of the one or more records received from the one or more storage nodes to include in the response of how respective versions are selected in row format. (Pesala et al. [0024] “The data storage and data retrieval system support high throughput ingestion in MVCC row format into a data storage unit. MVCC, or multi version concurrency control, helps in ensuring consistency of data when multiple
read and write actions are performed simultaneously in a data storage unit. The data that is stored in the MVCC row format is streamed to a first columnar format on a first transition parameter being fulfilled, where additional columns are added to the columnar format to track the version or transaction information. This format which maintains additional columns to track the version or transaction information is called the MVCC columnar format.”)
Helland and Pesala et al. are analogues in that they both teach a method Multiversion concurrency control (MVCC) rules. It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Helland to incorporate the teachings of Pesala et al. on how the data storage and data retrieval system support high throughput ingestion in MVCC row format into a data storage unit. Doing so would aid in ensuring consistency of data when multiple read and write actions are performed simultaneously in a data storage unit. par. [0024] of Pesala et al.
Regarding claim 8, claim 8 is directed to the method of claim 5, further and recites similar limitation as claim 3 and is being rejected based on the same rational as claim 3 above.
Regarding claim 17, claim 17 is directed to the one or more non-transitory, computer-readable storage media of claim 14 that recites similar limitation as claim 3 and is being rejected based on the same rational as claim 3 above. Moreover, non-transitory computer readable storage media is thought on par. [0140] of Helland.
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 MALA BOYD whose telephone number is (571)272-6450. The examiner can normally be reached M-F 7:30-4:00.
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, Eleni A. Shiferaw can be reached at 571-272-3867. 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.
/MALA BOYD/Examiner, Art Unit 2497 /ELENI A SHIFERAW/Supervisory Patent Examiner, Art Unit 2497