Integration pattern for current, historical, temporal, timeseries, etc.
Decision
Option C. Loose coupling. The focus of the PoC will be on current storage and model driven notifications to drive data towards other data stores.
Detail
There are three main options to integrate different DBMS technologies in the CPS. These are illustrated below at a high level.
Option A
This option uses a single service provider interface (SPI) to abstract the storage access for some or all types (time-series, temporal, current, etc.) of DBMS technology.
This looks nice, but:
the complexity of the SPI increases dramatically as more capabilities are added;
it provides challenges to the access interface
complicates the lifecycle of models – in particular deprecation and removal
makes polyglot persistence, where the appropriate technology is selected to ensure optimal use case characteristics, more difficult.
Option B
The B option removes the complexity of the SPI and the block to polyglot persistence. It still leaves the challenge to the access interface, and introduces a complexity to the Business logic. This component would need to be opened each time a new DBMS technology was required to ensure optimal use case characteristics. It also does not acknowledge the deployment of the Temporal SPI and DB will likely be in different process spaces (PODs).
Option C
The C option builds on the B option, and eliminates the need for design time activity in the core of the CPS by providing a clean asynchronous (event) interface.
Additional benefits come in the shape of clean access interfaces for each DBMS technology. These access interfaces can be as close or as far to the underlying technology selection as the use cases using them need them to be.
Note that this option does not preclude a single DMBS technology being used for different types of storage (e.g. Postgres providing current and temporal).
Discussion
Options above were presented in the weekly meetings (Jun 12, 2020 ). Initial decision was Option C, loose coupling.
Ted provided (Jun 19, 2020 ) input on (1) the differences between temporal and time series and (2) how a single DBMS technology could be used to provide both current and temporal storage.
Bruno provided an overview of the work being done in Bell w.r.t. State DB.