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/31/2026 has been entered.
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 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.
The factual inquiries set forth in Graham v. John Deere Co., 383 U.S. 1, 148 USPQ 459 (1966), that are applied for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claims 1-2, 8-10, and 16-18 are rejected under 35 U.S.C. 103 as being unpatentable over Randall P. Spalten (US 2014/0052703) in view of Bhola et al. (US 2024/0126738).
Regarding Claims 9, 1, and 17, Spalten discloses an apparatus, comprising:
one or more memories storing processor-executable code ([0022], Spalten); and
one or more processors coupled with the one or more memories and individually or collectively operable to execute the code to cause the apparatus to ([0026], Spalten):
query a source data storage environment for a starting point and an ending point of a table, the table comprising a set of keys in a keyspan that spans from the starting point to the ending point ([0036], Spalten);
receive indications of a set of timestamps, each timestamp representing time ([0036], “(Joe, `123`, 01/01/12, 01/01/12) and (Joe, `123`, 01/01/12, 03/01/12), they are externally equal. In other words, to the user querying the database, there is just one value (Joe, `123`), which has two validity periods, one from January-February and one from February-March. The non-temporal key parts of the keys are both equal, but the temporal (begin/end) key parts are different,” Spalten) and a set of key ranges associated with the table ([0036], “(Joe, `123`, 01/01/12, 01/01/12) and (Joe, `123`, 01/01/12, 03/01/12), they are externally equal. In other words, to the user querying the database, there is just one value (Joe, `123`), which has two validity periods, one from January-February and one from February-March. The non-temporal key parts of the keys are both equal, but the temporal (begin/end) key parts are different,” Spalten);
compute a subset of key ranges of the set of key ranges, wherein a timestamp corresponding to a first key range of the subset of key ranges is a temporally latest timestamp of the set of timestamps and wherein the subset of key ranges includes every key of the set of keys in the keyspan ([0037]-[0040], Spalten);
compute a temporally earliest timestamp of a subset of timestamps associated with the subset of key ranges ([0051], [0053], [0055], “The index has no gaps in it at this point, since the earliest value is T2. Since gaps cannot have a beginning or ending time of infinity, if the earliest or latest value is deleted, this has the affect of removing the adjacent known gaps. The updated index and gap list are shown in FIG. 2,” Spalten); and
output an indication of the temporally earliest timestamp of the subset of timestamps ([0055], Spalten).
Spalten discloses all the limitations as discussed above but does not expressly disclose that each timestamp of a set of timestamps representing a time at which a respective key range of a set of key ranges was updated, wherein one or more key ranges of the set of key ranges comprises a plurality of keys in the keyspan. Bhola discloses: each timestamp of a set of timestamps representing a time at which a respective key range of a set of key ranges was updated, wherein one or more key ranges of the set of key ranges comprises a plurality of keys in the keyspan ([0036], [0053], [0105], and [0124], Bhola). It would have been obvious to one of ordinary skill in the art before the effective filing date of the invention to modify the system of Spalten by incorporating thateach timestamp of a set of timestamps representing a time at which a respective key range of a set of key ranges was updated, wherein one or more key ranges of the set of key ranges comprises a plurality of keys in the keyspan, as disclosed by Bhola, in order to be able to query for historical data from a specific period of time ([0053], Bhola). See: KSR International Co. v. Teleflex Inc., 82 USPQ 1385, 1396 (US 2007); MPEP § 2143.
Furthermore, Spalten/Bhola discloses that the temporally earliest timestamp comprising a table-level timestamp representative of a time at which a least up-to-date key of the table has been updated ([0003], “the keys may be sorted by key suffix in descending order (e.g., according to a version and/or timestamp), such that newer, more recent keys of a prefix sort before older, less recent keys of the same prefix,” [0036], “the timestamp corresponding to the range key is less (e.g., less recent, older, etc.) than or equal to the timestamp (e.g., historical timestamp) corresponding to the point key,” wherein the less recent historical timestamp is an example of a timestamp at which a least up-to-date key has been updated as claimed; Bhola).
Regarding Claims 10, 2, and 18, Spalten/Bhola discloses an apparatus, wherein, to compute the subset of key ranges, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:
determine that the subset of key ranges includes every key of the set of keys in the keyspan ([0037]-[0040], Spalten; and [0036], [0053], [0105], and [0124], Bhola).
Regarding Claims 16 and 8, Spalten discloses an apparatus, wherein the set of key ranges are stored across a plurality of nodes ([0050] and [0065], Spalten; and ([0036], [0053], [0105], and [0124], Bhola).
Claims 3-4, 11-12, and 19-20 are rejected under 35 U.S.C. 103 as being unpatentable over Randall P. Spalten (US 2014/0052703), in view of Bhola et al. (US 2024/0126738), and further in view of Bhattacharjee et al. (US 2004/0205066).
Regarding Claims 11, 3, and 19, Spalten/Bhola discloses all the limitations as discussed above including: to determine, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to ([0036], Spalten):
generate an array of keys, the array of keys comprising a starting key and an ending key of every key range of the subset of key ranges, wherein the array of keys is sorted lexicographically ([0036], Spalten);
compute a set of pseudo key ranges, wherein every pseudo key range of the set of pseudo key ranges comprises a key range between consecutive keys in the array of keys ([0036], “(Joe, `123`, 01/01/12, 01/01/12) and (Joe, `123`, 01/01/12, 03/01/12), they are externally equal. In other words, to the user querying the database, there is just one value (Joe, `123`), which has two validity periods, one from January-February and one from February-March. The non-temporal key parts of the keys are both equal, but the temporal (begin/end) key parts are different,” Spalten); and
determine that every pseudo key range of the set of pseudo key ranges is included in the subset of key ranges ([0037]-[0040], Spalten).
However, Spalten/Bhola does not expressly disclose the array of keys is sorted lexicographically. Bhattacharjee discloses: generate an array of keys, the array of keys comprising a starting key and an ending key of every key range of the subset of key ranges, wherein the array of keys is sorted lexicographically ([0052]-[0053], and [0127], Bhattacharjee); compute a set of pseudo key ranges, wherein every pseudo key range of the set of pseudo key ranges comprises a key range between consecutive keys in the array of keys ([0052]-[0053], and [0127], Bhattacharjee); and determine that every pseudo key range of the set of pseudo key ranges is included in the subset of key ranges ([0052]-[0053], and [0127], Bhattacharjee). It would have been obvious to one of ordinary skill in the art before the effective filing date of the invention to modify the system of Spalten/Bhola by incorporating the array of keys is sorted lexicographically, as disclosed by Bhattacharjee, in order to facilitate the processing associated with "bracketed" index scans and to eliminate the need to sort output after scans ([0053], Bhattacharjee). See: KSR International Co. v. Teleflex Inc., 82 USPQ 1385, 1396 (US 2007); MPEP § 2143.
Regarding Claims 12, 4, and 20, Spalten/Bhola/Bhattacharjee discloses an apparatus of claim 11, wherein, to compute the temporally earliest timestamp of the subset of timestamps, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:
track the temporally earliest timestamp associated with each of the set of pseudo key ranges, wherein a timestamp associated with a first pseudo key range comprises a temporally earliest timestamp of a first timestamp associated with a key range including a starting key of the first pseudo key range and a second timestamp associated with a key range including an ending key of the first pseudo key range, and wherein tracking the temporally earliest timestamp comprises ([0051], [0053], [0055], “The index has no gaps in it at this point, since the earliest value is T2. Since gaps cannot have a beginning or ending time of infinity, if the earliest or latest value is deleted, this has the affect of removing the adjacent known gaps. The updated index and gap list are shown in FIG. 2,” Spalten):
determining whether the timestamp of the first pseudo key range is temporally earlier than a timestamp of a subsequent pseudo range of the set of pseudo key ranges ([0051], [0053], [0055], “The index has no gaps in it at this point, since the earliest value is T2. Since gaps cannot have a beginning or ending time of infinity, if the earliest or latest value is deleted, this has the affect of removing the adjacent known gaps. The updated index and gap list are shown in FIG. 2,” Spalten).
Claims 5-7 and 13-15 are rejected under 35 U.S.C. 103 as being unpatentable over Randall P. Spalten (US 2014/0052703), in view of Bhola et al. (US 2024/0126738), and further in view of Ramzan et al. (US 2021/0132907).
Regarding Claims 13 and 5, Spalten/Bhola discloses an apparatus, wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:
generate an array of units based at least in part on the set of key ranges, wherein every unit of the array of units comprises a key of the set of keys, an indication of whether the key is a starting key or an ending key of an associated key range of the subset of key ranges, and the timestamp of the associated key range, and wherein an order of the array of units is based at least in part on a key associated with a respective unit, whether the key is a starting key, and a respective timestamp of every unit of the array of units ([0050] and [0065], Spalten; and [0036], [0053], [0105], and [0124], Bhola); and
compute a tree including a first variable tracking a set of current temporally latest timestamps associated with every key of the set of keys and a second variable tracking a temporally earliest timestamp of the set of current temporally latest timestamps ([0050] and [0065], Spalten; and [0036], [0053], [0105], and [0124], Bhola).
However, Spalten/Bhola does not expressly disclose a red-black tree. Ramzan discloses: a red-black tree ([0048]-[0050] and [0060], Ramzan). It would have been obvious to one of ordinary skill in the art before the effective filing date of the invention to modify the system of Spalten/Bhola by incorporating the red-black tree, as disclosed by Ramsan, in order to rapidly store and retrieve ordered information. See: KSR International Co. v. Teleflex Inc., 82 USPQ 1385, 1396 (US 2007); MPEP § 2143.
Regarding Claims 14 and 6, Spalten/Bhola/Ramzan discloses an apparatus, wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:
process each unit of the array of units, wherein processing a first unit comprises: determine that the first unit is a starting key ([0036], Spalten);
compare the timestamp of the first unit with the first variable ([0036], Spalten);
update the second variable ([0036], Spalten); and
insert the timestamp of the first unit into the red-black tree ([0036], Spalten; and [0048]-[0050] and [0060], Ramzan).
Regarding Claims 15 and 7, Spalten/Bhola/Ramzan discloses an apparatus, wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:
process each unit of the array of units, wherein processing a first unit comprises ([0036], Spalten):
determine that the first unit is an ending key ([0036], Spalten);
compare the timestamp of the first unit with the first variable ([0036], Spalten);
update the second variable ([0036], Spalten); and
remove the timestamp of the first unit into the red-black tree ([0036], Spalten; and [0048]-[0050] and [0060], Ramzan).
Response to Arguments
Applicant argues that “computing a temporally earliest timestamp of a subset of timestamps associated with the subset of key ranges, the temporally earliest timestamp comprising a table-level timestamp representative of a time at which a least up-to-date key of the table has been updated."
The Examiner respectfully disagrees. The applied art does disclose:
compute a temporally earliest timestamp of a subset of timestamps associated with the subset of key ranges ([0051], [0053], [0055], “The index has no gaps in it at this point, since the earliest value is T2. Since gaps cannot have a beginning or ending time of infinity, if the earliest or latest value is deleted, this has the effect of removing the adjacent known gaps. The updated index and gap list are shown in FIG. 2,” Spalten), the temporally earliest timestamp comprising a table-level timestamp representative of a time at which a least up-to-date key of the table has been updated ([0003], “the keys may be sorted by key suffix in descending order (e.g., according to a version and/or timestamp), such that newer, more recent keys of a prefix sort before older, less recent keys of the same prefix,” [0036], “the timestamp corresponding to the range key is less (e.g., less recent, older, etc.) than or equal to the timestamp (e.g., historical timestamp) corresponding to the point key,” wherein the less recent historical timestamp is an example of a timestamp at which a least up-to-date key has been updated as claimed; Bhola).
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to GIOVANNA B COLAN whose telephone number is (571)272-2752. The examiner can normally be reached on Mon - Fri 8:30-5: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, Aleksandr Kerzhner can be reached on (571) 270-1760. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see https://ppair-my.uspto.gov/pair/PrivatePair. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/GIOVANNA B COLAN/Primary Examiner, Art Unit 2165
May 28, 2026