Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ /
Atlas 架构中心
/ / /

在 MongoDB 上构建现代全渠道订单系统

通过利用 Atlas Change Streams 和 TriggersAtlas 的实时更新,构建快速、可靠的全渠道订单系统。

使用案例: 目录全渠道订购

行业: 零售

产品: MongoDB AtlasChange StreamsMongoDB Atlas Triggers

如今,客户希望获得融合线上和线下渠道的无缝购物体验。然而,零售商却很难实施这些全渠道解决方案,在所有接触点提供一致的体验。

虽然提供诸如线上购买,门店自提 (BOPIS) 和线上购买,送货到家等便利选项对保持竞争力至关重要,但实施全渠道战略也带来了额外的技术挑战。零售商需要一个灵活的系统,能够提供实时可见性,处理动态流量模式,并在所有客户接触点实现现代化集成。

该解决方案演示了如何使用 MongoDB Atlas 构建全渠道电商网站。该演示展示了一个客户旅程,用户可以选择其偏好的配送方式(BOPIS 或送货上门),并实时追踪订单进度直至送达。通过利用关键的 MongoDB 功能,包括 Change StreamsAtlas Triggers 和灵活的 document model,您将学习如何创建一个强大且可扩展的全渠道订单系统。

本质上,该解决方案利用 MongoDB 的Change StreamsAtlas Triggers 来实现跨多个应用程序的实时数据操作。该架构由两个主要组件组成:实时应用程序和MongoDB Atlas。

实时应用程序端包括任何对数据库变化做出响应的应用,例如电商应用、配送中心应用、仓库应用和库存应用。

在 MongoDB Atlas 中,工作流程如下:

  1. 操作会导致数据修改,例如订单状态更新。

  2. 事件在订单集合中注册。

  3. 这些变更记录在 Operations Log (oplog.rs) 中。

  4. Change Streams API 监控这些更改。

  5. 根据您的架构需求,您可以选择:

    • 在应用程序端执行更新。

    • 通过 Atlas Functions 触发自动化任务。

除了我们当前的实现之外,该架构为多种实时场景提供了基础,例如:

  • 实时通知:自动向客户发送订单取货通知。

  • 反应式系统:智能库存管理,具备自动补货功能。

  • 事件驱动架构:实时微服务同步,并可选择集成Kafka。

  • 变更数据采集:全系统产品价格即时更新。

  • 实时分析:使用机器学习模型即时重新计算欺诈风险。

使用 Triggers 和 Change Streams 的库存管理工作流。

图 1. 数据库修改会作为事件记录在 oplog 中。Change Streams API 监控变更,检测监视的事件,并在应用程序或 Atlas Triggers 中触发实时响应

该过程的简洁性得益于 MongoDB 的复制功能及其底层操作日志(oplog),该日志记录所有数据库变更。通过这种机制, Change Streams 能够高效地将更新推送到您的应用程序,而不会增加额外的层或复杂性。复制主要通过在多个节点上维护数据的多个副本,确保高可用性,并支持实时更新。应用程序可以监控不同范围(集合、数据库或集群范围)中的变化,并使用 聚合框架过滤特定变化。

当开发者编写算法时,“复杂”并不等于“繁复”。更多的代码行数并不总是意味着更好的解决方案。关键在于简洁性。简单的解决方案更易于理解且更快实现,使您能够专注于真正重要的事情——创新。

我们的解决方案的数据模型围绕两个主要集合,即产品和订单。每个集合都使用字段:值格式,提供所存储数据的有序表示。让我们研究一下每个集合的结构。

  • 存储全面的产品信息,包括ID、名称和唯一的产品标识符(例如SKU)。

  • 包含分类字段(masterCategory、subCategory、articleType)。

  • 具有嵌套对象的定价功能,其中包含金额和货币字段。

  • 包括自动补货状态和基本颜色等特定产品属性。

  • 维护与库存相关的字段和元数据。

产品集合概览。

图 2. 产品集合的 MongoDB 文档

  • 使用唯一标识符追踪订单和用户的订单详细信息。

  • 包含每个订单的产品数组。

  • 功能包括一个 status_history 数组,用于捕获带有时间戳的订单状态进展。

  • 区分订单类型(在线购买、门店提货与在线购买、送货上门)。

  • 为每个订单存储特定的送货地址。

  • 根据交付类型调整状态工作流:

    • BOPIS 订单显示的状态包括“处理中”→“准备提货”。

    • 家庭配送订单会经历以下状态:处理中 → 准备配送 → 从仓库取货 → 运输中 → 已送达。

这种模型的价值在于其灵活性。通过使数据结构能够随着用户工作流程的演变而演变,企业可以轻松适应当前需求和未来可能出现的挑战。例如,一个产品 MongoDB 文档包含一个名为 price 的字段,该字段包含一个数组,允许以多种货币表示,例如 12 美元。

订单集合文档概述

图 3. 订单集合的 MongoDB 文档

构建此解决方案可以分为三个主要步骤。

1

在您的 Atlas 帐户中预配一个集群,并将演示所需的数据填充到数据库中。在存储库 可以找到一个数据转储文件,通过执行一个简单的 mongorestore 命令,即可快速复制包含所有必要数据和元数据的数据库。

2

创建一个数据库触发器,用于监听订单集合中的任何插入和更新事件。这将运行一个函数,您可以从 GitHub 存储库中复制。由于本演示的使用案例侧重于客户从电商网站订购的体验,因此该触发器帮助我们模拟每 10 秒更新订单状态所需的幕后流程,逐步推进订单的每个阶段,直到订单标记为已交付。我们模仿的一些后端流程包括仓库工人管理订单、邮政服务递送包裹,或商店员工打包订单。

3

Obtain the demo code by cloning the GitHub repository to your local machine, configure the environment variables and install the dependencies. Finally, run the app locally at http://localhost:8080/cart.

有关完整的实现细节,包括代码示例、配置文件和教程视频,请访问 GitHub 存储库

该解决方案展示了 MongoDB 的三项核心功能,使其非常适合全渠道零售应用程序:

  • 灵活性和速度:MongoDB 的灵活 document model 不仅对开发者直观,而且易于实现和运行。这种灵活性使企业能够快速适应变化,确保贵公司的解决方案能够轻松演进。因此,开发者可以专注于构建解决方案,而不是处理复杂的数据结构,从而加快产品上市时间并提供一致的全渠道体验。

  • 实时功能:Change Streams 和 Atlas Triggers 等功能通过动态、实时数据处理增强了客户互动体验,这对于订单跟踪和库存更新等任务至关重要。

  • 智能架构:MongoDB 的高可用性和可扩展架构为在全渠道时代提供互联的客户体验奠定了坚实基础。Change Streams 和 Atlas Triggers 等工具可以轻松集成到应用程序中,而不需要额外的层,由于 MongoDB 的底层架构,使得实现这些变更变得简单。

这些功能都有助于构建一个强大的全渠道订购系统,该系统可以根据业务需求进行扩展,同时保持性能和可靠性。

  • Angie Guemes, MongoDB

  • Florencia Arin, MongoDB

后退

构建库存管理系统

在此页面上