将迁移的 MongoDB 工作负载部署到 Oracle Exadata Database Machine
使用文档和文档数据库来发展数据方案和应用程序的工作负载和应用程序很受欢迎,因为它们为开发人员提供了灵活性。模式灵活性、快速开发和可扩展性可加快应用功能的原型设计,简化应用演变,并能够迭代构建更小的应用和功能,开发人员可以扩展这些应用和功能来满足庞大的用户需求。然而,这些类型的工作负载面临着挑战,包括事务性保证较弱、数据查询的多功能性,以及无法支持文档(例如分析或机器学习)上的其他工作负载。
如果这些工作负载能够从传统文档数据库的优势中获益并利用关系数据库的优势,结果会怎样?例如,具有更强大的事务处理保证,并添加了分析和机器学习等功能,而无需将数据复制到其他数据库或系统。
Oracle Database 23ai 旨在简化 AI、微服务、图形、文档、空间和关系型应用的开发,是一个融合数据库平台,可在一个强大的解决方案中提供所需的一切。
Oracle Exadata Database Machine 旨在成为运行 Oracle Database 的高性能、高可用性的平台。Exadata 运行所有类型的数据库工作负载,包括联机事务处理 (OLTP)、数据仓库 (DW) 和混合工作负载的合并。Exadata 简单、快速的实施旨在为您的重要数据库提供支持和保护,是数据库即服务的理想基础。
功能架构
此参考架构侧重于部署迁移的工作负载,而不是迁移过程。要了解有关迁移过程的更多信息,请参阅了解更多信息部分。
此体系结构中使用的关键功能之一是 MongoDB 的 Oracle Database API,它允许应用程序使用 MongoDB 命令与 Oracle Database 中的 JSON 文档集合进行交互。这使现有的应用程序代码能够处理存储在 Oracle Database 23ai 中的数据,而无需重构代码。
下图展示了由数据库、后端层和前端层组成的典型应用程序。
mongodb-logical-arch-migration.zip
用于实现此模式的常用堆栈是 MEAN 堆栈:
- MongoDB :文档数据库
- Express:后端框架
- Angular:前端框架
- Node.js:后台服务器
此体系结构使用 MEAN 堆栈作为现有部署迁移到 Oracle Database 23ai 的示例。将此工作负载迁移到 Oracle Database 23ai 包含以下高级步骤:
- 使用 Oracle Real Application Clusters (Oracle RAC) 在 Exadata 中跨多个数据库节点部署高可用性 Oracle Database 23ai 实例。
- 将元数据和数据从 MongoDB 迁移到 Oracle Database 23ai。
- 安装和配置后端层计算,无论是 VM、容器还是 Oracle REST Data Services。
- 配置 Oracle REST Data Services 以启用 MongoDB API,以便应用程序可以使用 MongoDB 驱动程序与数据库通信。
- 将应用程序配置为使用新的数据库连接字符串。
- 使用当前应用程序上使用的相同 MongoDB 工具和驱动程序,将后端应用连接到 Oracle Database 23ai。
将工作负载迁移到 Oracle Database 后,您可以通过启用其他功能(例如增强安全性、运营报告、分析和机器学习)来增强功能,而无需将数据复制到数据库。Oracle Database 23ai 是一个多模型、多工作负载平台,可帮助您无缝集成利用关系、空间、图形或向量数据类型的功能以及现有应用。
要提高工作负载的可扩展性,请为数据库分配更多计算能力和内存。由于 Oracle Database 23ai 是一种多模型、多工作负载数据库技术,因此可以添加依赖于关系、空间、图形或向量数据类型的其他功能,并与现有应用协同工作。
物理体系结构
前端层
- 使用当前部署。
- 用户可以从 Internet 或公司网络进行连接。
- DNS 功能配置为在发生故障转移时将请求路由到备用数据中心。
后端层
- 现有应用已部署并用于相同的计算实例。
- 客户管理的 Oracle REST Data Services 托管并部署在应用服务器上。应用代码可以通过 Oracle REST Data Services 连接到 Oracle Database 23ai。
- 后端层可扩展性是使用现有的可扩展性机制实现的,该机制隐式扩展每个应用服务器中安装的 Oracle REST Data Services。
Database Tier
- Oracle Database 23ai 部署在 Exadata 中,用于存储 JSON 文档并将其提供给后端层。
- Oracle Database API for MongoDB 使用 Oracle REST Data Services 启用,允许在不更改代码的情况下使用现有应用程序代码。
业务连续性
- 使用 Oracle Data Guard 灾难恢复策略实现。
- 采用热灾难恢复策略,后端层和相关资源已部署并正在运行。
下图说明了此参考体系结构。
mongodb-exadata-machine-physical-arch.zip
物理体系结构的设计:
业务连续性
- 有两个数据中心具有相同的部署:一个是活动数据中心,另一个是待机数据中心。
- DNS 流量引导将用户请求定向到活动数据中心。如果在应用层上执行的 DNS 健康检查探测器经常失败,则 DNS 会重新配置以将流量路由到备用数据中心工作负载。
- 负载平衡器会在多个后端层 VM 之间分配传入请求,以防止出现单点故障。
- 后端层具有多个用于处理用户请求的 VM。
- 客户管理的 Oracle REST Data Services 在后端层 VM 上部署和配置。添加 VM 时,应用服务器和 Oracle REST Data Services 会自动扩展。
- 恢复时间目标 (Recovery Time Objective,RTO) 不仅依赖于数据库故障转移,还依赖于对备用数据中心中其余工作负载组件的完全故障转移。
- 数据库 RTO 和 RPO(恢复点目标)取决于配置的 Oracle Data Guard 保护模式。
- 数据库故障转移将利用 Oracle Data Guard 手动或自动故障转移,具体取决于业务连续性详细要求。
网络
- 有一个公共子网接收来自 Internet 的传入用户请求。
- 负载平衡器请求将路由到为用户请求提供服务的后端层服务器。
- Exadata VM 连接到客户机和管理网络。
- 通过 Oracle REST Data Services 向数据库发送的后端层请求使用客户机网络地址。
- 这两个数据中心与支持 Oracle Data Guard 配置所需的带宽和低延迟互连。
数据库
- Oracle Database 23ai 部署在 Exadata VM 集群中。
- VM 集群使用多个数据库节点实现高可用性。
- Oracle RAC 可确保数据库对工作量使用多个数据库节点。
安全
- 所有数据在传输中和静态都是安全的。
为了简单起见,此部署中未描述的潜在设计改进包括:
- 使用 Active Data Guard 启用备用数据库以进行只读访问并转移运行分析查询的负载。
推荐
- 应用程序部署
如果应用程序可以在容器中运行,请考虑使用基于容器的 Kubernetes 部署。如果使用容器,请考虑使用具有后端代码的容器映像,并且客户管理的 Oracle REST Data Services 已安装。
- 安全
考虑使用 Oracle Database Advanced Security Option 功能对静态数据进行加密并启用动态数据编写,需要具有 Oracle Database Enterprise Edition 许可证才能使用 Oracle Database Advanced Security Option。
- 观测
考虑使用 Oracle Data Safe 进一步提高工作负载安全态势,并能够执行数据库审计。
- 应用程序演变
- 考虑使用 SQL 和 Oracle APEX 等前端在 Oracle Database 23ai 中部署运营分析和实时报告,将数据保留在数据库中,以便进行可信的实时分析。
- 考虑使用 Oracle Database 23ai 使用 Oracle Machine Learning for SQL 进行机器学习,无需移动数据即可使用 JSON 数据构建和训练模型,并将模型与现有工作负载一起部署,以实现高效推断。
- 考虑使用数据库存储其他数据类型(关系型、向量型、空间型或图形型),以提高工作负载功能和灵活性。
- 考虑使用 Exadata 和 Oracle Database 23ai 进行运营分析以外的分析,得益于为数据分析量身定制的高效列式压缩,可提高分析性能,同时减少存储数据所需的空间。Exadata 支持混合列式压缩,并附带 Oracle Database Enterprise Edition 许可证。