構成¶
GraphQL サービスの構成は、 <DENODO_HOME>/resources/apache-tomcat/webapps/denodo-graphql-service/WEB-INF/classes/application.properties ファイルにあります。
このファイルでは、以下のプロパティを変更できます。
cors.allowed-origins: このサービスでは、オリジン間リソース共有 (CORS) が有効になっています。CORS の詳細については、「 オリジン間リソース共有 (CORS) 」 (公開されている REST Web サービスの設定) を参照してください。CORS をこのサービスで有効にする場合、「 CORS の初期設定 」の手順に従って設定を行います (CORS が有効な状態で Denodo REST Web サービスを公開している場合は、実施済みです)。デフォルトでは、
cors.allowed-originsプロパティの値は*です。ただし、この値は許可されていません 。CORS の仕様に反しており、セキュリティ上の問題を引き起こす可能性があるためです。GraphQL リクエストが許可される URL のリスト (各 URL をカンマで区切る) が含まれるように、 GraphQL サービスを使用する前に、プロパティを構成する必要があります 。
http://foo.com, https://foo.bar.comのようになります。graphql.enable.filtering:trueである場合、データの並べ替え、複雑なフィルタの指定、結果のグループ化、および集計関数の計算を GraphQL クエリで実行できます。false の場合、GraphQL の標準機能のみを実行できます。デフォルトはtrueです。graphql.max.query.complexity: このプロパティで指定した値よりも複雑さが大きいクエリが実行されないようにします。複雑さは、式1 + childComplexityで計算します。デフォルト値は200です。graphql.max.query.depth: このプロパティで指定した値よりも深さが大きいクエリが実行されないようにします。デフォルト値は5です。graphql.endpoint: デフォルト値は/graphqlです。query.default-page-size: クエリあたりで返す結果の数。-1の場合、すべての結果が取得されます。デフォルト値は1000です。vdp.datasource.driverClassName: Denodo ドライバークラスの完全なパッケージ名。値はcom.denodo.vdp.jdbc.Driverですが、これは変更 しない ようにする必要があります。vdp.datasource.jdbcUrl: GraphQL サービスが Virtual DataPort に接続する際に使用する URI。デフォルト値はjdbc:denodo://localhost:<PORT>/?noAuth=trueです。Virtual DataPort のポートを変更する場合 (デフォルトは 9999)、このプロパティを変更してください。
vdp.admin.allowed: ユーザーアカウント admin による GraphQL サービスへのアクセスを許可しない場合はfalseに設定します。サービスは、HTTP Basic 認証を使用している場合にのみ、このプロパティを考慮します。このプロパティは、他の管理者アカウントには影響を与えません。ユーザーアカウント admin のみに影響を与えます。デフォルト値は
trueです。
一般的なデータソースの構成プロパティである vdp.datasource.jdbcUrl と vdp.datasource.driverClassName に加えて、プールサイズやアイドル接続タイムアウトなどの コネクションプール のプロパティ (コネクションプールの実装によって定義される) を構成するには、そのプロパティの前に vdp.datasource を付ける必要があります。
たとえば、デフォルトのコネクションプールの実装 (HikariCP) を使用する場合、その特定の構成プロパティ (HikariCP 構成セクションを参照) を次のように指定できます。
vdp.datasource.minimumIdle=5
vdp.datasource.maximumPoolSize=20
vdp.datasource.idleTimeout=30000
vdp.datasource.maxLifetime=2000000
vdp.datasource.connectionTimeout=30000
GZIP¶
GraphQL の Web サイト では、本番環境の GraphQL サービスは GZip 圧縮を有効にして、 Accept-Encoding: gzip ヘッダーの送信をクライアントに促すことが推奨されています。
JSON 応答の圧縮によってパフォーマンスが向上するかどうかは、状況によります。
GraphQL サービスで GZip 圧縮を有効にするには、 <DENODO_HOME>/resources/apache-tomcat/webapps/denodo-graphql-service/WEB-INF/classes/application.properties ファイルを次のように編集します。
# 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
