GraphQL 学习指南 (16):图论 2.4

阅读数:8 2019 年 12 月 18 日 20:43

GraphQL学习指南(16):图论 2.4

(现实世界中的图形结构)

内容简介
为什么 GraphQL 是 Ajax 诞生以来具创新性的数据获取技术?GraphQL 通过为 API 提供查询语言和用以完成查询的运行状态,提供了对 REST 和特定页面服务架构的替代方案。借助这《GraphQL 学习指南》,Alex Banks 和 Eve Porcello 为希望开始使用 GraphQL 的前端 Web 开发人员、后端工程师以及项目或产品经理提供了一条清晰的学习路径。你将先后探索图论、图数据结构和 GraphQL 类型,之后在实际项目中学习如何为照片共享应用构建 schema。
《GraphQL 学习指南》还将向你介绍 Apollo Client,可用来将 GraphQL 连接到你的用户界面。

在工作中使用 GraphQL 时,你可能每天都会遇到这些图论概念。否则,你可能只是将 GraphQL 项目作为一种将数据高效加载到用户界面的方法而已。无论如何,所有这些都是在 GraphQL 的后台执行的。正如我们所看到的,图形特别适合有处理大量数据需求的应用。

想想 Facebook。根据图论知识,我们知道 Facebook 中每个人都是一个节点。当一个人和其他人连接时,通过一条边达成了双向连接。Facebook 是一个无向图。当我在 Facebook 上和我的挚友 Sarah 联系时,她也给我回应,这就是双向连接(见图 2-18)。

GraphQL学习指南(16):图论 2.4

图 2-18:Facebook 无向图

作为无向图,Facebook 图中每个节点都是许多相互连接的关系网络—社交关系网的一部分。你和你所有的朋友都联系在一起。在同一幅图中,这些朋友都和他们所有的朋友们连接在一起。遍历可以从任何节点开始和结束(见图 2-19)。

GraphQL学习指南(16):图论 2.4

图 2-19:Facebook 关系网

此外,还有推特(Twitter)。与每个人都是双向连接的 Facebook 不同,Twitter 是一个有向图,因为每个人的连接都是单向的,如图 2-20 所示。你关注了一位明星人物,明星不一定会关注你,因为他们的粉丝实在是太多了。

GraphQL学习指南(16):图论 2.4

图 2-20:Twitter 图

如果一个人查看他所有的朋友,那么他就是一棵树的根节点。他和他的朋友有联系。他的朋友又在子树中连接到了他们的朋友(见图 2-21)。

Facebook 上的其他人也是如此。每当你隔了一个人并请求他们的数据时,请求查找过程就像一棵树了。查询者是树的根节点,并且你希望他之下所有的数据都是子节点。在该请求中,一个人通过边连接到他们所有的朋友:

  • person
    • name
    • location
    • birthday
    • friends
      • friend name
      • friend location
      • friend birthday

GraphQL学习指南(16):图论 2.4

图 2-21:朋友圈树

结构和 GraphQL 的查询字段很像:

复制代码
{
me {
name
location
birthday
friends {
name
location
birthday
}
}
}

我们使用 GraphQL 的目标是对需要的数据发出查询来简化复杂的数据图形。在下一章中,我们将深入研究 GraphQL 查询字段的工作机制,以及如何根据类型系统验证查询。

GraphQL学习指南(16):图论 2.4

购书地址 https://item.jd.com/12639300.html?dist=jd

评论

发布