スキーマ¶
Denodo GraphQL サービスでは、Denodo データベースのビューとストアドプロシージャのメタデータから自動的に GraphQL スキーマが作成されます。

Denodo 'hibernate' データベースモデル¶
GraphQL サービスでは、ビューとストアドプロシージャごとにクエリタイプが生成されます。ビューの各フィールドは、そのビューオブジェクトの子として扱われます。ストアドプロシージャオブジェクトの場合は、パラメータが同様の扱いになります。Denodo のアソシエーションは、別々のオブジェクト間のネストしたリレーションシップにマッピングされるので、GraphQL クエリでは、関連するオブジェクトとそのフィールドが 1 回のリクエストでフェッチされます。
GraphQL の標準イントロスペクションメカニズムを使用できるほか、GraphQL サービス http://localhost:9090/denodo-graphql-service/graphql/<DBNAME>/schema.json
に GET リクエストを送信することによって、Denodo データベースのスキーマを容易に取得できます。

Denodo 'hibernate' データベースに対するスキーマリクエスト¶
スキーマは、Denodo データベースに対してクエリで要求できる一連のデータを記述します。たとえば、上記の Denodo 'hibernate' データベースモデルの場合、Denodo GraphQL サービスで以下のスキーマが生成されます。
type Query {
order(cust_id: Int, order_id: Int, total_price: BigInteger, order_desc: String, order_date: Timestamp, last_updated_time: Timestamp, _first: Int, _offset: Int): [order]!
order_detail(order_id: Int, prod_id: Int, price: BigInteger, last_updated_time: Timestamp, _first: Int, _offset: Int): [order_detail]!
product(prod_id: Int, prod_name: String, prod_desc: String, regular_price: BigInteger, last_updated_time: Timestamp, _first: Int, _offset: Int): [product]!
struct_type(emp_id: BigDecimal, _first: Int, _offset: Int): [struct_type]!
}
type order {
cust_id: Int
order_id: Int
total_price: BigInteger
order_desc: String
order_date: Timestamp
last_updated_time: Timestamp
order_detail: [order_detail]! # Denodo association
}
type order_detail {
order_id: Int
prod_id: Int
price: BigInteger
last_updated_time: Timestamp
orders: order # Denodo association
product: product
}
type product {
prod_id: Int
prod_name: String
prod_desc: String
regular_price: BigInteger
last_updated_time: Timestamp
order_detail: [order_detail]! # Denodo association
}
type struct_type {
emp_id: BigDecimal
employee: _STRUCT__struct_type_employee # Denodo register type
}
# Denodo register type
type _STRUCT__struct_test_employee {
name: String
salary: BigDecimal
}
#Custom Scalar for Timestamp. This type uses ISO8601
scalar Timestamp
カスタムスカラー型¶
Denodo GraphQL サービスには、GraphQL 仕様で定義されていない Denodo の型を扱うために、以下に示すカスタムスカラー型が用意されています。
Blob: Denodo Blob のカスタムスカラー。String として表示されますが、GraphQL クエリの引数として使用することはできません。
LocalDate: Denodo LocalDate のカスタムスカラー。この型は、ISO 8601 の拡張ローカル日付形式
yyyy-MM-dd
に従って日付の書式を設定および解析します。LocalDate 形式¶"date_type": "2018-02-04"
IntervalDaySecond: Denodo Intervaldaysecond のカスタムスカラー。String として表示されますが、GraphQL クエリの引数として使用することはできません。
IntervalDaySecond 形式¶"intervalds_type": "1 21:01:02.345"
IntervalYearMonth: Denodo Intervalyearmonth のカスタムスカラー。String として表示されますが、GraphQL クエリの引数として使用することはできません。
IntervalYearMonth 形式¶"intervalym_type": "-2-3"
Time: Denodo Time のカスタムスカラー。この型は、ISO 8601 の拡張ローカル時刻形式
hh:mm:ss[.sss]
に従って時刻の書式を設定および解析します。Time 形式¶"time_type": "16:06:11"
Timestamp: Denodo Timestamp のカスタムスカラー。この型は、ISO 8601 の拡張ローカル日付/時刻形式
yyyy-MM-dd hh:mm:ss[.sss]
(日付と時刻の間の区切り文字T
は省略) に従って日付/時刻の書式を設定および解析します。Timestamp 形式¶"timestamp_type": "2018-02-04 17:07:06"
Timestamptz: Denodo Timestamptz のカスタムスカラー。この型は、ISO 8601 のタイムゾーン指定子を使用した拡張ローカル日付/時刻形式
yyyy-MM-dd hh:mm:ss[.sss](±hh:mm:ss|Z)
(日付と時刻の間の区切り文字T
は省略) に従って日付/時刻の書式を設定および解析します。Timestamptz 形式¶"timestamptz_type": "2018-02-04 16:07:06Z"
Xml: Denodo Xml のカスタムスカラー。String として表示されますが、GraphQL クエリの引数として使用することはできません。