Understanding the Data Service

Note:

Note that:

  • Platform features can be extended further depending on the project requirements. For more details, please refer to Chapter Extending the Application Features.

  • Access to this service requires authentication. For more details, please refer to Chapter Managing Users.

  • The schema of the Data Service database is relational which means it can be queried using standard DBMS tools. Accessing and editing the database this way is technically feasible but the only officially supported way of accessing and editing data is through the Data Service API.

  • Before each data modification, the Data Service calls the Scenario Service "canWrite" API in order to know if the current user can perform the modification.

The Platform stores scenario information through two different services, each one using its own database:

  • The Scenario Service relies on a MongoDB database to store scenario specific metadata and properties, the workspaces and folders hierarchy and application configuration settings. For more details, please refer to Chapter Understanding the Scenario Service.

  • The Data Service relies on a relational database to store the actual data associated with each scenario. It can import, export scenarios in various formats, such as Excel ftemplates or DOM snapshots (dbrf). For more details, please refer to Chapter Managing the Application Data.

The Data Service allows to retrieve or edit subsets of scenario data and can serve paginated access on specified entities. It also allows comparing values between scenarios.

The data is stored in a PostgreSQL database which is run in its own Docker container. Additional relational databases will be supported in the future.

The default behavior of the database is to split the data by scenario using Table Partitioning. This guarantees a high level of performance when having a lot of scenarios in the application. Under some special cases, and with some specific PostgreSQL configurations, this feature can be disabled using the following application property in the data-service-extension module. This setting CANNOT be changed once a database has already been initialized.

spring.datasource.data-partitioning=false