將已移轉的 MongoDB 工作負載部署到 Oracle Autonomous JSON Database
Migrate an existing workload that uses a document database, in this case MongoDB, to Oracle Autonomous JSON Database on Oracle Cloud Infrastructure (OCI) to modernize the development of your JSON-centric applications.
使用文件和文件資料庫來發展資料綱要和應用程式的工作負載和應用程式非常受歡迎,因為它們為開發人員提供的靈活性。綱要彈性、快速開發及擴展性可快速塑造應用程式功能的原型設計、簡化應用程式演進,並保證開發人員能夠擴展以因應大型使用者群的迭代較小的應用程式和功能。然而,這些類型的工作負載面臨各種挑戰,包括更弱的交易保證、資料查詢靈活性,以及無法支援文件上的其他工作負載,例如分析或機器學習。
如果這些工作負載可以受益於傳統文件資料庫的所有優勢,但同時利用關聯式資料庫的優勢,該怎麼辦?例如,擁有更強大的交易保證,並使用其他功能 (例如分析和機器學習),而無需將資料複製到另一個資料庫或系統。
Autonomous JSON Database 提供 NoSQL 式文件 API (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 文件集合互動。現有應用程式程式碼可以使用儲存在 Autonomous JSON Database 中的資料,而不需要重製。
下圖說明由資料庫、後端和前端層組成的典型應用程式。
mongodb-json-logical-arch-migration-oracle.zip
實行此樣式的常用堆疊是 MEAN 堆疊,使用 MongoDB 作為文件資料庫、Express 作為後端架構、Angular 作為前端架構,以及 Node.js
作為後端伺服器。本文件使用 MEAN 堆疊作為將移轉至 OCI 和 Autonomous JSON Database 的現有部署範例。
此工作負載移轉至 OCI 和 Autonomous JSON Database 簡單易用,並且包含以下步驟的高層級:
- 部署 Autonomous JSON Database 執行處理,以便在建立 Oracle Database Mongo DB API 時啟用
- 將中繼資料和資料從 MongoDB 移轉至 Autonomous JSON Database 。
- 將應用程式伺服器部署為使用 VM、容器或 Kubernetes 執行
Node.js
和 Express,使其與 Autonomous JSON Database 相同的區域和可用性網域。 - 將後端應用程式程式碼部署至應用程式伺服器。
- 使用目前應用程式上使用的相同 MongoDB 工具和驅動程式,將後端應用程式連線至 Autonomous JSON Database 。
- 讓使用者連線至新的應用程式 URI。
請注意,此參考架構著重於移轉工作負載的部署,而非移轉處理本身。如需移轉程序的詳細資訊,請參閱深入瞭解一節。
將工作負載移轉至 Autonomous JSON Database 之後,您可以使用數個功能來增強現有功能,無論是 1) 是否支援其他非功能需求,例如輕鬆提高可擴展性、彈性或高可用性,或 2) 具備其他功能功能,例如營運報告、分析和機器學習,而無需從資料庫中複製資料。
若要提升擴展性和高可用性,請使用自治式 JSON 資料庫自動調整功能,只要按一下或 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,但如果資料量需求變更,可以輕鬆轉換為 Autonomous Transaction Processing Serverless,支援相同功能。請注意,「檢視」和「具體化視觀表」儲存不計入 Autonomous JSON Database 20 Gb 非 JSON 資料限制,因此可以輕鬆建立和使用這些資料,例如在 JSON 文件上使用 SQL 支援作業分析。
實體架構
實體架構包括 OCI 中的公用和專用子網路,以及支援高可用性的次要備份區域。
此架構支援下列項目:
- 前端層
- 應用程式使用者可以從網際網路或公司網路連線
- 使用「Web 應用程式防火牆」保護使用者連線
- 應用程式的使用者連線負載平衡,可提升復原能力和擴展性
- 負載平衡器已部署高可用性
- 後端層
- 應用程式伺服器使用執行處理集區以高可用性方式部署
- 執行處理集區可搭配自動調整功能使用,以達成水平擴展性
- 執行處理集區設定為在與 Autonomous JSON Database 相同的可用性網域中部署執行處理,以讓應用程式和資料庫共置,因此可最佳化連線延遲
- 執行處理集區設定為在放置 Autonomous JSON Database 的相同可用性網域中跨容錯域分配執行處理,以增加工作負載彈性
- 資料庫分層
- 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 業務連續性是透過備份式跨區域災害復原來實現。或者,您也可以使用可重新整理複製項。
- 災害復原
- 兩個區域支援整個雲端部署的跨區域災害復原。
- 主要區域中的自治式 JSON 資料庫在次要區域有以備份為基礎的跨區域對等資料庫。
- 第二個區域使用類似的拓樸進行部署,以減少整體復原時間目標。
- 為了減少整體 RTO,您可以使用暖災難復原策略,即已佈建後端層雲端資源,以及自治式 JSON 資料庫待命資料庫。
- 或者,您可以在發生故障時佈建後端層資源,降低執行 DR 資源但增加整體 RTO 的成本。
- 此部署未針對簡易性所描述的潛在設計改進,包括使用 OCI Full Stack Disaster Recovery 自動化負載平衡器和後端層的災害復原。
- 網路
- 這兩個區域中部署的動態路由閘道都已對等互連。
- 內部部署連線運用 OCI FastConnect 和網站至網站 VPN 進行備援。
- 所有來自內部部署和來自網際網路的內送流量都會先遞送至中樞 VCN,然後再遞送至工作負載 VCN。
- 使用集線器和軸輻網路設計來提高安全態勢,並容納其他工作負載 VCN。
- 服務會與專用端點一起部署,以提升安全態勢。
- JSON 工作負載 VCN 會隔離成數個專用子網路,以增加安全態勢。
- 安全
所有資料在傳輸中和靜態都是安全的。
- 此部署未針對簡易性所描述的潛在設計改進包括使用完全符合 CIS 規範的登陸區域,以及運用部署在中樞 VCN 中的網路防火牆。網路防火牆會檢查所有流量並強制執行原則,以改善整體安全態勢。
下圖說明此架構。
mongodb-json-physical-arch-oracle.zip
此架構具有下列元件:
- 地區
OCI 區域是本地化的地理區域,包含一或多個代管可用性網域的資料中心。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。
- 虛擬雲端網絡 (VCN) 與子網路
VCN 是您在 OCI 區域中設定的可自訂軟體定義網路。與傳統資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的無類別網域間路由 (CIDR) 區塊,您可以在建立 VCN 之後變更這些區塊。您可以將 VCN 分隔到子網路中,而子網路的作用領域可以調整到某個區域或可用性網域。每個子網路都是由連續的位址範圍所組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用網路。
- FastConnect
Oracle Cloud Infrastructure FastConnect 會在您的資料中心與 OCI 之間建立專用的專用連線。與基於網際網路的連線相比,FastConnect 提供更高的頻寬選項以及更可靠的網路體驗。
- 動態路由閘道 (DRG)
DRG 是一個虛擬路由器,提供相同區域 VCN 之間、VCN 與區域外部網路 (例如另一個 OCI 區域中的 VCN、內部部署網路,或其他雲端提供者中的網路) 的專用網路流量路徑。
- 網路位址翻譯 (NAT) 閘道
NAT 閘道可讓 VCN 中的專用資源存取網際網路上的主機,而不會向內送網際網路連線公開這些資源。
- 服務閘道
服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,而不會周遊網際網路。
- 網際網路閘道
網際網路閘道允許 VCN 中公用子網路與公用網際網路之間的流量。
- 負載平衡器
Oracle Cloud Infrastructure Load Balancing 提供從單一進入點到多部伺服器的自動化流量分配功能。
- Web 應用程式防火牆
Oracle Cloud Infrastructure Web Application Firewall (WAF) 是隨附於強制點 (例如負載平衡器或 Web 應用程式網域名稱) 的符合支付卡產業 (PCI) 規範、以區域為基礎和邊緣強制實行服務。WAF 可保護應用程式免於惡意和不需要的網際網路流量。WAF 可保護任何對網際網路公開的端點,為您的應用系統強制實施一致的規則。
- 應用程式伺服器
應用程式伺服器使用次要對等體,就像資料庫一樣,會在發生災害時接管處理。應用程式伺服器使用同時儲存在資料庫和檔案系統的組態和描述資料。應用程式伺服器叢集可在單一區域範圍內提供保護,但持續進行修改,且必須持續將新部署複製到次要位置,以實現一致的災害復原。
- Oracle Database API for MongoDB
Oracle Database API for MongoDB 可讓應用程式使用 MongoDB 驅動程式、工具和 SDK,與 Oracle Database 中的 JSON 文件集合互動。
- 自治式 JSON 資料庫
Oracle Autonomous JSON Database 是一項雲端文件資料庫服務,可輕鬆開發以 JSON 為中心的應用程式。它具有簡單的文件 API、無伺服器擴展、高效能 ACID 交易、全方位的安全性,以及低按使用量付費的定價。Autonomous JSON Database 可自動佈建、設定、調整、擴展、修補、加密和修復資料庫。
- 物件儲存
OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及豐富的內容 (例如影像和影片)。您可以直接從網際網路或雲端平台內安全地儲存資料。您可以擴展儲存,而不會發生任何效能或服務可靠性的降低情況。
針對需要快速、立即及頻繁存取的「熱」儲存使用標準儲存。將封存儲存用於保留一段很長的時間和很少或很少存取的「冷」儲存。
架構變異
Autonomous JSON Database 提供的完全受管理 MongoDB API 是大部分工作負載的最佳解決方案,因為它更容易管理。
如果需要手動控制 Oracle REST Data Services 的組態和管理,則可以使用客戶管理的 Oracle REST Data Services。例如,允許應用程式使用較大的連線集區。
附註:
如果有特定的工作負載需求,請使用此架構變體。只有進階使用者才能部署此架構變異。本節僅說明與先前描述的實體架構相比的差異,因此除非另有說明,否則所有實體架構設計原則都是有效的。
下方的架構圖說明如何部署變體。為了簡化,只有部署在 JSON 工作負載 VCN 中的雲端資源會被描述,因為其餘部署與以前所述相同。
mongodb-json-arch-variant-oracle.zip
- 後端應用程式程式碼會部署在屬於執行處理集區的應用程式伺服器中。
- 負載平衡器會分配內送使用者要求,因此前端層可水平擴展,而且不會發生單點故障。
- 客戶管理的 Oracle REST Data Services 會安裝在每個應用程式伺服器上,並設定為啟用 MongoDB API,讓應用程式可以使用 MongoDB 工具和驅動程式連線至資料庫。
- 客戶管理的 Oracle REST Data Services 設定為透過設定較大的連線集區或使用其他資料庫服務,根據工作負載的非功能需求進行調整。
- 後端程式碼和客戶管理的 Oracle REST Data Services 都已預先安裝並預先設定在集區使用的執行處理組態中,因此只要將執行處理新增至集區,就能在執行處理啟動設定之後執行後端並連線至資料庫。
建議
- VCN
建立 VCN 時,請根據計畫要連附至 VCN 中子網路的資源數目,決定所需的 CIDR 區塊數目以及每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。
選取未與您要設定專用連線的任何其他網路 (在 Oracle Cloud Infrastructure 、內部部署資料中心或其他雲端提供者中) 重疊的 CIDR 區塊。
建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
設計子網路時,請考量您的流量和安全需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。
- 應用程式部署
如果應用程式可以在容器中執行,請考慮使用 Oracle Kubernetes Engine (OKE) 進行容器型部署。
- 安全
請考慮使用「資料安全」進一步提高工作負載安全態勢,並且能夠執行資料庫稽核。
- 可觀測性
- 請考慮使用 OCI Audit 對自治式 JSON 資料庫以外的所有 OCI 服務執行鑑識稽核。
- 您可以考慮使用監控、日誌記錄和日誌記錄分析來完整檢視環境作業狀態。
- 災害復原
您可以考慮使用 OCI Full Stack Disaster Recovery,將堆疊所有層的災害和復原自動化和協調。
- 營運效率
- 如果自治式 JSON 工作負載是更廣泛的資料庫機組的一部分,以提高成本效益,請考慮使用彈性集區。
- 您可以考慮啟用 Database Management,此 OCI 服務可提供一組全方位的資料庫效能監控和管理功能,以簡化 AJD 執行處理管理。
- 應用程式演進
- 考慮使用 SQL 和 APEX 或 Oracle Analytics Cloud 等前端,在 Autonomous JSON Database 中部署作業分析和即時報告,而無需將資料移出資料庫,即可進行可信任和即時的資料分析
- 您可以考慮使用 Autonomous JSON Database 進行使用 Oracle Machine Learning (OML) 的機器學習,使用 JSON 資料建置及訓練模型,而不需要移動資料,以及將模型與現有工作負載一起部署,以有效率地推論
- 對於應用程式核心以外的其他使用案例,請考慮使用自治式 JSON 資料庫。選取查詢 JSON 和保留描述資料的 AI 和資料庫檢視,讓使用者能夠使用自然語言查詢 JSON 資料
- 您可以考慮使用自治式 JSON 資料庫儲存額外的資料類型 (關聯式、向量、空間或圖表),最多可儲存 20 Gb,以增加工作負載功能和彈性。