Datastore Helper implementation within MRA

This page provides implementation details about the usage of the Datastore Helper 2.0 library within MRA, focusing on the wiring between different datastore definitions and customizations. For documentation of the library itself, see Datastore Helper.

Implementations of the AConfigurableSchema class

All the reference implementation datastores are provided as implementations of the AConfigurableSchema class. With the migration to DaSH 2.0, these classes are no longer @Configuration classes, instead being instantiated directly, in the DatastoreConfiguratorSetup class. To provide the option to load a schema for vectorised and scalar data, these classes also extend the AScalarDataAwareSchema class.

The full list is as follows:

Class Datastore types
VaRDatastoreDescriptionConfig Standard VaR datastores.
PnLDatastoreDescriptionConfig Standard PnL datastores.
SensiDatastoreDescriptionConfig Vectorised and scalar Sensitivity datastores.
VaRFlatDatastoreDescriptionConfig Denormalised datastore for VaR store-level imports.
PnLFlatDatastoreDescriptionConfig Denormalised datastore for PnL store-level imports.
SensiFlatDatastoreDescriptionConfig Denormalised datastores for vectorised and scalar Sensitivity store-level imports.
VaRAggregatedDatastoreDescriptionConfig Denormalised datastore for VaR aggregated imports.
PnLAggregatedDatastoreDescriptionConfig Denormalised datastore for PnL aggregated imports.
SensiAggregatedDatastoreDescriptionConfig Denormalised datastores for vectorised and scalar Sensitivity aggregated imports.
ParameterDatastoreDescriptionConfig ActiveMonitor parameter store.
WhatIfDatastoreDescriptionConfig What-If tool datastore.

The DatastoreConfiguratorSetup class

All Spring beans are wired together in the DatastoreConfiguratorSetup class. This class groups collections of datastores into schemas, provides a mechanism to enable a subset of the schemas available within the configurator, and applies any customizations defined within the application.

The configurator consumers

Due to the usage of Spring profiles within the application, all configured schemas and customisations are enabled via autowired Spring beans, instantiated for particular profiles.

The class autowires two Consumer<IConfigurator> objects:

      @Autowired  
      @Qualifier(SP_QUALIFIER__SCHEMAS)  
    Consumer<IDatastoreConfigurator> schemaEnabler;  

      @Autowired(required = false)  
      @Qualifier(SP_QUALIFIER__CUSTOMISATIONS)  
      List<Consumer<IDatastoreConfigurator>> customisations;

The SP_QUALIFIER__SCHEMAS consumer controls which of the configured schemas (see AConfigurableSchema implementations) are enabled for a given set of enabled application profiles.

The SP_QUALIFIER__CUSTOMISATIONS consumer applies customizations defined elsewhere in the application configuration. See Customizations classes

The schema enabler

The schema enabler consumer is instantiated within the DatastoreConfiguratorSetup class, with different configurations depending on the active profile.

Schema list suppliers

The schema enabler beans use Supplier<List<AScalarDataAwareSchema>> objects to define groups of schemas that are lazily instantiated.

Three such suppliers are available, for standard application operation (with scalar or vectorised data), store-level imports and aggregated imports.

Supplier Instantiated classes
STORE_IMPORT_SCHEMAS ParameterDatastoreDescriptionConfig, PnLFlatDatastoreDescriptionConfig, VaRFlatDatastoreDescriptionConfig, SensiFlatDatastoreDescriptionConfig
AGGREGATED_IMPORT_SCHEMAS ParameterDatastoreDescriptionConfig, PnLAggregatedDatastoreDescriptionConfig, VaRAggregatedDatastoreDescriptionConfig, SensiAggregatedDatastoreDescriptionConfig
STANDARD_SCHEMAS WhatIfDatastoreDescriptionConfig, ParameterDatastoreDescriptionConfig, PnLAggregatedDatastoreDescriptionConfig, VaRAggregatedDatastoreDescriptionConfig, SensiAggregatedDatastoreDescriptionConfig

Profiles

The supplier and the parameters used for the schema instantiation are defined for each active profile.

Profile Supplier Schema type
SP_PROFILE__STANDARD STANDARD_SCHEMAS Standard(vectorised)
SP_PROFILE__SCALAR_SENSI STANDARD_SCHEMAS Standard (scalar)
SP_PROFILE__STORE_IMPORT STORE_IMPORT_SCHEMAS Store import (vectorised)
SP_PROFILE__SCALAR_SENSI_STORE_IMPORT STORE_IMPORT_SCHEMAS Store import (scalar)
SP_PROFILE__AGGREGATED_IMPORT AGGREGATED_IMPORT_SCHEMAS Aggregated import (vectorised)
SP_PROFILE__SCALAR_SENSI_AGGREGATED_IMPORT AGGREGATED_IMPORT_SCHEMAS Aggregated import (scalar)

Customizations classes

The Market Risk Accelerator contains three customization classes that instantiate beans autowired into the SP_QUALIFIER__CUSTOMISATIONS consumer list.

Class Usage
DatastoreCustomisations Empty class intended to provide a place to define simple customizations.
ProductControlDatastoreCustomisations Operates on the PnL base store. Makes the Type field a key field and adds Monthly, Yearly and Lifetime value fields.
SignOffDatastoreCustomisations Intended to support Sign-off adjustment source tagging. Adds Source and Input type fields to the Sensitivity and PnL base stores, for standard (vectorised and scalar) as well as source-level import and aggregated import profiles.