Pricing Operation Using Artificial Intelligence for Dynamic Price Adjustment

Embodiments regard pricing operation using artificial intelligence for price adjustment. An embodiment of one or more mediums include instructions for receiving a request at a pricing platform for pricing of sales items in a sales transaction, including a first sales item; generating a price for the first sales item; and determining whether a dynamic price adjustment function is enabled for the first sales item, and, if so, performing the dynamic adjustment price function for the first sales item, including accessing a trained neural network trained for price adjustments based at least in part on training data including news data from one or more sources and data regarding pricing, receiving a dynamic price adjustment for the first sales item from the trained neural network, and applying the dynamic price adjustment to the generated price to produce an adjusted price for the first sales item.

TECHNICAL FIELD

Embodiments relate to techniques for computer operations. More particularly, embodiments relate to pricing operation using artificial intelligence for dynamic price adjustment.

BACKGROUND

In providing support for client operations in a pricing architecture, the architecture is intended to provide assistance. The use of the pricing architecture can provide efficient and effective pricing operations for clients without requiring the design and support of an internal pricing structure for each client.

However, pricing for certain products or services can be affected by many factors that are difficult to incorporated into a conventional pricing service. There may be external factors in the industry, in the general economy, or the world at large that may affect pricing.

If a client wants or needs to take such factors into consideration, the client generally needs to provide price adjustments outside of a general pricing architecture, and is required to relay upon internal data and estimates to determine what price adjustment is needed.

DETAILED DESCRIPTION

In some embodiments, an apparatus, system, or process is to provide dynamic price adjustment using artificial intelligence (AI).

In some embodiments, a system or process for pricing of sales items includes the application of a neural network that is trained to generate dynamic price adjustments, wherein the training of the neural network includes the application of news source data and pricing data to a neural network model to train the neural network to generate dynamic price adjustments. The resulting trained neural network may be utilized to provide an inference operation to generate the price adjustments based one or more news sources, where news sources may include, for example, business news, general news, and social media.

In some embodiments, a dynamic price adjustment function or service enables neural network inference may be based on product demand, sentimental analysis on products, stock market trends, social media mentions, social media influencers, press releases, news articles, and other news data factors to generate appropriate dynamic price adjustments for a particular sales item. The dynamic price adjustment function is to apply machine learning and AI technology to dynamically determine appropriate adjustments to pricing, which may include price discounts and price increases for any particular sales item, or application of a substitute price for the sales item.

In some embodiments, the dynamic price adjustment function may include client setting to further take into account additional factors related to a sales transactions, such as quantity of an order and specifics regarding the delivery of the sales item, in the generation of dynamic price adjustment. For example, the function may recognize that a price adjustment is appropriate with sales of a certain minimum quantity that may not be triggered with a smaller order. Further, the client settings may impose dynamic sales adjustments for certain customers and not others, with, for example, customers providing significant business being excluded from dynamic price adjustment.

In some embodiments, the support for neural network based price adjustment is provided as a part of a pricing infrastructure, with the pricing architecture accessing the trained neural network to obtain inferred price adjustments. The pricing architecture could support operation of the trained neural network, or could access an external network. Neural network training includes input from clients regarding whether to utilize machine learning price adjustment, what news/data sources to access, how much to weigh the pricing adjustments, and other inputs.

A machine learning algorithm is an algorithm that can learn based on a set of data. Embodiments of machine learning algorithms can be designed to model high-level abstractions within a data set. An exemplary type of machine learning algorithm is a neural network. There are many different types of neural networks, including a feedforward network. A feedforward network may be implemented as an acyclic graph in which the nodes are arranged in layers. Typically, a feedforward network topology includes an input layer and an output layer that are separated by at least one hidden layer. The hidden layer transforms input received by the input layer into a representation that is useful for generating output in the output layer. The network nodes are fully connected via edges to the nodes in adjacent layers, but there are no edges between nodes within each layer. Data received at the nodes of an input layer of a feedforward network are propagated (i.e., “fed forward”) to the nodes of the output layer via an activation function that calculates the states of the nodes of each successive layer in the network based on coefficients (referred to as “weights”) respectively associated with each of the edges connecting the layers.

Before a machine learning algorithm can be used to model a particular problem, the algorithm is trained using a training data set. Training a neural network involves selecting a neural network model topology, using a set of training data representing a problem being modeled by the network, and adjusting the weights until the neural network model performs with a minimal error for all instances of the training data set. For example, during a supervised learning training process for a neural network, the output produced by the network in response to the input representing an instance in a training data set is compared to the “correct” labeled output for that instance, an error signal representing the difference between the output and the labeled output is calculated, and the weights associated with the connections are adjusted to minimize that error as the error signal is backward propagated through the layers of the network. The network is considered “trained” when the errors for each of the outputs generated from the instances of the training data set are minimized.

An exemplary type of neural network is a Convolutional Neural Network (CNN). A CNN is a specialized feedforward neural network for processing data having a known, grid-like topology, such as image data. CNNs may be used in, for example, compute vision and image recognition applications, and many other types of pattern recognition such as speech and language processing. The nodes in the CNN input layer are organized into a set of “filters”, and the output of each set of filters is propagated to nodes in successive layers of the network. The computations for a CNN include applying the convolution mathematical operation to each filter to produce the output of that filter. Convolution is a specialized kind of mathematical operation performed by two functions to produce a third function that is a modified version of one of the two original functions. In convolutional network terminology, the first function to the convolution can be referred to as the input, while the second function can be referred to as the convolution kernel. The output may be referred to as the feature map. For example, the input to a convolution layer can be a multidimensional array of data that defines the various color components of an input image. The convolution kernel can be a multidimensional array of parameters, where the parameters are adapted by the training process for the neural network.

Recurrent neural networks (RNNs) are a family of feedforward neural networks that include feedback connections between layers. RNNs enable modeling of sequential data by sharing parameter data across different parts of the neural network. The architecture for a RNN includes cycles. The cycles represent the influence of a present value of a variable on its own value at a future time, as at least a portion of the output data from the RNN is used as feedback for processing subsequent input in a sequence. This feature makes RNNs particularly useful in, for example, language processing due to the variable nature in which language data can be composed.

A deep neural network (DNN), as applied to artificial intelligence (AI) operation, is an artificial neural network that includes multiple neural network layers. Broadly speaking, neural networks operate to spot patterns in data, and provide decisions based on such patterns.

Neural networks may be applied to perform deep learning. Deep learning is machine learning using deep neural networks. The deep neural networks used in deep learning are artificial neural networks composed of multiple hidden layers, as opposed to shallow neural networks that include only a single hidden layer. Deeper neural networks are generally more computationally intensive to train. However, the additional hidden layers of the network enable multistep pattern recognition that results in reduced output error relative to shallow machine learning techniques.

Once a neural network is structured, a learning model can be applied to the network to train the network to perform specific tasks. The learning model describes how to adjust the weights within the model to reduce the output error of the network. Backpropagation of errors is a common method used to train neural networks. An input vector is presented to the network for processing. The output of the network is compared to the desired output using a loss function and an error value is calculated for each of the neurons in the output layer. The error values are then propagated backwards until each neuron has an associated error value which roughly represents its contribution to the original output. The network can then learn from those errors using an algorithm, such as the stochastic gradient descent algorithm, to update the weights of the of the neural network.

In some embodiments, a neural network is trained utilizing training data that relates to news sources and pricing fluctuations, with the output of the neural network being a pricing adjustments for one or more sales items in a sales transaction based on an input of current price conditions, the current price conditions being based at least in part on one or more external data sources.

As used herein, “sales transaction” refers to any sales order or inquiry for one or more sales items, with each sales item including a certain quantity; and “pricing plan” refers to calculations performed to generate pricing for the one or more sales items in a sales transaction.

FIG. 1is an illustration of a computing platform including artificial intelligence to provide dynamic price adjustment for sales transactions, according to some embodiments. As illustrated, a core computing platform100may provide multiple services including, but not limited to, a pricing service120to provide pricing operations for multiple different types of sales operations. The core platform100may include numerous other operations and functions.

The core platform100may include a public application program interface (API)110for connection of multiple different types of clients that may generate operation requests, including requests to the pricing service120. The requests may include business to business (B2B) requests140and configure-price-quote (CPQ) requests142provided within the core platform100, and partner or independent software vendor (ISV) requests144received from outside the core platform100.

The pricing service120in particular includes a getPrice function130to determine pricing for one or more sales items in a sales transaction, the sales items being any combination of goods and services. In a basic operation, the getPrice function for a particular request includes initialization of the pricing operation132, sales price calculation for each sales item of the request134, which may include the application of a particular pricing plan for the sales item, and aggregation of the pricing calculations to generate a pricing output136, which may then be provided to the requesting client.

In some embodiments, the pricing service120further includes a dynamic price adjustment function150, the dynamic price adjustment function including a neural network to provide artificial intelligence in price adjustment. The neural network is trained utilizing one or more data streams to determine dynamic price adjustments based at least in part on current pricing conditions, as further illustrated inFIG. 2. A dynamic price adjustment may include a price increase, a price decrease, or application of a substitute price. In some embodiments, the neural network is within the pricing service120, and in some alternative embodiments the neural network may be an external neural network152outside of the pricing service120.

In some embodiments, the pricing service120further includes access to one or more external news sources160to receive or obtain input data from one or more news sources for the dynamic price adjustment function150. In some embodiments, the pricing service includes one or more client settings155to control operations of the dynamic price adjustment function. For example, the client settings155might enable or disable the operation of the dynamic price adjustment function150for the client or for the purposes of certain sales items or sales customers.

FIG. 2illustrates training and deployment of a neural network to provide dynamic price adjustments in a pricing system according to some embodiments. In some embodiments, an untrained neural network model230in a training framework220is trained using a training dataset210. In some embodiments, the training data set includes news data and pricing data to providing price adjustment training, The training may be as further illustrated inFIG. 3. The training framework220operates to train the untrained neural network230to generate a trained neural network240.

The training may proceed according to known techniques. For example, to commence the training process, initial weights may be chosen randomly or by pre-training. The training cycle then be performed in a supervised manner, supervised learning being a learning method in which training is performed as a mediated operation, such as when the training dataset210includes input paired with the desired output for the input, or where the training dataset includes input having known output and the output of the neural network is manually graded. The network processes the inputs and compares the resulting outputs against a set of expected or desired outputs. Errors are then propagated back through the system. The training framework220can adjust to modify the weights that control the untrained neural network230. The training framework220can provide tools to monitor how well the untrained neural network230is converging towards a model suitable to generating correct answers based on known input data. The training process occurs repeatedly as the weights of the network are adjusted to refine the output generated by the neural network. The training process can continue until the neural network reaches a certain threshold accuracy associated with a trained neural network240. The trained neural network240can then be deployed to implement operations including processing input250to generate an output including dynamic price adjustment260, wherein the dynamic price adjustment relates to a particular sales item. In some embodiments, the output may include a price increase, a price decrease, or a substitute price for a sales item.

FIG. 3is an illustration of training of a neural network to generate dynamic price adjustments according to some embodiments. In some embodiments, an untrained neural network230is trained in a training framework220using a training dataset. In some embodiments, the training data set includes a combination of news data300and pricing data320, the training data being historical data regarding news from varying sources and pricing fluctuations that occurred. In this manner, the neural network230is trained to generate pricing adjustments based on news data to provide for dynamic price adjustment, such as provided by the dynamic price adjustment function150illustrated inFIG. 1.

The news data300may be derived from multiple data sources that may have an affect pricing over time. For example, the news data may include, but is not limited to product demand information310, product analysis information312, social media data314, press releases316, and various new articles318. Each of the news data is chosen as relating to a particular product or products, and which may thus have some impact on pricing over time. The pricing data320then provides information regarding how pricing for a product products trended over time. It is noted that news data300and pricing data320may relate specifically to a certain product, or may relate a class or category of products, or may generally to an industry or broader economy, depending on the needs or desires of a client for price adjustment.

FIG. 4is an illustration neural network inference to generate dynamic price adjustment according to some embodiments. In some embodiments, a neural network240that has been trained to perform dynamic price adjustment, such as the training illustrated inFIG. 4, is applied in dynamic price adjustment, such as provided by the dynamic price adjustment function150illustrated inFIG. 1.

In some embodiments, the trained neural network240receives one or more streams of news data440, wherein the data streams may be obtained from one or more external news sources, such as the external news sources160illustrated inFIG. 1. In some embodiments, inference by the trained neural network240results in an output260, the output being a dynamic price adjustment for a sales item.

The news data streams may include a variety of different news sources, including, but not limited to, financial new data streams450, general news data streams452, social media streams454, and social media influencer streams456.

FIG. 5is a flow chart to illustrate a process for generating a trained neural network for performing dynamic price adjustment according to some embodiments. In some embodiments, a process commences with selection of a neural network model for training502. The model may be any known neural network model for training, such as a form of a convolutional neural network (CNN) or recurrent neural network (RNN). In some embodiments, one or more new data sets are identified and obtained for use in training504, and one or more pricing data sets are identified and obtained for training508.

In some embodiments, the neural network model is then trained utilizing the news data sets and pricing data set as training data510. In some embodiments, there may a determination whether the neural network is providing sufficient accuracy in generating a pricing adjustment output512. If not, the neural network may proceed to further training510in an attempt to converge to a better result. Upon sufficient accuracy being achieved512, a trained neural network is then produced 514. In some embodiments, the trained neural network model is then installed in the dynamic price adjustment function, such as the dynamic price adjustment function150illustrated inFIG. 1.

FIG. 6is a flow chart to illustrate a process for generating a dynamic price adjustment for a sales item utilizing a trained neural network according to some embodiments. In a process, a pricing request for a sales transaction is received620, such as pricing request received at pricing service120illustrated inFIG. 1. The sales transaction may include multiple sales items with each sales item including a certain quantity. In some embodiments, the pricing service is to initialize a sales function622, and select a first sales item of the sales transaction for calculation624. The sales function is to generate a pricing for the sales item626, wherein the pricing determination may include application of a certain pricing plan for the sales item by pricing service120.

In some embodiments, a determination may be whether dynamic price adjustment is enabled for the sales item in the sales transaction630. The enablement or disablement of the pricing for the sales item may be dependent on client settings155as the settings relate to the particular sales item, customer, or other factor. In this manner, any number of the sales items of the sales transaction may be subject to the dynamic price adjustment depending on the particular client settings for the dynamic price adjustment function.

If the dynamic pricing adjustment is enabled, then the process includes receiving or obtaining current news data632, and providing the news data to a trained neural network634, the neural network being trained such as in the process illustrated inFIG. 5. The neural network may be a part of the pricing service, or may be external to the pricing service, such as external neural network152illustrated inFIG. 1. A dynamic price adjustment is then generated by the neural network636, wherein the dynamic adjustment may be a price increase, a price decrease, or application of a substitute price. (The dynamic adjustment may also include no change if no price adjustment is required.) The dynamic price adjustment is then applied to the generated price for the sales item638.

Upon the dynamic modification of the generated price for a sales item638, or upon the determination that the dynamic price adjustment is not enabled for the sales item630, there is a determination whether there are any additional sales items in the sales transaction for price calculation640. If so, the process includes selecting a next sales item of the sales transaction for price calculation642, and returning to generating the pricing for the sales item626. If not, the process proceeds with aggregation of the price of the sales items in the sales transaction644, which includes any pricing that that has been modified by the dynamic price adjustment.

The examples illustrating the use of technology disclosed herein should not be taken as limiting or preferred. The examples are intended to sufficiently illustrate the technology disclosed without being overly complicated and are not intended to illustrate all of the technologies disclosed. A person having ordinary skill in the art will appreciate that there are many potential applications for one or more implementations of this disclosure and hence, the implementations disclosed herein are not intended to limit this disclosure in any fashion.

One or more implementations may be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, a computer readable medium such as a computer readable storage medium containing computer readable instructions or computer program code, or as a computer program product comprising a computer usable medium having a computer readable program code embodied therein.

Other implementations may include a non-transitory computer readable storage medium storing instructions executable by a processor to perform a method as described above. Yet another implementation may include a system including memory and one or more processors operable to execute instructions, stored in the memory, to perform a method as described above.

Implementations may include:

In some embodiments, one or more non-transitory computer-readable storage mediums having stored thereon executable computer program instructions that, when executed by one or more processors, cause the one or more processors to perform operations including receiving a request at a pricing platform for pricing of one or more sales items in a sales transaction, including a first sales item; generating a price for the first sales item; and determining whether a dynamic price adjustment function is enabled for the first sales item, and, if so, performing the dynamic adjustment price function for the first sales item, including accessing a trained neural network, wherein the neural network is trained for price adjustments based at least in part on training data including news data from one or more sources and data regarding pricing, receiving a dynamic price adjustment for the first sales item from the trained neural network, and applying the dynamic price adjustment to the generated price to produce an adjusted price for the first sales item.

In some embodiments, a system includes one or more processors; a memory to store data; and a pricing service to server a plurality of clients, the pricing service including a price function and a dynamic price adjustment function, wherein the pricing service is to receive a request for pricing of a plurality of sales items in a sales transaction, the plurality of sales items including a first sales item; generate a price for the first sales item; and determine whether the dynamic price adjustment function is enabled for the first sales item, and, if so, perform the dynamic adjustment price function for the first sales item, including: access a trained neural network, wherein the neural network is trained for price adjustments based at least in part on training data including news data from one or more sources and data regarding pricing, receive a dynamic price adjustment for the first sales item from the trained neural network, and apply the dynamic price adjustment to the generated price to produce an adjusted price for the first sales item.

In some embodiments, a method includes receiving a request at a pricing platform for pricing of a plurality of sales items in a sales transaction; generating a price for each sales item of the plurality of sales items; and determining whether a dynamic price adjustment function is enabled for each sales item, and, if so, performing the dynamic adjustment price function for the sales item, including accessing a trained neural network, wherein the neural network is trained for price adjustments based at least in part on training data including news data from one or more sources and data regarding pricing, receiving a dynamic price adjustment for the sales item from the trained neural network, and applying the dynamic price adjustment to the generated price to produce an adjusted price for the sales item.

FIG. 7illustrates a block diagram of an environment in which dynamic price adjustment may be implemented according to some embodiments. In some embodiments, the environment710includes a dynamic price adjustment function to apply price adjustments generated by a trained neural network, such as illustrated inFIGS. 1-6, including a pricing service having a dynamic price adjustment function719. The environment710may include user systems712, network714, system716, processor system717, application platform718, network interface720, tenant data storage722, system data storage724, program code726, and process space728. In other embodiments, environment710may not have all of the components listed and/or may have other elements instead of, or in addition to, those listed above.

Environment710is an environment in which an on-demand database service exists. User system712may be any machine or system that is used by a user to access a database user system. For example, any of user systems712can be a handheld computing device, a smart phone, a laptop or tablet computer, a work station, and/or a network of computing devices. As illustrated in hereinFIG. 7and in more detail inFIG. 8, user systems712may interact via a network714with an on-demand database service, such as system716.

An on-demand database service, such as system716, is a database system that is made available to outside users that do not need to necessarily be concerned with building and/or maintaining the database system, but instead may be available for their use when the users need the database system (e.g., on the demand of the users). 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). Accordingly, “on-demand database service716” and “system716” may be used interchangeably herein. A database image may include one or more database objects. A relational database management system (RDMS) or the equivalent may execute storage and retrieval of information against the database object(s). Application platform718may be a framework that allows the applications of system716to run, such as the hardware and/or software, e.g., the operating system. In an embodiment, on-demand database service716may include an application platform718that enables creation, managing and executing one or more applications developed by the provider of the on-demand database service, users accessing the on-demand database service via user systems712, or third-party application developers accessing the on-demand database service via user systems712.

The users of user systems712may differ in their respective capacities, and the capacity of a particular user system712might be entirely determined by permissions (permission levels) for the current user. For example, where a salesperson is using a particular user system712to interact with system716, that user system has the capacities allotted to that salesperson. However, while an administrator is using that user system to interact with system716, that user system has the capacities allotted to that administrator. In systems with a hierarchical role model, users at one permission level may have access to applications, data, and database information accessible by a lower permission level user, but may not have access to certain applications, database information, and data accessible by a user at a higher permission level. Thus, different users will have different capabilities with regard to accessing and modifying application and database information, depending on a user's security or permission level.

User systems712might communicate with system716using TCP/IP and, at a higher network level, use other common Internet protocols to communicate, such as HTTP, FTP, AFS, WAP, etc. In an example where HTTP is used, user system712might include an HTTP client commonly referred to as a “browser” for sending and receiving HTTP messages to and from an HTTP server at system716. Such an HTTP server might be implemented as the sole network interface between system716and network714, but other techniques might be used as well or instead. In some implementations, the interface between system716and network714includes load sharing functionality, such as round-robin HTTP request distributors to balance loads and distribute incoming HTTP requests evenly over a plurality of servers. At least as for the users that are accessing that server, each of the plurality of servers has access to the MTS' data; however, other alternative configurations may be used instead.

One arrangement for elements of system716is shown inFIG. 7, including a network interface720, application platform718, tenant data storage722for tenant data723, system data storage724for system data725accessible to system716and possibly multiple tenants, program code726for implementing various functions of system716, and a process space728for executing MTS system processes and tenant-specific processes, such as running applications as part of an application hosting service. Additional processes that may execute on system716include database indexing processes.

Several elements in the system shown inFIG. 7include conventional, well-known elements that are explained only briefly here. For example, each user system712could include a desktop personal computer, workstation, laptop or tablet computer, smart phone, or any wireless access protocol (WAP) enabled device or any other computing device capable of interfacing directly or indirectly to the Internet or other network connection. User system712typically runs an HTTP client, e.g., a browsing program (also referred to as a web browser or browser), such as Edge or Internet Explorer from Microsoft, Safari from Apple, Chrome from Google, Firefox from Mozilla, or a WAP-enabled browser in the case of a smart phone or other wireless device, or the like, allowing a user (e.g., subscriber of the multi-tenant database system) of user system712to access, process and view information, pages and applications available to it from system716over network714. Each user system712also typically includes one or more user interface devices, such as a keyboard, a mouse, touch pad, touch screen, pen, voice interface, gesture recognition interface, or the like, for interacting with a graphical user interface (GUI) provided by the browser on a display (e.g., a monitor screen, LCD display, etc.) in conjunction with pages, forms, applications and other information provided by system716or other systems or servers. For example, the user interface device can be used to access data and applications hosted by system716, and to perform searches on stored data, and otherwise allow a user to interact with various GUI pages that may be presented to a user. As discussed above, embodiments are suitable for use with the Internet, which refers to a specific global internetwork of networks. However, it should be understood that other networks can be used instead of the Internet, such as an intranet, an extranet, a virtual private network (VPN), a non-TCP/IP based network, any LAN or WAN or the like.

FIG. 8illustrates further details of an environment in which dynamic price adjustment may be implemented according to some embodiments.FIG. 8provides further detail regarding elements of system716. In addition, various interconnections in an embodiment are provided.FIG. 8shows that user system712may include processor system712A, memory system712B, input system712C, and output system712D.FIG. 8shows network714and system716.FIG. 8also shows that system716may include tenant data storage722, tenant data723, system data storage724, system data725, User Interface (UI)830, Application Program Interface (API)832, PL/SOQL834, save routines836, application setup mechanism838, applications servers8001-800N, system process space802, tenant process spaces804, tenant management process space810, tenant storage area812, user storage814, and application metadata816. In other embodiments, environment710may not have the same elements as those listed above and/or may have other elements instead of, or in addition to, those listed above.

User system712, network714, system716, tenant data storage722, and system data storage724were discussed above inFIG. 7. Regarding user system712, processor system712A may be any combination of one or more processors. Memory system712B may be any combination of one or more memory devices, short term, and/or long-term memory. Input system712C may be any combination of input devices, such as one or more keyboards, mice, trackballs, scanners, cameras, and/or interfaces to networks. Output system712D may be any combination of output devices, such as one or more monitors, printers, and/or interfaces to networks. As shown byFIG. 8, system716may include a network interface720(ofFIG. 7) implemented as a set of HTTP application servers800, an application platform718, tenant data storage722, and system data storage724. Also shown is system process space802, including individual tenant process spaces804and a tenant management process space810. Each application server800may be configured to tenant data storage722and the tenant data723therein, and system data storage724and the system data725therein to serve requests of user systems712. The tenant data723might be divided into individual tenant storage areas812, which can be either a physical arrangement and/or a logical arrangement of data. Within each tenant storage area812, user storage814and application metadata816might be similarly allocated for each user. For example, a copy of a user's most recently used (MRU) items might be stored to user storage814. Similarly, a copy of MRU items for an entire organization that is a tenant might be stored to tenant storage area812. A UI830provides a user interface and an API832provides an application programmer interface to system716resident processes to users and/or developers at user systems712. The tenant data and the system data may be stored in various databases, such as one or more Oracle™ databases.

Application platform718includes an application setup mechanism838that supports application developers' creation and management of applications, which may be saved as metadata into tenant data storage722by save routines836for execution by subscribers as one or more tenant process spaces804managed by tenant management process810for example. Invocations to such applications may be coded using PL/SOQL834that provides a programming language style interface extension to API832. A detailed description of some PL/SOQL language embodiments is discussed in commonly owned U.S. Pat. No. 7,730,478 entitled, “Method and System for Allowing Access to Developed Applicants via a Multi-Tenant Database On-Demand Database Service”, issued Jun. 1, 2010 to Craig Weissman, which is incorporated in its entirety herein for all purposes. Invocations to applications may be detected by one or more system processes, which manage retrieving application metadata816for the subscriber making the invocation and executing the metadata as an application in a virtual machine.

Each application server800may be communicably coupled to database systems, e.g., having access to system data725and tenant data723, via a different network connection. For example, one application server8001might be coupled via the network714(e.g., the Internet), another application server800N-1might be coupled via a direct network link, and another application server800Nmight be coupled by yet a different network connection. Transfer Control Protocol and Internet Protocol (TCP/IP) are typical protocols for communicating between application servers800and the database system. However, it will be apparent to one skilled in the art that other transport protocols may be used to optimize the system depending on the network interconnect used.

In certain embodiments, each application server800is configured to handle requests for any user associated with any organization that is a tenant. Because it is desirable to be able to add and remove application servers from the server pool at any time for any reason, there is preferably no server affinity for a user and/or organization to a specific application server800. In one embodiment, therefore, an interface system implementing a load balancing function (e.g., an F5 BIG-IP load balancer) is communicably coupled between the application servers800and the user systems712to distribute requests to the application servers800. In one embodiment, the load balancer uses a least connections algorithm to route user requests to the application servers800. Other examples of load balancing algorithms, such as round robin and observed response time, also can be used. For example, in certain embodiments, three consecutive requests from the same user could hit three different application servers800, and three requests from different users could hit the same application server800. In this manner, system716is multi-tenant, wherein system716handles storage of, and access to, different objects, data and applications across disparate users and organizations.

In certain embodiments, user systems712(which may be client systems) communicate with application servers800to request and update system-level and tenant-level data from system716that may require sending one or more queries to tenant data storage722and/or system data storage724. System716(e.g., an application server800in system716) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information. System data storage724may generate query plans to access the requested data from the database.

It is to be noted that terms like “node”, “computing node”, “server”, “server device”, “cloud computer”, “cloud server”, “cloud server computer”, “machine”, “host machine”, “device”, “computing device”, “computer”, “computing system”, and the like, may be used interchangeably throughout this document. It is to be further noted that terms like “application”, “software application”, “program”, “software program”, “package”, “software package”, and the like, may be used interchangeably throughout this document. Also, terms like “job”, “input”, “request”, “message”, and the like, may be used interchangeably throughout this document.

While concepts been described in terms of several embodiments, those skilled in the art will recognize that embodiments not limited to the embodiments described but can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting.