The relationship between components of Historical Datastore (HDS) is illustrated in the diagram below:
The core component is a client setting up Historical Datastore and its APIs. The configuration is obtained from the Configuration Loader and is used to initialize required APIs, the OAuth Client, and to register the service in one or more Service Catalog. This component also takes care of the graceful shutdown of all components and service de-registration.
Registry is a set of components allowing registration and retrieval of data source information. The information includes meta data about a sensor as well as the configuration and means to access the historical data of that sensor. The API exposes RESTful endpoints to interface with an underlying storage backend. The storage backend can be any storage system providing the required interface to the API component. Data Storage and Aggregation Storage components will be notified of any changes to data sources in order to take necessary actions (e.g. creating database tables).
Data provides an interface to store and access historical data. The API exposes endpoints to store and retrieve raw data points. The default API is RESTful, supporting SenML media type. The API and media types are extensible. The storage backend can be any scalable storage system providing the required interface. The storage keeps data for a specific period of time set during the data source registration. It also receives and handles notifications from the Registry API about changes to data sources and performs necessary actions to accept incoming data points from every source. Aggregation Storage will be notified of any successful data point submission to the Data API. This type of notification does not apply to storage backends that support built-in automated aggregation.
Aggregation is tightly coupled with the Data component generating aggregated data points given raw data. Data aggregation is done automatically when data points are submitted via the Data API. This is done via a notification mechanism between Data and Aggregation components or via their underlying storage systems. The configuration for the aggregation, including the aggregate types, retention policy, and intervals are set as part of the data source registration via Registry API. Aggregation Storage is notified about any changes to the registration. Aggregation API exposes an endpoint for retrieval of aggregated data points. By default, the endpoint is RESTful with SenML media type.
This component requires a JSON file containing configuration of Historical Datastore and its APIs. Upon startup, the component loads the configuration object and provides an interface for structured retrieval of the attributes.
This component exchanges user credentials with an Authentication Server for access ticket to a Service Catalog. The client also takes care of ticket renewals and invalidation upon service updates and de-registration respectively.