Datastore Helper implementation within MR

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

Implementations of the AConfigurableSchema class

All the MR libraries datastores are provided as extensions of the AConfigurableSchema and AScalarDataAwareSchema classes. These classes are annotated as @Configuration, then collected and applied to the IDatastoreConfigurator object in the DatastoreConfiguratorSetup class.

The full list is as follows:

Class Datastore types
DatastoreDescriptionConfig FX, rounding, and quantiles stores for all cubes.
StandardDatastoreDescriptionConfig Trade and organizational stores for all cubes.
VaRDatastoreDescriptionConfig Standard VaR datastores.
PnLDatastoreDescriptionConfig Standard PnL datastores.
SensiDatastoreDescriptionConfig Vectorized and scalar Sensitivity datastores.
VaRFlatDatastoreDescriptionConfig Denormalized datastores for VaR store-level imports.
PnLFlatDatastoreDescriptionConfig Denormalized datastores for PnL store-level imports.
SensiFlatDatastoreDescriptionConfig Denormalized datastores for vectorized and scalar Sensitivity store-level imports.
VaRAggregatedDatastoreDescriptionConfig Denormalized datastores for VaR aggregated imports.
PnLAggregatedDatastoreDescriptionConfig Denormalized datastores for PnL aggregated imports.
SensiAggregatedDatastoreDescriptionConfig Denormalized datastores for vectorized and scalar Sensitivity aggregated imports.
ParameterDatastoreDescriptionConfig ActiveMonitor parameter store.
WhatIfDatastoreDescriptionConfig What-If tool datastore.

The DatastoreConfiguratorSetup class

All Spring beans are collected in the DatastoreConfiguratorSetup class. The@Configuration classes are expected to be made conditional on application properties and thus result in the correct set of datastores for each run mode.

The configurator consumers

Due to the usage of Spring profiles within the application, all configured schemas and customizations are enabled via auto-wired Spring beans, instantiated for particular profiles.

The class auto-wires 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.

Customizations classes

The Market Risk Accelerator contains two customization classes that instantiate beans auto-wired 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.