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 .
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP §§ 706.02(l)(1) - 706.02(l)(3) for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/process/file/efs/guidance/eTD-info-I.jsp.
Claims 1, 6-8, 13-15 and 20 are rejected on the ground of nonstatutory obviousness type double patenting as being unpatentable over claim 1 of U.S. Patent No. US12298959B2. Although the claims at issue are not identical, they are not patentably distinct from each other because they are obvious variants of each other.
The chart below shows the correspondence between the claims in the current application and the patent claims.
Current Application (19/207,063)
U.S. Patent No. US12298959B2
1. A computer-implemented method comprising: receiving, by a multi-tenant computer system storing records for multiple tenants, a query requesting records for a first tenant, wherein the system stores fixed global fields common to the multiple tenants in a main storage system
and stores custom fields specific to each tenant of a custom field storage system;
obtaining global partial query results for the first tenant from the main storage system;
obtaining custom partial query results for the first tenant from the custom field storage system;
generating merged results from the global partial query results and the custom partial query results; and providing the merged results in response to the query.
1. 1. A multi-tenant system, comprising: receive a query associated with the particular tenant…
a main storage system, the main storage system including: a monolithic database configured to store global records associated with one or more global objects, each global object of the one or more global objects including fixed global fields common for all tenants of the multi-tenant system,
a custom object database configured to store… one or more custom fields for an individual tenant of the tenants of the multi-tenant system, the one or more custom fields augmenting the fixed global fields on behalf of the individual tenant, the custom object database configured to store a particular custom record associated with a particular custom object
use a global object map to generate one or more global record fetch requests for one or more relevant global records from the monolithic database in response to the query,
to use the particular custom object map to generate one or more custom record fetch requests for one or more relevant custom records from the custom object database in response to the query,
generate a query response in response to the query based on the one or more relevant global records and the one or more relevant custom records
6. The method of claim 1, further comprising: maintaining a custom object map for each tenant of the multiple tenants,
wherein each custom object map indicates where to obtain custom query results for each tenant,
wherein obtaining the custom partial query results for the first tenant from the custom field storage system comprises directing a custom query based on the custom object map for the first tenant.
1. the custom object metadata service further configured to generate a particular custom object map, the particular custom object map identifying the one or more particular custom fields of the particular custom object for the particular tenant; and… to use the particular custom object map to generate one or more custom record fetch requests for one or more relevant custom records from the custom object database in response to the query, and to generate a query response in response to the query based on the one or more relevant global records and the one or more relevant custom records,
7. The method of claim 6, further comprising: maintaining a global object map for all of the multiple tenants, wherein the global object map indicates where to obtain global query results for the multiple tenants, wherein obtaining the global partial query results for the first tenant from the main storage system comprises directing a query based on the global object map.
1. to use a global object map to generate one or more global record fetch requests for one or more relevant global records from the monolithic database in response to the query… and to generate a query response in response to the query based on the one or more relevant global records and the one or more relevant custom records, the global object map identifying the one or more particular global object fields of the particular global object for the particular tenant.
Each patent claim in the above chart contains all the limitations recited in the corresponding claim of the current application. In other words, each patent claim is either 1) narrower than or 2) substantially equivalent to the corresponding claim of the instant application. It would have been obvious to a person of ordinary skill in the data processing art at the time the invention was made to omit elements when the remaining elements perform as before. A person of ordinary skill could have arrived at the present claims by omitting the details of the patent claims. See In re Karlson (CCPA) 136 USPQ 184, decided January 16, 1963 (“Omission of element and its function in combination is obvious expedient if remaining elements perform same functions as before.”).
Regarding claim 1, ‘US12298959B2 ‘ discloses the features of claim 1 of the instant application as shown above,
However ‘US12298959B2 ‘does not recite “
“in respective custom field databases”, “identifying a first custom field database specific to the first tenant;”
However Becker discloses:
in respective custom field databases
(Becker , Fig. 2, TENANT DB 222A; TENANT DB 222B [0061] Tenant database 222 may contain tenant-specific data structures 224 defining parameters of, for example, a tenant-specific environment and tenant-specific application environment; [0109] tenant database 222 may include tenant-specific data structures 224… tenant database 222 may store its own physical copy of tenant template 808 containing tenant-specific
data structures 224 and table links 225)
identifying a first custom field database specific to the first tenant;
(Becker , Fig. 2, TENANT DB 222A; TENANT DB 222B [0061] Tenant database 222 may contain tenant-specific data structures 224 defining parameters of, for example, a tenant-specific environment and tenant-specific application environment; [0109] tenant database 222 may include tenant-specific data structures 224… tenant database 222 may store its own physical copy of tenant template 808 containing tenant-specific
data structures 224 and table links 225)
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of ‘‘US12298959B2 ‘’ with the teaching of Becker, in order to access all data necessary for executing a hosted business application by either accessing tenant-specific data structure directly via tenant server or by accessing shared data via tenant server and table links (Becker Para. 0065)
Claims 8 and 15 correspond to claim 1, and are rejected accordingly.
Claims 13 and 20 correspond to claim 6, and are rejected accordingly.
Claim 14 corresponds to claim 7, and is rejected accordingly.
Claims 1, 6-8, 13-15 and 20 are rejected on the ground of nonstatutory obviousness type double patenting as being unpatentable over claim 1 of U.S. Patent No. US11615066B2. Although the claims at issue are not identical, they are not patentably distinct from each other because they are obvious variants of each other.
The chart below shows the correspondence between the claims in the current application and the patent claims.
Current Application (19/207,063)
U.S. Patent No. US11615066B2
1. A computer-implemented method comprising: receiving, by a multi-tenant computer system storing records for multiple tenants, a query requesting records for a first tenant, wherein the system stores fixed global fields common to the multiple tenants in a main storage system
and stores custom fields specific to each tenant of a custom field storage system;
obtaining global partial query results for the first tenant from the main storage system;
obtaining custom partial query results for the first tenant from the custom field storage system;
generating merged results from the global partial query results and the custom partial query results; and providing the merged results in response to the query.
1. A multi-tenant system, comprising: receive a query associated with the particular tenant…
a main storage system, the main storage system including: a monolithic database configured to store global records associated with one or more global objects, each global object of the one or more global objects including global fields common for all tenants of the multi-tenant system,
a custom object database configured to store…one or more custom fields for a tenant of the tenants of the multi-tenant system, the custom object database configured to store a particular custom record associated with a particular custom object in response to a particular custom record storage request and to retrieve the particular custom record in response to a particular custom record fetch request;
to use a global object map and the particular custom object map to generate one or more custom record fetch requests for one or more relevant custom records from the custom object database in response to the query
to use a global object map and the particular custom object map to generate one or more custom record fetch requests for one or more relevant custom records from the custom object database in response to the query, and to generate a query response in response to the query based on the one or more relevant global records and the one or more relevant custom records,
6. The method of claim 1, further comprising: maintaining a custom object map for each tenant of the multiple tenants, wherein each custom object map indicates where to obtain custom query results for each tenant,
wherein obtaining the custom partial query results for the first tenant from the custom field storage system comprises directing a custom query based on the custom object map for the first tenant.
1. to use a global object map and the particular custom object map to generate one or more custom record fetch requests for one or more relevant custom records from the custom object database in response to the query, and to generate a query response in response to the query based on the one or more relevant global records and the one or more relevant custom records,
7. The method of claim 6, further comprising: maintaining a global object map for all of the multiple tenants, wherein the global object map indicates where to obtain global query results for the multiple tenants, wherein obtaining the global partial query results for the first tenant from the main storage system comprises directing a query based on the global object map.
1. to use a global object map and the particular custom object map to generate one or more global record fetch requests for one or more relevant global records from the monolithic database in response to the query, to use a global object map and the particular custom object map to generate one or more custom record fetch requests for one or more relevant custom records from the custom object database in response to the query, and to generate a query response in response to the query based on the one or more relevant global records and the one or more relevant custom records, the global object map identifying the one or more particular global object fields of the particular global object.
Each patent claim in the above chart contains all the limitations recited in the corresponding claim of the current application. In other words, each patent claim is either 1) narrower than or 2) substantially equivalent to the corresponding claim of the instant application. It would have been obvious to a person of ordinary skill in the data processing art at the time the invention was made to omit elements when the remaining elements perform as before. A person of ordinary skill could have arrived at the present claims by omitting the details of the patent claims. See In re Karlson (CCPA) 136 USPQ 184, decided January 16, 1963 (“Omission of element and its function in combination is obvious expedient if remaining elements perform same functions as before.”).
Regarding claim 1, ‘US11615066B2 ‘ discloses the features of claim 1 of the instant application as shown above,
However ‘US11615066B2 ‘does not recite “
“in respective custom field databases”, “identifying a first custom field database specific to the first tenant;”
However Becker discloses:
in respective custom field databases
(Becker , Fig. 2, TENANT DB 222A; TENANT DB 222B [0061] Tenant database 222 may contain tenant-specific data structures 224 defining parameters of, for example, a tenant-specific environment and tenant-specific application environment; [0109] tenant database 222 may include tenant-specific data structures 224… tenant database 222 may store its own physical copy of tenant template 808 containing tenant-specific
data structures 224 and table links 225)
identifying a first custom field database specific to the first tenant;
(Becker , Fig. 2, TENANT DB 222A; TENANT DB 222B [0061] Tenant database 222 may contain tenant-specific data structures 224 defining parameters of, for example, a tenant-specific environment and tenant-specific application environment; [0109] tenant database 222 may include tenant-specific data structures 224… tenant database 222 may store its own physical copy of tenant template 808 containing tenant-specific
data structures 224 and table links 225)
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of ‘‘US11615066B2 ‘’ with the teaching of Becker, in order to access all data necessary for executing a hosted business application by either accessing tenant-specific data structure directly via tenant server or by accessing shared data via tenant server and table links (Becker Para. 0065)
Claims 8 and 15 correspond to claim 1, and are rejected accordingly.
Claims 13 and 20 correspond to claim 6, and are rejected accordingly.
Claim 14 corresponds to claim 7, and is rejected accordingly.
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-20 are rejected under 35 U.S.C. 103 as being unpatentable over Weissman et al. (US 2016/0267294, hereinafter Weissman) in view of Becker et al. (US 2008/0162491, hereinafter Becker) in further view of RAJAN et al. (US 2014/0081950 Al, hereinafter RAJAN)
Regarding claim 1, Weissman discloses: A computer-implemented method comprising: receiving, by a multi-tenant computer system storing records for multiple tenants, (Weissman, [0028], e.g. multi-tenant database system refers to those systems in which various elements of hardware and software of the database system may be shared by one or more customers. For example, a given application server may simultaneously process requests for a great number of customers, and a given database table may store rows for a potentially much greater number of customers; [0032] Some on-demand database services may store information from one or more tenants stored into tables of a common database image to form a multi-tenant database system (MTS))
a query requesting records for a first tenant, (Weissman , Fig. 4; [0072], a request to access a first custom object ( e.g. custom object 470) is received from a user associated with a first tenant; [0053] a custom object represented as a custom entity table 400 ;Para. 0009, 0048, 0061, 0078, 0088, e.g. process the request for information received in the query and send to the user system information relevant to the request, sending one or more queries to tenant data storage and/or system data storage. System (e.g., an application server in system) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information. System data storage may generate query plans to access the requested data from the database, the requested data of the first custom object to which the user can access is sent to the user. The requested data may be the result of a query with filter predicates that provide a selection of the data desired; [0028] a given database table may store rows for a potentially much greater number of customers)
wherein the system stores fixed global fields common to the multiple tenants in a main storage system (Weissman, Figs. 1, 2, item 24, system data storage/db, Fig. 3; see also Becker Fig. 2; [0050] the main table 200 (.account) represents a standard Account entity …Data table 200 also includes a plurality of pre-defined data columns (corresponding to “fixed global fields “); [0049] In some multi-tenant database systems, standard entity tables might be provided for use by all tenants; For CRM database applications, such standard entities might include tables for Account, Contact, Lead, and Opportunity data, each containing pre-defined fields. It should be understood that the word "entity" may also be used interchangeably herein with "object" and "table") [0037] system data storage 24 for system data 25 accessible to system 16 and possibly multiple tenants; Para. 0009, 0037, 0038, 0045, 0049)
and stores custom fields specific to each tenant of a custom field storage system; (Weissman, Figs. 1, 2, Para. 0013, 0052-0054,0058, e.g. The database stores data specific to each one of a plurality of tenants, an organization using the standard entities provided by the system may desire that one or more new entities be created to specifically cater to, and to facilitate data storage and retrieval for, that organization's particular business model. Accordingly, in some multi-tenant database systems, tenants may be allowed to create and store custom objects, a custom object represented as a custom entity table in an embodiment. Table includes an org id column, a custom entity id column and a plurality of custom field columns. Custom fields may also be defined for custom entities, and where desired, custom fields may be flagged for indexing, as described above. Once custom fields are defined for the custom entity, the organization can begin to use that custom entity like any other standard entity. For example, all API operations (e.g., describe, insert, update, delete, query, search) are available and the organization may define a user interface for editing that custom entity in an online application)… custom entity table is stored in a single custom entity table 400 along with other custom entity tables defined by that organization as well as other organizations;
identifying a first custom field database specific to the first tenant;
(Weissman, [0012] The key for a requested custom object is identified and then
used so that only an appropriate portion of a custom entity share table is searched to locate access information ;Figs. 1, 2, Para. 0013, 0052-0054,0058, e.g. The database stores data specific to each one of a plurality of tenants, an organization using the standard entities provided by the system may desire that one or more new entities be created to specifically cater to, and to facilitate data storage and retrieval for, that organization's particular business model. Accordingly, in some multi-tenant database systems, tenants may be allowed to create and store custom objects, a custom object represented as a custom entity table in an embodiment. Table includes an org id column, a custom entity id column and a plurality of custom field columns. Custom fields may also be defined for custom entities, and where desired, custom fields may be flagged for indexing, as described above. Once custom fields are defined for the custom entity, the organization can begin to use that custom entity like any other standard entity. For example, all API operations (e.g., describe, insert, update, delete, query, search) are available and the organization may define a user interface for editing that custom entity in an online application);
obtaining global partial query results for the first tenant from the main storage system; (Weissman, Figs. 1, 2, item 24, system data storage/db; [0048] sending one or more queries to tenant data storage 22 and/or system data storage 24. System 16 (e.g., an application server 100 in system 16) automatically generates one or more SQL statements ( e.g., one or more SQL queries) that are designed to access the desired information; [0087] The query improver retrieves and processes the appropriate tables when preparing improved SQL queries ; [0078] The requested data may be the result of a query with filter predicates that provide a selection of the data desired; [0079]-[0080], e.g. the query optimizer will choose between accessing the custom entity share table 600 from the user side (i.e., Engineering or Bridge) or the entity side (i.e., "oodl" and/or "a0l") of the relationship; [0088], e.g. retrieve all of the data in those rows and then apply any desired filters to the data in the selected rows; [0037] system data storage 24 for system data 25 accessible to system 16 and possibly multiple tenants; Para. 0009, 0037, 0038, 0045, 0049, A user system might remotely access one of a plurality of server systems that might in turn access the database system. Data retrieval from the system might include the issuance of a query from the user system to the database system. The database system might process the request for information received in the query and send to the user system information relevant to the request. In some multi-tenant database systems, standard entity tables might be provided for use by all tenants. For CRM database applications, such standard entities might include tables for Account, Contact, Lead, and Opportunity data, each containing pre-defined fields. It should be understood that the word "entity" may also be used interchangeably herein with "object" and "table");
obtaining custom partial query results for the first tenant from the custom field storage system; (Weissman , Para. 0009, 0048, 0061, 0078, 0088, e.g. process the request for information received in the query and send to the user system information relevant to the request, sending one or more queries to tenant data storage and/or system data storage. System (e.g., an application server in system) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information. System data storage may generate query plans to access the requested data from the database, the requested data of the first custom object to which the user can access is sent to the user. The requested data may be the result of a query with filter predicates that provide a selection of the data desired).
generating results from the global partial query results and the custom partial query results; and providing the results in response to the query.
(Weissman , Para. 0009, 0048, 0061, 0078, 0088, e.g. process the request for information received in the query and send to the user system information relevant to the request, sending one or more queries to tenant data storage and/or system data storage. System (e.g., an application server in system) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information. System data storage may generate query plans to access the requested data from the database, the requested data of the first custom object to which the user can access is sent to the user. The requested data may be the result of a query with filter predicates that provide a selection of the data desired).
However Weissman does not clearly disclose:
to each tenant in respective custom field databases; generating merged results from the global partial query results and the custom partial query results; and providing the merged results in response to the query.
However Becker discloses:
to each tenant in respective custom field databases
(Becker , Fig. 2, TENANT DB 222A; TENANT DB 222B [0061] Tenant database 222 may contain tenant-specific data structures 224 defining parameters of, for example, a tenant-specific environment and tenant-specific application environment; [0109] tenant database 222 may include tenant-specific data structures 224… tenant database 222 may store its own physical copy of tenant template 808 containing tenant-specific
data structures 224 and table links 225)
generating merged results from the global partial query results and the custom partial query results; and providing the merged results in response to the query.
(Becker , Figs. 1, 6, Para. 0065, 0114-0118, it may be necessary for a tenant application executed by a tenant server to access shared data structures through the use of table links. Accordingly, tenant server may access tenant-specific data structures in tenant database and shared data structures in provider database. Tenant stations may access the tenant space and, in response, receive data from either the tenant-specific data structures or shared data structures. More particularly, tenant server, at the request of tenant station, may query tenant database. If the query references tenant-specific data structures, the information is retrieved directly from tenant database. If the query references shared data structures, the request is redirected by table links and, based on the location data of the table link associated with the requested data structure, retrieved from provider database).
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Weissman with the teaching of Becker, in order to access all data necessary for executing a hosted business application by either accessing tenant-specific data structure directly via tenant server or by accessing shared data via tenant server and table links (Becker Para. 0065).
However Weissman in view of Becker does not clearly disclose:
generating merged results from the global partial query results and the custom partial query results; and providing the merged results in response to the query.
However RAJAN discloses:
generating merged results from the global partial query results and the custom partial query results; and providing the merged results in response to the query. (RAJAN, [0038]-[0040], e.g. the query engine parses the query, 410, identifying subqueries within the query; Query optimizations can include a join of the inner query results to the main query; the system ( e.g., via the query optimizer and/or the query engine) can apply the remainder of the query against the general database table to generate the complete results of the query; applying the custom index, filtering the results, and combining the filtered results with other results can be considered to be a join operation. The operation can be considered an inner query join. Thus, the query engine can apply one or more custom indexes against one or more inner queries and combine the results of the inner query or queries with the outer query information to generate results for the query, 424. The query engine can then return the results of the query to the user, 426; [0028] a general table having account information for multiple clients, and a custom index having a subset of information [0030], e.g. custom index 230 includes data specific to only one client or one tenant of the database system. Thus, whereas table 220 includes multiple accounts, custom index 230 can be restricted to entries for a single account or tenant ID.)
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Weissman in view of Becker with the teaching of RAJAN, in order to reduce an amount of time and/or processing resources required to process a query (RAJAN, [0031]) and also to maintain the context of the query and apply optimizations available for processing the query, (RAJAN, [0015]).
Claims 8 and 15 correspond to claim 1, and are rejected accordingly.
Regarding claim 2, Weissman in view of Becker in view of RAJAN discloses all of the features with respect to claim 1 as outlined above. Claim 2 further recites: wherein the custom fields specific to each tenant are defined by each respective tenant.
(Weissman, Figs. 1, 2, Para. 0013, 0052-0054,0058, e.g. The database stores data specific to each one of a plurality of tenants, an organization using the standard entities provided by the system may desire that one or more new entities be created to specifically cater to, and to facilitate data storage and retrieval for, that organization's particular business model. Accordingly, in some multi-tenant database systems, tenants may be allowed to create and store custom objects, a custom object represented as a custom entity table in an embodiment. Table includes an org id column, a custom entity id column and a plurality of custom field columns. Custom fields may also be defined for custom entities, and where desired, custom fields may be flagged for indexing, as described above. Once custom fields are defined for the custom entity, the organization can begin to use that custom entity like any other standard entity. For example, all API operations (e.g., describe, insert, update, delete, query, search) are available and the organization may define a user interface for editing that custom entity in an online application);
Claims 9 and 16 correspond to claim 2, and are rejected accordingly.
Regarding claim 3, Weissman in view of Becker in view of RAJAN discloses all of the features with respect to claim 2 as outlined above. Claim 3 further recites:
receiving, from the first tenant, a request to create one or more custom fields; and generating, in the first custom field database, the one or more custom fields corresponding to the request received from the first tenant. (Weissman, Figs. 1, 2, Para. 0013, 0052-0054,0058, e.g. The database stores data specific to each one of a plurality of tenants, an organization using the standard entities provided by the system may desire that one or more new entities be created to specifically cater to, and to facilitate data storage and retrieval for, that organization's particular business model. Accordingly, in some multi-tenant database systems, tenants may be allowed to create and store custom objects, a custom object represented as a custom entity table in an embodiment. Table includes an org id column, a custom entity id column and a plurality of custom field columns. Custom fields may also be defined for custom entities, and where desired, custom fields may be flagged for indexing, as described above. Once custom fields are defined for the custom entity, the organization can begin to use that custom entity like any other standard entity. For example, all API operations (e.g., describe, insert, update, delete, query, search) are available and the organization may define a user interface for editing that custom entity in an online application);
Claims 10 and 17 correspond to claim 3, and are rejected accordingly.
Regarding claim 4, Weissman in view of Becker in view of RAJAN discloses all of the features with respect to claim 1 as outlined above. Weissman in view of Becker does not clearly disclose: wherein obtaining custom partial query results for the first tenant from the custom field storage system comprises: providing, by a query engine, a request to a custom service connector associated with the first tenant; providing, by the custom service connector to the first custom field database specific to the first tenant, a request for the partial query results; and receiving, by the query engine, the partial query results from the custom service connector associated with the first tenant.
However RAJAN discloses:
wherein obtaining custom partial query results for the first tenant from the custom field storage system comprises: providing, by a query engine, a request to a custom service connector associated with the first tenant; (RAJAN, [0035] query engine 312 identifies custom index 324 to a query optimizer (corresponding to “a custom service connector “)330 when it provides a query to the query optimizer.; [0032] each query optimizer 212 is a process or module separate from query engine 210, such as a process called or invoked by query engine 210. In one embodiment, invoking the query optimizer by query engine 210 includes providing an indication of custom index 230; [0034], e.g. a query optimizer 330 (330-0 through 330-(N-1)) for each database 340 (340-0 through 340-(N-1))…each query optimizer 330 includes interface GT to interface with global table 322, and interface CI to interface with one or more custom index 324)
providing, by the custom service connector to the first custom field database specific to the first tenant, a request for the partial query results; (RAJAN (US 2014/0081950 Al) [0034], e.g. a query optimizer 330 (330-0 through 330-(N-1)) for each database 340 (340-0 through 340-(N-1))…each query optimizer 330 includes interface GT to interface with global table 322, and interface CI to interface with one or more custom index 324; [0081] tenants may be allowed to create and store custom objects, or they may be allowed to customize standard entities or objects, for example by creating custom fields for standard objects, including custom index fields; [0018]-[0021])
and receiving, by the query engine, the partial query results from the custom service connector associated with the first tenant. (RAJAN [0040], e.g. the query engine provides an indication of the custom index ( e.g., identifying a location, or processing condition, or other way to indicate) to a query optimizer. The query optimizer can then apply the custom index. However, the custom index is applied, it can operate to filter the query by applying the custom index to the inner query, reducing the amount of data that needs to be searched to generate results for the query, 420…applying the custom index, filtering the results, and combining the filtered results with other results…The query engine can then return the results of the query to the user, 426)
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Weissman in view of Becker with the teaching of RAJAN, in order to reduce an amount of time and/or processing resources required to process a query (RAJAN, [0031]) and also to maintain the context of the query and apply optimizations available for processing the query, (RAJAN, [0015]).
Claims 11 and 18 correspond to claim 4, and are rejected accordingly.
Regarding claim 5, Weissman in view of Becker in view of RAJAN discloses all of the features with respect to claim 1 as outlined above. Weissman in view of Becker does not clearly disclose:
wherein each custom service connector executes on a separate query node of the multi-tenant computer system.
However RAJAN discloses:
wherein each custom service connector executes on a separate query node of the multi-tenant computer system. (RAJAN, Fig. 3, QUERY OPTIMIZER 330-0…QUERY OPTIMIZER 330-/N-1); [0034] system 300 includes a query optimizer (corresponding to “a custom service connector “) 330 (330-0 through 330-(N-1)) for each database 340 (340-0 through 340-(N-1)). In one embodiment, each query optimizer 330 includes interface GT to interface with global table 322, and interface CI to interface with one or more custom index 324; [0036] The custom index can be specific to one client or one tenant of the database system; [0031] query engine 210 includes a query optimizer 212 for each of multiple databases or data stores that are part of the database system)
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Weissman in view of Becker with the teaching of RAJAN, in order to reduce an amount of time and/or processing resources required to process a query (RAJAN, [0031]) and also to maintain the context of the query and apply optimizations available for processing the query, (RAJAN, [0015]).
Claims 12 and 19 correspond to claim 5, and are rejected accordingly.
Regarding claim 6, Weissman in view of Becker in view of RAJAN discloses all of the features with respect to claim 1 as outlined above. Claim 6 further recites:
maintaining a custom object map for each tenant of the multiple tenants, wherein each custom object map indicates where to obtain custom query results for each tenant, wherein obtaining the custom partial query results for the first tenant from the custom field storage system comprises directing a custom query based on the custom object map for the first tenant. (Weissman, Fig. 1, Para. 0040, 0045, 0053-0056), e.g. [0045] each application server 100 is configured to handle requests for any user associated with any organization that is a tenant… the load balancer uses a least connections algorithm to route user requests to the application servers 100; [0053] FIG. 4 illustrates an example of a custom object represented as a custom entity table 400 in an embodiment. Table 400 includes an org id column 401, a custom entity id column 402 and a plurality of custom field columns 403 (labeled "val0", "val1", ... ). At least one of the custom field columns 403 has a data type defined (specified) by the organization associated with the custom entity; [0054] Custom entity id column 402 is used to distinguish among the various custom entity tables stored in table 400; Para. 0009, 0048, 0061, 0078, 0088, e.g. process the request for information received in the query and send to the user system information relevant to the request, sending one or more queries to tenant data storage and/or system data storage. System (e.g., an application server in system) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information. System data storage may generate query plans to access the requested data from the database, the requested data of the first custom object to which the user can access is sent to the user. The requested data may be the result of a query with filter predicates that provide a selection of the data desired)
Weissman does not clearly disclose:
directing a custom query based on the custom object map for the first tenant.
However Becker discloses:
directing a custom query based on the custom object map for the first tenant. (Becker, [0106] Lookup table 1150 may be stored tenant database 222. [0108] Lookup table 1150 may include the names of shared data structures 214 as mapped to the related table links 225; Fig. 13, item 1315, determine which table link is related to the requested data; item 1320, TRANSMIT QUERY TO PROVIDER DATABASE; [0105] A table link 225 may thus include an alternative name for a data structure and a logical connection to that data structure; [0103]-[0106]; [0109], tenant database 222 may include tenant-specific data structures 224…tenant database 222 may store its own physical copy of tenant template 808 containing tenant-specific data structures 224 and table links 225, those tale links 225 may be available for any query made to tenant database 222. Additionally, because a copy of tenant template 808 may also be stored in provider database 212, those table links 225 may also be available to any query made from tenant database 222 to provider database 212.
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Weissman with the teaching of Becker, in order to access all data necessary for executing a hosted business application by either accessing tenant-specific data structure directly via tenant server or by accessing shared data via tenant server and table links (Becker Para. 0065).
Claims 13 and 20 correspond to claim 6, and are rejected accordingly.
Regarding claim 7, Weissman in view of Becker in view of RAJAN discloses all of the features with respect to claim 6 as outlined above. Claim 6 further recites: maintaining a global object map for all of the multiple tenants, wherein the global object map indicates where to obtain global query results for the multiple tenants, wherein obtaining the global partial query results for the first tenant from the main storage system comprises directing a query based on the global object map. (Weissman Para. 0050-0051; [0049] standard entity tables might be provided for use by all tenants; [0051], e.g. The org id column 201 is provided to distinguish among organizations using the multi-tenant account table 200. As shown, N different organizations have data stored in table 200; [0048] sending one or more queries to tenant data storage 22 and/or system data storage 24. System 16 (e.g., an application server 100 in system 16) automatically generates one or more SQL statements ( e.g., one or more SQL queries) that are designed to access the desired information; [0079]-[0080], e.g. the query optimizer will choose between accessing the custom entity share table 600 from the user side (i.e., Engineering or Bridge) or the entity side (i.e., "oodl" and/or "a0l") of the relationship; [0088], e.g. retrieve all of the data in those rows and then apply any desired filters to the data in the selected rows;)
However Weissman does not clearly disclose:
comprises directing a query based on the global object map
However Becker discloses:
comprises directing a query based on the global object map
(Becker, [0106] a set of shared data structures 214 may be mapped to table links 225; [0108] Lookup table 1150 may include the names of shared data structures 214 as mapped to the related table links 225; Fig. 13, item 1315, determine which table link is related to the requested data; item 1320, TRANSMIT QUERY TO PROVIDER DATABASE; [0105] A table link 225 may thus include an alternative name for a data structure and a logical connection to that data structure. The logical connection may be any reference that will allow tenant station 130 to access shared data structures 214 located in provider database 212; [0068] shared-metadata 217 informing tenant server 114 of the location of the shared data structures 214 within the provider space 310. Accordingly, tenant server 114 may access the shared data 214 by requesting the data directly from provider space 310 based on the shared metadata 217; [0069] redirect the server request to the corresponding shared data structure 214 in provider database)
Therefore, it would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the teaching of Weissman with the teaching of Becker, in order to access all data necessary for executing a hosted business application by either accessing tenant-specific data structure directly via tenant server or by accessing shared data via tenant server and table links (Becker Para. 0065).
Claim 14 corresponds to claim 7, and is rejected accordingly.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Faezeh Forouharnejad whose telephone number is (571)270-7416. The examiner can normally be reached on generally Monday, Wednesday and Thursday.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Shah Sanjiv 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 Patent Center and the Private Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from Patent Center or Private PAIR. Status information for unpublished applications is available through Patent Center and Private PAIR to authorized users only. Should you have questions about access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free)
/F.F. /
Examiner, Art Unit 2166
/SANJIV SHAH/ Supervisory Patent Examiner, Art Unit 2166