DETAILED ACTION
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This office action is in response to communication filed on December 18, 2025.
Status of claims within the present application:
Claim 2 – 21 are pending.
Claims 2, 13, and 20 are amended.
Response to Amendment
With respect to claims 2 – 21 are rejected under 35 U.S.C. 101 because the claimed invention is directed to an abstract idea without significantly more, applicant’s arguments, see [10 – 12] of applicant’s remarks, filed December 18, 2025, have been fully considered, but are not persuasive. Although, there are amendments added to claim about “based on the first object being stored in the first segment, the second object being different from the first object, and the second index corresponding to the first segment, computing a third index based on the second key for the second object, wherein the third index corresponds to a second segment; updating a data structure associated with the first segment with information indicating a location of the second object; and reading the second object from the second segment, based on the data structure associated with the first segment.”, there is not a practical application being used to show the claimed invention being used in a practical manner. Therefore, rejection still stands.
With respect to the rejection of claims 2 – 21 that were rejected under 35 U.S.C. 103 as being unpatentable over US 20190384530 A1 to Twitto et al., (hereinafter, “Twitto”) in view of US 20100217953 A1 to Beaman et al., (hereinafter, “Beaman”), applicant’s arguments, see [12 – 16] of applicant’s remarks, filed December 18, 2025, have been considered but are moot because of the new interpretation the previously reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The filing of a terminal disclaimer by itself is not a complete reply to a nonstatutory double patenting (NSDP) rejection. A complete reply requires that the terminal disclaimer be accompanied by a reply requesting reconsideration of the prior Office action. Even where the NSDP rejection is provisional the reply must be complete. See MPEP § 804, subsection I.B.1. For a reply to a non-final Office action, see 37 CFR 1.111(a). For a reply to final Office action, see 37 CFR 1.113(c). A request for reconsideration while not provided for in 37 CFR 1.113(c) may be filed after final for consideration. See MPEP §§ 706.07(e) and 714.13.
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The actual filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/apply/applying-online/eterminal-disclaimer.
Claims 2 – 21 rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1 – 20 of U.S. Patent No. 12010214 B2. Although the claims at issue are not identical, they are not patentably distinct from each other because both the application and the patent contain methodology to compute a first index based on a hash of a first key and stored it within a corresponding segment within the memory device.
18739231
US 12010214 B2
2. A method comprising: computing first index based on a first key for a first object; storing the first object in a first segment corresponding to the first index; computing a second index based on a second key for a second object, wherein the second index corresponds to the first segment; based on the first object being stored in the first segment and the second index corresponding to the first segment, computing a third index based on the second key for the second object, wherein the third index corresponds to a second segment; storing the second object in the second segment; and updating a data structure associated with the first segment with information indicating a location of the second object.
1. A method comprising: computing a first index based on a hash of a first key for a first object to be stored in a memory device; determining an availability of a first segment on the memory device corresponding to the first index; computing a second index based on the hash of the first key for the first object, in response to determining that the first segment corresponding to the first index is unavailable for storage based on determining that a second object is stored in the first segment; determining an availability of a second segment on the memory device corresponding to the second index; and adding an indicator of a location of the second segment to a collision table in a first metadata of the first segment, wherein the first object is stored in the second segment, and wherein the collision table in the first segment comprises information related to the first object stored in the second segment based on determining that a common index corresponding to the first segment is generated for both the first and second objects.
4. The method of claim 3, wherein the indicator of the second segment is stored in a data structure in the first segment.
1. A method comprising: computing a first index based on a hash of a first key for a first object to be stored in a memory device; determining an availability of a first segment on the memory device corresponding to the first index; computing a second index based on the hash of the first key for the first object, in response to determining that the first segment corresponding to the first index is unavailable for storage based on determining that a second object is stored in the first segment; determining an availability of a second segment on the memory device corresponding to the second index; and adding an indicator of a location of the second segment to a collision table in a first metadata of the first segment, wherein the first object is stored in the second segment, and wherein the collision table in the first segment comprises information related to the first object stored in the second segment based on determining that a common index corresponding to the first segment is generated for both the first and second objects.
6. The method of claim 5, wherein the computing the second index comprises extracting a bit from every byte of the hash to form the second index.
3. The method of claim 2, wherein the computing the second index comprises extracting a bit from every byte of the hash to form the second index.
7. The method of claim 5, further comprising writing, to the data structure, an association between the hash of the first key and the indicator of the second segment, in response to the data structure being empty.
5. The method of claim 4, further comprising writing, to the collision table, an association between the hash of the first key and the indicator of the location of the second segment, in response to the collision table being empty.
8. The method of claim 5, wherein the computing the hash of the first key comprises computing using a Secure Hash Algorithm 256 (SHA-256).
6. The method of claim 1, wherein the computing the hash of the first key comprises computing using a Secure Hash Algorithm 256 (SHA-256).
9. The method of claim 5, further comprising: receiving a get request indicating the first key; computing the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is inconsistent with a stored hash in the first metadata, in response to reading the first metadata; reading the data structure in the first metadata to determine that the first object is stored in the first segment; and retrieving the first object from the first segment, in response to reading the data structure.
7. The method of claim 4, further comprising: receiving a get request indicating the first key; computing the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is inconsistent with a stored hash stored in the first metadata, in response to reading the first metadata; reading the collision table in the first metadata to determine that the first object is stored in the second segment; and retrieving the first object from the second segment, in response to reading the collision table.
10. The method of claim 5, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is inconsistent with a stored hash in the first metadata, in response to reading the first metadata; reading the data structure in the first metadata to determine that that the first object is stored in the first segment; and deleting the first object from the first segment, in response to reading the data structure.
8. The method of claim 4, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is inconsistent with a stored hash stored in the first metadata, in response to reading the first metadata; reading the collision table in the first metadata to determine that that the first object is stored in the second segment; and deleting the first object from the second segment, in response to reading the collision table.
11. The method of claim 5, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; determining that the data structure in the first metadata comprises the indicator of the second segment; setting a value size of the data structure to zero; and deleting the first object from the first segment.
9. The method of claim 4, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; determining that the collision table in the first metadata comprises the indicator of the location of the second segment; setting a value size of the collision table to zero; and deleting the first object from the second segment.
12. The method of claim 5, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; determining that the data structure in the first metadata is empty, in response to determining that the hash of the first key is consistent with the stored hash in the first metadata; and deleting the first object from the first segment, in response to reading the data structure.
10. (Currently Amended) The method of claim 4, further comprising: receiving a delete request identifying the first key; computing [[a]]the first index based on the hash of the first key; reading the first metadata of the first segment corresponding to the first index; determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; determining that the collision table in the first metadata is empty, in response to determining that the hash of the first key is consistent with the stored hash stored in the first metadata; and deleting the first object from the second segment, in response to reading the collision table.
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 2 – 21 are rejected under 35 U.S.C. 101 because the claimed invention is directed to an abstract idea without significantly more. The following is Examiner’s analysis of the claimed invention with the claim amendments under the 2019 Revised Patent Subject Matter Eligibility Guidance (PEG):
STEP1 Is the claim to a Process, Machine, Manufacture or Composition of matter?
Claim 2 (and dependent claims 2 – 7) recite a method (process), claim 13 (and dependent claims 9 – 14) recite a system (machine), claim 20 (and dependent claims 21) recite a method (process).
STEP2A Prone one: Does The Claim Recite An Abstract Idea, Law Of Nature, or Natural Phenomenon? The claim recites the steps of “computing first index based on a first key for a first object; storing the first object in a first segment corresponding to the first index; computing a second index based on a second key for a second object, wherein the first index corresponds to the first segment; based on determining that a valid object is stored in the first segment, computing a third index based on the second key for the second object, wherein the second index corresponds to a second segment;”, which fall within the “Mental Processes” 2019 PEG grouping as concepts performed in the human mind (including observation, evaluation, judgment, opinion). Each of the steps of defining parameters and defining actions is a mental process that can practically be performed in the human mind, therefore, the claimed limitations falls within the mental processes grouping, and the claims recite an abstract idea.
STEP2A Prone two: Does The Claim Recite Additional Elements That Integrate The Judicial Exception Into A Practical Application? The processing device (claim 2) is recited at a high level of generality, i.e., as a generic processor performing a generic computer function of computing index and processing data. This generic processor limitation is no more than mere instructions to apply the exception using a generic computer component. Accordingly, this additional element does not integrate the abstract idea into a practical application because it does not impose any meaningful limits on practicing the abstract idea. Claims 3 – 4, 14, and 21 further recites addition steps “further comprising: updating the first segment to include an indicator of the second segment.” and “wherein the indicator of the second segment is stored in a data structure in the first segment.”, which are also mental processes that can practically be performed in the human mind.
STEP 2B Does The Claim Recite Additional Elements That Amount To Significantly More Than The Judicial Exception? The elements recited in claims 3 – 12, 14 – 19, and 21 recite updating and formatting the location for storage (e.g., claims 3 – 4, 14 – 15, and 21) and compute the second index based on the computation of the first index metadata (Claims 5 – 7 and 15 – 17), general category of software (e.g. claim 1, 13, and 20), using of (computer) storage system (claim 13), which amounts to no more than mere instructions to apply the exception using a generic computer. These additional elements comprise well-understood, routine, conventional computing elements (see BASCOM Global Internet Services v. AT&T Mobility LLC, 827 F .3d 1341 (Fed. Cir. 2016) holding recites generic computer, network and Internet components, none of which is inventive by itself) see also Two-Way Media Ltd. V. Comcast Cable Communications, LLC, 2017 U.S. App. LEXIS 21706 at 14 (Fed. Cir. Nov. 1, 2017) finding “Nothing in the claims or their constructions, including the use of “intermediate computers,” requires anything other than conventional computer and network components operating according to their ordinary functions”, see also “simply implementing an abstract concept on a computer, without meaningful limitations to
The claims recite identification of plurality of detectable events and the generation of attack pattern based on said plurality of detectable events. This judicial exception is not integrated into a practical application because the recited limitations are seen as mental process. The claims do not include additional elements that are sufficient to amount to significantly more than the judicial exception because it only further limit the method by expressing what is needed to detect the events and the generation of said events into a pattern. There are no additional elements that would make this more than mental process that could be perform without a computer.
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.
Claims 2 – 21 are rejected under 35 U.S.C. 103 as being unpatentable over US 20190384530 A1 to Twitto et al., (hereinafter, “Twitto”) in view of US 20100217953 A1 to Beaman et al., (hereinafter, “Beaman”).
Regarding claim 2, Twitto teaches a method comprising: computing a first index based on a first key for a first object; [Twitto, para. 3 discloses the method may include receiving by a SSD controller an input value; applying a first hash function on the input value to provide a first hash result;] storing the first object in a first segment corresponding to the first index; [Twitto, para. 3 discloses determining, based on the first hash result, a bucket number and a slot locator; determining a logical address of the key value pair associated with a logical slot identified by the bucket number and the slot locator; determining a physical address of the key value pair based on the slot locator; and accessing the key value pair using the physical address of the key value pair; wherein the slot locator may be a binary sequence that may be indicative of a number of colliding keys that share a first hash result value.] computing a second index based on the hash of the first key for the first object, wherein the second index corresponds to the first segment; [Twitto, para. 22 discloses calculating, based on the input key, a second bucket identifier and a second inter-bucket value; determining key pair value retrieval information, based on the second bucket identifier, the second inter-bucket value and metadata of a data structure selected out of a second data structure and a second outcast data structure;] storing the second object in the second segment; [Twitto, para. 22 discloses determining key pair value retrieval information, based on the second bucket identifier, the second inter-bucket value and metadata of a data structure selected out of a second data structure and a second outcast data structure; wherein the second data structure and the second outcast data structure are allocated to the block cluster; and retrieving at least the value of the key pair value based on the key pair value retrieval information.], but Twitto does not teach based on the first object being stored in the first segment, the second object being different from the first object, and the second index corresponding to the first segment, computing a third index based on the second key for the second object, wherein the third index corresponds to a second segment; updating a data structure associated with the first segment with information indicating a location of the second object; and reading the second object from the second segment, based on the data structure associated with the first segment.
However, Beaman does teach based on the first object being stored in the first segment, the second object being different from the first object, [Beaman, para. 16 discloses computing, by the processor, a first index for the selected key, and selecting first candidate elements from the in-memory hash table using the first index, the first candidate elements having associated first candidate keys. The method may also compute a second index for the selected key, and select second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys.] and the second index corresponding to the first segment, [Beaman, para. 10 discloses the first entry may comprise the second index and the value associated with the new entry. The method may use the second index to locate the second element in the second hash table. In alternative embodiments, the method may re-compute the second index for the new entry and use the re-computed index to locate the second element in the second hash table. Computing the first and second indices may comprise performing one or more hash functions. The hash function may be performed on a key associated with the new entry to be inserted into the hash table system.] computing a third index based on the second key for the second object, wherein the third index corresponds to a second segment; [Beaman, para. 9 discloses computing a second index for the new entry, the second index corresponding to a second element in the second hash table. The method may next insert a first entry corresponding to the new entry into the first element in the first hash table; and, when the first hash table reaches a threshold load factor, the first entry may be flushed from the first hash table. Flushing may comprise inserting a value associated with the new entry into the second element in the second hash table, and removing the first entry from the first element in the first hash table.] updating a data structure associated with the first segment with information indicating a location of the second object; [Beaman, para. 56 discloses flushing, as used herein, refers to the reading of entries from a first hash table and the writing of data relating to those entries in another location on a data storage system, such as in a second hash table. For example, flushing may comprise removing entries from the first hash table 201, and inserting those entries into the second hash table 202. Flushing may alternatively comprise inserting entries into the second hash table 202 having a different format than the entries in the first hash table 201.] and reading the second object from the second segment, based on the data structure associated with the first segment. [Beaman, para. 17 discloses the method may select the first candidate elements from the in-memory hash table by selecting the element corresponding to the first index in the in-memory hash table and selecting the next element in the in-memory hash table if the next element has a previously inserted entry. Similarly, the method may select the second candidate elements from the on-disk hash table by selecting the element corresponding to the second index in the on-disk hash table and selecting the next element in the on-disk hash table if the next element has a previously inserted entry.]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
Regarding claim 3, modified Twitto teaches the method of claim 2, but Twitto does not teach wherein the updating of the data structure associated with the first segment comprises updating the first segment to include an indicator of the second segment.
However, Beaman does teach wherein the updating of the data structure associated with the first segment comprises updating the first segment to include an indicator of the second segment. [Beaman, para. 56 discloses flushing, as used herein, refers to the reading of entries from a first hash table and the writing of data relating to those entries in another location on a data storage system, such as in a second hash table. For example, flushing may comprise removing entries from the first hash table 201, and inserting those entries into the second hash table 202. Flushing may alternatively comprise inserting entries into the second hash table 202 having a different format than the entries in the first hash table 201.]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
As per claim 4, modified Twitto teaches the method of claim 3, wherein the indicator of the second segment is stored in a data structure in the first segment. [Twitto, para. 22 discloses wherein the second data structure and the second outcast data structure are allocated to the block cluster; and retrieving at least the value of the key pair value based on the key pair value retrieval information.]
As per claim 5, modified Twitto teaches the method of claim 4, wherein the first index is computed based on a hash of the first key for the first object, [Twitto, para. 3 discloses the method may include receiving by a SSD controller an input value; applying a first hash function on the input value to provide a first hash result;] and the second index is computed based on a hash of the second key for the second object, [Twitto, para. 22 discloses calculating, based on the input key, a second bucket identifier and a second inter-bucket value;] and wherein the data structure is in a first metadata of the first segment. [Twitto, para. 3 discloses determining, based on the first hash result, a bucket number and a slot locator; determining a logical address of the key value pair associated with a logical slot identified by the bucket number and the slot locator;]
As per claim 6, modified Twitto teaches the method of claim 5, wherein the computing the second index comprises extracting a bit from every bite of the hash to form the second index. [Twitto, para. 22 discloses calculating, based on the input key, a second bucket identifier and a second inter-bucket value. Para. 96 discloses User-key (also referred to as input key), which is of arbitrary length is reduced to a system-key (aka key) which is a fingerprint/hash of the user-key.]
Regarding claim 7, modified Twitto teaches the method of claim 5, but Twitto does not teach further comprising writing, to the data structure, an association between the hash of the first key and the indicator of the second segment, in response to the data structure being empty.
However, Beaman does teach further comprising writing, to the data structure, an association between the hash of the first key and the indicator of the second segment, in response to the data structure being empty. [Beaman, para. 64 discloses the hash table system 300 may store some indicator that segment 32 and 33 are participating in a flush operation. In this way, if data storage system 100 attempts to read an entry from those segments, hash table system 300 can be designed to wait until the completion of the flush operation for segments 32 and 33, or hash table system 300 can otherwise indicate that the result from the look up process may not be up-to-date. One example of when such an event may occur is when data storage system 100 attempts to use hash table system 300 to implement a look up function to locate a data object corresponding to the entry in element 332. The aforementioned indicator may alert a user to the pendency of a flush operation or may contain information identifying either the in-memory hash table segment 32, the on-disk hash table segment 33, or both.]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
Regarding claim 8, modified Twitto teaches the method of claim 5, but Twitto does not teach wherein the computing the hash of the first key comprises computing using a Secure Hash Algorithm 256 (SHA-256).
However, Beaman does teach wherein the computing the hash of the first key comprises computing using a Secure Hash Algorithm 256 (SHA-256). [Beaman, para. 3 discloses A hash table is a data structure such as an array that is made up of a number of indexed elements (also known as slots or buckets). A data storage system using a hash table maps "keys" to corresponding "values" by performing a mathematical algorithm (a hash function) on the keys to calculate an "index" of the element in the hash table where the corresponding value should be located. Exemplary hash functions include the Secure Hash Algorithm (SHA-256). A key and its corresponding value are referred to as a "key/value pair."]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
Regarding claim 9, modified Twitto teaches the method of claim 5, further comprising: receiving a get request indicating the first key; computing the first index based on the hash of the first key; [Twitto, para. 4 discloses accessing a key value pair stored in a solid state drive (SSD) memory, the method may include receiving by a SSD controller an input value; converting the input value to an intermediate value; applying a first hash function on the input value to provide a first hash result;] reading the first metadata of the first segment corresponding to the first index; [Twitto, para. 4 discloses determining, based on the first hash result, a bucket number and a slot locator; determining a logical address of the key value pair associated with a logical slot identified by the bucket number and the slot locator; determining a physical address of the key value pair based on the slot locator; and accessing the key value pair using the physical address of the key value pair; wherein the slot locator may be a binary sequence that may be indicative of a number of colliding keys that share a first hash result value.], but Twitto does not teach determining that the hash of the first key is inconsistent with a stored hash in the first metadata, in response to reading the first metadata; reading the data structure in the first metadata to determine that the first object is stored in the first segment; and retrieving the first object from the first segment, in response to reading the data structure.
However, Beaman teach determining that the hash of the first key is inconsistent with a stored hash in the first metadata, in response to reading the first metadata; [Beaman, para. 15 discloses the method may further comprise checking, by the processor, the in-memory hash table for an entry corresponding to the selected key, wherein the entry corresponding to the selected key identifies the value associated with the selected key. When the entry corresponding to the selected key is not found in the in-memory hash table, the processor may check the on-disk hash table for the entry corresponding to the selected key.] reading the data structure in the first metadata to determine that the first object is stored in the first segment; [Beaman, para. 16 discloses compute a second index for the selected key, and select second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys.] and retrieving the first object from the first segment, in response to reading the data structure. [Beaman, para. 16 discloses the method may then examine the first and second candidate elements to determine whether their corresponding keys match the selected keys. If the corresponding key matches the selected key, the method may identify a value associated with the corresponding first or second candidate element as a member of the set of values associated with the selected key.]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
Regarding claim 10, modified Twitto teaches the method of claim 5, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; [Twitto, para. 172 discloses for deletion we first the leaf representing that key. The “find” algorithm led us to the first object. Then i. Verify that the key stored in that leaf corresponds to the requested key to delete. This is done by reading from Flash. If it does not exists- return that the key does not exists.] reading the first metadata of the first segment corresponding to the first index; [Twitto, para. 4 discloses determining, based on the first hash result, a bucket number and a slot locator; determining a logical address of the key value pair associated with a logical slot identified by the bucket number and the slot locator; determining a physical address of the key value pair based on the slot locator; and accessing the key value pair using the physical address of the key value pair; wherein the slot locator may be a binary sequence that may be indicative of a number of colliding keys that share a first hash result value.] and deleting the first object from the first segment, in response to reading the data structure [Twitto, para. 172 discloses delete the leaf representing the key and the leaf's father. Connect the grandparent of the leaf with the leaf's sibling.], but Twitto does not teach determining that the hash of the first key is inconsistent with a stored hash in the first metadata, in response to reading the first metadata; reading the data structure in the first metadata to determine that that the first object is stored in the first segment.
However, Beaman teach determining that the hash of the first key is inconsistent with a stored hash in the first metadata, in response to reading the first metadata; [Beaman, para. 15 discloses the method may further comprise checking, by the processor, the in-memory hash table for an entry corresponding to the selected key, wherein the entry corresponding to the selected key identifies the value associated with the selected key. When the entry corresponding to the selected key is not found in the in-memory hash table, the processor may check the on-disk hash table for the entry corresponding to the selected key.] reading the data structure in the first metadata to determine that the first object is stored in the first segment. [Beaman, para. 16 discloses compute a second index for the selected key, and select second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys.]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
Regarding claim 11, modified Twitto teaches the method of claim 5, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; [Twitto, para. 172 discloses for deletion we first the leaf representing that key. The “find” algorithm led us to the first object. Then i. Verify that the key stored in that leaf corresponds to the requested key to delete. This is done by reading from Flash. If it does not exists- return that the key does not exists.] reading the first metadata of the first segment corresponding to the first index; [Twitto, para. 4 discloses determining, based on the first hash result, a bucket number and a slot locator; determining a logical address of the key value pair associated with a logical slot identified by the bucket number and the slot locator; determining a physical address of the key value pair based on the slot locator; and accessing the key value pair using the physical address of the key value pair; wherein the slot locator may be a binary sequence that may be indicative of a number of colliding keys that share a first hash result value.] and deleting the first object from the first segment. [Twitto, para. 172 discloses delete the leaf representing the key and the leaf's father. Connect the grandparent of the leaf with the leaf's sibling.], but Twitto does not teach determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; determining that the data structure in the first metadata comprises the indicator of the second segment; setting a value size of the data structure to zero.
However, Beaman teach determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; [Beaman, para. 15 discloses the method may further comprise checking, by the processor, the in-memory hash table for an entry corresponding to the selected key, wherein the entry corresponding to the selected key identifies the value associated with the selected key. When the entry corresponding to the selected key is not found in the in-memory hash table, the processor may check the on-disk hash table for the entry corresponding to the selected key.] determining that the data structure in the first metadata comprises the indicator of the second segment; [Beaman, para. 16 discloses compute a second index for the selected key, and select second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys.] setting a value size of the data structure to zero. [Beaman, para. 73 discloses an entry removal module removes all first hash table segment entries from the first hash table segment.]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
Regarding claim 12, modified Twitto teaches the method of claim 5, further comprising: receiving a delete request identifying the first key; computing the first index based on the hash of the first key; [Twitto, para. 172 discloses for deletion we first the leaf representing that key. The “find” algorithm led us to the first object. Then i. Verify that the key stored in that leaf corresponds to the requested key to delete. This is done by reading from Flash. If it does not exists- return that the key does not exists.] reading the first metadata of the first segment corresponding to the first index; [Twitto, para. 4 discloses determining, based on the first hash result, a bucket number and a slot locator; determining a logical address of the key value pair associated with a logical slot identified by the bucket number and the slot locator; determining a physical address of the key value pair based on the slot locator; and accessing the key value pair using the physical address of the key value pair; wherein the slot locator may be a binary sequence that may be indicative of a number of colliding keys that share a first hash result value.] and deleting the first object from the first segment, in response to reading the data structure. [Twitto, para. 172 discloses delete the leaf representing the key and the leaf's father. Connect the grandparent of the leaf with the leaf's sibling.], but Twitto does not teach determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; determining that the data structure in the first metadata is empty, in response to determining that the hash of the first key is consistent with the stored hash in the first metadata.
However, Beaman teach determining that the hash of the first key is consistent with a stored hash stored in the first metadata, in response to reading the first metadata; [Beaman, para. 15 discloses the method may further comprise checking, by the processor, the in-memory hash table for an entry corresponding to the selected key, wherein the entry corresponding to the selected key identifies the value associated with the selected key. When the entry corresponding to the selected key is not found in the in-memory hash table, the processor may check the on-disk hash table for the entry corresponding to the selected key.] determining that the data structure in the first metadata is empty, in response to determining that the hash of the first key is consistent with the stored hash in the first metadata. [Beaman, para. 16 discloses compute a second index for the selected key, and select second candidate elements from the on-disk hash table using the second index, the second candidate elements having associated second candidate keys. Para. 73 discloses the first hash table elements are now cleared of entries so that new entries may be inserted. The management modules 106 may record an indicator that segments are being flushed and may implement locking mechanisms so that new entries are not allowed to be inserted into the segments that are participating in the flush operation in stage 506.]
Therefore, it would have been obvious to one of ordinary skill within the art before the effective filling date to combine Beaman’s system with Twitto’s system, with a motivation for hash 20 may be directly used to identify the index of element 232 in second hash table 202 during the flushing process so that no further calculation of indices is necessary. [Beaman, para. 60]
Regarding claim 13, it recites features similar to features within claim 2, therefore, it is rejected in a similar manner.
Regarding claims 14 – 17, they recite features similar to features within claims 4 – 7, therefore, they are rejected in a similar manner.
Regarding claims 18 – 19, they recite features similar to features within claims 9 – 10, therefore, they are rejected in a similar manner.
Regarding claims 20 – 21, they recite features similar to features within claims 2 – 5, therefore, they are rejected in a similar manner.
Conclusion
Pertinent prior art made of record however not replied upon:
US 20200136971 A1 to Cohen
“Examples described herein relate to key-value lookups. A first index is calculated based on a first hash function and a received key. A first hash table including entries associated with a first hash calculation on a key is accessed. A collision hint table is accessed to identify any other hash table to search. If the collision hint table indicates any other table to search, the first hash table and the any other hash table are searched to identify an entry associated with an index that matches the first index.”
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). 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 Phuc Pham whose telephone number is (571)272-8893. The examiner can normally be reached Monday - Thursday 7:30 AM - 4:30 PM; Friday 8:00 AM - 12:00 PM.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Linglan Edwards can be reached on (571) 270-5440. 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.
/P.P./Patent Examiner, Art Unit 2408 /LINGLAN EDWARDS/Supervisory Patent Examiner, Art Unit 2408