DETAILED ACTION
Claims 1-20 are pending.
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 .
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-4, 6-8, 10, 15, and 17 are rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”) and Oracle (“Manage VM Clusters”).
Regarding Claim 1, Sederberg teaches a computer-implemented method comprising:
identifying a plurality of content items stored within a genealogical content database of a genealogical data system (
Sederberg discloses, “A computer storage device having stored computer-executable instructions which, when executed by at least one processor, implement a method for efficiently modeling and linking a genealogical tree spanning multiple pages with navigable links, wherein the method comprises: accessing a genealogical file or online genealogical database containing a plurality of data items that identify family members, the genealogical file or online genealogical database containing relationship information that is usable to define relations between individual family members; parsing the genealogical file or online genealogical database to identify relationship links between the family members based on the relationship information,” Claim 1.).
Sederberg does not teach determining content types for respective content items within the plurality of content items stored in the genealogical content database; segmenting the plurality of content items into data subclusters separated according to the content types; and allocating a first number of virtual machines of a cloud computing system to a first data subcluster from among the data subclusters and a second number of virtual machines of the cloud computing system to a second data subcluster from among the data subclusters for processing data queries on a per-subcluster basis according to computational demands of the data subclusters.
However, Azure teaches determining content types for respective content items within the plurality of content items stored in the genealogical content database; segmenting the plurality of content items into data subclusters separated according to the content types (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3, and “When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into groups based on each type. After the combination of Sederberg with Azure, the types of data items that identify family members from Sederberg are determined, before being split into groups based on each type, as specified by Azure.).
Sederberg and Azure are both considered to be analogous to the claimed invention because they are in the same field of online database-oriented computing. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and provide determining content types for respective content items within the plurality of content items stored in the genealogical content database; segmenting the plurality of content items into data subclusters separated according to the content types. Doing so would help allow for easier filtering of the database by content type in order to list all items of a certain type, while excluding all other items that are not of the certain type.
Sederberg in view of Azure does not teach allocating a first number of virtual machines of a cloud computing system to a first data subcluster from among the data subclusters and a second number of virtual machines of the cloud computing system to a second data subcluster from among the data subclusters for processing data queries on a per-subcluster basis according to computational demands of the data subclusters.
However, Oracle teaches allocating a first number of virtual machines of a cloud computing system to a first data subcluster from among the data subclusters and a second number of virtual machines of the cloud computing system to a second data subcluster from among the data subclusters for processing data queries on a per-subcluster basis according to computational demands of the data subclusters (
Oracle discloses, “VM Cluster Node Subsetting enables you to allocate a subset of database servers to new and existing VM clusters to enable maximum flexibility in the allocation of compute (CPU, memory, local storage) resources,” Page 3,
“With VM Cluster Node Subsetting, you can: Create a smaller VM cluster to host databases that have low resource and scalability requirements or to host a smaller number of databases that require isolation from the rest of the workload. Expand or shrink an existing VM cluster by adding and removing nodes to ensure optimal utilization of available resources,” Page 3,
Here, each database is represented by a cluster that comprises a different number of virtual machines. This number of virtual machines is assigned based on the database’s resource requirements. Each database is assigned its number of virtual machines associated with the cluster, meaning that the virtual machines are allocated on a per-subcluster basis.
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Figure 3 of Azure.
Sederberg in view of Azure already teaches separating content items into data subclusters of different types, as illustrated by Figure 3 of Azure.
After the combination of Sederberg in view of Azure, with Oracle, each of these data subclusters from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle. Since the virtual machines are assigned to each of the data subclusters, this means that the virtual machines are assigned on a per-subcluster basis.).
Sederberg in view of Azure, and Oracle are both considered to be analogous to the claimed invention because they are in the same field of cloud-based data querying. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure to incorporate the teachings of Oracle and provide allocating a first number of virtual machines of a cloud computing system to a first data subcluster from among the data subclusters and a second number of virtual machines of the cloud computing system to a second data subcluster from among the data subclusters for processing data queries on a per-subcluster basis according to computational demands of the data subclusters. Doing so would help ensure that each data subcluster has an optimal number of virtual machines assigned to it, thus improving efficiency and performance (Oracle discloses, “VM Cluster Node Subsetting enables you to allocate a subset of database servers to new and existing VM clusters to enable maximum flexibility in the allocation of compute (CPU, memory, local storage) resources,” Page 3.).
Claims 8 and 15 are a non-transitory computer readable medium claim and a system claim, respectively, corresponding to the computer-implemented method Claim 1. Therefore, Claims 8 and 15 are rejected for the same reason set forth in the rejection of Claim 1.
Regarding Claim 2, Sederberg in view of Azure and Oracle teaches the computer-implemented method of claim 1, wherein determining the content types for the respective content items comprises:
determining a first content type for a first content item from among the plurality of content items stored within the genealogical content database; and determining a second content type for a second content item from among the plurality of content items stored within the genealogical content database (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3, and “When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into groups based on each type. After the combination of Sederberg with Azure, the types of data items that identify family members from Sederberg are determined, before being split into groups based on each type, as specified by Azure.
This aligns with paragraph 52 of the present application’s specification, which states “Specifically, the subcluster system 102 generates a subcluster 206, a subcluster 208, and a subcluster 210 that each include content items that share one or more of the above features, including content type, network traffic, data size, geographic area, names, and/or dates. For instance, the subcluster system 102 separates stored content items according to content type, where the subcluster 206 includes birth, marriage, and death images, the subcluster 208 includes military records, and the subcluster 210 includes person-specific newspaper article content items. In some cases, the subclusters can also or alternatively include content items with different levels of network activity, different data sizes, and/or different geographic regions.” Birth, marriage, and death images, military records, and newspaper articles can be separated into different groups using the system disclosed by Azure.
After the combination of Sederberg with Azure, the types of data items that identify family members from Sederberg are determined, before being split into groups based on each type, as specified by Azure, where different data items may be determined to have different types.).
Sederberg and Azure are both considered to be analogous to the claimed invention because they are in the same field of online database-oriented computing. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and provide wherein determining the content types for the respective content items comprises: determining a first content type for a first content item from among the plurality of content items stored within the genealogical content database; and determining a second content type for a second content item from among the plurality of content items stored within the genealogical content database. Doing so would help allow for easier filtering of the database by content type in order to list all items of a certain type, while excluding all other items that are not of the certain type, thus increasing performance and efficiency of the database queries.
Regarding Claim 3, Sederberg in view of Azure and Oracle teaches the computer-implemented method of claim 1, further comprising:
receiving, from a client device, a content-based search request defining a request to retrieve content items of an indicated content type (
Sederberg discloses, “FIG. 1, for example, illustrates a flow diagram 100 of various acts that can be performed by a computing system for efficiently modeling a genealogical tree spanning multiple pages with navigable links. As shown, the method includes accessing a genealogical tree (110) to be used for modeling family relationships. This can be accomplished, for example, by first accessing a genealogical file or online genealogical database containing a plurality of data items that identify family members and that contain relationship information that is usable to define relations between individual family members (120),” ¶ 0026.
Here, a computing system acts as a client device by accessing an online genealogical database to retrieve a plurality of data items.
Azure already teaches that a database is split into different subclusters/partitions based on content type, and that a query can specify a partition and its corresponding content type, stating “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3, and “With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
After the combination of Sederberg with Azure, the retrieval of the plurality of data items is performed based on the content type as specified by Azure.);
and determining, via a cloud-computing orchestrator, a set of virtual machines to access for a subcluster corresponding to the content-based search request (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3,
“When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6, and
“With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into data subclusters based on each type. A subcluster can be specified in a query.
After the combination of Sederberg in view of Azure, with Oracle, each of these data subclusters from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle, so when a subcluster is specified in a query, the virtual machines associated with the subcluster are specified as well.).
Sederberg, Azure, and Oracle are all considered to be analogous to the claimed invention because they are in the same field of online database-oriented computing. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and Oracle and provide receiving, from a client device, a content-based search request defining a request to retrieve content items of an indicated content type; and determining, via a cloud-computing orchestrator, a set of virtual machines to access for a subcluster corresponding to the content-based search request. Doing so would help remove the need for utilizing the entire set of virtual machines for handling search requests, thus improving performance.
Regarding Claim 4, Sederberg in view of Azure and Oracle teaches the computer-implemented method of claim 3, wherein determining the set of virtual machines to access for the subcluster corresponding to the content-based search request comprises:
identifying, from among a set of aliases assigned to the data subclusters, an alias corresponding to the content-based search request; determining that the alias is associated with the subcluster; and selecting the set of virtual machines allocated to the subcluster associated with the alias to fulfill the content-based search request (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3,
“When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6, and
“With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
The claimed “alias” is mapped to the name that specifies the partition in the disclosed query.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into data subclusters based on each type. A subcluster can be specified in a query via an alias, as the query naturally specifies the subcluster/partition using the alias. The query’s alias will be compared with aliases of each of the subclusters for a match, and if a match is successful, that subcluster is accessed.
After the combination of Sederberg in view of Azure, with Oracle, each of these data subclusters from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle, so when a subcluster is specified in a query, the virtual machines associated with the subcluster are specified as well and thus accessed when the subcluster is accessed.).
Sederberg, Azure, and Oracle are all considered to be analogous to the claimed invention because they are in the same field of cloud-computing architecture. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and Oracle and provide wherein determining the set of virtual machines to access for the subcluster corresponding to the content-based search request comprises: identifying, from among a set of aliases assigned to the data subclusters, an alias corresponding to the content-based search request; determining that the alias is associated with the subcluster; and selecting the set of virtual machines allocated to the subcluster associated with the alias to fulfill the content-based search request. Doing so would help remove the need for selecting the entire set of virtual machines to fulfill the search request, thus improving performance.
Regarding Claim 6, Sederberg in view of Azure and Oracle teaches the computer-implemented method of claim 1, further comprising utilizing a cloud-computing orchestrator to determine, in response to a search request, content items to access from the genealogical content database (
Sederberg discloses, “FIG. 1, for example, illustrates a flow diagram 100 of various acts that can be performed by a computing system for efficiently modeling a genealogical tree spanning multiple pages with navigable links. As shown, the method includes accessing a genealogical tree (110) to be used for modeling family relationships. This can be accomplished, for example, by first accessing a genealogical file or online genealogical database containing a plurality of data items that identify family members and that contain relationship information that is usable to define relations between individual family members (120),” ¶ 0026.
Here, a computing system acts as a client device to access an online genealogical database to retrieve a plurality of data items. The data items are first determined, and then the computing system is given access to the data items.) according to one or more of:
cluster metadata defining parameters of the data subclusters separated according to the content types (
Azure discloses, “Match the data store to the pattern of use. Partitioning allows each partition to be deployed on a different type of data store, based on cost and the built-in features that data store offers. For example, large binary data can be stored in blob storage, while more structured data can be held in a document database. See Choose the right data store,” Page 3.
The claimed “cluster metadata” is mapped to the disclosed metadata that defines what type of data store is used to implement a cluster (e.g. whether the cluster is implemented by a blob storage or document database).);
name-sharding data defining name-based separations between data partitions within the data subclusters (
PNG
media_image2.png
304
654
media_image2.png
Greyscale
Figure 1 of Azure.
Azure discloses, “In this example, product inventory data is divided into shards based on the product key. Each shard holds the data for a contiguous range of shard keys (A-G and H-Z), organized alphabetically. Sharding spreads the load over more computers, which reduces contention and improves performance,” Page 3.);
or field metadata defining parameters of data fields of content items from among the plurality of content items stored within the genealogical content database (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Figure 3 of Azure. Here, we can see that the column names represent the parameters of data fields of content items in the database.
).
Sederberg, Azure and Oracle are all considered to be analogous to the claimed invention because they are in the same field of cloud-computing databases. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and Oracle and provide further comprising utilizing a cloud-computing orchestrator to determine, in response to a search request, content items to access from the genealogical content database according to one or more of: cluster metadata defining parameters of the data subclusters separated according to the content types; name-sharding data defining name-based separations between data partitions within the data subclusters; or field metadata defining parameters of data fields of content items from among the plurality of content items stored within the genealogical content database Doing so would help allow for using the metadata to further filter for content items that match the metadata, while excluding content items that do not match.
Regarding Claim 7, Sederberg in view of Azure and Oracle teaches the computer-implemented method of claim 1, further comprising maintaining a first set of specialization data for the first data subcluster at the first number of virtual machines and a second set of specialization data for the second data subcluster at the second number of virtual machines, wherein specialization data defines relatedness between data fields of content items from among the plurality of content items (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Figure 3 of Azure.
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3,
“When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6, and
“With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
Here, the specialization data is the metadata that specifies the table structure, such as the labels in the table columns. This metadata defines relatedness between columns in the table.).
Sederberg and Azure are both considered to be analogous to the claimed invention because they are in the same field of online database-oriented computing. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and provide further comprising maintaining a first set of specialization data for the first data subcluster at the first number of virtual machines and a second set of specialization data for the second data subcluster at the second number of virtual machines, wherein specialization data defines relatedness between data fields of content items from among the plurality of content items. Doing so would help allow for differentiating between each data subcluster, and make it easier to query a specific data subcluster based on its specialization data.
Regarding Claim 10, Sederberg in view of Azure and Oracle teaches the non-transitory computer readable medium of claim 8, further storing instructions which, when executed by the at least one processor, cause the at least one processor to:
detect an increase in computational demand for the first data subcluster;
and in response to detecting the increase in computational demand for the first data subcluster:
automatically scale the first data subcluster by increasing the first number of virtual machines;
and not scale the second data subcluster by retaining the second number of virtual machines (
Oracle discloses, “Expand or shrink an existing VM cluster by adding and removing nodes to ensure optimal utilization of available resources,” Page 3, “To add virtual machines to a provisioned cluster, use this procedure. Consider reviewing the points below that will assist you in adding VMs to a provisioned cluster. The same Guest OS Image version running on the existing provisioned VMs in the cluster is used to provision new VMs added to extend the VM cluster,” Page 19,
Here, a number of virtual machines can be increased for a cluster, or alternatively decreased for the cluster, in response to increased demand.
According to MPEP § 2114(IV), it would have been obvious to automate scaling the first data subcluster by increasing the number of virtual machines: “When determining whether a computer-implemented functional claim would have been obvious, examiners should note that broadly claiming an automated means to replace a manual function to accomplish the same result does not distinguish over the prior art. See Leapfrog Enters., Inc. v. Fisher-Price, Inc., 485 F.3d 1157, 1161, 82 USPQ2d 1687, 1691 (Fed. Cir. 2007) ("Accommodating a prior art mechanical device that accomplishes [a desired] goal to modern electronics would have been reasonably obvious to one of ordinary skill in designing children’s learning devices. Applying modern electronics to older mechanical devices has been commonplace in recent years."); In re Venner, 262 F.2d 91, 95, 120 USPQ 193, 194 (CCPA 1958); see also MPEP § 2144.04.”
After the combination of Sederberg in view of Azure, with Oracle, the first data subcluster from Sederberg in view of Azure would be specified to have its number of virtual machines increased in response to increased demand, as specified by Oracle. Meanwhile, the second data subcluster from Sederberg in view of Azure would be specified to have its number of virtual machines remain the same, while the first data subcluster’s number of virtual machines increases, as specified by Oracle).
Sederberg in view of Azure, and Oracle are both considered to be analogous to the claimed invention because they are in the same field of computer databases. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure to incorporate the teachings of Oracle and provide further storing instructions which, when executed by the at least one processor, cause the at least one processor to: detect an increase in computational demand for the first data subcluster; and in response to detecting the increase in computational demand for the first data subcluster: automatically scale the first data subcluster by increasing the first number of virtual machines; and not scale the second data subcluster by retaining the second number of virtual machines. Doing so would help ensure high availability for data subclusters by utilizing scaling if it is required, and conserve resources by preventing scaling when high availability is not required.
Regarding Claim 17, Sederberg in view of Azure and Oracle teaches the system of claim 15, wherein the one or more processors are further configured to cause the system to: receive, from a client device, a global search request defining a request to retrieve content items from the content database (
Sederberg discloses, “FIG. 1, for example, illustrates a flow diagram 100 of various acts that can be performed by a computing system for efficiently modeling a genealogical tree spanning multiple pages with navigable links. As shown, the method includes accessing a genealogical tree (110) to be used for modeling family relationships. This can be accomplished, for example, by first accessing a genealogical file or online genealogical database containing a plurality of data items that identify family members and that contain relationship information that is usable to define relations between individual family members (120),” ¶ 0026.
Here, a computing system acts as a client device by accessing an online genealogical database to retrieve a plurality of data items.);
and determine, via a cloud-computing orchestrator, a first set of virtual machines to access for a first subcluster corresponding to the global search request and a second set of virtual machines to access for a second subcluster corresponding to the global search request (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3,
“When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6, and
“With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into data subclusters based on each type. A subcluster can be specified in a query.
After the combination of Sederberg in view of Azure, with Oracle, each of these data subclusters from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle, so when a subcluster is specified in a query, the virtual machines associated with the subcluster are specified as well.).
Sederberg, Azure, and Oracle are all considered to be analogous to the claimed invention because they are in the same field of online database-oriented computing. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and Oracle and provide to determine, via a cloud-computing orchestrator, a first set of virtual machines to access for a first subcluster corresponding to the global search request and a second set of virtual machines to access for a second subcluster corresponding to the global search request. Doing so would help remove the need for utilizing the entire set of virtual machines for handling search requests, thus improving performance.
Claim 5 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), and Ding (US 20240202609 A1).
Regarding Claim 5, Sederberg in view of Azure and Oracle teaches the computer-implemented method of claim 3. Sederberg in view of Azure and Oracle does not teach wherein determining the set of virtual machines to access for the subcluster corresponding to the content-based search request comprises: determining one or more shards that host the subcluster corresponding to the content-based search request; and identifying the set of virtual machines from the one or more shards hosting the subcluster.
However, Ding teaches wherein determining the set of virtual machines to access for the subcluster corresponding to the content-based search request comprises:
determining one or more shards that host the subcluster corresponding to the content-based search request; and identifying the set of virtual machines from the one or more shards hosting the subcluster (
PNG
media_image3.png
382
538
media_image3.png
Greyscale
PNG
media_image4.png
344
448
media_image4.png
Greyscale
Ding discloses, “In FIG. 3, a shard management system 300 is shown with a series of shards (a horizontal logical partition representing one serving unit). The system includes a series of replicas 304, with each replica duplicating the data of this shard. Shard replicas share the same sharding key. In other words each replica 304 is portion of a DB running on a specific VM 306. For stability and fault tolerance, one shard should have at least two or more replicas serving simultaneously. The replicas 304 are stored on a series of Virtual Machines (VM) 306 (each VM 306 maintaining one or multiple replicas). Lastly at least one proxy server 308 runs a router to dispatch requests to the relevant machine by a specific key,” ¶ 0055,
“In the example of FIG. 3, the communication server DB 126, may be implemented as a plurality of replicated shards, across a plurality of virtual server instances and/or availability zones. Therefore, in that case, the communication server 102, may represent one or more physical servers within a cloud infrastructure, running a plurality of virtual machine instances,” ¶ 0056,
“In the example of FIG. 3, shard R1 has two replicas running on instance M1 and M4 separately. Replica R1 and R3 run on the instance M1. There is no strict constraint that partitions must be isolated physically which means the replicas from two shards may share the same instance,” ¶ 0057, and
“FIG. 4 shows a method 400 of processing a request in a system with multiple shards. When a request 402 comes to the proxy 308, it queries the instances 404 for the specific key in the request payload. For example, when a request for R1 arrives, the proxy 308 gets the corresponding instances of M1 and M4. The request will be dispatched 406 to M1 and M4 randomly or in a round-robin loop. The M1 and M4 have approximately equal probability to serve requests from R1,” ¶ 0058.
The claimed “shard” is mapped to the disclosed “replica”. Each replica corresponds to a virtual machine instance, so a group of replicas corresponds to a group of virtual machine instances, or a subcluster.
Here, replicas are determined to be accessed based on a request. Corresponding instances (which are virtual machine instances) are identified in response to the request.).
Sederberg in view of Azure and Oracle, and Ding are both considered to be analogous to the claimed invention because they are in the same field of cloud-computing databases. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure and Oracle to incorporate the teachings of Ding and provide wherein determining the set of virtual machines to access for the subcluster corresponding to the content-based search request comprises: determining one or more shards that host the subcluster corresponding to the content-based search request; and identifying the set of virtual machines from the one or more shards hosting the subcluster. Doing so would help allow for using the shards to easily identify and access the corresponding virtual machines, thus improving performance of queries.
Claim 9 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), and Patel (US 20160205518 A1).
Regarding Claim 9, Sederberg in view of Azure and Oracle teaches the non-transitory computer readable medium of claim 8. Sederberg in view of Azure and Oracle does not teach further storing instructions which, when executed by the at least one processor, cause the at least one processor to: allocate the first number of virtual machines to the first data subcluster comprises spinning up redundant virtual machines for a first content type of content items within the first data subcluster; and allocate the second number of virtual machines to the second data subcluster comprises spinning up a minimum number of virtual machines without redundancy for a second content type of content items within the second data subcluster.
However, Patel teaches further storing instructions which, when executed by the at least one processor, cause the at least one processor to:
allocate the first number of virtual machines to the first data subcluster comprises spinning up redundant virtual machines for a first content type of content items within the first data subcluster (
Patel discloses, “Container manager 404 further enforces anti-affinity policies to ensure that container instances that are a part of service cluster are distributed across different virtual machines to provide sufficient redundancy for the service cluster,” ¶ 0052, and “the method further includes ensuring, by the container manager, at least a minimum number of virtual machines are available in the first virtual machine server group for the first service cluster,” ¶ 0108.
Here, a cluster can be allocated multiple virtual machines to provide redundancy. This number can be specified to be larger than the minimum number of virtual machines required for the cluster.
After the combination of Sederberg in view of Azure and Oracle, with Patel, the first data subcluster from Sederberg in view of Azure and Oracle would be specified to use a number of virtual machines greater than the minimum number of virtual machines required, as specified by Patel.);
and allocate the second number of virtual machines to the second data subcluster comprises spinning up a minimum number of virtual machines without redundancy for a second content type of content items within the second data subcluster (
Patel discloses, “the method further includes ensuring, by the container manager, at least a minimum number of virtual machines are available in the first virtual machine server group for the first service cluster,” ¶ 0108.
Here, a cluster can alternatively be allocated a minimum number of virtual machines instead of a number of virtual machines that is larger than the minimum.
After the combination of Sederberg in view of Azure and Oracle, with Patel, the second data subcluster from Sederberg in view of Azure and Oracle would be specified to use the minimum number of virtual machines required, as specified by Patel.).
Sederberg in view of Azure, and Oracle, and Patel are both considered to be analogous to the claimed invention because they are in the same field of computer databases. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure, and Oracle to incorporate the teachings of Patel and provide further storing instructions which, when executed by the at least one processor, cause the at least one processor to: allocate the first number of virtual machines to the first data subcluster comprises spinning up redundant virtual machines for a first content type of content items within the first data subcluster; and allocate the second number of virtual machines to the second data subcluster comprises spinning up a minimum number of virtual machines without redundancy for a second content type of content items within the second data subcluster. Doing so would help ensure high availability for data subclusters if it is required, and conserve resources when high availability is not required.
Claim 11 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), and Babka (US 20120330991 A1).
Regarding Claim 11, Sederberg in view of Azure and Oracle teaches the non-transitory computer readable medium of claim 8. Sederberg in view of Azure and Oracle does not teach further storing instructions which, when executed by the at least one processor, cause the at least one processor to generate a façade pattern overlaying the data subclusters and mapping computer operations for a cloud-computing orchestrator to perform on content items within the data subclusters in response to data queries.
However, Babka teaches further storing instructions which, when executed by the at least one processor, cause the at least one processor to generate a façade pattern overlaying the data subclusters and mapping computer operations for a cloud-computing orchestrator to perform on content items within the data subclusters in response to data queries (
Babka discloses, “The present embodiments provide a context- and version-aware facade for database queries, which transparently provides context and version awareness to legacy database clients. For example, assume a database is constructed and populated with data objects, and is used by database clients for some time in this state. At a later time, versioning and context capabilities are added to the database, and the database facade of the present embodiments is implemented. The database facade provides context and version functionality to existing (legacy) database clients by transparently intercepting and modifying queries from the database clients so that the queries may utilize the proper context and version of the data objects in the database. Thus, the present embodiments permit legacy database clients to utilize databases having contextual and versioned data, without needing to rewrite the database client code to make it context and version aware,” ¶ 0014.
Here, a database façade overlays a database, allowing for mapping computer operations to retrieve data objects in response to queries.
This aligns with paragraph 59 of the present application’s specification, which states “In some embodiments, the orchestrator 304 interacts with a façade pattern 306 overlaying the subclusters 308, 310, 312 to perform a search and generate search results in response to the search request. In particular, the orchestrator 304 may be programmed to consider or detect distinctions between (aliases of) subclusters of content items. By generating a façade pattern 306 to overlay the subcluster 308, the subcluster 310, and the subcluster 312, the subcluster system 102 provides a custom code or a custom software design pattern that serves as an object for interfacing the orchestrator 304 with the subclusters 308, 310, 312. Indeed, the façade pattern 306 includes computer code that maps data for the subclusters 308, 310, 312 to functions or operations of the orchestrator 304 such that the orchestrator 304 can identify shards housing content items to provide in response to a search request. Thus, the orchestrator 304 can interact with, and execute functions of, the façade pattern 306 to identify the content items (within the subcluster 310) that match the search request.”
After the combination of Sederberg in view of Azure, and Oracle, and Babka, the façade from Babka overlays each of the data subclusters from Sederberg in view of Azure, and Oracle.).
Sederberg in view of Azure, and Oracle, and Babka are both considered to be analogous to the claimed invention because they are in the same field of computer databases. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure, and Oracle to incorporate the teachings of Babka and provide further storing instructions which, when executed by the at least one processor, cause the at least one processor to generate a façade pattern overlaying the data subclusters and mapping computer operations for a cloud-computing orchestrator to perform on content items within the data subclusters in response to data queries. Doing so would help allow for abstracting the database operations from the client, so that the client does not have to know the complex inner workings of the database (Babka discloses, “Thus, the present embodiments permit legacy database clients to utilize databases having contextual and versioned data, without needing to rewrite the database client code to make it context and version aware,” ¶ 0014.).
Claim 12-13 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), Babka (US 20120330991 A1), and Ding (US 20240202609 A1).
Regarding Claim 12, Sederberg in view of Azure, Oracle, and Babka teaches the non-transitory computer readable medium of claim 11. Sederberg in view of Azure, Oracle, and Babka does not teach further storing instructions which, when executed by the at least one processor, cause the at least one processor to implement the façade pattern by executing computer code to determine which shards to search in response to a search request.
However, Ding teaches further storing instructions which, when executed by the at least one processor, cause the at least one processor to implement the façade pattern by executing computer code to determine which shards to search in response to a search request (
PNG
media_image3.png
382
538
media_image3.png
Greyscale
PNG
media_image4.png
344
448
media_image4.png
Greyscale
Ding discloses, “In FIG. 3, a shard management system 300 is shown with a series of shards (a horizontal logical partition representing one serving unit). The system includes a series of replicas 304, with each replica duplicating the data of this shard. Shard replicas share the same sharding key. In other words each replica 304 is portion of a DB running on a specific VM 306. For stability and fault tolerance, one shard should have at least two or more replicas serving simultaneously. The replicas 304 are stored on a series of Virtual Machines (VM) 306 (each VM 306 maintaining one or multiple replicas). Lastly at least one proxy server 308 runs a router to dispatch requests to the relevant machine by a specific key,” ¶ 0055,
“In the example of FIG. 3, the communication server DB 126, may be implemented as a plurality of replicated shards, across a plurality of virtual server instances and/or availability zones. Therefore, in that case, the communication server 102, may represent one or more physical servers within a cloud infrastructure, running a plurality of virtual machine instances,” ¶ 0056,
“In the example of FIG. 3, shard R1 has two replicas running on instance M1 and M4 separately. Replica R1 and R3 run on the instance M1. There is no strict constraint that partitions must be isolated physically which means the replicas from two shards may share the same instance,” ¶ 0057, and
“FIG. 4 shows a method 400 of processing a request in a system with multiple shards. When a request 402 comes to the proxy 308, it queries the instances 404 for the specific key in the request payload. For example, when a request for R1 arrives, the proxy 308 gets the corresponding instances of M1 and M4. The request will be dispatched 406 to M1 and M4 randomly or in a round-robin loop. The M1 and M4 have approximately equal probability to serve requests from R1,” ¶ 0058.
The claimed “shard” is mapped to the disclosed “replica”.
Here, replicas are determined to be accessed based on a request. Corresponding instances (which are virtual machine instances) are identified in response to the request.).
Sederberg in view of Azure, Oracle, and Babka, and Ding are both considered to be analogous to the claimed invention because they are in the same field of cloud-computing databases. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure, Oracle, and Babka to incorporate the teachings of Ding and provide wherein determining the set of virtual machines to access for the subcluster corresponding to the content-based search request comprises: determining one or more shards that host the subcluster corresponding to the content-based search request; and identifying the set of virtual machines from the one or more shards hosting the subcluster. Doing so would help allow for using the shards to easily identify and access the corresponding virtual machines, thus improving performance of queries.
Regarding Claim 13, Sederberg in view of Azure, Oracle, Babka, and Ding teaches the non-transitory computer readable medium of claim 12, further storing instructions which, when executed by the at least one processor, cause the at least one processor to determine which shards to search in response to the search request by determining a subcluster alias associated with a content type corresponding to the search request (
Ding teaches determining which shards to search for in response to a search request, disclosing, “FIG. 4 shows a method 400 of processing a request in a system with multiple shards. When a request 402 comes to the proxy 308, it queries the instances 404 for the specific key in the request payload. For example, when a request for R1 arrives, the proxy 308 gets the corresponding instances of M1 and M4. The request will be dispatched 406 to M1 and M4 randomly or in a round-robin loop. The M1 and M4 have approximately equal probability to serve requests from R1,” ¶ 0058.
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Figure 3 of Azure.
Azure teaches a subcluster alias, disclosing “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3,
“When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6, and
“With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
The claimed “alias” is mapped to the name that specifies the partition in the disclosed query.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into data subclusters based on each type. A subcluster can be specified in a query via an alias, as the query naturally specifies the subcluster/partition using the alias. The query’s alias will be compared with aliases of each of the subclusters for a match, and if a match is successful, that subcluster is accessed.
After the combination of Sederberg in view of Azure, with Oracle and Ding, each of these data subclusters from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle, so when a subcluster is specified in a query, the virtual machines associated with the subcluster are specified as well and thus accessed when the subcluster is accessed. Furthermore, the subcluster alias from Azure is determined in order to determine which of Ding’s shards should be searched.).
Sederberg, Azure, Oracle, and Ding are all considered to be analogous to the claimed invention because they are in the same field of online cloud-computing architectures. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure, Oracle, and Ding and provide further storing instructions which, when executed by the at least one processor, cause the at least one processor to determine which shards to search in response to the search request by determining a subcluster alias associated with a content type corresponding to the search request. Doing so would help remove the need for selecting the entire set of virtual machines to fulfill the search request, thus improving performance.
Claim 14 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), and McAlister (US 9128899 B1).
Regarding Claim 14, Sederberg in view of Azure and Oracle teaches the non-transitory computer readable medium of claim 8, further storing instructions which, when executed by the at least one processor, cause the at least one processor to allocate the first number of virtual machines and the second number of virtual machines based on (
Oracle discloses, “VM Cluster Node Subsetting enables you to allocate a subset of database servers to new and existing VM clusters to enable maximum flexibility in the allocation of compute (CPU, memory, local storage) resources,” Page 3,
“With VM Cluster Node Subsetting, you can: Create a smaller VM cluster to host databases that have low resource and scalability requirements or to host a smaller number of databases that require isolation from the rest of the workload. Expand or shrink an existing VM cluster by adding and removing nodes to ensure optimal utilization of available resources,” Page 3,
Here, each database is represented by a cluster that comprises a different number of virtual machines. This number of virtual machines is assigned based on the database’s resource requirements. Each database is assigned its number of virtual machines associated with the cluster, meaning that the virtual machines are allocated on a per-subcluster basis.
After the combination of Sederberg in view of Azure, with Oracle, each of the data groups from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle. Furthermore, the data queries from Sederberg in view of Azure are performed for each of the clusters corresponding to the databases from Oracle.).
Sederberg in view of Azure, and Oracle are both considered to be analogous to the claimed invention because they are in the same field of cloud-based data querying. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure to incorporate the teachings of Oracle and provide further storing instructions which, when executed by the at least one processor, cause the at least one processor to allocate the first number of virtual machines and the second number of virtual machines based on computational requirements for the data subclusters. Doing so would help ensure that each data subcluster has an optimal number of virtual machines assigned to it, thus improving efficiency and performance (Oracle discloses, “VM Cluster Node Subsetting enables you to allocate a subset of database servers to new and existing VM clusters to enable maximum flexibility in the allocation of compute (CPU, memory, local storage) resources,” Page 3.).
Sederberg in view of Azure and Oracle does not teach to allocate the first number of virtual machines and the second number of virtual machines based on historical computational requirements for the data subclusters.
However, McAlister teaches to allocate the first number of virtual machines and the second number of virtual machines based on historical computational requirements for the data subclusters (
McAlister discloses, “Historical data may also be used in database-driven variations to improve resource requirement estimates and enable more effective predictive resource allocation planning,” Col 15, Lines 21-23.
Here, historical data is used to improve resource requirement prediction in order to improve resource allocations.
After the combination of Sederberg in view of Azure and Oracle, with McAlister, historical data is used to predict an optimal number of virtual machines to allocate for each data subcluster.).
Sederberg in view of Azure and Oracle, and McAlister are both considered to be analogous to the claimed invention because they are in the same field of computer data server architecture. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure and Oracle to incorporate the teachings of McAlister and provide to allocate the first number of virtual machines and the second number of virtual machines based on historical computational requirements for the data subclusters. Doing so would help allow for using past utilization rates as empirical, already-observed data to determine a more optimal number of virtual machines for each data subcluster (McAlister discloses, “Historical data may also be used in database-driven variations to improve resource requirement estimates and enable more effective predictive resource allocation planning,” Col 15, Lines 21-23).
Claim 16 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), and Chang (US 20150186441 A1).
Regarding Claim 16, Sederberg in view of Azure and Oracle teaches the system of claim 15. Sederberg in view of Azure and Oracle does not teach wherein the one or more processors are further configured to cause the system to update the first data subcluster and the second data subcluster independently of one another by: utilizing the first number of virtual machines to reindex content items at a first timing interval for the first data subcluster; and utilizing the second number of virtual machines to reindex content items at a second timing interval for the second data subcluster, wherein the second timing interval is different from the first timing interval.
However, Chang teaches wherein the one or more processors are further configured to cause the system to update the first data subcluster and the second data subcluster independently of one another by:
utilizing the first number of virtual machines to reindex content items at a first timing interval for the first data subcluster;
and utilizing the second number of virtual machines to reindex content items at a second timing interval for the second data subcluster, wherein the second timing interval is different from the first timing interval (
Chang discloses, “Indexes usually need to be maintained or updated when a database is changed, and embodiments of the invention provide a procedure for selecting a way to maintain or update a database after changes have been made to the database. In an embodiment of the invention, for a defined period of time, a snapshot is built of selected requests to change the contents of the database. After that defined period of time, a selection is made, either to rebuild an index to the database, or to update entries to a current index to the database,” ¶ 0035.
Here, after a period of time of building a snapshot of selected requests to change the contents of a database, a new period of time happens in which an index to a database is rebuilt. This means that the database’s contents are reindexed.
After the combination of Sederberg in view of Azure and Oracle, with Chang, each data subcluster’s virtual machines from Sederberg in view of Azure and Oracle are used to reindex the data subcluster during a period of time as specified by Chang. For each data subcluster, the reindexing time period is specified to be different from the other data subcluster’s reindexing time periods.).
Sederberg in view of Azure and Oracle, and Chang are both considered to be analogous to the claimed invention because they are in the same field of computer database architecture. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure and Oracle to incorporate the teachings of Chang and provide wherein the one or more processors are further configured to cause the system to update the first data subcluster and the second data subcluster independently of one another by: utilizing the first number of virtual machines to reindex content items at a first timing interval for the first data subcluster; and utilizing the second number of virtual machines to reindex content items at a second timing interval for the second data subcluster, wherein the second timing interval is different from the first timing interval. Doing so would help ensure that the indexes of each data subcluster does not end up being stale, corrupted or out-of-date, thus improving data integrity for each data subcluster.
Claims 18-19 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), and Abadzhimarinov (US 20230289164 A1).
Regarding Claim 18, Sederberg in view of Azure and Oracle teaches the system of claim 15. Sederberg in view of Azure and Oracle does not teach wherein the one or more processors are further configured to cause the system to assign subcluster aliases to the data subclusters separated from the plurality of content items according to the content types.
However, Abadzhimarinov teaches wherein the one or more processors are further configured to cause the system to assign subcluster aliases to the data subclusters separated from the plurality of content items according to the content types (
Abadzhimarinov discloses, “The new cluster window can allow the user to assign a name to the new cluster and designate where the cluster will be hosted. For example, if an organization has multiple data centers, then the user can choose which data center will host the server cluster,” ¶ 0025.
Here, names (aliases) are assigned to clusters. After the combination of Sederberg in view of Azure, and Oracle, with Abadzhimarinov, each of the subclusters from Sederberg in view of Azure, and Oracle, already separated according to content types, would have names (aliases) assigned to them.).
Sederberg in view of Azure, and Oracle, and Abadzhimarinov are both considered to be analogous to the claimed invention because they are in the same field of cloud-computing architecture. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure, and Oracle to incorporate the teachings of Abadzhimarinov and provide wherein the one or more processors are further configured to cause the system to assign subcluster aliases to the data subclusters separated from the plurality of content items according to the content types. Doing so would help allow for easier distinguishing between each of the subclusters, and also provide easier access to each subcluster by using its alias instead of a full network IP address.
Regarding Claim 19, Sederberg in view of Azure, Oracle, and Abadzhimarinov teaches the system of claim 18, wherein the one or more processors are further configured to cause the system to:
receive, from a client device, a search request to search the plurality of content items stored within the content database (
Sederberg discloses, “FIG. 1, for example, illustrates a flow diagram 100 of various acts that can be performed by a computing system for efficiently modeling a genealogical tree spanning multiple pages with navigable links. As shown, the method includes accessing a genealogical tree (110) to be used for modeling family relationships. This can be accomplished, for example, by first accessing a genealogical file or online genealogical database containing a plurality of data items that identify family members and that contain relationship information that is usable to define relations between individual family members (120),” ¶ 0026.
Here, a computing system acts as a client device by accessing an online genealogical database to retrieve a plurality of data items.);
and determine, from the data subclusters, a data subcluster corresponding to the search request by comparing aliases assigned to the data subclusters with the search request (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3,
“When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6, and
“With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
The claimed “alias” is mapped to the name that specifies the partition in the disclosed query.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into data subclusters based on each type. A subcluster/partition can be specified in a query via an alias, as the query naturally specifies the subcluster/partition using the alias. The query’s alias will be compared with aliases of each of the subclusters for a match, and if a match is successful, that subcluster is accessed.
After the combination of Sederberg in view of Azure, with Oracle, each of these data subclusters from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle, so when a subcluster is specified in a query, the virtual machines associated with the subcluster are specified as well and thus accessed when the subcluster is accessed.).
Sederberg, Azure, and Oracle are all considered to be analogous to the claimed invention because they are in the same field of cloud-computing architecture. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and Oracle and provide to determine, from the data subclusters, a data subcluster corresponding to the search request by comparing aliases assigned to the data subclusters with the search request. Doing so would help remove the need for selecting the entire set of virtual machines to fulfill the search request, thus improving performance.
Claim 20 is rejected under 35 U.S.C. 103 as being unpatentable over Sederberg (US 20150039636 A1) in view of Azure (“Data Partitioning Guidance”), Oracle (“Manage VM Clusters”), Abadzhimarinov (US 20230289164 A1), and Babka (US 20120330991 A1).
Regarding Claim 20, Sederberg in view of Azure, Oracle, and Abadzhimarinov teaches the system of claim 19, wherein the one or more processors are further configured to cause the system to generate search results for the search request (
PNG
media_image1.png
532
606
media_image1.png
Greyscale
Azure discloses, “Functional partitioning. In this strategy, data is aggregated according to how it is used by each bounded context in the system. For example, an e-commerce system might store invoice data in one partition and product inventory data in another,” Page 3,
“When it's possible to identify a bounded context for each distinct business area in an application, functional partitioning is a way to improve isolation and data access performance. Another common use for functional partitioning is to separate read-write data from read-only data. Figure 3 shows an overview of functional partitioning where inventory data is separated from customer data,” Page 6, and
“With vertical and functional partitioning, queries can naturally specify the partition,” Page 10.
The claimed “alias” is mapped to the name that specifies the partition in the disclosed query.
Here, as illustrated by Figure 3 of Azure, types for objects stored in a database are determined, so that the objects are split into data subclusters based on each type. A subcluster can be specified in a query via an alias, as the query naturally specifies the subcluster/partition using the alias. The query’s alias will be compared with aliases of each of the subclusters for a match, and if a match is successful, that subcluster is accessed.
After the combination of Sederberg in view of Azure, with Oracle, each of these data subclusters from Sederberg in view of Azure has a number of virtual machines assigned to it based on its resource requirements, as specified by Oracle, so when a subcluster is specified in a query, the virtual machines associated with the subcluster are specified as well and thus accessed when the subcluster is accessed.).
Sederberg, Azure, and Oracle are all considered to be analogous to the claimed invention because they are in the same field of cloud-computing architecture. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg to incorporate the teachings of Azure and Oracle and provide to determine one or more virtual machines allocated to the data subcluster according to an alias of the data subcluster. Doing so would help remove the need for selecting the entire set of virtual machines to fulfill the search request, thus improving performance.
Sederberg in view of Azure, Oracle, and Abadzhimarinov, does not teach utilizing a façade pattern to determine one or more virtual machines allocated to the data subcluster according to an alias of the data subcluster.
However, Babka teaches utilizing a façade pattern to determine one or more virtual machines allocated to the data subcluster according to an alias of the data subcluster (
Babka discloses, “The present embodiments provide a context- and version-aware facade for database queries, which transparently provides context and version awareness to legacy database clients. For example, assume a database is constructed and populated with data objects, and is used by database clients for some time in this state. At a later time, versioning and context capabilities are added to the database, and the database facade of the present embodiments is implemented. The database facade provides context and version functionality to existing (legacy) database clients by transparently intercepting and modifying queries from the database clients so that the queries may utilize the proper context and version of the data objects in the database. Thus, the present embodiments permit legacy database clients to utilize databases having contextual and versioned data, without needing to rewrite the database client code to make it context and version aware,” ¶ 0014.
Here, a database façade overlays a database, allowing for mapping computer operations to retrieve data objects in response to queries.
This aligns with paragraph 59 of the present application’s specification, which states “In some embodiments, the orchestrator 304 interacts with a façade pattern 306 overlaying the subclusters 308, 310, 312 to perform a search and generate search results in response to the search request. In particular, the orchestrator 304 may be programmed to consider or detect distinctions between (aliases of) subclusters of content items. By generating a façade pattern 306 to overlay the subcluster 308, the subcluster 310, and the subcluster 312, the subcluster system 102 provides a custom code or a custom software design pattern that serves as an object for interfacing the orchestrator 304 with the subclusters 308, 310, 312. Indeed, the façade pattern 306 includes computer code that maps data for the subclusters 308, 310, 312 to functions or operations of the orchestrator 304 such that the orchestrator 304 can identify shards housing content items to provide in response to a search request. Thus, the orchestrator 304 can interact with, and execute functions of, the façade pattern 306 to identify the content items (within the subcluster 310) that match the search request.”
After the combination of Sederberg in view of Azure, Oracle, and Abadzhimarinov with Babka, the façade from Babka overlays each of the data subclusters from Sederberg in view of Azure, Oracle, and Abadzhimarinov.).
Sederberg in view of Azure, Oracle, and Abadzhimarinov, and Babka are both considered to be analogous to the claimed invention because they are in the same field of computer databases. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Sederberg in view of Azure, Oracle, and Abadzhimarinov to incorporate the teachings of Babka and provide utilizing a façade pattern to determine one or more virtual machines allocated to the data subcluster according to an alias of the data subcluster. Doing so would help allow for abstracting the database operations from the client, so that the client does not have to know the complex inner workings of the database (Babka discloses, “Thus, the present embodiments permit legacy database clients to utilize databases having contextual and versioned data, without needing to rewrite the database client code to make it context and version aware,” ¶ 0014.).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Manousakis (US 20210318745 A1): Managing Power Resources for Pools of Virtual Machines
Any inquiry concerning this communication or earlier communications from the examiner should be directed to ANDREW SUN whose telephone number is (571)272-6735. The examiner can normally be reached Monday-Friday 8:00-5:00.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Aimee Li can be reached at (571) 272-4169. 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.
/ANDREW NMN SUN/Examiner, Art Unit 2195
/Aimee Li/Supervisory Patent Examiner, Art Unit 2195