数据来源
在上一节中,我们了解了架构定义数据的形状。不过,我们从未介绍这些数据来自哪里。在实际项目中,您的架构就像一个网关,它处理向服务器发出的所有请求。在发出请求时,架构充当与客户端交互的单个终端节点。架构访问和处理数据,并将其从数据来源转发回客户端。请参阅下面的信息图:
AWS AppSync 和 GraphQL 出色地实施了服务于前端的后端 (BFF) 解决方案。它们协同工作,通过抽象后端来降低大规模系统的复杂性。如果您的服务使用不同的数据来源和/或微服务,您实际上可以在单个架构(超图)中定义每个源(子图)的数据形状以抽象掉一些复杂性。这意味着您的 GraphQL API 不限于使用一个数据来源。您可以将任意数量的数据来源与 GraphQL API 关联,并在代码中指定它们如何与服务进行交互。
正如您在信息图中看到的一样,GraphQL 架构包含客户端请求数据所需的所有信息。这意味着可以在单个请求中处理所有内容,而不是像 REST 那样在多个请求中进行处理。这些请求经过架构,这是服务的唯一终端节点。在处理请求时,解析器(在下一节中介绍)执行其代码以处理来自相关数据来源的数据。在返回响应时,将使用架构中的数据填充与数据来源关联的子图。
AWS AppSync 支持很多不同的数据来源类型。在下表中,我们将描述每种类型,列出每种类型的一些优点,并提供非常有用的链接以获取额外的背景信息。
数据来源 | 描述 | 优势 | 补充信息 |
---|---|---|---|
Amazon DynamoDB | “Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,可以提供快速且可预测的性能以及无缝可扩展性。DynamoDB 可以免除操作和扩展分布式数据库的管理工作负担,因而无需担心硬件预置、设置和预置、复制、软件修补或集群扩展等问题。DynamoDB 还提供静态加密,从而消除了保护敏感数据时涉及的运行负担和复杂性。” |
|
|
AWS Lambda | “AWS Lambda 是一种计算服务,可用于运行代码,而无需预置或管理服务器。 Lambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量预置和弹性伸缩和记录。在使用 Lambda 时,您只需在 Lambda 支持的语言运行时系统之一中提供代码。” |
|
|
OpenSearch | “Amazon OpenSearch Service 是一种托管服务,可以轻松在 AWS 云中部署、运行和扩展 OpenSearch 集群。Amazon OpenSearch Service 支持 OpenSearch 和旧 Elasticsearch OSS(最高 7.10,该软件的最终开源版本)。创建集群时,您可以选择使用哪种搜索引擎。 OpenSearch 是一个全面开源搜索和分析引擎,用例包括日志分析、实时应用程序监控、点击流分析等。有关更多信息,请参阅 OpenSearch 文档 Amazon OpenSearch Service 可为 OpenSearch 集群预置所有资源,并启动集群。它还自动检测和替换失败的 OpenSearch Service 节点,减少与自管理基础设施相关的开销。您只需调用一次 API 或在控制台中单击几下鼠标按钮,即可扩展集群。” |
|
|
HTTP 终端节点 | 您可以将 HTTP 终端节点作为数据来源。AWSAppSync 可以向终端节点发送具有参数和负载等相关信息的请求。将向解析器公开 HTTP 响应,解析器在完成操作后返回最终响应。 |
|
|
Amazon EventBridge | “EventBridge 是一种无服务器服务,它使用事件将应用程序组件连接在一起,以使您更轻松地构建可扩展的事件驱动应用程序。可以使用该服务将事件从源(本地应用程序、AWS 服务和第三方软件等)路由到您的组织中的使用者应用程序。EventBridge 提供了一种简单且一致的方式以摄取、筛选、转换和交付事件,因此,您可以快速构建新的应用程序。” |
|
|
关系数据库 | “Amazon Relational Database Service (Amazon RDS) 是一种 Web 服务,可以在 AWS 云中更轻松地设置、运行和扩展关系数据库。它为符合行业标准的关系数据库提供经济高效且可调整大小的容量,并管理常见的数据库管理任务。” |
|
|
None 数据来源 | 如果不打算使用数据来源服务,您可以将其设置为 none 。虽然 none 数据来源仍明确归类为数据来源,但并不是存储介质。尽管如此,它在某些情况下对于数据处理和传递仍然非常有用。 |
|
提示
有关数据来源如何与 AWS AppSync 交互的更多信息,请参阅附加数据来源。