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 .
Response to Amendment
2. The Amendment filed on June 15th 2026 has been entered. Claims 1, 3, 10, 11, 13 and 16 - 20 have been amended. Claims 1 – 20 are currently pending.
Response to Arguments
35 U.S.C. §103
3. Applicant's arguments, see Remarks pp. 9 -12, filed June 15th 2026, with
respect to the rejections of claims 1-20 under 35 U.S.C. §103 have been fully
considered and they are persuasive.
The crux of Applicant’s arguments is that the combined art of Brown, Gupta, Yadav and Sismanis fail to teach or render obvious “wherein the first subset of data entries comprise data entries having disjoint keys … wherein a disjointed key is a key value that occurs once across the plurality of data entries” as recited in amended claim 1
Examiner respectfully agrees
Upon further consideration new grounds of rejection have been necessitated due
to Applicant's amendments and are made in view of Adam Dinwoodie (United States Patent Publication Number 2013/0268542), hereinafter referred to as Dinwoodie
Claim Rejections – 35 U.S.C. §103
4. 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.
5. 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:
a. Determining the scope and contents of the prior art
b. Ascertaining the differences between the prior art and the claims at issue
c. Resolving the level of ordinary skill in the pertinent art
d. Considering objective evidence present in the application indicating
obviousness or nonobviousness
Claims 1, 3 – 6, 8 and 11 - 13 are rejected under 35 U.S.C. 103 as being unpatentable over Brown et al. (United States Patent Publication Number 20220292092), in view of Gupta et al. (United States Patent Publication Number 20180285440), hereinafter referred to as Gupta in view of Yadav et al., (United States Patent Number 7562078) hereinafter Yadav and in further view of Adam Dinwoodie (United States Patent Publication Number 2013/0268542), hereinafter referred to as Dinwoodie
Regarding claim 1 Brown teaches a computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 for streaming (data transfer [0080]) such as “streaming” aggregation queries, ("select sum(invoice.amount) from sales_table" [0061]) the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 comprising: a processor; (processor [0035]) and a memory (memory [0032]) storing instructions (compiled program [0032]) such as “instructions” that, when executed (executed [0038]) by the processor, (processor [0035]) cause the processor(processor [0035]) to: receive a query (the query instance may be initially received from the user in natural language (e.g., as a voice or text). [0061]) from a caller, (user [0061]) wherein the query (the query instance may be initially received from the user in natural language (e.g., as a voice or text). [0061]) comprises an aggregation operator; (the NLQ query instance may be "show me the sales for my company" and the corresponding SQL relational query instances may be generated as "select sum(invoice.amount) from sales_table" [0061]) retrieve data comprising a plurality of data entries, (extracted data [0039])
Brown does not fully disclose receive a set of keys from a first lower-level node and a second lower- level node, wherein the set of keys corresponds to a plurality of data entries of the first lower-level node and the second lower-level node; determine first and second subsets of data entries from the plurality of data entries based on occurrences of each key in the set of keys, wherein the first subset of data entries comprises data entries having disjointed keys and the second subset of data entries comprises data entries having intersecting keys; after determining the first and second subsets of data entries, retrieve the plurality of data entries from the first lower-level node and the second lower-level node; return the first subset of data entries to the caller; release the first subset of data entries from the memory; after releasing the first subset of data entries from the memory, aggregate the second subset of data entries using an aggregation operation corresponding to the aggregation operator; and return the aggregated second subset of data entries to the caller.
Gupta teaches aggregate (reduce functions [0020]) the second subset of data entries (Additionally, for keys having common values across different groups, different new key-groups will be generated for each of the common values. As an example, key 1 includes values u1 and u2 which are common to keys 2, 3, and 4. Accordingly, a new key-value group is generated ([1, 2, 3, 4], [ul, u2]). However, key 1 also includes values u3 and u4, which are common to keys 6, 7, 8. Thus, another new key-value group including key 1 is generated ([1, 6, 7, 8], [u3, u4]). [0027]) using an aggregation operation corresponding to the aggregation operator; (reduce reducers [0019]) such as “aggregation operator” and return (transferred [0029]) SEE ALSO [0020] – [0021] the aggregated second subset of data entries (another new key-value group including key 1 is generated ([1, 6, 7, 8], [u3, u4]); new key-value group is generated ([1, 2, 3, 4], [ul, u2]) [0027]) to the caller (user [0038])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown to incorporate the teachings of Gupta wherein aggregate the second subset of data entries using an aggregation operation corresponding to the aggregation operator; and return the aggregated second subset of data entries to the caller. By doing so rather than communicating every value to the reduce function, the system identifies the duplicated or common values in a map task output that have been assigned as input to reduce tasks running on the same machine and communicates these values only once to this machine. Accordingly, the communication expenses are reduced and the time to complete information processing is also reduced. Gupta [0021]
Yadav teaches return the first subset of data entries (active data that is present in a location in a volatile memory (such as random access memory, or RAM) is indexed in a first manner to data that is stored in long-term data storage (non-volatile memory, such as a disk storage) data storage in a first manner Col 3 ln 12 – 16) such as “first subset of data entries” to the caller; (prior to unmounting … the in-memory data that was read from disk memory for any client Col 7 ln 20 – 25) release the first subset of data entries (active data that is present in a location in a volatile memory (such as random access memory, or RAM) is indexed in a first manner to data that is stored in long-term data storage (non-volatile memory, such as a disk storage) data storage in a first manner Col 3 ln 12 – 16) such as “first subset of data entries” from the memory; (the destination volume will be removed from the file hierarchy of the destination storage server (unmounted) to invalidate any data currently held in memory. Data in memory may include active data that has been requested by one or more clients, which generally would be cached in memory to serve future data requests. The cached data will be released in the unmounting process Col 7 ln 12 - 19) after releasing the first subset of data entries (active data that is present in a location in a volatile memory (such as random access memory, or RAM) is indexed in a first manner to data that is stored in long-term data storage (non-volatile memory, such as a disk storage) data storage in a first manner Col 3 ln 12 – 16) such as “first subset of data entries” from the memory, (In this manner, the data that was contained in the main memory is released Col 7 ln 25 - 30)
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta to incorporate the teachings of Yadav wherein return the first subset of data entries to the caller; release the first subset of data entries from the memory; after releasing the first subset of data entries from the memory. By doing so the container file may be used to more efficiently address data requests or the generation of new data images. Yadav Col 11 ln 17 – 19
Dinwoodie teaches receive a set of keys ( Returning to FIG. 2, if traffic were received from computing device 104, the tree data structure 215 would be searched using the search key ks =IP 104, which has a prefix of k1 (the IP address associated with the second subnet108). [0118]) (If traffic were received from computing device 103 ,
the tree data structure 215 would be searched using the search key ks =IP 103 , which has prefixes of k2 andk3 (the IP addresses associated with the first subnet 107 and the second further subnet 110 respectively). [0119]) from a first lower-level node (The tree data structure 215 would be traversed from the root node 220 to the first node 221, which is associated with node key k1 and node rank r 1 . [0118]) and a second lower- level node, (The tree data structure 215 would be traversed from the root node 220 to the second node 222, which is associated with node key k2 and node rank r2 and
then to the third node 223, which is associated with node key k3 and node rank r 3 since both the second node 222 and the third node 223 have a prefix match with the search key. In this case, both the second node 222 and the third node 223 are prefix-matching nodes [0119]) wherein the set of keys (keys k1, k2, k3 [0117] – [0119]) corresponds to a plurality of data entries (IP addresses; referred to herein as IP 101 , IP 102, IP 103 and IP 104 respectively [0077], [0220]) of the first lower-level node (Fig. 7E First Node 721 [0162]) and the second lower-level node; (Fig. 7E Second Node 722 [0163]) wherein each data entry comprises a key; (keys k1, k2, k3 [0117] – [0119]) determine first (IP address for the first subnet 107 [0102]) and second subsets of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) from the plurality of data entries, wherein the first subset of data entries (IP address for the first subnet 107 [0102]) comprises data entries having disjointed keys ( Data item k1 from data source A does not share a common prefix with any of the other data items and is added as a first node 721 in the merged tree data structure 715 as a child node of the root node 720, as shown in FIG. 7 A. [0162]) and the second subset of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) comprises data entries having intersecting keys; (The second node 222 is associated with a second node key, k2 , which is associated with an IP address for the first subnet 107. The third node 223 is associated with a third node key, k3 , which is associated with an IP address for the second further subnet 110. Since the second further subnet 110 is a subnet of the first subnet 107, the second node key, k2 , and the third node key, k3 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fourth node 224 is associated with a fourth node key, k4 , which is associated with an IP address for the first further subnet 109. Since the first further subnet 109 is a subnet of the first subnet 107, the second node key, k2 , and the fourth node key, k4 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fifth node 225 is associated with a fifth node key, ks, which is associated with an IP address, IP10i, of computing device 101. Since computing device 101 is in the first further subnet 109 which is a subnet of the first subnet 107, the second node key, k2 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. Furthermore, the fourth node key, k4 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first further subnet 109. [0102]) determine first(IP address for the first subnet 107 [0102]) and second subsets of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) from the plurality of data entries (IP addresses; referred to herein as IP 101 , IP 102, IP 103 and IP 104 respectively [0077], [0220]) based on occurrences of each key in the set of keys, (node key, k1; node key, k2 and node key, k3 [0102]) wherein the first subset of data entries (IP address for the first subnet 107 [0102]) comprises data entries having disjointed keys ( Data item k1 from data source A does not share a common prefix with any of the other data items and is added as a first node 721 in the merged tree data structure 715 as a child node of the root node 720, as shown in FIG. 7 A. [0162]) and the second subset of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) comprises data entries having intersecting keys; (The second node 222 is associated with a second node key, k2 , which is associated with an IP address for the first subnet 107. The third node 223 is associated with a third node key, k3 , which is associated with an IP address for the second further subnet 110. Since the second further subnet 110 is a subnet of the first subnet 107, the second node key, k2 , and the third node key, k3 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fourth node 224 is associated with a fourth node key, k4 , which is associated with an IP address for the first further subnet 109. Since the first further subnet 109 is a subnet of the first subnet 107, the second node key, k2 , and the fourth node key, k4 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fifth node 225 is associated with a fifth node key, ks, which is associated with an IP address, IP10i, of computing device 101. Since computing device 101 is in the first further subnet 109 which is a subnet of the first subnet 107, the second node key, k2 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. Furthermore, the fourth node key, k4 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first further subnet 109. [0102])after determining the first (IP address for the first subnet 107 [0102]) and second subsets of data entries, (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) retrieve the plurality of data entries (IP addresses; referred to herein as IP 101 , IP 102, IP 103 and IP 104 respectively [0077], [0220]) from the first lower-level node (first node 221, which is associated with node key k1 and node rank r 1 . [0118]) and the second lower-level node(The tree data structure 215 would be traversed from the root node 220 to the second node 222, which is associated with node key k2 and node rank r2 and then to the third node 223, which is associated with node key k3 and node rank r 3 since both the second node 222 and the third node 223 have a prefix match with the search key. In this case, both the second node 222 and the third node 223 are prefix-matching nodes [0119])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta and Yadav to incorporate the teachings Dinwoodie wherein receive a set of keys from a first lower-level node and a second lower- level node, wherein the set of keys corresponds to a plurality of data entries of the first lower-level node and the second lower-level node; wherein each data entry comprises a key; determine first and second subsets of data entries from the plurality of data entries, wherein the first subset of data entries comprises data entries having disjointed keys and the second subset of data entries comprises data entries having intersecting keys; determine first and second subsets of data entries from the plurality of data entries based on occurrences of each key in the set of keys, wherein the first subset of data entries comprises data entries having disjointed keys and the second subset of data entries comprises data entries having intersecting keys; after determining the first and second subsets of data entries, retrieve the plurality of data entries from the first lower-level node and the second lower-level node. By doing so traversal of a conventional trie uses every part of the search key to determine which subtree to branch to, whereas by storing a search key part identifier, a Patricia tree nominates which element of the search key should be used next to determine the branching and hence which node should be traversed next. This removes the need for any nodes in the tree with just one descendant, so that only
genuine branches are included in the index. This means that the index size is independent of the length of stored phrases. Dinwoodie [0108]
Claim 11 corresponds to claim 1 and is rejected accordingly
Regarding claim 3 Brown in view of Gupta, Yadav and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 1,
Brown as modified further teaches wherein the plurality of data entries (extracted data [0039]) resides in a distributed database system (distributed database system [0028]) comprising a plurality of nodes arranged in a tree structure, (The one or more enterprise query nodes (such as, the EQB nodes 406, 408 of the EQB subsystem 402) may be arranged in a hierarchical structure (or otherwise). In some embodiments, the one or more enterprise query nodes (such as, the EQB nodes 406, 408, 502) may be arranged as multiple enterprise query nodes across at least two or more different enterprise networks. [0067]) and wherein one of the plurality of nodes (the one or more enterprise query nodes (such as, the EQB nodes 406, 408 of the EQB subsystem 402) [0067]) comprises the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406
Regarding claim 4 Brown in view of Gupta, Yadav and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 3,
Brown as modified further teaches wherein the caller (the user [0061]) such as “caller” comprises a node (application client [0026]) higher than the (since the query is passed from the application client to the data sources via the EQB nodes [0026]) computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406
Regarding claim 5 Brown in view of Gupta, Yadav and and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 3,
Brown as modified further teaches wherein the data (the relevant data [0063]) is retrieved from a node (sever node 408 [0062]) lower than the (since the server node 408 may process the relational query instances (corresponding to the user query) to determine from which of the data sources may there be information needed to be gathered for processing of the user query instance. [0063]) computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406
Regarding claim 6 Brown in view of Gupta, Yadav and and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 5,
Brown as modified further teaches wherein the node(sever node 408 [0062]) lower than the (since the server node 408 may process the relational query instances (corresponding to the user query) to determine from which of the data sources may there be information needed to be gathered for processing of the user query instance. [0063]) computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 is a logical node (Fig. 5A depicting schematic internal data flow for enterprise query base nodes [0026]) such as “logical nodes” residing in the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406
Regarding claim 8 Brown in view of Gupta, Yadav and and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 1,
Brown as modified does not fully disclose wherein the first and second subset of data entries are determined by determining occurrences of keys.
Gupta teaches wherein the first (key-value group ([16], [u7, u8]) [0027]) and second subset (new key-value group is generated ([1, 2, 3, 4], [ul, u2]) [0026]) of data entries (Fig. 1, (101) receive a plurality of information/data [0022]) are determined by determining occurrences of keys (identifying that one key-group contains key 2 from map output 1 301 (i.e., ([1, 2, 3, 4], [ul, u2])) and one key-group contains key 2 from map output 2 302 (i.e., ([2, 6], [v3, v4])), the system will look at the cache on machine m to identify whether any common values exist between key 1 and key 2. [0031])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Yadav and and Dinwoodie to incorporate the teachings of Gupta, wherein the first and second subset of data entries are determined by determining occurrences of keys. By doing so values common to keys 1 and 2 are only transferred to machine m once. Gupta [0031].
Regarding claim 12 Brown in view of Gupta, Yadav and and Dinwoodie teaches the method (method [0031]) of claim 11,
Brown as modified does not fully disclose wherein aggregating the second subset of data entries is performed after returning the first subset of data entries to the caller.
Gupta teaches wherein aggregating the second subset of data entries (new key-value group is generated ([1, 2, 3, 4], [ul, u2]) [0026]) is performed after returning(transferred [0029]) the first subset of data entries(key-value group ([16], [u7, u8]) [0027]) to the caller. (user [0038])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Yadav and and Dinwoodie to incorporate the teachings of Gupta, wherein aggregating the second subset of data entries is performed after returning the first subset of data entries to the caller. By doing so values common to keys 1 and 2 are only transferred to machine m once. Gupta [0031].
Regarding claim 13 Brown in view of Gupta, Yadav and and Dinwoodie teaches the method (method [0031]) of claim 11,
Brown as modified further teaches wherein the data (extracted data [0039])resides in a distributed database system (distributed database system [0028]) comprising a plurality of nodes arranged in a tree structure. (The one or more enterprise query nodes (such as, the EQB nodes 406, 408 of the EQB subsystem 402) may be arranged in a hierarchical structure (or otherwise). In some embodiments, the one or more enterprise query nodes (such as, the EQB nodes 406, 408, 502) may be arranged as multiple enterprise query nodes across at least two or more different enterprise networks. [0067])
Claims 2 are rejected under 35 U.S.C. 103 as being unpatentable over Brown et al. (United States Patent Publication Number 20220292092), in view of Gupta et al. (United States Patent Publication Number 20180285440), hereinafter referred to as Gupta, in view of Yadav et al., (United States Patent Number 7562078) hereinafter Yadav, in view of Adam Dinwoodie (United States Patent Publication Number 2013/0268542), hereinafter referred to as Dinwoodie and in further view of Yu et al., “Distributed Aggregation for Data-Parallel Computing: Interfaces and Implementations “ hereinafter Yu
Regarding claim 2 Brown in view of Gupta, Yadav and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 1,
Brown as modified does not fully disclose wherein the aggregation operator is associative decomposable.
Yu teaches wherein the aggregation operator is associative decomposable (decomposable functions; associative decomposable operations Page 4 Col 1, Page 7 Col 2, Page 8 Col 1, 2)
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Dinwoodie to incorporate the teachings of Yu whereby because Sum is an associative-decomposable function, the system automatically determines that the expression passed to Aggregate is also associative decomposable. Yu Page 8 Col 1
Claims 7, 9, 10, 14 - 20 are rejected under 35 U.S.C. 103 as being unpatentable over Brown et al. (United States Patent Publication Number 20220292092), in view of Gupta et al. (United States Patent Publication Number 20180285440), hereinafter referred to as Gupta, in view of Yadav et al., (United States Patent Number 7562078) hereinafter Yadav in view of Adam Dinwoodie (United States Patent Publication Number 2013/0268542), hereinafter referred to as Dinwoodie and in further view of Pishe et al., (United States Patent Publication Number 20190310974) hereinafter Pishe
Regarding claim 7 Brown in view of Gupta, Yadav and Dinwoodie teaches the computing device(computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 1,
Brown as modified does not fully disclose wherein the first and second subset of data entries are determined using an algorithm having a linear time complexity.
Pishe teaches wherein the first and second subset of data entries (subsets of a larger data set [0021]) are determined using an algorithm having a linear time complexity (O(n) is also referred to as "linear time." An algorithm that runs in linear time means that for large enough input sizes, the running time increases linearly with the size of the input. An example of an algorithm that operates in linear time is an algorithm that finds the smallest or largest item in an unsorted list. [0070])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Dinwoodie to incorporate the teachings of Pishe wherein the first and second subset of data entries are determined using an algorithm having a linear time complexity. By doing so as inputs grow large, the operations require to complete an instance of the algorithm having O(log n) complexity is quite lower than the operations required by an algorithm having O(n) complexity. Pishe [0070].
Claim 14 corresponds to claim 7 and is rejected accordingly
Regarding claim 9 Brown in view of Gupta, Yadav and Dinwoodie teaches the computing device(computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 8,
Brown as modified does not fully disclose wherein determining occurrences of keys is performed using a hashmap function.
Pishe teaches wherein determining occurrences of keys (Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]) is performed using a hashmap function (The data structure 500 may be utilized with a hash function to distribute a number of key/value pairs over the buckets 502 in the data structure 500 [0073])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Dinwoodie to incorporate the teachings of Pishe wherein determining occurrences of keys is performed using a hashmap function. By doing so an average time complexity for a well-balanced hash map may be performed in constant time (0(1)) while a worse-case scenario including a unevenly balanced hash map may be performed in linear time (O(n)).Pishe [0073]
Regarding claim 10 Brown in view of Gupta, Yadav and Dinwoodie teaches the computing device(computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 1,
Brown as modified discloses wherein the plurality of data entries (extracted data [0039] resides in a distributed database system (Such database systems may be implemented either as a distributed database or a distributed file system [0023]) comprising a plurality of nodes (ABS., the computing system may comprise one or more nodes) (FIGS. 3-8, the query base process 10 may include each of one or more nodes (e.g. , server nodes) communicating with at least one of the multiple data sources to access data therefrom [0082]) arranged in a tree structure, (the system may be implemented as a directional graph or tree-like mesh [0026])
Brown as modified does not fully disclose and wherein determining occurrences of keys is performed by receiving key hashes from at least two nodes in the plurality of nodes.
Pishe teaches and wherein determining occurrences of keys (Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]) is performed by receiving key hashes (each key in table 510 may be hashed with the hash function to determine an appropriate bucket within the data structure 500. [0075]) from at least two nodes (one or more manager nodes, one or more worker nodes, [0021]) in the plurality of nodes (distributing portions of a data set amongst a plurality of nodes [0085])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Dinwoodie to incorporate the teachings of Pishe wherein determining occurrences of keys is performed by receiving key hashes from at least two nodes in the plurality of nodes. By doing so If, for example, worker node 112 has available memory to store a key/value pair comprising the first key and index value, then the manager node 110 may select the worker node 112 as the destination of the hash map update request message. If the worker node 112 does not have available memory, the manager node 110 may select another worker nodes of the distributed computing system 108 that has available memory and direct the hash map update request message to the worker node with the available memory. Pishe [0089]
Regarding claim 15 Brown in view of Gupta, Yadav and Dinwoodie teaches the method (method [0031]) of claim 11,
Brown as modified does not fully disclose wherein the first and second subset of data entries are determined by determining occurrences of keys using a hashmap function.
Pishe teaches wherein the first and second subset of data entries (subsets of a larger data set [0021]) are determined by determining occurrences of keys (Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]) using a hashmap function. (The data structure 500 may be utilized with a hash function to distribute a number of key/value pairs over the buckets 502 in the data structure 500 [0073])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta and Dinwoodie to incorporate the teachings of Pishe wherein the first and second subset of data entries are determined by determining occurrences of keys using a hashmap function.. By doing so an average time complexity for a well-balanced hash map may be performed in constant time (0(1)) while a worse-case scenario including a unevenly balanced hash map may be performed in linear time (O(n)). Pishe [0073]
Regarding claim 16 Brown teaches a computing device(computing device [0038]) see e.g. Fig. 4 Master Client Node 406 for streaming(data transfer [0080]) such as “streaming” aggregation queries, ("select sum(invoice.amount) from sales_table" [0061]) the computing device (computing device [0038]) comprising: a processor; (processor [0035]) and a memory (memory [0032]) storing instructions (compiled program [0032]) such as “instructions” that, when executed by the processor, (processor [0035]) cause the processor(processor [0035]) to: receive a query (the query instance may be initially received from the user in natural language (e.g., as a voice or text). [0061]) from a caller, (user [0061]) wherein the query (the query instance may be initially received from the user in natural language (e.g., as a voice or text). [0061]) comprises an aggregation operator; (the NLQ query instance may be "show me the sales for my company" and the corresponding SQL relational query instances may be generated as "select sum(invoice.amount) from sales_table" [0061])
Brown does not fully disclose receive a set of keys from a plurality of node, wherein the set of keys corresponds to a plurality of data entries of the plurality of nodes; determine a set of disjointed data entries from the plurality of data entries based on occurrences of each key in the set of keys; after determining the set of disjointed data entries, retrieve a first set of data entries of the plurality of data entries from the first node in the plurality of nodes; return a subset of the first set of data entries corresponding to the set of disjointed data entries to the caller; after the subset of the first set of data entries is returned to the caller, release the subset of the first set of data entries from the memory; after determining the set of disjointed data entries, retrieve a second set of data entries of the plurality of data entries from a second node in the plurality of nodes; return a subset of the second set of data entries corresponding to the set of disjointed data entries to the caller; after the subset of the second set of data entries is returned to the caller, release the subset of the second set of data entries from the memory; after releasing the subset of the second set of data entries and the subset of the first set of data entries from the memory, aggregate remaining data entries in the first set of data entries and the second set of data entries using an aggregation operation corresponding to the aggregation operator; and return the aggregated remaining entries to the caller.
Gupta teaches return (transferred [0029]) a subset of data entries (key-value group ([16], [u7, u8]) [0027]) from the first set of data entries (Fig. 1, (101) receive a plurality of information/data [0022]) to the caller, (user [0038]) wherein the subset of data entries (key-value group ([16], [u7, u8]) [0027]) from the first set of data entries (Fig. 1, (101) receive a plurality of information/data [0022]) is determined based on the determined occurrences of keys; (identifying that one key-group contains key 2 from map output 1 301 (i.e., ([1, 2, 3, 4], [ul, u2])) and one key-group contains key 2 from map output 2 302 (i.e., ([2, 6], [v3, v4])), the system will look at the cache on machine m to identify whether any common values exist between key 1 and key 2. [0031]) release (the cache 305A at machine m is updated [0030]) the subset of data entries (key-value group ([16], [u7, u8]) [0027]) from the first set of data entries (Fig. 1, (101) receive a plurality of information/data [0022]) from the memory; (from cache [0029]) after releasing (the cache 305A at machine m is updated [0030]) the subset of data entries(key-value group ([16], [u7, u8]) [0027]) from the first set of data entries (Fig. 1, (101) receive a plurality of information/data [0022]) from the memory, (from cache [0029]) aggregate (reduce functions [0020]) remaining data entries in the first set of data entries (key-value group ([16], [u7, u8]) [0027]) and the second set of data entries (Additionally, for keys having common values across different groups, different new key-groups will be generated for each of the common values. As an example, key 1 includes values u1 and u2 which are common to keys 2, 3, and 4. Accordingly, a new key-value group is generated ([1, 2, 3, 4], [ul, u2]). However, key 1 also includes values u3 and u4, which are common to keys 6, 7, 8. Thus, another new key-value group including key 1 is generated ([1, 6, 7, 8], [u3, u4]). [0027]) using an aggregation operation corresponding to the aggregation operator; (reduce reducers [0019]) such as “aggregation operator” and return (transferred [0029]) the aggregated remaining entries (another new key-value group including key 1 is generated ([1, 6, 7, 8], [u3, u4]); new key-value group is generated ([1, 2, 3, 4], [ul, u2]) [0027]) to the caller. (user [0038])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown to incorporate the teachings of Gupta wherein return a subset of data entries from the first set of data entries to the caller, wherein the subset of data entries from the first set of data entries is determined based on the determined occurrences of keys; release the subset of data entries from the first set of data entries from the memory; after releasing the subset of data entries from the first set of data entries from the memory, aggregate remaining data entries in the first set of data entries and the second set of data entries using an aggregation operation corresponding to the aggregation operator; and return the aggregated remaining entries to the caller. By doing so rather than communicating every value to the reduce function, the system identifies the duplicated or common values in a map task output that have been assigned as input to reduce tasks running on the same machine and communicates these values only once to this machine. Accordingly, the communication expenses are reduced and the time to complete information processing is also reduced. Gupta [0021]
Pishe teaches determine occurrences of keys(Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]) in a plurality of nodes; (one or more manager nodes, one or more worker nodes, [0021]) retrieve a first set of data entries from a first node (various nodes [0022]) see for example one or more worker nodes [0044] in the plurality of nodes; (one or more manager nodes, one or more worker nodes, [0021]) retrieve a second set of data entries(one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) from a second node(various nodes [0022]) see for example one or more worker nodes [0044] in the plurality of nodes; (one or more manager nodes, one or more worker nodes, [0021]) return a subset of data entries (subset of data that corresponds to an indexed list [0085]) from the second set of data entries (one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) to the caller, wherein the subset of data entries (subset of data that corresponds to an indexed list [0085]) from the second set of data entries(one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) is determined based on the determined occurrences of keys; (Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]), determine occurrences of keys(Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]) in a plurality of nodes; (one or more manager nodes, one or more worker nodes, [0021]) retrieve(receive information (e.g. request messages) [0022]) a first set of data entries (one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) from a first node (various nodes [0022]) see for example one or more worker nodes [0044] in the plurality of nodes; (one or more manager nodes, one or more worker nodes, [0021]) return a subset of data entries (subset of data that corresponds to an indexed list [0085]) from the first set of data entries (one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) to the caller, (user [0024]) wherein the subset of data entries (subset of data that corresponds to an indexed list [0085]) from the first set of data entries(one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) is determined based on the determined occurrences of keys; (Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]) retrieve a second set of data entries (one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) from a second node (various nodes [0022]) see for example one or more worker nodes [0044] in the plurality of nodes; (one or more manager nodes, one or more worker nodes, [0021]) return a subset of data entries (a subset of data that corresponds to an indexed list [0085]) from the second set of data entries(one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) to the caller, (user [0024]) wherein the subset of data entries (a subset of data that corresponds to an indexed list [0085]) from the second set of data entries (one or more indexed lists (e.g., an indexed list that maps index values to transaction processing data). [0045]) is determined based on the determined occurrences of keys; (Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta to incorporate the teachings of Pishe determine occurrences of keys in a plurality of nodes; retrieve a first set of data entries from a first node in the plurality of nodes; retrieve a second set of data entries from a second node in the plurality of nodes; return a subset of data entries from the second set of data entries to the caller, wherein the subset of data entries from the second set of data entries is determined based on the determined occurrences of keys; By doing so If, for example, worker node 112 has available memory to store a key/value pair comprising the first key and index value, then the manager node 110 may select the worker node 112 as the destination of the hash map update request message. If the worker node 112 does not have available memory, the manager node 110 may select another worker nodes of the distributed computing system 108 that has available memory and direct the hash map update request message to the worker node with the available memory. Pishe [0089]
Yadav teaches return the first subset of data entries (active data that is present in a location in a volatile memory (such as random access memory, or RAM) is indexed in a first manner to data that is stored in long-term data storage (non-volatile memory, such as a disk storage) data storage in a first manner Col 3 ln 12 – 16) such as “first subset of data entries” to the caller; (prior to unmounting … the in-memory data that was read from disk memory for any client Col 7 ln 20 – 25) release the first subset of data entries (active data that is present in a location in a volatile memory (such as random access memory, or RAM) is indexed in a first manner to data that is stored in long-term data storage (non-volatile memory, such as a disk storage) data storage in a first manner Col 3 ln 12 – 16) such as “first subset of data entries” from the memory; (the destination volume will be removed from the file hierarchy of the destination storage server (unmounted) to invalidate any data currently held in memory. Data in memory may include active data that has been requested by one or more clients, which generally would be cached in memory to serve future data requests. The cached data will be released in the unmounting process Col 7 ln 12 - 19) after releasing the first subset of data entries (active data that is present in a location in a volatile memory (such as random access memory, or RAM) is indexed in a first manner to data that is stored in long-term data storage (non-volatile memory, such as a disk storage) data storage in a first manner Col 3 ln 12 – 16) such as “first subset of data entries” from the memory, (In this manner, the data that was contained in the main memory is released Col 7 ln 25 - 30) after the subset of the second set of data entries (data is indexed in a second manner to the same data stored in the long-term storage. Col 3 ln 17 - 19) such as “subset of the second set of data entries” is returned to the caller, (prior to unmounting … the in-memory data that was read from disk memory for any client Col 7 ln 20 – 25) SEE FIG 7 an iterative process of unmounting and remounting a destination volume after data is eliminated from memory release the subset of the second set of data entries (data is indexed in a second manner to the same data stored in the long-term storage. Col 3 ln 17 - 19) such as “subset of the second set of data entries” from memory(the destination volume will be removed from the file hierarchy of the destination storage server (unmounted) to invalidate any data currently held in memory. Data in memory may include active data that has been requested by one or more clients, which generally would be cached in memory to serve future data requests. The cached data will be released in the unmounting process Col 7 ln 12 – 19 … In this manner, the data that was contained in the main memory is released Col 7 ln 25 - 30) SEE Fig. 7 is an iterative process of eliminating data in memory step (725) where Col 10 ln 39 - 58
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta and Pishe to incorporate the teachings of Yadav wherein return the first subset of data entries to the caller; release the first subset of data entries from the memory; after releasing the first subset of data entries from the memory, after the subset of the second set of data entries is returned to the caller, release the subset of the second set of data entries from memory. By doing so the container file may be used to more efficiently address data requests or the generation of new data images. Yadav Col 11 ln 17 – 19
Dinwoodie teaches receive a set of keys ( Returning to FIG. 2, if traffic were received from computing device 104, the tree data structure 215 would be searched using the search key ks =IP 104, which has a prefix of k1 (the IP address associated with the second subnet108). [0118]) (If traffic were received from computing device 103 ,
the tree data structure 215 would be searched using the search key ks =IP 103 , which has prefixes of k2 andk3 (the IP addresses associated with the first subnet 107 and the second further subnet 110 respectively). [0119]) from a first lower-level node (The tree data structure 215 would be traversed from the root node 220 to the first node 221, which is associated with node key k1 and node rank r 1 . [0118]) and a second lower- level node, (The tree data structure 215 would be traversed from the root node 220 to the second node 222, which is associated with node key k2 and node rank r2 and
then to the third node 223, which is associated with node key k3 and node rank r 3 since both the second node 222 and the third node 223 have a prefix match with the search key. In this case, both the second node 222 and the third node 223 are prefix-matching nodes [0119]) wherein the set of keys (keys k1, k2, k3 [0117] – [0119]) corresponds to a plurality of data entries (IP addresses; referred to herein as IP 101 , IP 102, IP 103 and IP 104 respectively [0077], [0220]) of the first lower-level node (Fig. 7E First Node 721 [0162]) and the second lower-level node; (Fig. 7E Second Node 722 [0163]) wherein each data entry comprises a key; (keys k1, k2, k3 [0117] – [0119]) determine first (IP address for the first subnet 107 [0102]) and second subsets of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) from the plurality of data entries, wherein the first subset of data entries (IP address for the first subnet 107 [0102]) comprises data entries having disjointed keys ( Data item k1 from data source A does not share a common prefix with any of the other data items and is added as a first node 721 in the merged tree data structure 715 as a child node of the root node 720, as shown in FIG. 7 A. [0162]) and the second subset of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) comprises data entries having intersecting keys; (The second node 222 is associated with a second node key, k2 , which is associated with an IP address for the first subnet 107. The third node 223 is associated with a third node key, k3 , which is associated with an IP address for the second further subnet 110. Since the second further subnet 110 is a subnet of the first subnet 107, the second node key, k2 , and the third node key, k3 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fourth node 224 is associated with a fourth node key, k4 , which is associated with an IP address for the first further subnet 109. Since the first further subnet 109 is a subnet of the first subnet 107, the second node key, k2 , and the fourth node key, k4 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fifth node 225 is associated with a fifth node key, ks, which is associated with an IP address, IP10i, of computing device 101. Since computing device 101 is in the first further subnet 109 which is a subnet of the first subnet 107, the second node key, k2 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. Furthermore, the fourth node key, k4 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first further subnet 109. [0102]) determine first(IP address for the first subnet 107 [0102]) and second subsets of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) from the plurality of data entries (IP addresses; referred to herein as IP 101 , IP 102, IP 103 and IP 104 respectively [0077], [0220]) based on occurrences of each key in the set of keys, (node key, k1; node key, k2 and node key, k3 [0102]) wherein the first subset of data entries (IP address for the first subnet 107 [0102]) comprises data entries having disjointed keys ( Data item k1 from data source A does not share a common prefix with any of the other data items and is added as a first node 721 in the merged tree data structure 715 as a child node of the root node 720, as shown in FIG. 7 A. [0162]) and the second subset of data entries (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) comprises data entries having intersecting keys; (The second node 222 is associated with a second node key, k2 , which is associated with an IP address for the first subnet 107. The third node 223 is associated with a third node key, k3 , which is associated with an IP address for the second further subnet 110. Since the second further subnet 110 is a subnet of the first subnet 107, the second node key, k2 , and the third node key, k3 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fourth node 224 is associated with a fourth node key, k4 , which is associated with an IP address for the first further subnet 109. Since the first further subnet 109 is a subnet of the first subnet 107, the second node key, k2 , and the fourth node key, k4 , share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. The fifth node 225 is associated with a fifth node key, ks, which is associated with an IP address, IP10i, of computing device 101. Since computing device 101 is in the first further subnet 109 which is a subnet of the first subnet 107, the second node key, k2 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first subnet 107. Furthermore, the fourth node key, k4 , and the fifth node key, ks, share a common prefix; namely the prefix part of the IP address associated with the first further subnet 109. [0102])after determining the first (IP address for the first subnet 107 [0102]) and second subsets of data entries, (IP address for the second subnet 108 and IP address for the second further subnet 110 [0102]) retrieve the plurality of data entries (IP addresses; referred to herein as IP 101 , IP 102, IP 103 and IP 104 respectively [0077], [0220]) from the first lower-level node (first node 221, which is associated with node key k1 and node rank r 1 . [0118]) and the second lower-level node(The tree data structure 215 would be traversed from the root node 220 to the second node 222, which is associated with node key k2 and node rank r2 and then to the third node 223, which is associated with node key k3 and node rank r 3 since both the second node 222 and the third node 223 have a prefix match with the search key. In this case, both the second node 222 and the third node 223 are prefix-matching nodes [0119])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta and Yadav to incorporate the teachings Dinwoodie wherein receive a set of keys from a first lower-level node and a second lower- level node, wherein the set of keys corresponds to a plurality of data entries of the first lower-level node and the second lower-level node; wherein each data entry comprises a key; determine first and second subsets of data entries from the plurality of data entries, wherein the first subset of data entries comprises data entries having disjointed keys and the second subset of data entries comprises data entries having intersecting keys; determine first and second subsets of data entries from the plurality of data entries based on occurrences of each key in the set of keys, wherein the first subset of data entries comprises data entries having disjointed keys and the second subset of data entries comprises data entries having intersecting keys; after determining the first and second subsets of data entries, retrieve the plurality of data entries from the first lower-level node and the second lower-level node. By doing so traversal of a conventional trie uses every part of the search key to determine which subtree to branch to, whereas by storing a search key part identifier, a Patricia tree nominates which element of the search key should be used next to determine the branching and hence which node should be traversed next. This removes the need for any nodes in the tree with just one descendant, so that only
genuine branches are included in the index. This means that the index size is independent of the length of stored phrases. Dinwoodie [0108]
Regarding claim 17 Brown in view of Gupta, Pishe, Yadav and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 16,
Brown does not fully disclose wherein the subset of data entries from the first set of data entries comprises data entries having keys that occur once in the set of keys.
Gupta wherein the subset of the first set of data entries (Fig. 1, (101) receive a plurality of information/data [0022]) comprises data entries having keys that occur once (If common values are not identified across keyvalue groups, the key-value groups will be maintained as received from the map function at 105. [0026])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Pishe, Yadav and Dinwoodie to incorporate the teachings of Gupta wherein the subset of data entries from the first set of data entries comprises data entries having keys that occur. By doing so values common to keys 1 and 2 are only transferred to machine m once. Gupta [0031].
Dinwoodie teaches the set of keys (Keys k1, k2 and k3 [0102])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown to incorporate the teachings of Gupta, Yadav and Pishe wherein set of keys. By doing so Traversal of a conventional trie uses every part of the search key to determine which subtree to
branch to, whereas by storing a search key part identifier, a Patricia tree nominates which element of the search key should be used next to determine the branching and hence which node should be traversed next. This removes the need for any nodes in the tree with just one descendant, so that only genuine branches are included in the index Dinwoodie [0108]
Regarding claim 18 Brown in view of Gupta, Yadav, Pishe and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 16,
Brown does not fully disclose wherein determining the set of disjointed data entries is performed using an algorithm having a linear time complexity.
Pishe teaches wherein determining is performed using an algorithm having a linear time complexity (O(n) is also referred to as "linear time." An algorithm that runs in linear time means that for large enough input sizes, the running time increases linearly with the size of the input. An example of an algorithm that operates in linear time is an algorithm that finds the smallest or largest item in an unsorted list. [0070])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Dinwoodie to incorporate the teachings of Pishe wherein determining occurrences of keys in the plurality of nodes is performed using an algorithm having a linear time complexity. By doing so as inputs grow large, the operations require to complete an instance of the algorithm having O(log n) complexity is quite lower than the operations required by an algorithm having O(n) complexity. Pishe [0070].
Dinwoodie teaches the set of disjointed data entries ( Data item k1 from data source A does not share a common prefix with any of the other data items and is added as a first node 721 in the merged tree data structure 715 as a child node of the root node 720, as shown in FIG. 7 A. [0162])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Pishe to incorporate the teachings of Dinwoodie wherein the set of disjointed data entries. By doing so Traversal of a conventional trie uses every part of the search key to determine which subtree to branch to, whereas by storing a search key part identifier, a Patricia tree nominates which element of the search key
should be used next to determine the branching and hence which node should be traversed next. This removes the need for any nodes in the tree with just one descendant, so that only genuine branches are included in the index. Dinwoodie [0108]
Regarding claim 19 Brown in view of Gupta, Pishe, Yadav and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 16,
Brown does not fully disclose wherein determining the set of disjointed data entries is performed using a hashmap function.
Pishe teaches wherein determining occurrences of keys (Each key may be associated with a linked list of key/value pairs. For example, key "O" may be associated with a linked list which includes key/value pair 504 [0072]) in the plurality of nodes (plurality of nodes [0085]) is performed using a hashmap function (The data structure 500 may be utilized with a hash function to distribute a number of key/value pairs over the buckets 502 in the data structure 500 [0073])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Dinwoodie to incorporate the teachings of Pishe wherein determining occurrences of keys in the plurality of nodes is performed using a hashmap function. By doing so an average time complexity for a well-balanced hash map may be performed in constant time (0(1)) while a worse-case scenario including a unevenly balanced hash map may be performed in linear time (O(n)).Pishe [0073]
Dinwoodie teaches the set of disjointed data entries ( Data item k1 from data source A does not share a common prefix with any of the other data items and is added as a first node 721 in the merged tree data structure 715 as a child node of the root node 720, as shown in FIG. 7 A. [0162])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Pishe to incorporate the teachings of Dinwoodie wherein the set of disjointed data entries. By doing so Traversal of a conventional trie uses every part of the search key to determine which subtree to branch to, whereas by storing a search key part identifier, a Patricia tree nominates which element of the search key
should be used next to determine the branching and hence which node should be traversed next. This removes the need for any nodes in the tree with just one descendant, so that only genuine branches are included in the index. Dinwoodie [0108]
Regarding claim 20 Brown in view of Gupta, Pishe, Yadav and Dinwoodie teaches the computing device (computing device [0038]) see e.g. Fig. 4 Master Client Node 406 of claim 16,
Brown does not fully disclose wherein determining the set of disjointed data entries is performed by receiving key hashes from at least two nodes in the plurality of nodes.
Pishe teaches wherein determining is performed by receiving key hashes (each key in table 510 may be hashed with the hash function to determine an appropriate bucket within the data structure 500. [0075]) from at least two nodes (one or more manager nodes, one or more worker nodes, [0021]) in the plurality of nodes. (plurality of nodes [0085])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Dinwoodie to incorporate the teachings of Pishe wherein determining occurrences of keys is performed by receiving key hashes from at least two nodes in the plurality of nodes. By doing so If, for example, worker node 112 has available memory to store a key/value pair comprising the first key and index value, then the manager node 110 may select the worker node 112 as the destination of the hash map update request message. If the worker node 112 does not have available memory, the manager node 110 may select another worker nodes of the distributed computing system 108 that has available memory and direct the hash map update request message to the worker node with the available memory. Pishe [0089]
Dinwoodie teaches the set of disjointed data entries ( Data item k1 from data source A does not share a common prefix with any of the other data items and is added as a first node 721 in the merged tree data structure 715 as a child node of the root node 720, as shown in FIG. 7 A. [0162])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Brown in view of Gupta, Yadav and Pishe to incorporate the teachings of Dinwoodie wherein the set of disjointed data entries. By doing so Traversal of a conventional trie uses every part of the search key to determine which subtree to branch to, whereas by storing a search key part identifier, a Patricia tree nominates which element of the search key
should be used next to determine the branching and hence which node should be traversed next. This removes the need for any nodes in the tree with just one descendant, so that only genuine branches are included in the index. Dinwoodie [0108
Conclusion
6. 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 extension fee 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 date of this
final action.
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.
7. Any inquiry concerning this communication or earlier communications from the
examiner should be directed to Kweku Halm whose telephone number is (469)295-
9144. The examiner can normally be reached on 9:00AM - 5:30PM Mon - Thur. If
attempts to reach the examiner by telephone are unsuccessful, the examiner's
supervisor, Sanjiv Shah can be reached on (571) 272 - 4098. 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 http://pair-direct.uspto.gov. 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.
/KWEKU WILLIAM HALM/Examiner, Art Unit 2166
/SANJIV SHAH/Supervisory Patent Examiner, Art Unit 2166