DirectQuery REST service

DirectQuery REST service

The DirectQuery REST service allows for incremental refreshing of the remote database as well as validating the Schema while the application is running.

The REST service is available at: host:port/frtb-starter/directquery/

The REST service contains the following components:

Security Configuration

The security configuration is handled by the DQRestServiceSecurityConfig bean defined in the SecurityConfig. The default security config limits the use of this service to only ADMIN use.

Application Refresh

The application can be refreshed at any point in time to ensure the DirectQuery aggregates are in sync with the remote database. For more information about this process, see the Atoti Server’s documentation for Data Refresh.

When the application starts, we run aggregation queries and store the results in-memory. This allows us to execute queries without needing to run queries on the remote database.

Out-of-the-box, the aggregates are defined to just exclude the Trade level. This is defined in the DirectQueryAggregateProviderConfig class which means trade-level queries will have to be executed on the remote database.

If new data is added to the remote database, the application will not reflect these new values. To get the application in sync with the remote database, a refresh operation must be performed.

/refresh Endpoint

URL: host:port/frtb-starter/directquery/refresh

Request Type: POST

Body: none

JSON Response

The response will indicate the total time in Milliseconds the refresh operation took to complete.

Example response:

{
    "refreshTimeInMilliseconds": 12345
}

Schema Validation

A schema validation check can be performed at any point in time and does not affect the application.

The validation simply runs some checks against the remote database to ensure tables are readable and that there are no duplicate keys in any of the database tables.

If the remote database schema is bad / invalid, this can result in significant performance issues. A schema with duplicate keys can result in longer than normal aggregation / application refresh times.

/validateSchema Endpoint

URL: host:port/frtb-starter/directquery/validateSchema

Request Type: GET

Response

The response will indicate if there were any errors, what they were, the SQL to reproduce the failed check, and how long the validation check took.

Example response:

{
    "errors": [],
    "totalTimeInMilliseconds": 12345,
    "valid": true
}