本文提供從 MongoDB Atlas 操作數據衍生見解的解決方案。 解決方案會將 MongoDB Atlas 連線到 Azure Synapse Analytics。 線上可讓您以批次和即時方式傳輸數據。 即時方法可讓 Azure Synapse Analytics 專用 SQL 集區與 MongoDB Atlas 數據源中的變更同步。
Apache®、Apache Spark 和火焰標誌是 Apache Software Foundation 在美國和/或其他國家的註冊商標或商標。 使用這些標記不會隱含 Apache Software Foundation 的背書。
MongoDB Atlas 標誌是 MongoDB 的商標。 使用此標記時不會隱含任何背書。
架構
下圖顯示如何將 MongoDB Atlas 數據即時同步處理至 Azure Synapse Analytics。
資料流程
此解決方案提供兩個選項來觸發管線,以擷取 MongoDB Atlas 作業數據存放區 (ODS) 中的實時變更,並同步處理數據。 下列步驟概述這兩個選項。
儲存在 MongoDB Atlas 中的操作和事務數據發生變更。 Mongo Atlas 變更數據流 API 會即時通知已訂閱的應用程式變更。
自訂 Azure App 服務 Web 應用程式會訂閱 MongoDB 變更數據流。 Web 應用程式有兩個版本: 事件方格 和 記憶體,每個解決方案版本各一個。 這兩個應用程式版本都會接聽 Atlas 中插入、更新或刪除作業所造成的變更。 當應用程式偵測到變更時,他們會將已變更的檔寫入至 Azure Data Lake Storage,其與 Azure Synapse Analytics 整合。 當應用程式偵測到 Atlas 中的變更時,應用程式的事件方格版本也會在 Azure 事件方格 中建立新的事件。
這兩個解決方案版本都會觸發 Azure Synapse Analytics 管線:
- 在事件方格版本中,會在 Azure Synapse Analytics 中設定自定義事件型觸發程式。 該觸發程式會訂閱 Web 應用程式發佈至的事件方格主題。 該主題的新事件會啟動 Azure Synapse Analytics 觸發程式,這會導致 Azure Synapse Analytics 數據管線執行。
- 在記憶體版本中,記憶體型觸發程式會在 Azure Synapse Analytics 中設定。 在整合式 Data Lake Storage 資料夾中偵測到新的 Blob 時,就會啟動該觸發程式,這會導致 Azure Synapse Analytics 數據管線執行。
在複製活動中,Azure Synapse Analytics 管線會將完整變更的檔從 Data Lake Storage Blob 複製到專用 SQL 集區。 此作業已設定為在選取的數據行上執行 upsert 。 如果數據行存在於專用 SQL 集區中,upsert 會更新數據行。 如果數據行不存在,upsert 會插入數據行。
專用 SQL 集區是裝載數據管線更新之數據表的企業數據倉儲功能。 管線的複製數據活動會讓該數據表與其對應的 Atlas 集合保持同步。
Power BI 報表和視覺效果會顯示目前和近乎即時的分析。 數據也會饋送至下游應用程式。 MongoDB Atlas 會使用 Azure Synapse Analytics 數據管線接收連接器作為接收。 Atlas 接著會提供自定義應用程式與實時數據。
元件
MongoDB Atlas 是 MongoDB 的資料庫即服務供應專案。 這個多雲端應用程式數據平臺提供事務處理、相關性型搜尋、即時分析,以及行動到雲端數據同步處理。 MongoDB 也提供內部部署解決方案 MongoDB Enterprise Advanced。
MongoDB Atlas 中的變更數據流 可讓應用程式存取即時數據變更,讓應用程式能夠立即回應這些變更。 變更數據流提供一種方式,讓應用程式接收特定集合、資料庫或整個部署叢集變更的相關通知。
App Service 及其 Web Apps、Mobile Apps 和 API Apps 功能提供建置、部署及調整 Web 應用程式、行動應用程式和 REST API 的架構。 此解決方案會使用以 ASP.NET 程式設計 Web 應用程式。 此程式代碼可在 GitHub 上取得:
Azure Synapse Analytics 是此解決方案用於數據擷取、處理和分析的核心服務。
Data Lake Storage 提供儲存和處理數據的功能。 Data Lake Storage 是建置在 Blob 記憶體之上的數據湖,可提供可調整的解決方案,以管理來自多個異質來源的大量數據。
Azure Synapse Analytics 管線 可用來對數據執行擷取、轉換、載入 (ETL) 作業。 Azure Data Factory 提供類似的服務,但您可以在 Synapse Studio 內建立 Azure Synapse Analytics 管線。 您可以在相同的管線內使用多個活動。 您也可以建立相依性端點,以將某個活動與管線中的另一個活動連線。
對應數據流 是在 Azure Synapse Analytics 中以可視化方式設計的數據轉換。 數據流提供一種方式,讓數據工程師在不撰寫程式代碼的情況下開發數據轉換邏輯。 您可以將產生的數據流當做使用相應放大 Apache Spark 叢集的 Azure Synapse Analytics 管線內的活動來執行。 您可以使用現有的 Azure Synapse Analytics 排程、控制、流程和監視功能,將數據流活動投入運作。
專用 SQL 集區 會在處理和正規化數據之後,為數據提供數據倉儲功能。 Azure Synapse Analytics 的這項功能先前稱為 SQL 數據倉儲。 專用 SQL 集區可讓終端使用者和應用程式使用精簡的數據。
Azure Synapse Analytics 觸發程式 提供自動化的方式來執行管線。 您可以排程這些觸發程式。 您也可以設定事件型觸發程式,例如記憶體事件觸發程式和自定義事件觸發程式。 解決方案會使用這兩種類型的事件型觸發程式。
事件方格 是可高度擴充且無伺服器的事件代理程式。 您可以使用事件方格將事件傳遞至訂閱者目的地。
Power BI 是一組用來顯示分析資訊的軟體服務和應用程式。 在此解決方案中,Power BI 提供一種方式來使用已處理的數據來執行進階分析和衍生見解。
案例詳細資料
MongoDB Atlas 可作為許多企業應用程式的作業數據層。 此雲端資料庫會從多個通道儲存來自內部應用程式、客戶面向服務和第三方 API 的數據。 藉由使用 Azure Synapse Analytics 管線,您可以將 MongoDB Atlas 數據與其他傳統應用程式和來自記錄等來源的非結構化數據結合在一起。
批次整合
在 Azure Synapse Analytics 中,您可以順暢地整合 MongoDB 內部部署實例和 MongoDB Atlas 作為來源或接收資源。 MongoDB 是唯一具有 Azure Synapse Analytics 和 Data Factory 來源和接收連接器的 NoSQL 資料庫。
透過歷程記錄數據,您可以一次擷取所有數據。 您也可以使用批次模式中的篩選,以累加方式擷取特定期間的數據。 然後,您可以使用 Azure Synapse Analytics 中的 SQL 集區和 Apache Spark 集區來轉換和分析數據。 如果您需要將分析或查詢結果儲存在分析資料存放區中,您可以使用 Azure Synapse Analytics 中的接收資源。
如需如何設定及設定連接器的詳細資訊,請參閱下列資源:
- 使用 Azure Data Factory 或 Azure Synapse Analytics 將數據從 MongoDB Atlas 複製或複製到 MongoDB Atlas
- 使用 Azure Data Factory 或 Azure Synapse Analytics 將數據從 MongoDB 複製或複製到 MongoDB
來源連接器提供方便的方式,在儲存在 MongoDB 或 Atlas 中的作業數據上執行 Azure Synapse Analytics。 使用來源連接器從 Atlas 擷取數據之後,您可以將數據載入 Data Lake Storage Blob 記憶體,作為 Parquet、Avro、JSON、文字或 CSV 檔案。 然後,您可以轉換這些檔案,或將它們與其他來自多資料庫、多雲端或混合式雲端環境中其他數據源的檔案聯結。
您可以在下列案例中使用從 MongoDB Enterprise Advanced 或 MongoDB Atlas 擷取的數據:
若要從批次中的 MongoDB 擷取特定日期的所有數據。 接著,您會將數據載入 Data Lake Storage。 從該處,您可以使用無伺服器 SQL 集區或 Spark 集區進行分析,或將資料複製到專用 SQL 集區。 擷取此批次之後,您可以如數據流中所述,套用變更至數據。 記憶體CopyPipeline_mdb_synapse_ded_pool_RTS範例管線可在此解決方案中取得。 您可以從 GitHub 匯出管線以供此一次性載入之用。
例如,若要以特定頻率產生深入解析,例如每日或每小時報告。 在此案例中,您會在執行分析管線之前,排程管線定期擷取數據。 您可以使用 MongoDB 查詢來套用篩選準則,並只擷取特定數據子集。
即時同步
企業需要以即時數據為基礎的深入解析,而不是過時的數據。 深入解析傳遞的延遲數小時可能會阻礙決策流程,並導致競爭優勢喪失。 此解決方案可藉由將 MongoDB 事務資料庫中發生的變更即時傳播至專用 SQL 集區,來推動重大決策。
此解決方案有三個部分,下列各節將說明。
擷取 MongoDB Atlas 變更
MongoDB 變更數據流會擷取資料庫中發生的變更。 變更數據流 API 會提供 App Service Web 應用程式訂閱變更數據流的相關信息。 這些應用程式會將變更寫入 Data Lake Storage Blob 記憶體。
觸發管線以將變更傳播至 Azure Synapse Analytics
解決方案提供兩個選項,可在 Blob 寫入 Data Lake Storage 之後觸發 Azure Synapse Analytics 管線:
記憶體型觸發程式。 如果您需要即時分析,請使用此選項,因為管線會在寫入變更的 Blob 時立即觸發。 但是,當您有大量數據變更時,此選項可能不是慣用的方法。 Azure Synapse Analytics 會限制可同時執行的管線數目。 當您有大量數據變更時,可能會達到該限制。
事件型自定義觸發程式。 這種類型的觸發程式的優點在於其位於 Azure Synapse Analytics 之外,因此更容易控制。 Web 應用程式的事件方格版本會將已變更的數據檔寫入 Blob 記憶體。 同時,應用程式會建立新的事件方格事件。 事件中的數據包含 Blob 的檔名。 事件觸發的管線會以參數的形式接收檔名,然後使用 檔案來更新專用 SQL 集區。
將變更傳播至專用 SQL 集區
Azure Synapse Analytics 管線會將變更傳播至專用 SQL 集區。 此解決方案會在 GitHub 上提供 CopyPipeline_mdb_synapse_ded_pool_RTS 管線,將 Blob 中的變更從 Data Lake Storage 複製到專用 SQL 集區。 此管線是由記憶體或事件方格觸發程式所觸發。
潛在使用案例
此解決方案的使用案例橫跨許多產業和領域:
Retail
- 將智慧融入產品群組和產品促銷
- 優化使用IoT串流的冷記憶體
- 優化庫存補充
- 將值新增至全通路散發
銀行與金融
- 自訂客戶金融服務
- 偵測潛在的詐騙交易
電信業
- 最佳化新一代網路
- 最大化邊緣網路的價值
汽車
- 優化連接車輛的參數化
- 偵測物聯車輛中 IoT 通訊中的異常狀況
製造業
- 為機器提供預測性維護
- 最佳化儲存體和庫存管理
以下是兩個特定範例:
- 如本文稍早在 Batch 整合中所述,您可以在批次中擷取 MongoDB 數據,然後在發生變更時更新數據。 這項功能可讓即時深入解析進行 Just-In-Time 決策和結論。 這項功能適用於分析敏感性和重要資訊,例如財務交易和詐騙偵測數據。
- 如 Batch 整合 所述,您可以排程管線定期擷取 MongoDB 數據。 此功能適用於零售案例,例如使用每日銷售數據更新庫存層級。 在這種情況下,分析報表和儀錶板並不重要,而且即時分析不值得投入。
下列各節將進一步探討兩個零售行業使用案例。
產品群組
若要促銷產品的銷售,您可以將產品作為配套的一部分與其他相關產品一起銷售。 目標是使用銷售模式數據來開發將產品群組成套件的策略。
有兩個數據來源:
- 來自 MongoDB 的產品目錄數據
- Azure SQL 的銷售數據
這兩組數據都會使用 Azure Synapse Analytics 管線移轉至 Azure Synapse Analytics 專用 SQL 集區。 觸發程式和異動數據擷取可用來在一次性移轉的數據上達成近乎實時的數據同步處理。
下列 Power BI 圖表顯示產品與銷售模式之間的親和性。 畫筆和筆跡型重新填滿的親和性很高。 銷售數據顯示畫筆在指定區域中的銷售量很高。
分析會提出兩個建議,以產生更好的銷售:
- 組合筆和筆跡型重新填滿
- 在特定區域中推廣套件組合
產品促銷
若要促銷產品的銷售,您可以將產品推薦給對相關產品感興趣的客戶。 目標是使用銷售數據和客戶購買模式數據來開發建議產品給客戶的策略。
藉由使用 Azure Synapse Analytics,您可以開發 AI 和機器學習模型,以判斷要推薦給客戶的產品。
下圖顯示使用各種類型的數據來建立模型,以判斷替代產品建議。 數據報括客戶購買模式、利潤、產品親和性、產品銷售量,以及產品目錄參數。
如果您的模型達到高精確度,它會提供您可以提供給客戶的產品清單。
考量
這些考量能實作 Azure Well-Architected Framework 的支柱,其為一組指導原則,可以用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構。
安全性
安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性支柱的概觀。
如需解決方案中 Azure 元件的安全性需求和控件的詳細資訊,請參閱每個產品文件的安全性一節。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化支柱的概觀。
- 若要預估 Azure 產品和設定的成本,請使用 Azure 定價計算機。
- Azure 可協助您避免不必要的成本,方法是識別您需求的正確資源數目、分析一段時間的花費,以及調整以符合商務需求而不需要超支。 例如,當您不預期任何負載時,可以暫停專用 SQL 集區。 您稍後可以繼續。
- 您可以使用 Azure Functions 取代 App Service。 藉由協調 Azure Synapse Analytics 管線內的函式,您可以降低成本。
- 若要降低 Spark 叢集成本,請選擇正確的數據流計算類型。 一般和記憶體優化選項可供使用。 也請選擇適當的核心計數和存留時間 (TTL) 值。
- 若要深入瞭解如何管理關鍵解決方案元件的成本,請參閱下列資源:
效能效益
效能效率是工作負載調整以符合使用者以有效率方式放置的需求的能力。 如需詳細資訊,請參閱效能效率支柱概觀。
當有大量變更時,在 Azure Synapse Analytics 中針對集合中的每個變更執行數千個管線可能會導致佇列管線積壓。 若要改善此案例中的效能,請考慮下列方法:
- 使用以記憶體為基礎的 App Service 程式代碼,它會使用 Data Lake Storage 的變更來撰寫 JSON 檔。 請勿將記憶體型觸發程式與管線連結。 請改用短間隔的排程觸發程式,例如每兩到五分鐘一次。 當排程觸發程式執行時,它會取得指定 Data Lake Storage 目錄中的所有檔案,並更新每個檔案的專用 SQL 集區。
- 修改事件方格 App Service 程序代碼。 將大約 100 個變更的微批次程式設計為 Blob 記憶體,然後才使用包含檔名的元數據,將新主題新增至事件。 透過這項修改,您只會針對一個具有100個變更的Blob觸發一個管線。 您可以調整微批次大小,以符合您的案例。 使用高頻率的小微批次來提供接近即時的更新。 或者,請以較低的頻率使用較大的微批次來延遲更新並降低額外負荷。
如需改善 Azure Synapse Analytics 管線複製活動效能和延展性的詳細資訊,請參閱 複製活動 效能和延展性指南。
部署此案例
如需實作此解決方案的相關信息,請參閱 MongoDB Atlas 與 Synapse 的即時同步處理解決方案。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- 戴安娜·安妮·耶諾什 |資深解決方案架構師
- Babu Srinivasan |資深解決方案架構師
- Utsav Talwar |建立解決方案架構師的關聯
其他投稿人:
- Krishnakumar Rukmangathan |資深項目經理
- Sunil Sabat |主體計劃管理員
- Wee Hyong T |首席董事
- Paresh Saraf |技術總監
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。
下一步
如需解決方案的詳細資訊,請連絡 partners@mongodb.com。
如需 MongoDB 的相關信息,請參閱下列資源:
如需 Azure 解決方案元件的相關信息,請參閱下列資源:
- 什麼是 Azure Synapse Analytics?
- Azure Synapse Analytics 使用案例
- Azure Synapse Analytics 產業特定的使用案例
- Azure Synapse Analytics 連接器
- App Service 概觀
- Power BI 是什麼?
- Azure Data Lake Storage Gen2 簡介
- 什麼是 Azure 事件方格?