MongoDB Change Streams と Atlas Triggers を使用して、リアルタイム更新を活用し、高速で信頼性の高いオムニチャネル注文をビルドします。
業種: 小売
製品: MongoDB Atlas, MongoDB Change Streams, MongoDB Atlas Triggers
ソリューション概要
現在のカスタマーは、配達のためにオンラインで購入するなど、オンラインとオフラインのチャネルを利用するシームレスな買い物エクスペリエンスを期待しています。しかし、小売業者は、ミリチャンネルの買い物エクスペリエンスをサポートする技術ソリューションを実装するのに最善を尽くします。小売業者は、リアルタイムの可視性を提供し、動的なトラフィック パスワードなしを取り扱い、すべてのカスタマーアクセス ポイントにわたる最新の統合を可能にする柔軟なシステムを必要としています。
このソリューションでは、 MongoDB Atlasを使用してeコマース方法を示します。このデモを使用すると、ユーザーは希望する出荷方法(BOPIS または配達)を選択し、配達されるまで注文の進行状況をリアルタイムで追跡することができます。Change Streams、Atlas Triggers、柔軟なdocument modelなどの主要なMongoDB機能を活用して、堅牢でスケーラブルなミリ秒順序システムを作成する方法を学びます。
参照アーキテクチャ
このソリューションでは、 MongoDB Change Streams と Atlas Triggers を使用して、複数のアプリケーションにわたってリアルタイムデータ操作を有効にします。このアーキテクチャは、リアルタイムアプリとMongoDB Atlasの2つの主要コンポーネントで構成されています。
リアルタイム アプリには、 eコマース、配布センター、倉庫、在庫アプリなど、データベースの変更に応答するすべてのアプリケーションが含まれます。
このソリューションには次のワークフローがあります。
アプリケーションによるアクションにより、注文ステータスの更新などのデータが変更されます。
このイベントはMongoDB Atlasの
ordersコレクションに登録されています。これらの変更は、 コレクションを使用するoplogに記録されます。
oplog.rsChange Streams API はこれらの変更をモニターします。MongoDB集計フレームワーク を使用して、コレクション、データベース、またはクラスター全体のレベルで変更をモニターし、特定の変更をフィルターできます。
アーキテクチャのニーズに基づいて、次の操作を実行できます。
アプリケーション側で更新を実行します。
Atlas Functions を使用して自動タスクをトリガーします。
このアーキテクチャは、次のようなさまざまな実際のアプリケーションの基盤を提供します。
リアルタイム通知: 注文受け取り準備完了の自動顧客アラート。
反応的なシステム: 自動補充機能を備えたスマートな在庫管理。
イベント駆動型アーキテクチャ: 任意の Kafka 統合を用いたマイクロサービスのリアルタイム同期。
変更データキャプチャ:システム全体の製品価格を即時に更新します。
リアルタイム分析: 機械学習モデルを使用して不正リスクを即座に再計算します。
図の 1。OmNIchannel 順序付けソリューションのアーキテクチャ
データモデルアプローチ
このソリューションのデータモデルでは、products と orders という名前の 2 つのプライマリ コレクションを使用します。各コレクションはfield: value形式を使用して、保存されたデータを整理された表現で提供します。
製品コレクション
productsコレクションには、次のような包括的な製品情報が保存されています。
ID、名前、および一意の製品識別子( SKU など)。
分類フィールド(
masterCategory、subCategory、articleTypeなど)。amountフィールドとcurrencyフィールドを持つ価格設定のネストされたオブジェクト。自動レプリケーションステータスや基本色などの製品固有の属性。
在庫関連のフィールドと製品メタデータ。
図の 2。productsコレクションの例ドキュメント
注文コレクション
ordersコレクションは、次のような注文詳細を追跡します。
注文とユーザーの一意の識別子。
注文ごとの製品の配列。
status_history配列。タイムスタンプとともに注文状態の進行状況をキャプチャします。注文タイプの違い(オンラインで購入、保存 (する)で受け取る、オンラインで購入、自宅で配達)。
注文固有の配送先住所。
配信タイプに基づいてワークフローをステータスする:
BAPIS 注文には、「Inprocess(処理中)」や「ready」などのステータスが表示されます。
配達の注文は、「処理中」、「配達可能」、「倉庫から収集された」、「転送中」、「提供済み」の状態を通過します。
図の 3。ordersコレクション内のサンプル ドキュメント
ソリューションのビルド
このソリューションでは、この GitHub リポジトリ を使用します。次の手順では、デモを設定する方法の概要を説明します。完全なガイドラインと実装の詳細については、リポジトリの README を参照してください。
デモデータベースにデータを入力する
Atlas アカウント内でクラスターをプロビジョニングし、デモに必要なデータをデータベースに入力します。mongorestore を使用して、GitHubリポジトリの /dump/leafy_popup_store フォルダに保存されている必要なダンプデータをデータベースにすばやく入力できます。
注文ステータス trigger を追加
挿入イベントと更新イベントのために orders コレクションをリッスンする データベーストリガー を作成します。これにより、 GitHubリポジトリからコピーできる関数が実行されます。
このデモでは、eコマースウェブサイトから注文するカスタマーが含まれているため、trigger10 は注文ステータスを更新するために必要なプロセスを複製し、注文が配達とマークされるまで注文ステージを通過します。シミュレーションされたプロセスには、注文を管理する倉庫の従業員、パッケージを配達する郵便サービス、または注文を梱包する店舗の従業員が含まれます。
アプリのフロントエンドを設定
GitHubリポジトリをローカルマシンにクローンし、環境変数を構成して、依存関係をインストールします。最後に、アプリをローカルで実行するhttp://localhost:8080/cart.のフロントエンドにアクセスします。
キーポイント
柔軟性と速度: MongoDB の柔軟性により、データ構造を簡単に調整できるため、製品化までの時間が短縮され、コンシステントなオムニチャネル体験が実現します。
リアルタイム機能: Change Streams や Atlas Triggers の機能により、注文追跡や在庫更新などのタスクに不可欠なリアルタイムデータ処理が可能になります。
スマート アーキテクチャ: MongoDB のスケーラブルな柔軟なアーキテクチャにより、余計なアプリケーションレイヤーなしで Change Streams や Atlas Triggers などのツールを簡単に統合できます。
著者
Angie Guemes, MongoDB
Florencia Arin, MongoDB