将迁移的 MongoDB 工作负载部署到 Oracle Autonomous Transaction Processing Serverless

将使用文档数据库的现有工作负载(在本例中为 MongoDB)迁移到 Oracle Cloud Infrastructure (OCI) 上的 Oracle Autonomous Transaction Processing Serverless (ATP Serverless) 数据库,以实现 JSON 应用与其他多模型工作负载的现代化开发。

使用文档和文档数据库来发展数据方案和应用程序的工作负载和应用程序很受欢迎,因为它们为开发人员提供了灵活性。模式灵活性、快速开发和可扩展性可加快应用功能的原型设计,简化应用演变,并能够迭代构建更小的应用和功能,开发人员可以扩展这些应用和功能来满足庞大的用户需求。然而,这些类型的工作负载面临着挑战,包括事务性保证较弱、数据查询的多功能性,以及无法支持文档(例如分析或机器学习)上的其他工作负载。

如果这些工作负载能够从传统文档数据库的优势中获益并利用关系数据库的优势,结果会怎样?例如,具有更强大的事务处理保证,并添加了分析和机器学习等功能,而无需将数据复制到其他数据库或系统。

Autonomous Transaction Processing Serverless 是一个经过优化的全自动数据库服务,可同时运行事务、分析和批处理工作负载。为了提高性能,该服务针对行格式、索引和数据缓存进行了预配置,同时提供可扩展性、可用性、透明的安全性和实时运营分析。应用开发人员和 DBA 可以在不牺牲功能或原子性、一致性、隔离性和持久性 (ACID) 属性的情况下快速、经济高效地开发和部署应用。

功能架构

此参考架构假定您有一个包含应用的工作负载和 MongoDB 数据库(无论是在内部部署还是在云中),并且将迁移到 OCI。它介绍了未来状态架构、其优势、如何部署它以及可用于增强现有工作负载的其他功能。

此参考体系结构侧重于迁移的工作负载的部署,而不是迁移过程本身。有关迁移过程的更多详细信息,请参阅了解更多信息部分。

此架构中使用的关键产品之一是 Oracle Database API for MongoDB,它支持应用使用 MongoDB 驱动程序、工具和 SDK 与 Oracle Database 中的 JSON 文档集合进行交互。这使现有的应用代码能够处理存储在自治事务处理无服务器 (ATP Serverless) 中的数据,而无需重构代码。

下图描述了由数据库、后端和前端层组成的典型应用程序。



mongodb-atp-s-logical-arch-migration-oracle.zip

MEAN 堆栈是用于实现此模式的常用堆栈:
  • MongoDB:文档数据库
  • Express:后端框架
  • Angular:前端框架
  • Node.js:后台服务器

此示例使用 MEAN 堆栈将现有部署迁移到 OCI 和 ATP Serverless。

将此工作负载迁移到 OCI 和 ATP Serverless 非常简单,主要包括以下步骤:

  1. 部署 ATP 无服务器实例,在创建时启用 Oracle Database Mongo DB API。
  2. 将元数据和数据从 MongoDB 迁移到 ATP Serverless。
  3. 将使用 VM、容器或 Kubernetes 运行 Node.js 和 Express 的应用服务器部署到与 ATP Serverless 相同的区域和可用性域。
  4. 将后端应用程序代码部署到应用服务器。
  5. 使用当前应用程序上使用的相同 MongoDB 工具和驱动程序将后端应用程序连接到 ATP Serverless。
  6. 将用户连接到新的应用程序 URI。

将工作负载迁移到 ATP Serverless 后,可以使用多个功能来增强现有功能,无论是 1) 支持其他非功能要求(例如轻松提高可扩展性、弹性还是高可用性),还是 2) 具有其他功能特性(例如运营报告、分析和机器学习),而无需将数据复制到数据库。

要提高可扩展性和高可用性,请使用自治事务处理无服务器自动缩放功能。通过一次单击或 API 调用,工作负载最多可使用基线容量的 3 倍,而无需停机。请注意,Autonomous Transaction Processing Serverless 使用 Oracle Real Application Clusters (Oracle RAC) 技术实现高可用性。对于后端层,使用具有自动缩放规则的计算实例池来实现应用的高可用性和可扩展性。

由于自治事务处理无服务器是基于多模型、多工作负载数据库技术构建的,因此您可以添加依赖于与现有应用程序一起使用的关系、空间、图形或向量数据类型的功能。

物理体系结构

物理架构包括 OCI 中的公共子网和专用子网以及辅助备份区域,以支持高可用性。

该体系结构支持以下各项:

  • 前端层
    • 应用程序用户可以从 Internet 或公司网络进行连接。
    • 使用 OCI Web Application Firewall 保护用户连接。
    • 负载均衡了用户与应用的连接,从而提高了弹性和可扩展性。
    • 部署负载平衡器时具有高可用性。
  • 后端层
    • 应用服务器使用实例池以高可用性方式部署。
    • 实例池与自动缩放一起使用,以实现水平缩放。
    • 实例池配置为将实例部署在与 ATP Serverless 相同的可用性域中,以进行应用程序和数据库托管,从而优化连接延迟。
    • 实例池配置为将实例分布在放置 ATP Serverless 的同一可用性域中的容错域中,以提高工作负载弹性。
  • Database Tier
    • ATP 无服务器提供高可用性,因为 Oracle Real Application Clusters (Oracle RAC) 和多个数据库节点是服务实例的基础。因此,默认情况下,数据库层具有高可用性和弹性。
    • 通过在 ATP Serverless 中启用的 Oracle Database API for MongoDB,您无需更改即可使用现有应用程序代码。
    • Oracle Database API for MongoDB 具有高度的弹性,ATP Serverless 可在内部保证弹性。
    • ATP Serverless 可以使用自动缩放,根据系统负载的增加和减少进行调整。
    • ATP 无服务器业务连续性通过基于 Oracle Autonomous Data Guard 的跨区域灾难恢复来实现。
    • 跨区域 Oracle Autonomous Data Guard 备用恢复时间目标 (RTO) 为 15 分钟,恢复点目标 (RPO) 为 1 分钟。
  • 灾难恢复
    • 两个区域支持整个云部署的跨区域灾难恢复。
    • 备用区域支持预部署云实例以降低总恢复时间目标 (RTO) 的热备用区域。
    • 主区域中的 ATP Serverless 在备用区域中具有 Oracle Autonomous Data Guard 跨区域对等节点
    • 后端层实例池预配置了池中最小数量的实例,而自动执行故障转移每个步骤的 OCI Full Stack Disaster Recovery DR 计划可以更改在故障转移后应运行的计算实例数。基于度量的自动缩放配置用于确定池中的最小实例数和最大实例数,以及用于横向扩展和收缩的度量。
    • 备用区域部署有类似的拓扑,以减少总体恢复时间目标。
    • OCI Full Stack Disaster Recovery 可自动将整个堆栈的故障转移至备用区域并回退到主区域。
  • 网络
    • 在两个区域中部署的动态路由网关都是对等的。
    • 本地连接利用 Oracle Cloud Infrastructure FastConnect 和站点到站点 VPN 实现冗余。
    • 来自内部部署和互联网的所有传入流量首先路由到中心 VCN,然后路由到工作负载 VCN。
    • 使用集线器和辐条式网络设计来提高安全状况并适应其他工作负载 VCN。
    • 服务随专用端点一起部署,以提高安全状况。
    • JSON 工作负载 VCN 会隔离到多个专用子网中,以提高安全状况。
  • 安全
    • 所有数据在传输中和静态都是安全的。
    • 为了简单起见,此部署中未描述的潜在设计改进包括使用完全符合 CIS 的着陆区和利用在中心 VCN 中部署的网络防火墙。网络防火墙将通过检查所有流量和实施策略来改善整体安全状况。


mongodb-atp-s-physical-arch-oracle.zip

该体系结构具有以下主要组件:

  • 区域

    OCI 区域是一个本地化的地理区域,其中包含一个或多个托管可用性域的数据中心。区域独立于其他区域,并且很远的距离可以将它们分开(跨越国家甚至大洲)。

  • 虚拟云技术网络 (VCN) 和子网

    VCN 是您可以在 OCI 区域中设置的可定制软件定义网络。与传统数据中心网络一样,VCN 允许您控制网络环境。一个 VCN 可以具有多个不重叠的无类域间路由 (classless inter-domain routing,CIDR) 块,在创建 VCN 后可以更改这些块。您可以将 VCN 细分为多个子网,这些子网可以限定为某个区域或某个可用性域。每个子网由一系列不与 VCN 中的其他子网重叠的连续地址组成。您可以在创建子网后更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • FastConnect

    Oracle Cloud Infrastructure FastConnect 可在您的数据中心与 OCI 之间创建专用连接。与基于互联网的连接相比,FastConnect 提供了更高的带宽选项和更可靠、更稳定的网络体验。

  • 动态路由网关 (DRG)

    DRG 是一个虚拟路由器,用于为同一区域中的 VCN、VCN 与该区域之外的网络(例如另一个 OCI 区域中的 VCN、内部部署网络或其他云提供商中的网络)之间的专用网络流量提供路径。

  • 网络地址翻译 (Network address translation,NAT) 网关

    NAT 网关使 VCN 中的专用资源能够访问互联网上的主机,同时不会向传入的互联网连接公开这些资源。

  • 服务网关

    通过服务网关,您可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量将通过 Oracle 网络结构传输,不会通过互联网。

  • Internet 网关

    互联网网关允许 VCN 中的公共子网与公共互联网之间的流量。

  • 负载平衡器

    Oracle Cloud Infrastructure Load Balancing 提供从单个入口点到多个服务器的自动流量分配。

  • Web 应用程序防火墙

    Oracle Cloud Infrastructure Web Application Firewall (WAF) 是一种符合支付卡行业 (PCI) 标准、基于区域和边缘实施服务,它连接到实施点,例如负载平衡器或 Web 应用域名。WAF 可保护应用免受恶意和不需要的互联网流量的侵害。WAF 可以保护任何面向互联网的端点,并在您的应用中提供一致的规则实施。

  • Oracle Autonomous Transaction Processing Serverless

    Oracle Autonomous Transaction Processing Serverless 是一项经过优化的全自动数据库服务,可同时运行事务、分析和批处理工作负载。为了提高性能,该服务针对行格式、索引和数据缓存进行了预配置,同时提供可扩展性、可用性、透明的安全性和实时运营分析。应用开发人员和 DBA 可以快速、轻松且经济高效地开发和部署应用,同时无需牺牲功能或原子性、一致性、隔离性和持久性 (ACID) 属性。

  • 全栈灾难恢复

    Oracle Cloud Infrastructure Full Stack Disaster Recovery 是一项编排和管理服务,可为应用程序堆栈的所有层(包括基础结构、中间件、数据库和应用程序)提供全面的灾难恢复功能。

  • 对象存储

    OCI Object Storage 可访问任意内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据以及图像和视频等丰富内容。您可以直接从互联网或云平台安全地存储数据。您可以扩展存储,而不会出现性能或服务可靠性下降的情况。

    将标准存储用于您需要快速、立即和频繁访问的“热”存储。将归档存储用于长期保留且很少或很少访问的“冷”存储。

  • Oracle Database API for MongoDB

    借助 Oracle Database API for MongoDB,应用可以使用 MongoDB 驱动程序、工具和 SDK 与 Oracle Database 中的 JSON 文档集合进行交互。

物理体系结构变量

ATP Serverless 提供的完全托管的 MongoDB API 是大多数工作负载的最佳解决方案,因为它更易于管理。此物理体系结构变体使用在每个应用服务器中运行的由客户管理的 Oracle REST Data Services 部署。

如果需要手动控制 Oracle REST Data Services 的配置和管理,则可以选择使用客户管理的 Oracle REST Data Services。例如,允许应用程序使用更大的连接池。

注意:

如果有特定的工作负荷要求,请使用此体系结构变量。只有高级用户才应部署此体系结构变体。

本节仅介绍了与之前描述的物理体系结构相比的差异,因此除非另有说明,否则所有物理体系结构设计原则都是有效的。

下面的体系结构图描述了变体的部署方式。为简单起见,只会描述部署在 JSON 工作负载 VCN 中的云资源,因为部署的其余部分与前面所述相同。



mongodb-atp-s-arch-variant-oracle.zip

下面是变体的前端层:
  • 后端应用程序代码部署在属于实例池的应用程序服务器中。
  • 传入用户请求由负载平衡器分配,因此前端层具有水平可伸缩性,并且没有单点故障。
  • 客户管理的 Oracle REST Data Services 安装在每台应用服务器上,并配置为启用 MongoDB API,以便应用可以使用 MongoDB 工具和驱动程序连接到数据库。
  • 客户管理的 Oracle REST Data Services 配置为可根据工作负载非功能要求进行调整,例如配置较大的连接池或使用其他数据库服务。
  • 后端代码和客户管理的 Oracle REST Data Services 都预先安装并预配置在池使用的实例配置中,以便每次将实例添加到池中时,它都能够在实例预配后运行后端并连接到数据库。

推荐

使用以下建议作为进一步改进和改进工作量的起点。 您的要求可能与此处描述的体系结构不同。

考虑以下事项:

  • 应用程序部署

    如果应用程序可以在容器中运行,请使用基于容器的部署与 Oracle Cloud Infrastructure Kubernetes Engine (OKE)。

  • 安全
    • 使用 Oracle Data Safe 可进一步提高工作负载安全状况,并能够执行数据库审计。
  • 观测
    • 使用 OCI AuditOracle Autonomous Database Serverless 以外的所有 OCI 服务执行取证审计。
    • 使用 OCI MonitoringOCI Logging 和 OCI Logging Analytics 全面了解环境运行状态。
  • 运营效率
    • 如果 ATP 无服务器 JSON 工作负载是更广泛的数据库组的一部分,则使用弹性池以提高成本效率。
    • 启用 Oracle Cloud Infrastructure Database Management。此服务提供了一组全面的数据库性能监视和管理功能,以简化 ATP 无服务器实例。
  • 应用程序演变
    • 使用 SQL 和前端(例如 APEX 或 Oracle Analytics Cloud )在 ATP Serverless 中部署运营分析和实时报告,而无需将数据移出数据库进行可信和实时数据分析。
    • 使用 ATP Serverless 和 Oracle Machine Learning,无需移动数据即可使用 JSON 数据构建和训练模型,并将模型与现有工作负载一起部署,以实现高效推断。
    • 对于应用核心之外的其他用例,请考虑使用 Oracle Autonomous Database Select AI 和数据库视图来查询 JSON 并保存元数据。这使用户能够使用自然语言查询 JSON 数据。
    • 使用 ATP Serverless 存储其他数据类型(关系型、向量型、空间型或图形型),以提高工作负载功能和灵活性。

确认

  • 作者José Cruz
  • 贡献者Massimo Castelli, Simon Griffith, Hermann Baer, Matt DeMarco, Julian Dontcheff