SlideShare a Scribd company logo
1 of 30
Download to read offline
GraphQL迷人之处
Stanley Zhang 方案架构师
szhang@denodo.com
18930226403
Agenda
1. GraphQL迷人之处
2. Denodo + GraphQL
3. 总结
GraphQL迷人之处
GraphQL vs REST
4
• REST API是一种常见且经过验证的技术
• 但也存在一些典型的困难:
• 没有交换架构的标准方法
• 过度获取:终端地址会返回不需要的数据
• 提取不足:终端地址会返回部分数据要强制多个请求
(*请扫描二维码稍后观看API系列一)
2012
GraphQL vs REST
5
GraphQL
6
• GraphQL由Facebook内部于2012年开发,然后于2015年公开发布。在2018
年11月7日,GraphQL项目从Facebook移到了新成立的GraphQL基金会
• 提供了一种开发Web API的新方法:
• 允许客户端定义所需数据的结构,并从服务器返回相同的数据结构,因此可
以防止返回过多的数据
• 查询语言的灵活性和丰富性也增加了复杂性,这对于简单的API可能不值得
GraphQL
• 一种富有表现力的 API 查询语言
• 工作原理是将数据看作是与实体关联的图形。它提供:
• 一个基于SDL模式定义语言的元数据系统metadata
• 一种在调用结果上指定投影的方法projections
• 一种导航数据关联和查询层次结构的方法associations
Source: https://2019.stateofjs.com/data-layer/graphql/
7
单一终端地址 API
• 单一 HTTP 终端地址endpoint
• 典型 POST 调用, 操作都在正文有效负载payload中指定
• 正文有效负载(操作)使用 JSON 类似的语法
• 响应是 JSON 格式
• 查询、突变mutations和订阅
https://sever.corp/service/graphql
8
GraphQL: 只需指定需要的内容
9
POSTRequest body Response body
query {
books {
title
}
}
{
"data": {
"books": [
{
"title":"Fundamentals of Database Systems"
},
{
"title":"The Future of Life"
},
{
"title":"On Writing"
},
...
]
}
}
GraphQL: 使用参数调用
POSTRequest body Response body
query {
books(id: "067463442X") {
title
category
price
}
}
{
"data": {
"books": [
{
"title": "On Human Nature",
"category": "Science",
"price": 18.95
}
]
}
}
GraphQL: 跳转数据关系
11
POSTRequest body Response body
query {
books(title: "Cosmos") {
id
title
authors {
author_name
}
publishers {
publisher_name
city
}
price
}
}
{
"data": {
"books": [
{
"id": "0375508325",
"title": "Cosmos",
"authors": {
"author_name": "Carl Sagan"
},
"publishers": {
"publisher_name": "Random House",
"city": "New York"
},
"price": 35.00
}
]
}
}
GraphQL: 跳转更深层次的数据关系
12
POSTRequest body Response body
query {
authors {
author_name
books {
title
publishers {
publisher_name
}
}
}
}
{
"data": {
"authors": [
{
"author_name": "Harold McGee",
"books": [
{
"title": "On Food and Cooking",
"publishers": {
"publisher_name": "Scribner"
}
}
]
},
...
]
}
}
GraphQL元数据系统:模式Schema
13
GraphQLSchema
type Query {
authors(id: Int, author_name: String): [authors]!
books(id: Int, title: String): [books]!
...
}
type authors {
id: Int
author_name: String
books: [books]!
}
type books {
id: Int
title: String
...
}
...
Denodo + GraphQL
Denodo + GraphQL架构总览
15
Denodo GraphQL Service
BASIC auth, OAuth2, Kerberos
Denodo 的角色和权限模型
将虚拟数据库映射到 GraphQL
16
• Denodo 视图/存储过程 → 图形节点
• Denodo 关联 → 图形边界
• 每个 Denodo 视图都有查询操作
• 仅查询操作
DEMO
复杂过滤: 附加元数据
18
GraphQLSchema
type Query {
books(..., _filter: FilterInput): [books]!
}
input FilterInput {
expression: FilterExpressionInput
and: [FilterInput!]
not: FilterInput
or: [FilterInput!]
}
input FilterExpressionInput {
field: String!
eq: String
gt: String
gte: String
...
}
复杂过滤: 查询
19
POSTRequest body Response body
query {
books(_filter: {
and: [
{
expression: {
field: "price", gt: "100.0"
}
},
{
expression: {
field: "title", like: "%Accounting"
}
}
]}) {
title
category
}
}
{
"data": {
"books": [
{
"title": "Intermediate Accounting",
"category": "Accounting & Finance"
},
{
"title": "Advanced Accounting",
"category": "Accounting & Finance"
}
]
}
}
聚合: 附加元数据
20
GraphQLSchema
type Query {
books(..., _groupBy: [String!]): [books]!
}
type books {
_aggregation: AggregationFunction
...
}
type AggregationFunction {
count: BigInteger
avg(field: String): Aggregated
max(field: String): Aggregated
...
}
type Aggregated {
field: String!
value: String!
}
聚合: 查询
21
POSTRequest body Response body
query {
books(_groupBy: "category") {
category
total: _aggregation {
count
}
}
}
{
"data": {
"books": [
{
"category": "Literature & Fiction",
"total": {
"count": 26
}
},
{
"category": "Accounting & Finance",
"total": {
"count": 13
}
}, ...
]
}
}
排序: 附加元数据
22
GraphQLSchema
type Query {
books(..., _orderBy: [SortInput!]): [books]!
}
input SortInput {
asc: String
desc: String
}
排序: 查询
POSTRequest body Response body
23
query {
books(_orderBy: {desc: "price"}) {
title
price
}
}
{
"data": {
"books": [
{
"title": "Intermediate Accounting",
"price": 139.20
},
{
"title": "Introductory Econometrics",
"price": 126.65
},
{
"title": "A New Kind of Science",
"price": 122.50
}, ...
]
}
}
禁用高级查询功能
• 复杂筛选、汇总及分类功能可以禁用。
• 仅对视图列(查询参数)使用基于等式的筛选。
• 对客户端可进行的查询实施精细度更高的控制。
• 拥有更多类似 API、基于调用的方法。
query {
books(category: "Science") { ...}
}
# default: true
graphql.enable.filtering=false
application.properties
分页: 附加元数据
25
type Query {
books(..., _first: Int, _offset: Int]): [books]!
...
}
GraphQL Schema
分页: 查询
26
POSTRequest body Response body
query {
books(_first: 3, _offset: 35) {
title
price
}
}
{
"data": {
"books": [
{
"title": "On Human Nature",
"price": 18.95
},
{
"title": "Contact",
"price": 7.99
},
{
"title": "The Blank Slate",
"price": 27.95
}
]
}
}
总结
Denodo + GraphQL 总结
• 零代码实现GraphQL接口的发布
• 没有n+1问题
• 底层的Denodo数据虚拟化引擎的所有功能
• 高级查询功能(可选)
• 与Denodo的安全基础架构集成
• 启用GraphQL的Web应用程序和框架现在可以与Denodo互动
30
Q&A
Thanks!
www.denodo.com info@denodo.com
© Copyright Denodo Technologies. All rights reserved
Unless otherwise specified, no part of this PDF file may be reproduced or utilized in any for or by any means, electronic or mechanical, including
photocopying
and microfilm, without prior the written authorization from Denodo Technologies.

More Related Content

More from Denodo

Знакомство с виртуализацией данных для профессионалов в области данных
Знакомство с виртуализацией данных для профессионалов в области данныхЗнакомство с виртуализацией данных для профессионалов в области данных
Знакомство с виртуализацией данных для профессионалов в области данныхDenodo
 
Data Democratization: A Secret Sauce to Say Goodbye to Data Fragmentation
Data Democratization: A Secret Sauce to Say Goodbye to Data FragmentationData Democratization: A Secret Sauce to Say Goodbye to Data Fragmentation
Data Democratization: A Secret Sauce to Say Goodbye to Data FragmentationDenodo
 
Denodo Partner Connect - Technical Webinar - Ask Me Anything
Denodo Partner Connect - Technical Webinar - Ask Me AnythingDenodo Partner Connect - Technical Webinar - Ask Me Anything
Denodo Partner Connect - Technical Webinar - Ask Me AnythingDenodo
 
Lunch and Learn ANZ: Key Takeaways for 2023!
Lunch and Learn ANZ: Key Takeaways for 2023!Lunch and Learn ANZ: Key Takeaways for 2023!
Lunch and Learn ANZ: Key Takeaways for 2023!Denodo
 
It’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way Forward
It’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way ForwardIt’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way Forward
It’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way ForwardDenodo
 
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...Denodo
 
Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...
Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...
Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...Denodo
 
How to Build Your Data Marketplace with Data Virtualization?
How to Build Your Data Marketplace with Data Virtualization?How to Build Your Data Marketplace with Data Virtualization?
How to Build Your Data Marketplace with Data Virtualization?Denodo
 
Webinar #2 - Transforming Challenges into Opportunities for Credit Unions
Webinar #2 - Transforming Challenges into Opportunities for Credit UnionsWebinar #2 - Transforming Challenges into Opportunities for Credit Unions
Webinar #2 - Transforming Challenges into Opportunities for Credit UnionsDenodo
 
Enabling Data Catalog users with advanced usability
Enabling Data Catalog users with advanced usabilityEnabling Data Catalog users with advanced usability
Enabling Data Catalog users with advanced usabilityDenodo
 
Denodo Partner Connect: Technical Webinar - Architect Associate Certification...
Denodo Partner Connect: Technical Webinar - Architect Associate Certification...Denodo Partner Connect: Technical Webinar - Architect Associate Certification...
Denodo Partner Connect: Technical Webinar - Architect Associate Certification...Denodo
 
GenAI y el futuro de la gestión de datos: mitos y realidades
GenAI y el futuro de la gestión de datos: mitos y realidadesGenAI y el futuro de la gestión de datos: mitos y realidades
GenAI y el futuro de la gestión de datos: mitos y realidadesDenodo
 
Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...
Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...
Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...Denodo
 
Denodo Partner Connect: Technical Webinar - Ask Me Anything
Denodo Partner Connect: Technical Webinar - Ask Me AnythingDenodo Partner Connect: Technical Webinar - Ask Me Anything
Denodo Partner Connect: Technical Webinar - Ask Me AnythingDenodo
 
Work Smarter with Augmented Data Management
Work Smarter with Augmented Data ManagementWork Smarter with Augmented Data Management
Work Smarter with Augmented Data ManagementDenodo
 
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
La Data Virtualization par Orano : cas d'usage à la Hague et démo de DenodoLa Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
La Data Virtualization par Orano : cas d'usage à la Hague et démo de DenodoDenodo
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationDenodo
 
Webinar #1 - How UFCU Achieved 360 Member Engagement
Webinar #1 - How UFCU Achieved 360 Member EngagementWebinar #1 - How UFCU Achieved 360 Member Engagement
Webinar #1 - How UFCU Achieved 360 Member EngagementDenodo
 
Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...
Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...
Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...Denodo
 
Mastering Cloud Data Cost Control: A FinOps Approach
Mastering Cloud Data Cost Control: A FinOps ApproachMastering Cloud Data Cost Control: A FinOps Approach
Mastering Cloud Data Cost Control: A FinOps ApproachDenodo
 

More from Denodo (20)

Знакомство с виртуализацией данных для профессионалов в области данных
Знакомство с виртуализацией данных для профессионалов в области данныхЗнакомство с виртуализацией данных для профессионалов в области данных
Знакомство с виртуализацией данных для профессионалов в области данных
 
Data Democratization: A Secret Sauce to Say Goodbye to Data Fragmentation
Data Democratization: A Secret Sauce to Say Goodbye to Data FragmentationData Democratization: A Secret Sauce to Say Goodbye to Data Fragmentation
Data Democratization: A Secret Sauce to Say Goodbye to Data Fragmentation
 
Denodo Partner Connect - Technical Webinar - Ask Me Anything
Denodo Partner Connect - Technical Webinar - Ask Me AnythingDenodo Partner Connect - Technical Webinar - Ask Me Anything
Denodo Partner Connect - Technical Webinar - Ask Me Anything
 
Lunch and Learn ANZ: Key Takeaways for 2023!
Lunch and Learn ANZ: Key Takeaways for 2023!Lunch and Learn ANZ: Key Takeaways for 2023!
Lunch and Learn ANZ: Key Takeaways for 2023!
 
It’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way Forward
It’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way ForwardIt’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way Forward
It’s a Wrap! 2023 – A Groundbreaking Year for AI and The Way Forward
 
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
Quels sont les facteurs-clés de succès pour appliquer au mieux le RGPD à votr...
 
Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...
Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...
Lunch and Learn ANZ: Achieving Self-Service Analytics with a Governed Data Se...
 
How to Build Your Data Marketplace with Data Virtualization?
How to Build Your Data Marketplace with Data Virtualization?How to Build Your Data Marketplace with Data Virtualization?
How to Build Your Data Marketplace with Data Virtualization?
 
Webinar #2 - Transforming Challenges into Opportunities for Credit Unions
Webinar #2 - Transforming Challenges into Opportunities for Credit UnionsWebinar #2 - Transforming Challenges into Opportunities for Credit Unions
Webinar #2 - Transforming Challenges into Opportunities for Credit Unions
 
Enabling Data Catalog users with advanced usability
Enabling Data Catalog users with advanced usabilityEnabling Data Catalog users with advanced usability
Enabling Data Catalog users with advanced usability
 
Denodo Partner Connect: Technical Webinar - Architect Associate Certification...
Denodo Partner Connect: Technical Webinar - Architect Associate Certification...Denodo Partner Connect: Technical Webinar - Architect Associate Certification...
Denodo Partner Connect: Technical Webinar - Architect Associate Certification...
 
GenAI y el futuro de la gestión de datos: mitos y realidades
GenAI y el futuro de la gestión de datos: mitos y realidadesGenAI y el futuro de la gestión de datos: mitos y realidades
GenAI y el futuro de la gestión de datos: mitos y realidades
 
Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...
Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...
Lunch and Learn ANZ: Shaping the Role of a Data Lake in a Modern Data Fabric ...
 
Denodo Partner Connect: Technical Webinar - Ask Me Anything
Denodo Partner Connect: Technical Webinar - Ask Me AnythingDenodo Partner Connect: Technical Webinar - Ask Me Anything
Denodo Partner Connect: Technical Webinar - Ask Me Anything
 
Work Smarter with Augmented Data Management
Work Smarter with Augmented Data ManagementWork Smarter with Augmented Data Management
Work Smarter with Augmented Data Management
 
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
La Data Virtualization par Orano : cas d'usage à la Hague et démo de DenodoLa Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
La Data Virtualization par Orano : cas d'usage à la Hague et démo de Denodo
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
 
Webinar #1 - How UFCU Achieved 360 Member Engagement
Webinar #1 - How UFCU Achieved 360 Member EngagementWebinar #1 - How UFCU Achieved 360 Member Engagement
Webinar #1 - How UFCU Achieved 360 Member Engagement
 
Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...
Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...
Denodo Partner Connect: A Review of the Top 5 Differentiated Use Cases for th...
 
Mastering Cloud Data Cost Control: A FinOps Approach
Mastering Cloud Data Cost Control: A FinOps ApproachMastering Cloud Data Cost Control: A FinOps Approach
Mastering Cloud Data Cost Control: A FinOps Approach
 

Why GraphQL Worth My Attention (Chinese)