Invented by David Brooks, Lewis Wiley Tucker, Benji Jasik, Timothy Mason, Eric David Bezar, Simon Wong, Douglas Chasman, Tien Tzuo, Scott Hansma, Adam Gross, Steven Tamm, Salesforce Inc
The Salesforce Inc invention works as followsA computer-implemented method for developing computer applications. The method comprises providing multiple users with access, via a network to information in a datacenter, where a subgroup has access to an information sub-portion different from that accessible by other tenants of the group; and communicating across the datacenter over the internet using a computer associated with the user of the aforementioned sub-group, to establish application functionality. A data center and a machine-readable media are also disclosed, which both facilitate the carrying out of the steps in the method.
Background for Application Directory for a Multi-User Computer System Environment
Not long after they invented numbers and a system of writing, the early humans realized they had created information. The creation of information brought with it a problem which would plague humankind for several millennia to come: how to manage and store the information.
Fortunately, early humans created a relatively small amount of data that could be tracked with ten fingers and 10 toes. When a permanent record was required, stone or clay tablets could be used to store information. Moses was a well-known early user of this method, who used two stone tablets to store the Ten Commandments. These mechanisms, however, were restricted to write-once-read-many implementations, and their capacity was tightly constrained.
The Gutenberg printing press allowed for the storage of large quantities of data and the production of copies in mass. These mechanisms were also limited to write-once-read-many implementations but they helped spread knowledge and accelerated technical progress. Some centuries later, computer software and database systems were developed. The computer database offered large-capacity, read-write storage in an easily accessible package. It seemed that the age-old problem of information management and storage had been finally solved.
Computer databases are plagued with numerous problems. Each business, organization or agency installs their own copy of the databases. Users soon began to want to add custom objects and applications in addition to those already available. This desire for customization led to disparate schemas, which is an organization of types of information stored in a database. It also led to applications that were based on this schema being implemented by users. The disparate schema prevented users from sharing applications or information between different organizations.
A computer-implemented method for developing computer applications. The method comprises providing multiple users with access, via a network to information in a datacenter, where a subgroup has access to an information sub-portion different from that accessible by other tenants of the group; communicating with the datacenter over the networking using a computer associated with a member of the subgroup to establish application functionalities with the subportion that can be accessed by authorized parties over the network. A data center and a machine-readable media are also disclosed, which both facilitate the execution of the method. Below are descriptions of these and other embodiments.
Referring to the remainder of the specification including the drawings and the claims will reveal other features and benefits of the invention. Below, we describe in detail the features and benefits of the invention as well as its structure and operation. “In the drawings, similar reference numbers denote identical or functionally related elements.
In some embodiments, this invention offers systems and methods to create and exchange customized applications within a database system with multiple tenants.
Customers may want to add custom objects and applications in addition to standard objects and standard apps already provided. In a client/server application where the customer owns its own database, adding custom object is usually done using DDL (data description language) to create new physical schema tables and columns. This approach is not feasible in an online database system with multiple tenants for a variety of reasons. In a database with many tenants (e.g. on the order 1,000 or 10,000 tenants or more), the union of the desired schemas would overwhelm the data dictionary catalog. DBAs would also be burdened with the maintenance of each of these schema objects, which is a near impossible task. Furthermore, relational databases are not able to support online DDL in a high-speed transactional system well enough for an organization to maintain logical independence. The creation of a schema by one company could cause unacceptable delays for other customers.
FIG. FIG. 1 shows an example of a database system that could be used by multiple tenants. As shown in FIG. As shown in FIG. Users of these user systems 12 may have different capacities, and the capacity of any particular user system 12 could be determined entirely by the permissions (permission level) of the current user. When a salesperson uses a user system 12 to communicate with MTS 16, the user system will have the capacity assigned to that particular salesperson. While an administrator uses that user system to interact with MTS 16, the user system will have the capacities allocated to that administrator. “Different users will have different abilities to modify and access application and database data, including tab, tab set, and profile definitions, depending on their permission levels.
Network 14″ can be a TCP/IP (Transfer Control Protocol and Internet Protocol) network such as the global internetwork of networks often referred to as the?Internet?. The most popular type of network is TCP/IP, which stands for Transfer Control Protocol and Internet Protocol. This includes the global network of networks commonly referred to by the name ‘Internet. The Internet is spelled with a capital “I”. This will be the case in many examples. “However, the invention may use other networks, even though TCP/IP protocol is currently the preferred one.
User system 12 may communicate with MIS 16 by using TCP/IP, and at a network level may use other Internet protocols, such as HTTP FTP AFS WAP etc. For example, if HTTP is used, the user system 12 may include an HTTP client, also known as a “browser”. Sending and receiving HTTP messages at MTS 16 from an HTTP Server. This HTTP server could be implemented to be the only network interface between MIS 16 & network 14. Other techniques may be used instead or in addition. In some implementations the interface between MIS 16 & network 14 has load-sharing functionality such as round-robin HTTP Request Distributors to distribute incoming HTTP requests equally over a number of servers. Each of the multiple servers can access the MTS data for users who are accessing the server.
The system in Figure 1 has a number of aspects. The web-based Customer Relationship Management (CRM), system implemented in Figure 1, is a web application. In one aspect, MIS 16 may include application servers configured for implementing and executing CRM software applications, as well as providing related data and code to user systems 12, as well as displaying web pages, submitting forms and transferring other information. It can also store data and objects, as web page content, to a database and retrieve them from it. In a multi-tenant environment, data for each tenant is preferably kept logically separated from the data of other tenants. This ensures that no tenant has access to data belonging to another tenant unless it is explicitly shared. System 16 can implement applications that are not CRM-specific, or may be in addition to a CRM-specific application. System 16 can, for example, provide tenants with access to a variety of hosted applications (standard and customized), including a CRM app.
FIG.1 shows a possible arrangement of MTS 16 elements. 1 includes a network interface 20 for tenant data storage, storage 24 for system information accessible to MIS 16 as well as multiple tenants, and program code 26 that implements various functions of MIS 16. It also includes a process area 28 for executing tenant-specific processes as part of a hosting service.
The system in FIG. 1 includes several elements that are well-known and conventional. The elements of FIG. 1 are well-known and conventional. They do not need to be described in detail. Each user system 12 can be a desktop computer, laptop, PDA or cell phone or any other computing devices capable of connecting directly or indirectly to an Internet connection or another network. The user system 12 runs a HTTP client (e.g. a browser) such as Microsoft Internet Explorer, Netscape Navigator, Opera, or any other WAP-enabled program on a mobile phone, PDA, or wireless device. This allows a subscriber to the multi-tenant databases system to view, access and process information from MTS 16, over network 14. The user system 12 typically also includes one or more interface devices such as a touch screen, keyboard, mouse, or pen for interacting the graphical user interface provided by the browser. MTS 16 and/or other systems or servers provide pages, forms, apps, and other information. The user interface device, for instance, can be used to select and set tabs, create and modify apps, and allow the user to interact with various GUI pages. This is described, among others, in U.S. Patent Application Ser. No. No.
As discussed above, this invention can be used with the Internet. The Internet is a global network of networks. It should be noted that, in addition to the Internet, other networks may be used, including an intranet or extranet, virtual private network (VPN), non-TCP/IP network, LAN, WAN, or the like.
Accordingly, according to an embodiment, every MTS 16 has been configured to provide data, media, web pages, applications, forms and other content to the user systems 12, to facilitate their access as tenants to MTS 16. MTS 16 has security features that keep tenant data separate, unless shared. When more than one MTS are used, the servers can be close to each other (e.g. in a server-farm located within a single campus or building) or distributed in different locations (e.g. one or several servers in city A, and another or several servers in city B). Each MTS can include one or multiple logically or physically connected servers that are distributed across one or several geographic locations. The term “server” is also used. The term’server’ is intended to cover a computer system including the processing hardware, process space(s), storage system, and database application. Also, it should be understood that “server system” is a generic term. It should also be understood that?server system? Here, the terms?server? and?computer’ are used interchangeably. The databases described herein may be implemented in a variety of ways, including as a single database, a distribution database, or a collection distributed databases. They can also include redundant online or off-line backups, or other redundancies.
FIG. “FIG. In this example, a network interface is implemented by one or more HTTP Application Servers 100. The system process area 102 is also shown, including individual tenant processes spaces 104. Also, the system database 106 and tenant databases(s) are included. Tenant database(s) 108 can be divided into individual storage areas 112, either physically or logically. In each tenant storage area, user storage 114 could be assigned to each user.
It should be noted that each application servers 100 can be connected to database systems (e.g. system database 106, tenant database(s), etc.) via different network connections. One server 100 1 may be connected via Internet 14, while another server 100N-1 could be linked via a network link. A third server 100N might also be connected via another network connection. The Transfer Control Protocol (TCP/IP), and Internet Protocol are the preferred protocols to communicate between the servers 100 and database system. However, it is obvious to a person skilled in the field that other transport protocol may be used depending on the interconnect used.
Each application server 100 can be configured in aspects to handle requests from any user/organization. It is preferable that there be no server affinity between a particular application server 100 and a user or organization. This is because it is desirable to have the ability to add and remove servers from the pool at any given time. In one embodiment, an interface system, not shown, implementing a function of load balancing (e.g. an F5 BIG-IP load balancer), is communicably connected between the servers and the user systems 12, to distribute requests to servers 100. The load balancer, in one aspect uses the least connections algorithm to direct user requests to servers 100. Load balancing algorithms such as round-robin or observed response time can also be used. In certain aspects, for example, three consecutive requests by the same user may hit three servers and three requests by different users may hit the same server. MTS 16 can be multi-tenant in this way, allowing it to store and manage data, objects and applications for different users and organizations.Click here to view the patent on Google Patents.