Provisioning insight services in a data provider landscape

The present disclosure involves systems, software, and computer implemented methods for provisioning insight services in a data provider landscape. A method includes presenting an algorithm description of an algorithm provided by an algorithm provider that is to be executed in a landscape of a data provider. Selection of the algorithm is received from a data consumer. The selected algorithm is provided to an agent at the data provider. The agent is configured to provision resources in the landscape of the data provider, according to the algorithm description, to enable execution of the selected algorithm in the landscape of the data provider. The agent is configured to execute the selected algorithm in the landscape of the data provider, using data included in the landscape of the data provider, producing one or more outputs. The agent is configured to enable monitoring of the execution of the selected algorithm.

BACKGROUND

Recently, there has been a dramatic increase in the number of appliances, devices, vehicles, and/or other types of objects that include data collection, computing, sensing, and/or network communications capabilities in addition to their normal functionality. These objects, described as smart appliances, smart vehicles, smart buildings, smart infrastructure components, and so forth, may be organized into an Internet of Things (IoT), through which the objects may generate and exchange data. An IoT device, system, and/or infrastructure may enable objects to be sensed and controlled remotely over network(s), and the data generated by the objects may be collected, analyzed, or otherwise processed by computing devices and/or individuals. The large and ever-increasing quantity of data generated by IoT objects poses a challenge, given the limited capacity of traditional systems to communicate, store, and process the data.

A company can perform analytics processing on a set of data, such as IoT data. Analytics can involve the discovery of patterns in the set of data. Analytics can include the use of statistics, computer programming, and operations research, for example. Data visualizations can be used to presents insights generated from the analytics processing. Analytics can be performed, for example, by a data scientist. A data scientist can be knowledgeable in information science, computer science, statistics, probability, and machine learning, as well as in a particular type of data.

SUMMARY

The present disclosure involves systems, software, and computer implemented methods for provisioning insight services in a data provider landscape. A method includes presenting an algorithm description of an algorithm provided by an algorithm provider that is to be executed in a landscape of a data provider. Selection of the algorithm is received from a data consumer. The selected algorithm is provided to an agent at the data provider. The agent is configured to provision resources in the landscape of the data provider, according to the algorithm description, to enable execution of the selected algorithm in the landscape of the data provider. The agent is configured to execute the selected algorithm in the landscape of the data provider, using data included in the landscape of the data provider, producing one or more outputs. The agent is configured to enable monitoring of the execution of the selected algorithm.

DETAILED DESCRIPTION

A data provider (e.g., an entity, such as a company) can have a computing system landscape that generates a set of data. The data can be of any type, such as electric company data, health care data, or IoT (Internet of Things) data, to name just a few examples. Other examples of data generation are described below.

A data provider may desire to run one or more algorithms on data generated by the data provider. Algorithms can be for predictive maintenance, forecasting insights, business intelligence, or other types of analysis. The data provider may consider using third party algorithms on data generated by the data provider, such as where the data provider may not have resources or expertise needed to generate the algorithms they need or desire to use, for example. As another example, the data provider may desire to test various algorithms and compare results of running multiple algorithms, including algorithms created by the data provider and/or algorithms created by third parties. Third parties may specialize in particular types of algorithms, for example, and may employ data scientists and other experts.

Various approaches can be used to enable the running of a third party algorithm on data provider generated data. For example, the data provider can transfer generated data to the third party algorithm provider over a network. However, some data providers generate a significant amount of data which may make transferring over a network impractical. As another example, the data provider can provide the algorithm provider a hard drive that includes the data provider generated data. Such an approach requires resources (e.g., people, time, hardware). Moreover, transferring data outside of the landscape of the data provider, either over a network or on physical media, may not be desired or legal for some data providers. Health care data, for example, may not be allowed to be taken outside of a healthcare data provider premise. Other security or other concerns may make transferring data undesirable. The data provider may not trust third parties to have access to data provider data, as they may not trust that the data is inaccessible to other parties, for example.

Another approach for enabling a third party algorithm to run on data provider data is for the third party to do custom development at the data provider site to integrate the third party algorithm into the landscape of the data provider. Such an approach can be costly, time consuming (e.g., multi month projects), and can be inflexible. Also, a data provider cannot easily try out and compare different algorithms if such expensive, time-consuming custom integration is performed. The data provider can invest a lot of time and money for custom development, and can't easily try out algorithms provided by other parties once such investment is made.

To solve cost, legal, efficiency, and other issues with the above approaches, an algorithm provisioning environment can be configured so that algorithm providers can publish their algorithms for consideration of use on premise or in the cloud for integration at or into data provider landscapes. An algorithm provider can provide an algorithm description and a description of resources and data used by the algorithm. Various algorithm providers can provide algorithm descriptions to a centralized server, and the centralized server can provide a search service that enables users to search for and obtain information about available algorithms. The centralized server can provide an agent that can be installed on data provider systems. When an algorithm is selected for execution on and submission to a particular data provider, the agent can determine whether necessary resources are available in the data provider's landscape, and provision the resources for execution of the algorithm. Outputs provided by the algorithm can be provided to the data provider. Additionally, the algorithm provider can be provided performance information related to the execution.

A user can select multiple algorithms to be executed in the data provider landscape, and the user can compare results and decide upon a particular algorithm. Thus trials of multiple algorithms can be performed without costly investment in custom development for a particular algorithm. Various algorithms can be executed at a particular data provider, without the data provider data leaving the premise of the data provider, thereby avoiding legal and security issues that can occur with approaches that transfer data off site. Algorithm providers can benefit by having their algorithms receive publicity while presented by the search service and by the centralized server enabling execution trials at data provider sites.

A user of the centralized server can be referred to as a data consumer. A data consumer can be associated with the data provider or can be an entity that is separate from the data provider. Some data providers can, for example, approve of outside entities initiating execution of a third party algorithm in the landscape of the data provider and viewing outputs of the execution. The data consumer, data provider and algorithm provider can each be separate entities in some examples. As described in more detail below, an algorithm running in a first data provider landscape can be configured to obtain data provided by a second data provider who has agreed to make data of the second data provider publicly available.

FIG. 1is a block diagram of an example environment100for provisioning insight services in a data provider landscape. In a first phase, an insight provider102(e.g., an algorithm provider) generates an algorithm103that can be executed on a data provider landscape having at least a set of particular kinds of resources (e.g., computing nodes, memory, network resources, virtual machines) and including particular types of data. In some instances, one or more data providers may also be insight providers102. The algorithm103can include processing instructions which, when executed, can analyze instances of the particular types of data to produce one or more outputs, which can be referred to as insights. The insight provider102can publish the algorithm103to an algorithm store104by providing the algorithm103(or instructions for how the algorithm103can be retrieved from the insight provider102) and an algorithm description106a.

The algorithm description106a, which can be referred to as a recipe, can include a problem domain in which the algorithm103is to be executed, an overview of the processing steps included in the algorithm103, a description of resources that are required to execute the algorithm103, and a description of how the resources are to be configured. The algorithm store104can include the algorithm description106aamong other algorithm descriptions106that have been provided by the insight provider102or other insight providers. The algorithm store104can provide a search service which allows data consumers, such as a data consumer108, who want to run an algorithm on data provider data in a data provider landscape109, to search for and browse available algorithms. The algorithm store104can provide an algorithm marketplace which facilitates connecting data consumers who want to run algorithms with insight providers who generate algorithms. The data consumer108can be a same entity as a data provider110who is associated with the data provider landscape109, or can be a different entity, such as if the data provider110has granted permission for other parties to run algorithms on data included in the data provider landscape109.

In a second phase, the data consumer108browses for, selects, and possibly purchases the algorithm description106afor execution in the data provider landscape109. An algorithm purchase can be a one-time purchase or can be a subscription-based purchase (e.g., a monthly price). A subscription price can be based on an amount of data processed, with larger amounts of data processed incurring a higher subscription price than for smaller amounts of processed data. Any suitable terms, pricing (including free algorithms), and usage terms and restrictions may be used in various implementations.

In a third phase, an agent112(e.g., a provision manager112) included in the data provider landscape109obtains a copy of or a link to the algorithm103(e.g., either from the algorithm store104or the insight provider102) using information included in the selected algorithm description106a. The agent112may have been previously obtained from the algorithm store104by the data provider110and installed in the data provider landscape109, for example. As another example, the agent112(and possibly the algorithm103) may be pushed to the data provider landscape109in response to the data consumer108selecting the algorithm description106a.

In a fourth phase, the agent112provisions resources114a,114b, and114cin a private network116of the data provider landscape109. The resources114a,114band114ccan include computing nodes, memory, network resources, virtual machines, and other types of resources or systems. As described in more detail below, the agent112can determine whether the data provider landscape109includes resources sufficient to execute the algorithm103, using and/or based on information included in the algorithm description106a.

In a fifth phase, the agent112initiates execution of the algorithm103(e.g., either using an obtained copy of the algorithm103or a link to the algorithm103) in the data provider landscape109. The algorithm103can identify and process data118included in the data provider landscape109. The data118used by the algorithm103can be current, real-time data or can be historical data. As another example, the algorithm103can be configured to access external data120from an external data source122(e.g., as described in more detail below). Execution of the algorithm103can produce one or more insights (e.g., outputs)124. The insights124can be predictions, forecasts, or some other type of insight.

The algorithm103and/or the agent112can be configured to filter or scale an amount of data to be accessed, processed, or returned, based on one or more rules. For example, the external data source122can provide weather information and the algorithm103can be configured to access weather information for a particular location. As another example, data to be accessed, processed, or returned can be filtered or defined based at least in part on one or more inputs to the algorithm103that are provided by the data consumer108.

In a sixth phase, the insight provider102can monitor execution (or execution results) of the algorithm103using a monitoring component126of the algorithm store104. The insight provider102can view performance data associated with the execution of the algorithm103, for example. The insight provider102can be prevented from viewing the insights124generated from the algorithm103, unless the data provider110has given authorization for the insight provider102to view the insights124.

In a seventh phase, the insights124are provided, such as to the data consumer108(e.g., phase7a) and/or the data provider110(e.g., phase7b). The data consumer108can view outputs, for example, using a centralized portal that is associated with the algorithm store104. The data provider110can view outputs, for example, using the centralized portal and/or on a user interface that is presented on a device located in or associated with the data provider landscape109.

FIG. 2is a flowchart of an example method200for execution of an algorithm in a landscape of a data provider. An algorithm provider202publishes an algorithm (204) to an algorithm server206. The algorithm can be used in a landscape207of a data provider208and in landscapes of other data providers. The algorithm server206may have previously provided an agent209to the landscape207of the data provider208. The data provider208sends a request to browse available algorithms (210) to the algorithm server206. The algorithm server206provides a list of algorithms to be presented to the data provider208(212). The data provider208selects a presented algorithm and an indication of the selection is provided to the algorithm server206(214).

The algorithm server206provides the algorithm to be installed in the data provider landscape207of the data provider208(220). The agent209provisions resources of the data provider landscape207to prepare for execution of the algorithm (222). The agent209initiates execution of the algorithm in the data provider landscape207(224). The algorithm can use, as at least part of its input, data included in the data provider landscape207. Execution of the algorithm can result in the generation of a set of results, which the agent209provides to the data provider208(226), e.g., in a user interface. The agent209can provide performance information regarding the execution of the algorithm to the algorithm provider202(228).

FIG. 3is a flowchart of an example method300for determining whether a data provider landscape has resources sufficient to run a third party algorithm. A data provider302sends a request to an algorithm server304for an agent to manage installations and/or instantiations of algorithms provided by the algorithm server304on a data provider landscape305of the data provider302(306). The algorithm server304provides an agent308to the data provider302for installation in the data provider landscape305(312). Installation of the agent is generally performed in advance of the selection of a particular algorithm. The data provider302sends a request to browse available algorithms (314) to the algorithm server304. The algorithm server304provides a list of algorithms to be presented to the data provider302(316).

The data provider302selects a first algorithm and an indication of the selection is provided to the algorithm server304(318). In response to the selection by the data provider305of the first algorithm, the algorithm server304sends a resource check request (320) to the agent308for determining whether the data provider landscape305includes resources that are required by the first algorithm. In response to the resource check request320, the agent308sends a query322to the data provider landscape305to obtain information about resources included in the data provider landscape305. The agent308sends a resource check response324to the algorithm server304. In some implementations, the agent308determines whether the resources included in the data provider landscape305are sufficient for running the first algorithm (e.g., by comparing needed-resources information included in the resource check request320to information obtained from the query322), and sends an indication of whether the data provider landscape305is able to execute the first algorithm in the resource check response324. In other implementations, the algorithm server304determines whether the data provider landscape305includes sufficient resources (e.g., the resource check response324can include a description of resources included in the data provider landscape305and the algorithm server304and perform the determination).

If the data provider landscape305includes the resources required to execute the first algorithm, the algorithm server304provides the first algorithm to the data provider landscape305(326). The agent308provisions resources of the data provider landscape305to prepare for execution of the first algorithm (328). The agent308initiates execution of the first algorithm in the data provider landscape305(330). The first algorithm can use data included in the data provider landscape305. Execution of the first algorithm can result in the generation of a set of results, which the agent308provides to the data provider302(332), e.g., in a user interface.

The data provider302selects a second algorithm and an indication of the selection is provided to the algorithm server304(334). The data provider302may want to execute both the second algorithm and the first algorithm, for example, and compare results obtained using the first and second algorithms. In response to the selection by the data provider302of the second algorithm, the algorithm server304sends a resource check request (336) to the agent308for determining whether the data provider landscape305includes resources that are required by the second algorithm. In some implementations, the agent308sends a query338to the data provider landscape305to obtain information about resources included in the data provider landscape305.

The query338can be specific to resources needed by the second algorithm, for example. In some implementations, the agent308does not send the query338, but rather uses information obtained earlier using the query322. The agent308sends a resource check response340to the algorithm server304, which can include an indication regarding whether the data provider landscape305has sufficient resources to execute the second algorithm, or can include information that the algorithm server304uses to determine whether the data provider landscape305resources are sufficient for executing the second algorithm.

If the resources included in the data provider landscape305are not sufficient for executing the second algorithm, the algorithm server304can send an insufficient resources notification342to the data provider302. The insufficient resources notification342can include information that indicates how the resources of the data provider landscape305are lacking for execution of the second algorithm. The data provider302can initiate efforts to upgrade the resources of the data provider landscape305so that the data provider landscape305is able to execute the second algorithm (344). After the upgrade, the data provider302can browse for and reselect the second algorithm (346).

The algorithm server304resends a resource check request (348) to the agent308for determining whether the upgraded data provider landscape305includes resources that are required by the second algorithm. The agent308sends a query350to the upgraded data provider landscape305to obtain information about resources included in the upgraded data provider landscape305. The agent308sends a resource check response352to the algorithm server304, which can include an indication regarding whether the upgraded data provider landscape305has sufficient resources to execute the second algorithm, or can include information that the algorithm server304uses to determine whether the upgraded data provider landscape305resources are sufficient for executing the second algorithm.

If the upgraded data provider landscape305includes the resources required to execute the second algorithm, the algorithm server304provides the second algorithm to the upgraded data provider landscape305(354). The agent308provisions resources of the upgraded data provider landscape305to prepare for execution of the second algorithm (356). The agent308initiates execution of the second algorithm in the upgraded data provider landscape305(358). The second algorithm can use data included in the upgraded data provider landscape305(e.g., the same, or at least some of the same data as used by the first algorithm). Execution of the second algorithm can result in the generation of a set of results, which the agent308provides to the data provider302(360), e.g., in a user interface.

The data provider302can compare the results from the first algorithm to the results from the second algorithm. The data provider302can decide, for example, that the second algorithm produces better results than the first algorithm. The data provider302can send a notification362to the algorithm sever304indicating that the data provider302desires to deselect (e.g., uninstall) the first algorithm. The algorithm server304sends a notification364to the agent308to uninstall the first algorithm. The agent308uninstalls the first algorithm (366) from the data provider landscape305. The agent308can roll back the provisioning of the resources performed in step328, for example. In some implementations, the agent308rolls back some or all of the provisioning of the resources for the first algorithm before provisioning resources for the second algorithm, and in such implementations, may perform some or no rollback of provisioning in response to the notification364.

In some implementations, a data provider landscape is an IoT (Internet of Things) platform. In some implementations, an algorithm that runs in a data provider landscape, such as an IoT platform, obtains data from another system, such as another IoT platform or some other type of system, including but not limited to other systems external to a particular data consumer or data provider. As another example, in some implementations, the data provider landscape can make outputs generated by the running of the algorithm available to other systems, such as other IoT platforms, or to another entity, such as a data consumer.

FIG. 4is a flowchart of an example method400for using data from a first data provider when executing an algorithm at a second data provider. Data providers can be IoT platforms or some other type of data provider. An algorithm server402provides an algorithm to a receiving and providing IoT platform404(406). The receiving and providing IoT platform404can, for example, receive data from a providing IoT platform408as part of executing the algorithm and can provide data generated during execution of the algorithm to another system, such as a receiving IoT platform410. In summary, in this example, the receiving and providing IoT platform404both receives and provides data, the providing IoT platform408provides data (e.g., to the receiving and providing IoT platform404), and the receiving IoT platform410receives data (e.g., from the receiving and providing IoT platform404).

The providing IoT platform408may have, for example, sent a presence indication412indicating the presence of the providing IoT platform408to a brokerage server414. The brokerage server414can enable different IoT platforms to connect with one another and share data with one another after the pairing of the sending and receiving platforms has been brokered. The presence indication412can indicate a type, quantity, frequency, and price of data that is generated by the providing IoT platform408and available to be shared with other IoT platforms. The presence indication412can identify the providing IoT platform408and/or provide a network address of the providing IoT platform408, such as an internet protocol (IP) address. As another example, the receiving IoT platform410may have sent a presence indication416to the brokerage server414describing a type, amount, frequency, and/or price of the data that the receiving IoT platform410is requesting to receive.

In response to receiving the algorithm provided by the algorithm server402, an agent418installed in the receiving and providing IoT platform404provisions resources (420) in the receiving and providing IoT platform404to prepare for execution of the received algorithm. The agent418initiates execution of the received algorithm in the receiving and providing IoT platform404(422). As part of executing the received algorithm (or in some implementations, as part of the provisioning of resources), the agent418sends a presence indication424to the brokerage server414.

The presence indication424can include a description of external data that the receiving and providing IoT platform404desires to use in order to execute the algorithm. The presence indication424can also include a description of data that is generated by the algorithm that the receiving and providing IoT platform404is making available to other platforms. In some implementations, the presence indication424includes a description of IoT data included in the receiving and providing IoT platform404(e.g., data that may be used by the algorithm as input data) that is being made available to other platforms. In other words, the receiving and providing IoT platform404can make available to other platforms input data used by the algorithm, output data generated by the algorithm, or other data included in the receiving and providing IoT platform404that is neither an input to nor an output from the algorithm.

The brokerage server414can identify the providing IoT platform408as providing the type of external data desired by the receiving and providing IoT platform404. The brokerage server414can also identify the receiving IoT platform410as desiring the type of data to be made available by the receiving and providing IoT platform404. The brokerage server414can generate and send security tokens for use in establishing connections for transferring data between IoT platforms. For example, the brokerage server414sends security tokens426to the receiving and providing IoT platform404for use in receiving data from the providing IoT platform408and providing data to the receiving IoT platform410. As other examples, the brokerage server414sends security tokens428to the providing IoT platform408for use in sending data to the receiving and providing IoT platform404and sends security tokens430to the receiving IoT platform410for use in receiving data from the receiving and providing IoT platform404.

As part of executing the algorithm, the agent418can, using security token(s) in the received security tokens426, for example, establish a P2P (Peer to Peer) connection with the providing IoT platform408(432). After the P2P connection is established, the providing IoT platform408can send a data stream434to the agent418. The agent418can, as part of executing the algorithm, access internal data436included in the receiving and providing IoT platform404. The agent418can use the data received from the providing IoT platform408and the accessed internal data when executing the algorithm. As part of executing the algorithm, one or more outputs are generated (438).

As described above, the receiving and providing IoT platform404can make output data generated by the algorithm (and/or other data associated with the receiving and providing IoT platform404) available to other platforms. A P2P connection can be established between the receiving IoT platform410and the receiving and providing IoT platform404. Either the receiving IoT platform410or the receiving and providing IoT platform404can initiate the establishment of the P2P connection. After the P2P connection is established, a data stream442can be sent by the agent418to the receiving IoT platform410.

As used herein, a P2P connection is a network connection between two entities through which the two entities may communicate. A P2P connection may be a direct connection between the entities, e.g., a connection that does not involve any intermediary systems, devices, or processes beyond those that are used to establish and maintain the connection. For example, a P2P connection may employ general purpose network infrastructure and appliances such as hubs, routers, switches, backbone systems, routing protocols, physical data communication lines, wireless transceivers for sending and receiving wireless data signals, and/or other network components, but the P2P connection may be otherwise unmediated by other systems, devices, and/or processes. In some implementations, the data brokerage system may perform operations to enable the platforms to connect with one another and share data, but the data brokerage system may be disintermediated after the initial setup of the P2P connection and may not participate in the P2P connection. In some instances, the data brokerage system may provide security tokens to the platforms to enable a secure P2P connection to be established between the platforms. The data brokerage system may then be disintermediated from the connection apart from, in some implementations, periodically sending updated security tokens to the platforms as described further below.

An IoT network or another type of data provider may include any number of IoT or other devices that generate data. The data provider devices may include but are not limited to any of the following: portable computing devices, such as smartphones, tablet computers, electronic book readers, mobile gaming platforms, wearable computing devices, implanted computing devices, etc.; immobile and/or less readily portable computing devices, such as personal computers, laptop computers, mainframe computers, rack-mounted servers, etc.; media devices, such as televisions, audio output (e.g., stereo) systems, gaming platforms, digital video recording and/or playback devices, etc.; environmental monitoring sensors and/or devices, such as air quality sensors, water quality sensors, soil quality sensors; sensors to measure air temperature, air pressure, wind speed and direction, water temperature, water pressure, water flow speed and direction, seismic vibration sensors, seismic (e.g., earthquake) warning systems, inclement weather (e.g., hurricane, tornado) warning systems, tsunami or flood warning systems, wildfire monitoring or warning systems, etc.; infrastructure management systems, such as sensors and/or devices to measure the condition and/or maintenance status of buildings, roads, bridges, tunnels, railroads, airports, etc.; manufacturing systems, such as sensors and/or devices to monitor and/or control automated manufacturing processes, supply chain networks, shipping networks, etc.; energy management systems, such as sensors and/or devices to monitor the generation, distribution, storage, and/or usage of electrical power, natural gas, other petroleum-based fuels, and so forth, for a particular building, set of buildings, municipality, and/or larger area; healthcare systems, such as sensors and/or devices for remote healthcare, health or biometric monitoring of individuals, emergency notification, and/or managing healthcare facilities such as hospitals, clinics, and so forth; building and/or home automation systems, including sensors and/or devices for monitoring and controlling electrical and/or mechanical devices in buildings, monitoring structural conditions of buildings, monitoring environment conditions in buildings (e.g., temperature, air quality, etc.), controlling lighting, air circulation, water, or other in-building systems, and so forth; building security systems, including sensors and/or devices for controlling building access, detecting unauthorized access, alarm systems, door lock systems, fire or smoke detectors, flood detectors, air quality sensors and/or warning systems, etc.; vehicle computers, such as telematics devices, on-board computing systems, vehicle sensors, smart vehicle components, etc.; transportation systems, including sensors and/or other devices for monitoring and/or controlling automobile traffic on roads, railway networks, air traffic, water traffic, and so forth, such as traffic sensors, stoplight cameras, vehicle speed sensors and/or cameras, toll collection systems, fleet management systems, fixed and/or mobile surveillance cameras, etc.; and/or automated and/or AI-enabled personal assistant devices for the home or other environments.

FIG. 5is a flowchart of an example method500for execution, of an algorithm selected by a data consumer501, in a landscape502of a data provider. The data consumer501and the data provider can be different entities, for example, and both can be separate entities from an algorithm provider503. For example, the algorithm provider503publishes an algorithm (504) to an algorithm server506(or, alternatively, to the data consumer501or the data provider landscape502). The algorithm can be used in the landscape502of the data provider and in other landscapes. The data consumer501sends a request to browse available algorithms (510) to the algorithm server506. The algorithm server506provides a list of algorithms to be presented to the data consumer501(512). The data consumer501selects a presented algorithm and an indication of the selection is provided to the algorithm server506(514). The algorithm server506provides the algorithm to be installed in the data provider landscape502(520). An agent516may be already installed on the data provider landscape502before the algorithm is selected by the data consumer501, for example.

The agent516provisions resources of the data provider landscape502to prepare for execution of the algorithm (522). The agent516initiates execution of the algorithm in the data provider landscape502(524). The algorithm can use data included in the data provider landscape502. Execution of the algorithm can result in the generation of a set of results, which the agent516provides to the data consumer501(526). The agent516can also provide performance information regarding the execution of the algorithm to the algorithm provider502(528) and/or to the data provider.

FIG. 6depicts an example computing system, according to implementations of the present disclosure. The system600may be used for any of the operations described with respect to the various implementations discussed herein. For example, the system600may be included, at least in part, in one or more of the algorithm store104, the data provider landscape109, the IoT platforms and the brokerage server414described inFIG. 4, and/or other computing device(s) or systems of device(s) described herein. The system600may include one or more processors610, a memory620, one or more storage devices630, and one or more input/output (I/O) devices650controllable through one or more I/O interfaces640. The various components610,620,630,640, or650may be interconnected through at least one system bus660, which may enable the transfer of data between the various modules and components of the system600.

The processor(s)610may be configured to process instructions for execution within the system600. The processor(s)610may include single-threaded processor(s), multi-threaded processor(s), or both. The processor(s)610may be configured to process instructions stored in the memory620or on the storage device(s)630. The processor(s)610may include hardware-based processor(s) each including one or more cores. The processor(s)610may include general purpose processor(s), special purpose processor(s), or both.

The memory620may store information within the system600. In some implementations, the memory620includes one or more computer-readable media. The memory620may include any number of volatile memory units, any number of non-volatile memory units, or both volatile and non-volatile memory units. The memory620may include read-only memory, random access memory, or both. In some examples, the memory620may be employed as active or physical memory by one or more executing software modules.

The storage device(s)630may be configured to provide (e.g., persistent) mass storage for the system600. In some implementations, the storage device(s)630may include one or more computer-readable media. For example, the storage device(s)630may include a floppy disk device, a hard disk device, an optical disk device, or a tape device. The storage device(s)630may include read-only memory, random access memory, or both. The storage device(s)630may include one or more of an internal hard drive, an external hard drive, or a removable drive.

One or both of the memory620or the storage device(s)630may include one or more computer-readable storage media (CRSM). The CRSM may include one or more of an electronic storage medium, a magnetic storage medium, an optical storage medium, a magneto-optical storage medium, a quantum storage medium, a mechanical computer storage medium, and so forth. The CRSM may provide storage of computer-readable instructions describing data structures, processes, applications, programs, other modules, or other data for the operation of the system600. In some implementations, the CRSM may include a data store that provides storage of computer-readable instructions or other information in a non-transitory format. The CRSM may be incorporated into the system600or may be external with respect to the system600. The CRSM may include read-only memory, random access memory, or both. One or more CRSM suitable for tangibly embodying computer program instructions and data may include any type of non-volatile memory, including but not limited to: semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. In some examples, the processor(s)610and the memory620may be supplemented by, or incorporated into, one or more application-specific integrated circuits (ASICs).

The system600may include one or more I/O devices650. The I/O device(s)650may include one or more input devices such as a keyboard, a mouse, a pen, a game controller, a touch input device, an audio input device (e.g., a microphone), a gestural input device, a haptic input device, an image or video capture device (e.g., a camera), or other devices. In some examples, the I/O device(s)650may also include one or more output devices such as a display, LED(s), an audio output device (e.g., a speaker), a printer, a haptic output device, and so forth. The I/O device(s)650may be physically incorporated in one or more computing devices of the system600, or may be external with respect to one or more computing devices of the system600.

The system600may include one or more I/O interfaces640to enable components or modules of the system600to control, interface with, or otherwise communicate with the I/O device(s)650. The I/O interface(s)640may enable information to be transferred in or out of the system600, or between components of the system600, through serial communication, parallel communication, or other types of communication. For example, the I/O interface(s)640may comply with a version of the RS-232 standard for serial ports, or with a version of the IEEE 1284 standard for parallel ports. As another example, the I/O interface(s)640may be configured to provide a connection over Universal Serial Bus (USB) or Ethernet. In some examples, the I/O interface(s)640may be configured to provide a serial connection that is compliant with a version of the IEEE 1394 standard.

The I/O interface(s)640may also include one or more network interfaces that enable communications between computing devices in the system600, or between the system600and other network-connected computing systems. The network interface(s) may include one or more network interface controllers (NICs) or other types of transceiver devices configured to send and receive communications over one or more networks using any network protocol.

Computing devices of the system600may communicate with one another, or with other computing devices, using one or more networks. Such networks may include public networks such as the internet, private networks such as an institutional or personal intranet, or any combination of private and public networks. The networks may include any type of wired or wireless network, including but not limited to local area networks (LANs), wide area networks (WANs), wireless WANs (WWANs), wireless LANs (WLANs), mobile communications networks (e.g., 3G, 4G, Edge, etc.), and so forth. In some implementations, the communications between computing devices may be encrypted or otherwise secured. For example, communications may employ one or more public or private cryptographic keys, ciphers, digital certificates, or other credentials supported by a security protocol, such as any version of the Secure Sockets Layer (SSL) or the Transport Layer Security (TLS) protocol.

The system600may include any number of computing devices of any type. The computing device(s) may include, but are not limited to: a personal computer, a smartphone, a tablet computer, a wearable computer, an implanted computer, a mobile gaming device, an electronic book reader, an automotive computer, a desktop computer, a laptop computer, a notebook computer, a game console, a home entertainment device, a network computer, a server computer, a mainframe computer, a distributed computing device (e.g., a cloud computing device), a microcomputer, a system on a chip (SoC), a system in a package (SiP), and so forth. Although examples herein may describe computing device(s) as physical device(s), implementations are not so limited. In some examples, a computing device may include one or more of a virtual computing environment, a hypervisor, an emulation, or a virtual machine executing on one or more physical computing devices. In some examples, two or more computing devices may include a cluster, cloud, farm, or other grouping of multiple devices that coordinate operations to provide load balancing, failover support, parallel processing capabilities, shared storage resources, shared networking capabilities, or other aspects.