Data hub architecture to provide actionable data from remote sensor feeds

Systems and methods are provided for data hub architecture to provide actionable data from remote sensor feeds. An exemplary method includes receiving, by a master hub of a plurality of data hubs, a request to access at least one first sensor in a first location and at least one second sensor in a second location from a data client, wherein the master hub is closest to the data client of the plurality of data hubs on a network, determining a first data hub that is closest to the at least one first sensor on the network, and determining a second data hub that is closest to the at least one second sensor on the network. The method further includes querying the first data hub and the second data hub for data and communicating the data to the data client.

FIELD OF DISCLOSURE

The present disclosure generally relates to a network of distributed computing systems and more particularly to utilizing data hubs on a network that are nearby sensors to receive data from the sensors with little to no delay so that a master hub aware of the delay between the master hub and the data hub may provide the data to a data client in an actionable form by taking into account the delay between the master hub and the data hub.

BACKGROUND

The Internet of Things (IoT) is a concept in future computing and networking that utilizes a network of sensors with associated electronics, software, and communication modules to connect physical objects and other real world existing items into a network. The IoT extends beyond existing machine to machine communications to include a wide variety of devices associated with real world things, such as implants, real world condition detecting sensors (e.g., connected temperature gauges, barometers, etc.), biochips, and/or other types of devices and applications. The IoT may merge several types of technologies, such as embedded systems, controls, sensors, and/or wireless communications. Utilizing the IoT, users may be able to receive data, manipulate devices, and/or communicate information across the world through the network devices. Thus, users may work remotely from physical objects and real world locations and still receive and provide data for use with the physical objects and/or real world locations.

In the IoT, many items and the associated devices, sensors, and/or applications are rich sources of data that may produce data for their associated physical object/real world location. The items included within or attached to the IoT may also correspond to active agents, which may perform some task by a device based on received data (e.g., a start signal, a condition for activation of the device, etc.). Such sensors and/or devices are spread out across the world such that utilizing data provided by sensors with device becomes challenging. For example, if sensors are not time synchronized based on delays in querying remote sensors for data and receiving the data (as well as delays in intermediary systems, such as messaging systems), the data may not be actionable according to required protocol.

BRIEF SUMMARY

This disclosure relates to computing systems and methods for data hub architecture to provide actionable data from remote sensor feeds. Methods, systems, and techniques for data hub architecture to provide actionable data from remote sensor feeds are provided.

According to an embodiment, a method for data hub architecture to provide actionable data from remote sensor feeds includes receiving, by a master hub of a plurality of data hubs, a request to access at least one first sensor in a first location and at least one second sensor in a second location from a data client, wherein a network includes the plurality of data hubs, and wherein the master hub is closest to the data client of the plurality of data hubs on the network, determining, by the master hub, a first data hub of the plurality of data hubs that is closest to the at least first sensor on the network, and determining, by the master hub, a second data hub of the plurality of data hubs that is closest to the at least one second sensor on the network. The method further includes querying, by the master hub, the first data hub for first data from the at least one first sensor, querying, by the master hub, the second data hub for second data from the at least one first sensor, and communicating, by the master hub, the first data and the second data to the data client.

According to another embodiment, a system for data hub architecture to provide actionable data from remote sensor feeds includes a master hub of a plurality of data hubs that receives a request to access at least one first sensor in a first location and at least one second sensor in a second location from a data client, wherein a network includes the plurality of data hubs, and wherein the master hub is closest to the data client of the plurality of data hubs on the network. The system further includes a first data hub of the plurality of data hubs that is closest to the at least first sensor on the network and retrieves first data from the at least one first second and a second data hub of the plurality of data hubs that is closest to the at least one second sensor on the network and retrieves second data from the at least one second sensor, wherein the master hub queries the first data hub for the first data, queries the second data hub for the second data and communicates the first data and the second data to the data client.

According to another embodiment, a non-transitory computer readable medium comprising a plurality of machine-readable instructions which when executed by one or more processors of a server are adapted to cause the server to perform a method for data hub architecture to provide actionable data from remote sensor feeds including receiving, by a master hub of a plurality of data hubs, a request to access at least one first sensor in a first location and at least one second sensor in a second location from a data client, wherein a network includes the plurality of data hubs, and wherein the master hub is closest to the data client of the plurality of data hubs on the network, determining, by the master hub, a first data hub of the plurality of data hubs that is closest to the at least first sensor on the network, and determining, by the master hub, a second data hub of the plurality of data hubs that is closest to the at least one second sensor on the network. The method further includes querying, by the master hub, the first data hub for first data from the at least one first sensor, querying, by the master hub, the second data hub for second data from the at least one first sensor, and communicating, by the master hub, the first data and the second data to the data client.

DETAILED DESCRIPTION

It is to be understood that the following disclosure provides many different embodiments, or examples, for implementing different features of the present disclosure. Some embodiments may be practiced without some or all of these specific details. Specific examples of components, modules, and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting.

FIG. 1is a block diagram illustrating a networked system suitable for implementing the processes described herein, according to an embodiment. Terms like “machine,” “device,” “computer,” and “computing system” are used interchangeably and synonymously throughout this document.

System100may correspond to a network of computing system, including client and/or server computing systems. In this regard, system100ofFIG. 1includes a data client110, a master hub120, a data hub130, a data hub140, a sensor150, and a sensor160. Network170may correspond to a single or combination of networks, such as the Internet or an intranet. Data client110may request data from one or more of sensors150/160, which may be remote from data client so that a query for data from data client110and a transmission of data to data client110include some delay in signal transmission. In order to provide actionable data according to a correct time of capture of the data by one or more of sensors150/160, master hub120may be established that is closest to data client110on network170(e.g., has the shortest signal transmission pathway on network170so that the delay in querying and receiving data from master hub120is minimized). Master hub120may then determine data hub130/150that is closest to sensor150/160on network170. For example, data hub130may be closest to sensor150on network170such that the signal transmission pathway is the shortest between data hub130and sensor150on network170. Data hub140may similarly be determined for sensor160. Master hub120may the establish a time difference between data hub130and data hub140that may correspond to the difference in delay between signal transmissions between master hub120and data hub130and signal transmissions between master hub120and data hub140. Using the time difference, master hub120may properly query data hub130and data hub140for data from sensor150and sensor160, respectively, and provide synchronized data to data client110so that the data is actionable as being time synchronized data from sensor150and sensor160.

Data client110, master hub120, data hub130, data hub140, sensor150, and sensor160may each include one or more processors, memories, attached devices, sensors, and/or other appropriate components for executing instructions such as program code and/or data stored on one or more computer readable mediums to implement the various applications, data, and steps described herein. For example, such instructions may be stored in one or more computer readable media such as memories or data storage devices internal and/or external to various components of system100, and/or accessible over network170.

Data client110may be implemented as a communication device that may utilize appropriate hardware and software configured for wired and/or wireless communication with master hub120, data hub130, data hub140, sensor150, and/or sensor160. Data client110may be utilized by a user to retrieve data from sensor150and/or sensor160, which may be located remotely from data client110such that a query for data and a response of the data may include delay in signal transmission over network170. In various embodiments, data client110may be implemented as a personal computer (PC), a smart phone, laptop/tablet computer, wristwatch with appropriate computer hardware resources, eyeglasses with appropriate computer hardware (e.g. GOOGLE GLASS®), other type of wearable computing device, implantable communication devices, communication device included with or attached to another device, and/or other types of computing devices capable of transmitting and/or receiving data, such as an IPAD® from APPLE®. The client device may be managed or controlled by any suitable processing device. Although only one device is shown, a plurality of devices may function similarly.

Data client110ofFIG. 1contains a web application112, a database114, and a network interface component116. Web application112may correspond to executable processes, procedures, and/or applications with associated hardware. In other embodiments, data client110may include additional or different hardware and software as required.

Web application112may correspond to one or more processes to execute modules and associated devices of data client110to establish master hub120when querying sensors150/160for data, communicate a query for data to master hub120, and receive data detected by sensors150/160from master hub120. In this regard, web application112may correspond to specialized hardware and/or software utilized by data client110where a user may enter a query for data from sensors150/160. Thus, data client110may specify the sensors that data client110wishes to collect in, for example, sensors150and160in system100. Once a query for data from sensor150and/or sensor160is entered, a plurality of data hubs on network170may be determined (e.g., master hub120, data hub130, data hub140, and other data hubs residing on network170). From the plurality of data hubs, master hub120may be chosen so that master hub120resides closest to data client110on network170. Master hub120may be determined to be closest to data client110on network170where the data signal transmission pathway is shortest. For example, signals travelling between data client110and master hub120may have the shortest delay so that the signaling pathway is the shortest between data client110and master hub120. In other embodiments, other factors may also contribute to the speed (e.g., amount of delay) in communicating signals between data client110and one or more of the data hubs of the plurality of data hubs. Thus, analysis of such factors may cause master hub120to be selected over a closer hub where the delay in signal transmissions between data client110and master hub120is shorter when picking master hub120over a “closer” data hub having a shorter signal transmission pathway but higher delay in signal transmissions.

After selection of master hub120is performed, master hub120may select data hub130and data hub140after determining that data hub130and data hub140is closest to sensor150and sensor160, respectively, as explained herein. Web application112may then communicate the query to master hub120for processing by master hub120. After master hub120determines a time difference between data hub130and data hub140, master hub may query data hub130and data hub140for data from sensor150and sensor160, respectively, as explained herein. After receiving data from data hub130and data hub140, master hub120may provide the data to data client110through web application112. Thus, web application112may display the data captured by sensor150and sensor160through an output interface. Web application112may also provide metadata included with the data, such as timestamps, locations of collection of the data, a table number of the data from a materialized table view of a database including the data, or other metadata.

Data client110may further include database114stored to a transitory and/or non-transitory memory of data client110, which may store various applications and data and be utilized during execution of various modules of data client110. Thus, database114may include, for example, identifiers such as operating system registry entries, cookies associated with web application112, identifiers associated with hardware of data client110, or other appropriate identifiers, such as identifiers used for a user account and/or with queries for data by data client110. Database114may include additional information received from master hub120, such as data collected by sensor150and sensor160and metadata associated with the collected data.

Data client110includes network interface component116adapted to communicate with network170, such as with one or more data hubs and sensors including master hub120, data hub130, data hub140, sensor150, and/or sensor160. In various embodiments, network interface component116may include a DSL (e.g., Digital Subscriber Line) modem, a PSTN (Public Switched Telephone Network) modem, an Ethernet device, a broadband device, a satellite device and/or various other types of wired and/or wireless network communication devices including microwave, radio frequency, infrared, Bluetooth, and near field communication devices.

Master hub120may be implemented as a server or other computing device (e.g., client computing device) that may be established as a master hub of a plurality of data hubs in closest proximity to data client110on network170. Master hub120may further determine data hub130is in closest proximity to sensor150on network170and data hub140is in closest proximity to sensor160on network170. In this regard, master hub120includes one or more processing applications which may be configured to interact with data client110to receive a query for data from sensor150and sensor160, establish data hub130and data hub140for use in receiving data from sensor150and sensor160, respectively, establish a time difference in signal transmission delay between signals communicated between master hub120and data hub130and signals communicated between master hub120and data hub140, query data hub130and data hub140for data using the time difference so that data received from data hub140is time synchronized with data received from data hub150, and communicate the data to data client110. Although a server is shown, the server may be managed or controlled by any suitable processing device.

Master hub120ofFIG. 1contains a data sorting module122, a database124, and a network interface component126. Data sorting module122may correspond to executable processes, procedures, and/or applications with associated hardware. In other embodiments, master hub120may include additional or different hardware and software as required.

Data sorting module122may correspond to one or more processes to execute modules and associated devices of master hub120to receive a query for data from sensor150and sensor160, establish data hub130and data hub140for use in receiving data from sensor150and sensor160, respectively, establish a time difference in signal transmission delay between signals communicated between master hub120and data hub130and signals communicated between master hub120and data hub140, query data hub130and data hub140for data using the time difference so that data received from data hub140is time synchronized with data received from data hub150, and communicate the data to data client110. In this regard, data sorting module122may correspond to specialized hardware and/or software that first receives a query for data from sensor150and/or sensor160, for example, from web application112(e.g., when a user or device associated with data client110requires data from sensor150and sensor160). Once received, data sorting module122may process the query to determine that the query includes a request for data from sensor150and sensor160(e.g., a request to access sensor150and sensor160to receive the data).

Data sorting module122may then determine which data hubs out of a plurality of data hubs are closest to each of sensor150and sensor160. Network170may include a plurality of data hubs that are established over multiple locations, such as through the world where network170corresponds to the Internet. Data sorting module122of master hub120may determine that a data hub (e.g., data hub130and/or data hub140) is closest to a sensor (e.g., sensor150and/or sensor160) by determining that the data hub is in closest proximity to the sensor on network170. Similar to master hub120being located closest to data client110on network170, data sorting module122may determine that a data hub is closest to a sensor based on the delay in signal transmission between a data hub and a sensor. Thus, a data hub may be closest to a sensor on network170when the data hub and a sensor have the least delay in signal transmission between the data hub and the sensor on network170out of the plurality of data hubs available on network170. As discussed in reference to system100ofFIG. 1, data sorting module122may determine that data hub130is closest to sensor150and data hub140is closest to sensor160on network170. Thus, the amount of delay in querying sensor150by data hub130for data and receiving the data from sensor150by data hub130is minimized. Similarly, the amount of delay in querying sensor160by data hub140for data and receiving the data from sensor160by data hub140is minimized. A determination of the closeness of a data hub to a sensor may include a data hub pinging a sensor to determine the delay between signal transmission and receipt of an acknowledgement of the ping (e.g., how long a signal takes to arrive at an endpoint and have the endpoint respond to acknowledge receipt of the signal). Additionally, data client110may ping master hub120or vice versa to determine the delay in signal transmission between data client110and master hub120.

Once data sorting module122has established data hub130as closest to sensor150and data hub140as closest to sensor160, data sorting module122may determine a delay in signal transmission between master hub120and data hub130. The delay may be determined by pinging data hub130by data sorting module122or through another delay detection process. For example, the first delay may correspond to 200 milliseconds (ms) between master hub120and data hub130. Similarly, data sorting module122may determine the delay in signal transmission between master hub120and data hub140. The delay may also be determined by pinging data hub140by data sorting module122or through other delay detection processes. For example, the second delay may correspond to 300 ms between master hub120and data hub130. Using the two delay determinations (e.g., the first delay of 200 ms and the second delay of 300 ms), data sorting module122may determine a time difference between data hub130and data hub140, which may correspond to a difference in the amount of delay that master hub120has with data hub130(200 ms) and the amount of delay that master hub120has with data hub140(300 ms). Thus, the time difference between data hub130and data hub140for signal transmissions with master hub120corresponds to 100 ms difference between data hub130and data hub140.

Once data sorting module122determines the time difference, data sorting module122may query data hub130and data hub140to retrieve data from sensor150and sensor160, respectively, using the time delay. Master hub120may utilize the time delay so that first data received from data hub130and second data received from data hub140is time synchronized. Data hub130and data hub140may retrieve data from sensor150and sensor160, respectively, and use data federation software to enter the data into a database, as explained herein. Data hub130and data hub140may add a timestamp to the first data and the second data, respectively, in a materialized view of a database table, as explained herein, and provide the first data and the second data to data sorting module122. Data sorting module122may use data federation to connect to data hubs130and140and query data hubs130and140with a “SELECT UNION” query such that data sorting module122may sort the data according to the time difference and time stamps. Thus, data sorting module122may synchronize the first data received from data hub130with the second data received from data hub140. Once received, data sorting module122may store the data to database124and/or stream the data to data client110after sorting so that the first data from sensor150is synchronized to the second data from sensor160when received by web application112and is actionable by data client110.

Master hub120may further include database124stored to a transitory and/or non-transitory memory of master hub120, which may store various applications and data and be utilized during execution of various applications and modules of master hub120. Database124may store identifiers used to identify and communicate with various devices, servers, and/or sensors, for example, identifiers associated with client device110, data hub130, data hub140, sensor150, and/or sensor160. Database124may also store received information, such as a request to access sensors150/160(e.g., a query for data from sensors150/160) as well as received data from data hubs130/140.

Master hub120includes network interface component126adapted to communicate with client device110, data hub130, data hub140, sensor150, and/or sensor160. In various embodiments, network interface component126may include a DSL (e.g., Digital Subscriber Line) modem, a PSTN (Public Switched Telephone Network) modem, an Ethernet device, a broadband device, a satellite device and/or various other types of wired and/or wireless network communication devices including microwave, radio frequency, infrared, Bluetooth, and near field communication devices.

Data hub120and data hub130may be implemented as a server or other computing device (e.g., client computing device) that may be established as a data hub of a plurality of data hubs in closest proximity to sensor150and sensor160, respectively, on network170. As discussed herein, master hub120may have determined data hub130is in closest proximity to sensor150on network170and data hub140is in closest proximity to sensor160on network170. Data hubs130and140may be utilized to retrieve data from sensors150and160, respectively, when master hub120request data from sensors150and160. In this regard, data hubs130and140includes one or more processing applications which may be configured to interact with master hub120to receive a request for data from master hub120, begin pulling data from sensors150and160, respectively, use federation data processes to add the data from sensors150or160to a database table with timestamps for each data entry in the table, and communicate the data from sensors150or160to master hub120. Although a server is shown, the server may be managed or controlled by any suitable processing device.

Data hubs130/140ofFIG. 1contain data retrieval modules132/142, databases134/144, and network interface components136/146, respectively. Data retrieval modules132/142may correspond to executable processes, procedures, and/or applications with associated hardware. In other embodiments, Data hubs130/140may include additional or different hardware and software as required.

Data retrieval modules132/142may correspond to one or more processes to execute modules and associated devices of data hubs130/140, respectively to receive a request from master hub120for data detected by sensors150/160, respectively, collect the data to a database table/object to create a materialized view including the data and a timestamp for each datum in the data, and communicate the data to master hub120for sorting by data sorting module122. In this regard, data retrieval modules132/142may correspond to specialized hardware and/or software that may first begin in an IDLE state, where data hubs130/140are not requesting data from sensors150/160, respectively. Once data hubs130/140receive a request for data from sensors150/160, data retrieval modules132/142may move data hubs130/140, respectively, to a SENDING state, where data hubs130/140begin pulling data from sensors150/160, respectively (e.g., activate and/or retrieve data using sensors150/160, such as data for real world conditions, events, and/or locations associated with sensors150/160). In the SENDING state, data retrieval modules132/142may begin the process of collecting data for data client110.

In order to provide actionable data to master hub120and thus data client110, data retrieval modules132/142may clear one or more materialized views of a database table/object prior to collecting data from sensors150/160, respectively. Once data retrieval modules132/142move to the SENDING state, data retrieval modules132/142may begin filling their respective database tables/objects with data retrieved from sensors150/160, respectively. Thus, data retrieval modules132/142may fill a materialized view of the database tables/objects with data retrieved from sensors150/160, respectively. The materialized view filled by data retrieval modules132/142may include a plurality of data fields having individual datum readings in the data. The materialized view in the database table/field may further include a time stamp for each datum in the database table/object. The time stamps may be used to determine when an entry of the data in the database table/field was captured. Data retrieval module132/142may the provide data in the materialized view to master hub120, which may receive and sort the data as time synchronized using the time difference determined by data sorting module122, as discussed herein.

Data hubs130/140may further each include databases134/144, respectively, stored to a transitory and/or non-transitory memory of data hubs130/140, which may store various applications and data and be utilized during execution of various applications and modules of data hubs130/140. Databases134/144may store identifiers used to identify and communicate with various devices, servers, and/or sensors, for example, identifiers associated with client device110, master hub120, sensor150, and/or sensor160. Database134/144may also store received information, such as a data pulled from sensors150/160, respectively, which is stored to a materialized view of a database table/object.

Data hubs130/140each include a network interface component136/146adapted to communicate with client device110, master hub120, sensor150, and/or sensor160. In various embodiments, network interface component136/146may include a DSL (e.g., Digital Subscriber Line) modem, a PSTN (Public Switched Telephone Network) modem, an Ethernet device, a broadband device, a satellite device and/or various other types of wired and/or wireless network communication devices including microwave, radio frequency, infrared, Bluetooth, and near field communication devices.

Sensors150/160may be implemented as a sensing device that may collect data from a location or other environment that sensors150/160are stored to. For example, sensors150/160may correspond to sensors to detect light, sound, atmospheric conditions, human or other living organism's parameters, chemical, physical, or biological information, or other types of sensors. Sensors150/160may be configured to stream data to data hubs130/140, respectively, so that the data may be stored with time stamps in order to allow for synchronized data.

Network170may be implemented as a single network or a combination of multiple networks. For example, in various embodiments, network170may include the Internet or one or more intranets, landline networks, wireless networks, and/or other appropriate types of networks. Thus, network170may correspond to small scale communication networks, such as a private or local area network, or a larger scale network, such as a wide area network or the Internet, accessible by the various components of system100.

FIG. 2is a simplified block diagram illustrating exemplary data hub architecture to provide actionable data from remote sensor feeds, according to an embodiment. Although the components of system200are shown residing as separately connected devices or components, it is understood structures shown in system200may be included in the same device. For example, a data client may be included within or local to a master hub establishing a time difference between one or more data hubs and querying the one or more data hubs, while a sensor may be included within or local to a data hub used to collect data from the sensor.

Data client web application112in system200may be utilized to initiate a retrieval of data from a sensor150a, a sensor150b, a sensor150c, a sensor160a, and a sensor160b. Sensors150a-cmay correspond generally to sensor150inFIG. 1. Similarly, sensors160aand160bmay correspond generally to sensor160inFIG. 1. Once data client web application112receives a query from sensors150a-c,160a, and160b, data client web application112may utilize master hub120to determine data hubs closest to sensors150a-c,160a, and160b. As discussed herein, master hub120may be the closest data hub of a plurality of data hubs so that delays in data signal transmissions between data client web application112and master hub120are minimized. For example, data client web application112and master hub120may be located within a geographic region of New York280. Master hub120may register as located in a region. Thus, when data client web application112provides information associating data client web application112as also located within or nearby that region, master hub120may be established as the master hub based on the similarity in location data. In other embodiments, data client web application112may ping one or more of the plurality of data hubs accessible on a network (or vice versa) to determine master hub120as the closest hub to data client web application110.

Once master hub120is determined, master hub may receive the query for data from sensors150a-c,160a, and160b. As shown in environment200, the query to access and receive data from sensors150a-c,160a, and160bincludes two parts, a first query for first data from sensors150a-cin Singapore282aand a second query for second data from sensors160aand160bin Czech Republic282b. Thus, sensors150a-care located remotely from sensors160aand160b. In order to receive actionable data that is time synchronized between sensors150a-c,160a, and160b, master hub120may determine a data hub available on a network that is in proximity to sensors150a- and/or closest to sensors150a-con the network as well as a data hub that is in proximity to sensors160aand160band/or closest to sensors160aand160bon the network. Thus, master hub determines that a data hub130is closest to sensors150a-cso that data signals from sensors150a-cwill have the least delay in travelling to data hub130. As shown in environment200, data hub130is also located within or in proximity to Singapore282a. As previously discussed, data hub130may register as located within or in proximity to the location of sensors150a-c, or data hub130may ping sensors150a-cto determine a delay in signal transmission when communicating with sensors150a-c. Similarly, master hub120may determine data hub140is best situated to receive data from sensors160aand160bwith the least amount of delay.

Once data hub130is established to retrieve data from sensors150a-cand data hub140is established to receive data from sensors160aand160b, master hub120may then query data hub130and data hub140for data from their respective sensors. Master hub may utilize a time difference between signal transmission delays from data hub130and from data hub140to query data hub130and data hub140. The time difference may be established based on a first amount of delay in communicating a signal to data hub130and a second amount of delay in communicating a signal to data hub140. Once the time difference is established, master hub120may store the time difference for use in querying data hub130and data hub140as well as for use in sorting data received from data hub130and data hub140.

As discussed herein, data hub130may clear all or part of the materialized views in a database table/object of a federated database when data hub130is not actively pulling data from sensors150a-c. Once data hub130moves to a state where data hub130is pulling data from sensors150a-c, data hub130may begin filling a materialized view of the database table/object using data retrieved from sensors150a-c. The materialized view may include a number for each data reading (e.g., datum) in the first data retrieved from sensors150a-cas well as a time stamp for each data. Similarly, data hub140may use a federated database to store second data from sensors160aand160bto a database table/object of data hub140with numberings and/or time stamps for each datum in the second data. Using the time stamp and the time difference, the first data provided by data hub130to master hub120may be time synchronized with the second data provided by data hub140to master hub120.

Master hub120may then receive the first data and the second data from data hub130and data hub140, respectively. Using data federation, master hub120may sort the first and second data to a database table/object, where the first and second data is time synchronized within the table so that the first data and the second data are actionable as time synchronized data (and not data that may be received at the same time by master hub120but occurring at two different time periods, for example, if master hub120did not use the time difference to account for delay in signal transmission of the first or second query and/or response of the first or second data). Master hub120may then communicate the first data and the second data after sorting to data client web application112. In other embodiments, master hub120may not sort and store the first data and the second data to a database table/field and may sort the first data and the second data and directly stream the results to data client web application112.

FIG. 3is a flowchart illustrating an exemplary process for use with data hub architecture to provide actionable data from remote sensor feeds, according to an embodiment. Note that one or more steps, processes, and methods described herein may be omitted, performed in a different sequence, or combined as desired or appropriate.

At step302, a request to access at least one first sensor in a first location and at least one second sensor in a second location is received from a data client by a master hub of a plurality of data hubs, wherein a network includes the plurality of data hubs, and wherein the master hub is closest to the data client of the plurality of data hubs on the network. The master hub may be located in the same or similar geographic region and may be determined by the data client or one or more of the plurality of data hubs (including the master hub) using ping detection or registered locations of the data client and the master hub.

At step304, a first data hub of the plurality of data hubs that is closest to the at least first sensor on the network is determined by the master hub. Moreover, at step306, a second data hub of the plurality of data hubs that is closest to the at least one second sensor on the network is determined by the master hub. Similar to the master hub, the first data hub and the second data hub may be determined to be closest to the at least one first sensor and the at least one second sensor, respectively, using ping detection of signal transmission delays by the first data hub with the at least one first sensor and/or by the second data hub with the at least one second sensor. In other embodiments, the first data hub and the second data hub may be determined to be closest to the at least one first sensor and the at least one second sensor, respectively, through registered locations and/or location identification (e.g., location coordinates) of the first data hub, the second data hub, the at least one first sensor, and/or the at least one second sensor.

At step308, the first data hub is queried by the master hub for first data from the at least one first sensor. Similarly, at step310, the second data hub is queried by the master hub for second data from the at least one first sensor. Prior to the querying, by the master hub, the first data hub and/or the second data hub, the master hub may determine a first time delay between the master hub and the first data hub and a second time delay between the master hub and the second data hub. The first time delay may comprise a first amount of time to receive, by the master hub, a first data signal from the first data hub. Additionally, the second time delay may comprise a second amount of time to receive, by the master hub, a second data signal from the second data hub. The master hub may determine the first time delay by pinging the first data hub by the master hub to determine the first amount of time. The master hub may also determine the second time delay by pinging the second data hub by the master hub to determine the second amount of time. Thus, prior to the master hub querying the first data hub and the second data hub, the master hub may determine a time difference between receiving the first data signal from the first data hub and receiving the second data signal from the second data hub using the first time delay and the second time delay.

The first data hub may comprise a first federated database system using data federation to retrieve the first data from the at least one first sensor and the second data hub may comprise a second federated database system using data federation to retrieve the second data from the at least one second sensor. Thus, the first data hub may fill a first materialized view with the first data from the at least one first sensor, wherein the first materialized comprises at least a first data column comprising the first data and a first timestamp column comprising at least one first timestamp for each datum in the first data, wherein the at least one first timestamp comprises at least one first time that the each datum in the first data is collected by the at least one first sensor. Similarly, the second data hub may fill a second materialized view with the second data from the at least one second sensor, wherein the second materialized comprises at least a second data column comprising the second data and a second timestamp column comprising at least one second timestamp for each datum in the second data, wherein the at least one second timestamp comprises at least one second time that the each datum in the second data is collected by the at least one second sensor. The master hub may then use the time difference to synchronize querying the first data hub for the first data and querying the second data hub for the second data so that the at least one first timestamp and the at least one second timestamp match.

Once the first data and the second data are received by the master hub, at step312, the first data and the second data to the data client is communicated to the data client. In various embodiments, the master hub may comprise a master federated database system using data federation to retrieve the first data from the first data hub and the second data from the second data hub. Thus, prior to communicating, by the master hub, the first data and the second data to the data client, the master hub may receive the first data from the first data hub and the second data from the second data hub. The master hub may further sort the first data and the second data according to the at least one first timestamp and the at least one second timestamp, for example, using the time difference. The master hub may then stream the first data and the second data to the data client after sorting the first data and the second data. The master hub may use a select union query when querying the first data hub for the first data, querying the second data hub for the second data, and sorting the first data and the second data.

FIG. 4is a block diagram illustrating a computer system suitable for implementing one or more components inFIG. 1, according to an embodiment. In various embodiments, the data client may comprise a personal computing device (e.g., smart phone, a computing tablet, a personal computer, laptop, a wearable computing device such as glasses or a watch, Bluetooth device, key FOB, badge, etc.) capable of communicating with the network. The master and/or data hubs may utilize a network computing device (e.g., a network server) capable of communicating with the network. It should be appreciated that each of the devices utilized by users and service providers may be implemented as computer system400in a manner as follows.

Computer system400includes a bus402or other communication mechanism for communicating information data, signals, and information between various components of computer system400. Components include an input/output (I/O) component404that processes a user action, such as selecting keys from a keypad/keyboard, selecting one or more buttons, image, or links, and/or moving one or more images, etc., and sends a corresponding signal to bus402. I/O component404may also include an output component, such as a display411and a cursor control413(such as a keyboard, keypad, mouse, etc.). An optional audio input/output component405may also be included to allow a user to use voice for inputting information by converting audio signals. Audio I/O component405may allow the user to hear audio. A transceiver or network interface406transmits and receives signals between computer system400and other devices, such as another communication device, service device, or a service provider server via network170. In one embodiment, the transmission is wireless, although other transmission mediums and methods may also be suitable. One or more processors412, which can be a micro-controller, digital signal processor (DSP), or other processing component, processes these various signals, such as for display on computer system400or transmission to other devices via a communication link418. Processor(s)412may also control transmission of information, such as cookies or IP addresses, to other devices.

Components of computer system400also include a system memory component414(e.g., RAM), a static storage component416(e.g., ROM), and/or a disk drive417. Computer system400performs specific operations by processor(s)412and other components by executing one or more sequences of instructions contained in system memory component414. Logic may be encoded in a computer readable medium, which may refer to any medium that participates in providing instructions to processor(s)412for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. In various embodiments, non-volatile media includes optical or magnetic disks, volatile media includes dynamic memory, such as system memory component414, and transmission media includes coaxial cables, copper wire, and fiber optics, including wires that comprise bus402. In one embodiment, the logic is encoded in non-transitory computer readable medium. In one example, transmission media may take the form of acoustic or light waves, such as those generated during radio wave, optical, and infrared data communications.

In various embodiments of the present disclosure, execution of instruction sequences to practice the present disclosure may be performed by computer system400. In various other embodiments of the present disclosure, a plurality of computer systems400coupled by communication link418to the network (e.g., such as a LAN, WLAN, PTSN, and/or various other wired or wireless networks, including telecommunications, mobile, and cellular phone networks) may perform instruction sequences to practice the present disclosure in coordination with one another.

The foregoing disclosure is not intended to limit the present disclosure to the precise forms or particular fields of use disclosed. As such, it is contemplated that various alternate embodiments and/or modifications to the present disclosure, whether explicitly described or implied herein, are possible in light of the disclosure. For example, in-store purchases have been described, but advantages discussed herein may also be achieved through online purchases. Having thus described embodiments of the present disclosure, persons of ordinary skill in the art will recognize that changes may be made in form and detail without departing from the scope of the present disclosure. Thus, the present disclosure is limited only by the claims.