Denodo GraphQL Service¶
GraphQL is a data query language, and a runtime for executing those queries against your data.
It gives clients the power to ask for exactly what they need.
It gets many resources in a single request, reducing the number of API requests.
Denodo GraphQL Service enables the execution of GraphQL queries against the Denodo virtual data model, allowing graphQL-like queries on top of any data source.
To access the GraphQL service, go to http://denodo-server.acme.com:9090/denodo-graphql-service/graphql/<database>/schema.json
This service is always available once you start Virtual DataPort.
Note
Indicating <database>
in the URL is mandatory.
Denodo GraphQL Service follows a bottom-up approach where the API specifications are automatically generated from the metadata of the Denodo views and stored procedures.
The GraphQL Service creates a query type for each view and stored procedure of a Denodo database. The view fields appear as children of the view object, and the same occurs for the parameters, in the case of stored procedure objects. Associations in Denodo are mapped to nested relationships between the different objects, so the GraphQL queries will fetch related objects and their fields in one request.
type Query {
order(order_id: Int, cust_id: Int, total_price: BigInteger, order_desc: String, order_date: Timestamp, last_updated_time: Timestamp, _first: Int, _offset: Int): [order]!
}
type order {
order_id: Int
cust_id: Int
total_price: BigInteger
order_desc: String
order_date: Timestamp
last_updated_time: Timestamp
order_detail: [order_detail]! # Denodo Association
}
# Custom Scalar for Timestamp.
# Its format is:yyyy-MM-dd hh:mm:ss[.sss]
scalar Timestamp
Denodo GraphQL Service responses are given in JSON format.
The privilege system of Denodo is enforced, so users see only the views and stored procedures they are authorized to access.
Features¶
The Denodo GraphQL Service provides:
Read-only access to Denodo databases
Pagination
Filtering (when property
graphql.enable.filtering
istrue
)Sorting (when property
graphql.enable.filtering
istrue
)Group by and aggregation functions (when property
graphql.enable.filtering
istrue
)HTTP Authentication
Basic
SPNEGO (Kerberos)
OAuth 2.0
Cross-Origin Resource Sharing (CORS) enabled by default, as the typical use for the GraphQL service is querying from the JavaScript ecosystem. Therefore before using it, you have to tweak the
cors.allowed-origins
property.Passing CONTEXT clause variables dynamically
The ability to use Authenticated Sessions
Check the Configuration section for more details.