Configuration¶
The configuration of the GraphQL service is in the file
<DENODO_HOME>/resources/apache-tomcat/webapps/denodo-graphql-service/WEB-INF/classes/application.properties
:
In this file you can modify the following properties:
cors.allowed-origins
: This service has Cross-origin resource sharing (CORS) enabled. The section Cross-origin Resource Sharing (CORS) (settings of published REST web services) explains what CORS is. If you are going to enable CORS in this service, follow the steps of the section Initial Set-Up of CORS (you may have done this already if you published a Denodo REST web service with CORS enabled).By default, the value of the property
cors.allowed-origins
is*
. But this value is not allowed as it is against the CORS specification because it may cause security problems.So you must configure the property, before using the GraphQL service, to include the list of allowed URLs (separate each URL by a comma), from which GraphQL requests are allowed. For example,
http://foo.com, https://foo.bar.com
.graphql.enable.filtering
: Iftrue
, user is allowed to sort data, specify complex filters, group results and calculate aggregation functions in the GraphQL queries. If false the user is only allowed to use GraphQL standard features. Default istrue
.graphql.max.query.complexity
: GraphQL Service prevents the execution of the query if its complexity is greater than the value specified by this property. The complexity is calculated using this formula:1 + childComplexity
. Default is200
.graphql.max.query.depth
: GraphQL Service prevents the execution of the query if its depth is greater than the value specified by this property. Default is5
.graphql.endpoint
: Default is/graphql
.query.default-page-size
: Number of results returned per query. If-1
all results are retrieved. Default is1000
.vdp.datasource.driverClassName
: The full package name of the Denodo driver class. Its value iscom.denodo.vdp.jdbc.Driver
and should not be modified.vdp.datasource.jdbcUrl
: URI that the GraphQL service uses to connect to Virtual DataPort. The default value isjdbc:denodo://localhost:<PORT>/?noAuth=true
.If you change the port of Virtual DataPort (by default, 9999), modify this property accordingly.
vdp.admin.allowed
: set tofalse
to prevent the user account admin from accessing the GraphQL service. The service only takes this property into account when it uses HTTP Basic authentication. This property does not affect other administrator accounts, only the user account admin.Default value:
true
.
In addition to the vdp.datasource.jdbcUrl
and vdp.datasource.driverClassName
general datasource configuration properties, to further configure the connection pool
properties (defined by the connection pool implementation) like pool size or idle
connections timeout, we need to prefix them with vdp.datasource
.
For example, using the default connection pool implementation (HikariCP) its particular configuration properties (detailed in the HikariCP configuration section) can be specified like:
vdp.datasource.minimumIdle=5
vdp.datasource.maximumPoolSize=20
vdp.datasource.idleTimeout=30000
vdp.datasource.maxLifetime=2000000
vdp.datasource.connectionTimeout=30000
GZIP¶
The GraphQL website
recommends that any production GraphQL service enable GZip compression and
encourage their clients to send the header Accept-Encoding: gzip
.
Depending on your scenario, compressing the JSON response can increase the performance or not.
To enable GZip compression in the GraphQL Service, edit the file <DENODO_HOME>/resources/apache-tomcat/webapps/denodo-graphql-service/WEB-INF/classes/application.properties
and this:
# enable response compression
server.compression.enabled=true
# comma-separated list of mime types that should be compressed
server.compression.mime-types=application/json, application/graphql