Data abstraction
Data abstraction interface
The data abstraction interface is domain-independent middleware technology to hide the details of the actual data storage and to make the client data access transparent and independent from the data storage. The data abstraction interface is used to integrate the technology components and applications together. This can also be considered as ORM (Object Relation Mapping) from the relational data model of RTDB to the object-oriented model in the data abstraction interface.
Client (Service layer in the picture below) is software that uses the data abstraction interface to connect to one or more data providers (Storage layer). The Client can itself be a server, such as an OPC UA Server or UI web server, which may have its own clients.
An integration scenario contains at least one data provider/storage that is used to share the data between the clients. Data providers are connected to the data abstraction interface with the server-side API that performs the mapping from the common information model to the local structures in the storage.
The client APIs are independent of the data provider. The client can use the same API to access data in any storage. The public client APIs contain industry-standard APIs such as OPC (Classic and UA), OData, and ODBC/SQL, and platform proprietary APIs including REST API and MS .NET APIs. The data provider/server API to connect storage layer to data abstraction interface is based on MS .NET.
Data abstraction interface is MS .NET based and it uses a secure Websocket for transport between clients and servers as well as in system-to-system communication. The client can connect to the data abstraction interface with the .NET API or any of the APIs built above it. ABB Ability™ History, as well as other data providers, are connected to the data abstraction interface with the server-side API. Data access in the data abstraction interface is based on the unified information meta-model and it is the same for all the data sources.
Data abstraction interface provides accelerators for frequently used functions such as time and unit conversions, National Language Support (NLS), and time series management. Data abstraction interface filters are used to perform online aggregation for the retrieved data, such as FFT, histogram, and the typical statistics such as AVG, DEV, SUM, and operating time.
Each information model can define whether it is cacheable or not. Cacheable instances are automatically maintained up-to-date in the client and server memory caches to improve performance. Data storage notifies any changes in the data to update the instance copy in the cache and further to provide an event available to the client.
There are two basic types of classes a data provider can publish; data class and command class. Data classes are used to model data and to provide access to the instances and their properties. Command classes are used to model server-side executable commands and to execute them. Both of the class types support interface definitions to handle the properties with the class-specific interface by the client, and the possibility for server-side plugins for application-specific business logic.
To further learn about accessing data, security and class definitions, see next articles.
The picture above visualizes the purpose of VtrinLib. By providing a common interface, VtrinLib makes it easy for clients to connect different data sources. Any service layer service can be connected to any storage layer data source via the same VtrinLib interface. In addition to the data abstraction, VtrinLib provides multiple functionalities to cyber security and handling of time series data such as online aggregation, unit conversion, and National Language Support (NLS).
Data providers
Data provider is an interface from the data abstraction interface to the native API of the database. ABB Ability™ History contains ready made data providers for SQL Server, OPC and ODBC/SQL data sources. As an example of the benefit of the data abstraction interface is that the implementation of a data provider for a data source enables reuse of the above public interfaces and tools, and enables e.g. UI or OPC UA server for your data storage.
Recommended further reading
- Technical overview explaining software architecture and the principals of data abstraction interface in it: Getting started - Technical overview
- Further details and in-depths data accessing methods may be read from separate VtrinLib article.
Updated 5 months ago
