將已移轉的 MongoDB 工作負載部署到 Oracle Autonomous JSON Database@Azure
Migrate an existing workload that uses a document database, in this case MongoDB, to Azure and Oracle Autonomous JSON Database deployed in Azure, a cloud document database service that makes it simple to modernize the development of your JSON-centric applications.
使用文件和文件資料庫來發展資料綱要和應用程式的工作負載和應用程式非常受歡迎,因為它們為開發人員提供的靈活性。綱要彈性、快速開發及擴展性可快速塑造應用程式功能的原型設計、簡化應用程式演進,並保證開發人員能夠擴展以因應大型使用者群的迭代較小的應用程式和功能。然而,這些類型的工作負載面臨各種挑戰,包括更弱的交易保證、資料查詢靈活性,以及無法支援文件上的其他工作負載,例如分析或機器學習。
如果這些工作負載可以受益於傳統文件資料庫的所有優勢,但同時利用關聯式資料庫的優勢,該怎麼辦?例如,擁有更強大的交易保證,並使用其他功能 (例如分析和機器學習),而無需將資料複製到另一個資料庫或系統。
Autonomous JSON Database 提供 NoSQL 式文件 API (Oracle Simple Oracle Document Access (SODA) 和 Oracle Database API for MongoDB)、無伺服器擴展、高效能 ACID 交易、全面的安全性,以及低按使用付費定價。Autonomous JSON Database 將資料庫的佈建、設定、調整、擴展、修補、加密和修復自動化,從而消除資料庫管理並提供 99.95% 的可用性。
功能架構
此架構中使用的其中一個主要功能是 Oracle Database API for MongoDB,可讓應用程式使用 MongoDB 驅動程式、工具和 SDK,與 Oracle Database 中的 JSON 文件集合互動。現有應用程式程式碼可以使用 Oracle Autonomous JSON Database 中儲存的資料,而不需要重製。
下圖說明由資料庫、後端和前端層組成的典型應用程式。
mongodb-ajd-azure 邏輯 -arch-oracle.zip
實行此樣式的常用堆疊是 MEAN 堆疊,使用 MongoDB 作為文件資料庫、Express 作為後端架構、Angular 作為前端架構,以及 Node.js
作為後端伺服器。本文件使用 MEAN 堆疊作為將移轉至 Azure 和 Autonomous JSON Database 的現有部署範例。
此工作負載直接移轉至 Azure 和 Autonomous JSON Database ,包含以下步驟的高層級:
- 部署 Autonomous JSON Database 執行處理,以便在建立 Oracle Database MongoDB API 時啟用。
- 將中繼資料和資料從 MongoDB 移轉至 Autonomous JSON Database 。
- 使用 Azure App Service、VM、容器或 Kubernetes 將應用程式伺服器部署至與 Autonomous JSON Database 相同的區域和可用性網域,以執行
Node.js
和 Express。 - 將後端應用程式程式碼部署至應用程式伺服器。
- 使用目前應用程式上使用的相同 MongoDB 工具和驅動程式,將後端應用程式連線至 Autonomous JSON Database 。
- 讓使用者連線至新的應用程式 URI。
請注意,此參考架構著重於移轉工作負載的部署,而非移轉處理本身。如需移轉程序的詳細資訊,請參考瀏覽更多一節。
將工作負載移轉至 Autonomous JSON Database 之後,您可以使用數個功能來增強現有功能,無論是 1) 是否支援其他非功能需求,例如輕鬆提高可擴展性、彈性或高可用性,或 2) 具備其他功能功能,例如營運報告、分析和機器學習,而無需從資料庫中複製資料。
若要提升擴展性和高可用性,請使用 Autonomous JSON Database 自動調整功能。只要按一下或 API 呼叫,即可讓工作負載最多使用 3 倍的基準容量,無須停機。請注意, Autonomous JSON Database 使用 Oracle Real Application Clusters (Oracle RAC) 技術來提供高可用性。針對後端層,使用具有自動調整規則的運算執行處理集區,進而實現應用程式高可用性和擴展性。
由於 Autonomous JSON Database 是建立在多模型、多工作負載資料庫技術之上,因此您可以新增依賴關聯式、空間、圖形或向量資料類型的功能,這些功能可以與現有應用程式搭配運作。使用者通常想要對 JSON 資料執行分析。在 Autonomous JSON Database 中使用 SQL 可使用相同的引擎和資料,簡化建立作業和分析報告。
Autonomous JSON Database 的非 JSON 資料限制為 20 Gb。如果您的資料磁碟區需求發生變更,您可以輕鬆轉換為支援相同功能的 Oracle Autonomous Database Serverless 。檢視和具體化視觀表儲存不計入 Autonomous JSON Database 20 Gb 非 JSON 資料限制,因此可以輕鬆建立和使用這些資料,在 JSON 文件上使用 SQL 支援作業分析。
實體架構
實體架構包括在兩個 Microsoft Azure 區域中使用委派子網路部署的 Autonomous JSON Database ,以支援高可用性。OCI 服務支援自動備份至 Oracle Cloud Infrastructure Object Storage 。
此架構支援下列項目:
- 前端層
- 應用程式使用者可以從網際網路或公司網路連線。
- 使用者連線已使用 Microsoft Azure 前門遞送至執行應用程式的作用中區域。
- 使用 Azure Web 應用程式防火牆保護使用者連線。
- 使用 App Service 來平衡應用程式的使用者連線。
- 後端層
- 應用程式使用 Azure App Service 以高可用性方式部署。
- Azure App Service AutoScale 可用於實現水平擴展性。
- 資料庫分層
- Autonomous JSON Database 以 Oracle Real Application Clusters (Oracle RAC) 和數個資料庫節點作為服務執行處理的基礎,提供高可用性。因此,依預設,資料庫層具備高可用性和彈性。
- 在 Autonomous JSON Database 中啟用的 Oracle Database API for MongoDB,可讓您在不變更的情況下使用現有的應用程式程式碼。
- Oracle Database API for MongoDB 具有高度復原能力,並由 Autonomous JSON Database 在內部保證抗逆力。
- Autonomous JSON Database 可以使用自動調整功能,以增加和減少系統負載。
- Autonomous JSON Database 業務連續性是透過備份式跨區域災害復原來實現。或者,您也可以使用可重新整理複製項。
- 災害復原
- 兩個區域支援整個雲端部署的跨區域災害復原。
- 主要區域中的 Autonomous JSON Database 在次要區域上具有備份型跨區域對等互連。
- 第二個區域使用類似的拓樸進行部署,以減少整體復原時間目標。
- 使用暖災難復原策略來減少整體的 RTO。在暖災難復原策略中,後端層雲端資源已經與自治式 JSON 資料庫待命資料庫一起佈建。
- 或者,您可以在發生故障時佈建後端層資源,降低執行 DR 資源但增加整體 RTO 的成本。
- 網路
- 來自內部部署和來自網際網路的所有應用程式內送流量都會由 Azure Front Door 遞送。
- Autonomous JSON Database 會與專用端點一起部署,以提高安全性狀態。
- Azure App Service 是使用整合子網路和 VNet 來部署 Web App,以連線至 Autonomous JSON Database 執行處理。
- 應用程式 VNet 與資料庫 VNet 對等互連,而流量則允許在 Web 應用程式與自治式 JSON 資料庫之間流動。
- 安全
- 所有資料在傳輸和 rest 都是安全的。
- 以下潛在的設計改良未針對簡易性驗證的部署描述:
- 使用 Azure Automation Runbook 自動執行應用程式災難復原,以切換前門端點並驗證後續容錯移轉應用程式狀況。
- 利用中樞和網輻拓樸,加強集中網路安全性。
- 利用部署在中樞 VNet 中的網路防火牆,檢查所有流量並強制執行原則,以改善整體安全狀態。
下圖說明此參照架構。
mongodb-ajd-azure 實體 -arch.zip
此架構具有下列 Microsoft 元件:
- Azure 防火牆管理程式
Azure Firewall Manager 是集中式安全管理服務,可簡化跨多個區域和訂閱的 Azure 防火牆部署和組態。它可以進行階層式原則管理,讓全域和本機防火牆原則能夠一致地套用。與 Azure Virtual WAN (vWAN) 和安全中樞整合時,Azure Firewall Manager 可透過自動化流量路由和篩選來增強安全性,而不需要使用者定義的路由。此整合可確保虛擬網路、分公司和網際網路之間的流量安全地管理和監控,提供強大且精簡的網路安全性解決方案。
- Azure 前門
Azure Front Door 是一項雲端服務,可作為 Web 應用程式的全球進入點,提供高效能內容傳遞、智慧型第 7 層負載平衡,以及 Web 應用程式防火牆 (WAF) 和 DDoS 保護等整合式安全性功能,以確保使用者體驗快速、可靠且安全。
- Azure 區域
Azure 區域是位於一或多個實體 Azure 資料中心 (稱為可用性區域) 的地理區域。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。
Azure 和 OCI 區域都是本地化的地理區域。若為 Oracle Database@Azure ,Azure 區域會連線至 OCI 區域,Azure 中的可用性區域 (AZ) 會連線至 OCI 中的可用性網域 (AD)。選取 Azure 和 OCI 區域組,將距離和延遲降到最低。
- Azure 可用性區域
Azure 可用性區域是 Azure 區域內的實體獨立位置,旨在透過提供獨立的電源、冷卻和網路,確保高可用性和彈性。
- Azure 虛擬網路 (VNet)
Azure 虛擬網路 (VNet) 是 Azure 專用網路的基礎建置區塊。VNet 可讓許多類型的 Azure 資源 (例如 Azure 虛擬機器 (VM)) 安全地相互通訊、網際網路和內部部署網路。
- Azure 應用程式服務
Azure App Service 是一個完全受管理的平台即服務 (PaaS),不需管理底層基礎架構,即可建置、代管及調整 Web 應用程式、API 及行動後端。
- Azure App Service 整合子網路
Azure 虛擬網路內的專用子網路,專門委派由應用程式服務計畫使用,讓 Web 應用程式能夠對虛擬網路或其對等互連網路內的專用資源進行輸出連線,但無法接收來自 VNet 的輸入流量。
- Azure 委派子網路
委派的子網路可讓您將受管理的服務 (特別是平台即服務 (PaaS) 服務) 直接插入您的虛擬網路中作為資源。您可完全整合管理虛擬網路內的外部 PaaS 服務。
此架構具有下列 Oracle 元件:
- OCI 地區
OCI 區域是本地化的地理區域,包含一或多個代管可用性網域的資料中心。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。
- OCI Object Storage
OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及豐富的內容 (例如影像和影片)。您可以直接從應用程式或雲端平台內安全地儲存資料。您可以擴展儲存,而不會發生任何效能或服務可靠性的降低情況。
針對需要快速、立即及頻繁存取的「熱」儲存使用標準儲存。將封存儲存用於保留一段很長的時間和很少或很少存取的「冷」儲存。
- 儲存 OCI 專用端點
OCI 專用端點可讓您從虛擬雲端網路 (VCN) 或內部部署網路,以免費、私密且安全的方式存取許多 OCI 服務。
架構變異
如果需要手動控制 Oracle REST Data Services 的組態和管理,則可以使用客戶管理的 Oracle REST Data Services。例如,允許應用程式使用較大的連線集區。
附註:
如果有特定的工作負載需求,請使用此架構變體。只有進階使用者才能部署此架構變異。本節僅說明與先前描述的實體架構相比的差異,因此除非另有說明,否則所有實體架構設計原則都是有效的。
下列架構圖說明如何部署變體。為了簡化,只有部署在 JSON 工作負載 VCN 中的雲端資源會被描述,因為部署的 rest 與先前描述的實體架構相同。
mongodb-ajd-azure-arch-variant-oracle.zip
- App 服務負載平衡器會分配內送使用者要求,因此前端層可水平擴展,而且不會發生單點故障。
- 後端應用程式會部署在 App Service Scale Unit 的 Worker 中。
- 應用程式是使用容器作為發布方法進行部署。
- 使用應用程式和 Oracle REST Data Services 建立、安裝及設定容器,讓這兩個容器都可以在相同的容器中執行。
- 每個工作者在相同的程式實際執行環境中,執行將應用程式和 Oracle REST Data Services 共置的容器映像檔。
- 客戶管理的 Oracle REST Data Services 工作程式設定為啟用 MongoDB API,讓應用程式可以使用 MongoDB 工具和驅動程式連線至資料庫。
- 客戶管理的 Oracle REST Data Services 設定為透過設定較大的連線集區或使用其他資料庫服務,根據工作負載的非功能需求進行調整。
- 後端程式碼和客戶管理的 Oracle REST Data Services 都已預先安裝並預先設定在工作者使用的容器映像檔中。當應用程式服務水平擴展時,新工作者可以在佈建後執行後端應用程式並連線至資料庫。
建議
- 應用程式部署
- 如果您需要應用程式服務中可能無法提供的進階協調、網路和安全功能,請考慮使用 Azure Kubernetes Service (AKS) 的容器型部署。
- 安全
- 請考慮使用 Oracle Data Safe 來進一步增加工作負載安全狀態和執行資料庫稽核。
- 可觀測性
- 您可以考慮使用 Azure Monitor,監控 Autonomous JSON Database 指標以及所有其他 Azure 服務監控資料。
- 災害復原
- 您可以考慮使用 Azure 網站復原,或利用自訂命令檔偵測失敗並起始容錯移轉處理作業,以自動化及協調堆疊所有層的災害和復原。
- 營運效率
- 如果 Autonomous JSON Database 工作負載是更廣泛的資料庫機組的一部分,請考慮使用 Elastic Pools,以提高成本效益。
- 您可以考慮啟用 Oracle Cloud Infrastructure Database Management,此 OCI 服務可提供一組全方位的資料庫效能監控與管理功能,以簡化 Autonomous JSON Database 執行處理的管理。
- 應用程式演進
- 考慮使用 SQL 和 APEX 或 PowerBI 等前端,在 Autonomous JSON Database 中部署作業分析和即時報告,而無需將資料移出資料庫,即可進行可信任和即時的資料分析
- 您可以考慮使用 Autonomous JSON Database 進行機器學習 (使用 Oracle Machine Learning (OML),使用 JSON 資料建置和訓練模型,而不需要移動資料,以及將模型與現有工作負載一起部署,以有效率地推論。
- 對於應用程式核心以外的其他使用案例,請考慮使用 Autonomous JSON Database 。選取查詢 JSON 和保留描述資料的 AI 和資料庫檢視,讓使用者能夠使用自然語言查詢 JSON 資料。
- 您可以考慮使用 Autonomous JSON Database ,將其他資料類型 (關聯式、向量、空間或圖表) 儲存到最多 20 Gb,以增加工作負載功能和彈性。