使用無伺服器應用程式自動將資料載入資料倉儲
Oracle Functions 是 Oracle Cloud Infrastructure 上建置且由開放式來源 Fn 專案引擎提供之無伺服器、高度可擴展、完全管理的函數即服務平台。開發人員可以使用 Oracle Functions 來撰寫及部署提供業務價值的程式碼,而不用擔心佈建或管理基礎架構。Oracle Functions 是容器原生功能,並封裝為 Docker 容器映像檔。
架構
此參照架構顯示如何使用無伺服器函數自動執行從各種資料庫或應用程式產生的檔案擷取資料的程序,以及將資料載入資料倉儲以進行分析。
架構圖表顯示資料流程。壓縮的 CSV 檔案上傳至 Oracle Cloud Infrastructure Object Storage 中的特定儲存桶時,會觸發「事件」服務。發出的事件會呼叫一個函數,從上傳的檔案擷取資料,然後將資料載入 Oracle Autonomous Data Warehouse 執行處理。將資料載入資料倉儲之後,已處理的 CSV 檔案會移至 Oracle Cloud Infrastructure Object Storage 中的不同儲存桶。

autoload-adw.png 圖解描述
架構包含下列元件:
- 區域
Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。
- 可用性網域
可用性網域是區域內獨立的獨立資料中心。每個可用性網域中的實體資源都會與其他可用性網域中的資源隔離,以提供容錯。可用性網域不會共用基礎設施 (例如電力或散熱冷卻系統) 或內部可用性網域網路。因此,一個可用網域發生故障並不會影響該區域中的其他可用網域。
- 虛擬雲端網路 (VCN) 和子網路
VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。VCN 就像傳統資料中心網路一樣,可讓您完整控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,供您在建立 VCN 之後變更。您可以將 VCN 區隔為子網路,子網路範圍可為區域或可用性網域。每個子網路均包含一個未與 VCN 中其他子網路重疊的連續位址範圍。您可以在建立子網路之後變更子網路的大小。子網路可以是公用或專用。
在此參考架構中,函數會部署在專用區域子網路中。
- 事件與功能
Oracle Cloud Infrastructure 服務會發出事件,這些是描述資源變更的結構化訊息。系統會發出事件來進行建立、讀取、更新或刪除 (CRUD) 作業、資源週期狀態變更,以及影響雲端資源的系統事件。
Oracle Functions 可讓您建置程式碼、直接呼叫程式碼或觸發程式碼以回應事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中代管的 Docker 容器。
在此架構中,當檔案上傳至 Oracle Cloud Infrastructure Object Storage 中的儲存桶時,就會發出事件。此事件會呼叫以 Python 為基礎的函數,從檔案擷取資料並將其載入 Oracle Autonomous Data Warehouse。接著,處理的檔案會移至另一個儲存桶。
- 物件儲存
物件儲存可讓您快速存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料以及豐富的內容 (例如影像和視訊)。您可以直接從網際網路或從雲端平台內,安全地儲存及擷取資料。您可以無縫接軌地擴展儲存體,而不會遇到任何效能或服務可靠性降低。使用標準儲存體作為快速、立即及經常存取所需的「熱」儲存體。將封存儲存用於您保留的「冷」儲存空間長期、少數或少數存取。
- Autonomous Data Warehouse
Oracle Autonomous Data Warehouse 是一項針對資料倉儲工作負載最佳化的自我驅動、自我保護、自我修復資料庫服務。您不需要設定或管理任何硬體,或是安裝任何軟體。Oracle Cloud Infrastructure 會處理建立資料庫,以及備份、修正、升級和調整資料庫。
建議
您的需求可能會與此處描述的架構不同。使用下列建議作為起點。
- VCN
建立 VCN 時,請根據計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和各個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。
選取未與想要設定專用連線之任何其他網路 (在 Oracle Cloud Infrastructure 中、您的內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊。
- 函數
此參照架構中使用的函數是使用 Python 編碼。Oracle Functions 也支援 Java、Node、Go 以及 Ruby。使用您選擇的程式設計語言。
- Oracle Autonomous Data Warehouse
在參照架構中,此函數使用簡單 Oracle 文件存取 (SODA) 來存取資料倉儲。您可以透過修改函數來實行其他存取方法,例如使用
cx_oracle和 Oracle Client 程式庫的 SQL。在參照架構中,函數和資料倉儲位於相同的子網路中。如有需要,您可以在個別的子網路中建置它們。
注意事項
- 擴展性
- 資料庫
您可以隨時手動擴展或縮減資料庫的 CPU 核心數目。自治式資料庫的自動調整功能可讓您的資料庫隨時使用最多三次的 CPU 核心數目。隨著需求增加,自動調整會自動增加使用中的核心數目。自治式資料庫可讓您隨時擴展儲存容量,而不會影響使用狀態或效能。
- 函數
Oracle Functions 會根據要求載入自動建立和移除功能容器。只有在呼叫函數以及函數執行的持續時間時才需支付。
- 資料庫
- 安全
- 您可以使用 Oracle Cloud Infrastructure Identity and Access Management (IAM) 原則來控制能夠存取您雲端資源的人員,以及可以執行的作業。
您只能將功能呼叫權限或功能管理和功能呼叫權限指派給特定群組。
您也可以使用 IAM 原則來控制從 Oracle Functions 到 Oracle Cloud Infrastructure Object Storage 的存取。
- 在 Oracle Cloud Infrastructure Object Storage 中,預設會啟用加密且無法關閉。
- 此參照架構顯示相同子網路中的資料倉儲和函數。對於增強的隔離,您可以使用個別的子網路作為資料倉儲。
- 若要保護資料庫密碼或任何其他密碼,請考慮使用 Oracle Cloud Infrastructure Vault 服務。
- 您可以使用 Oracle Cloud Infrastructure Identity and Access Management (IAM) 原則來控制能夠存取您雲端資源的人員,以及可以執行的作業。
部署
GitHub 中提供此參照架構的 Terraform 程式碼。只要按一下即可將程式碼提取至 Oracle Cloud Infrastructure Resource Manager,然後建立堆疊並加以部署。或者,從 GitHub 下載程式碼至您的電腦、自訂程式碼,以及使用 Terraform 命令行介面 (CLI) 建置架構。
- 使用 Oracle Cloud Infrastructure Resource Manager 進行部署:
- 按一下

如果您尚未登入,請輸入租用戶和使用者證明資料。
- 檢閱並接受條款與條件。
- 選取您要在其中部署堆疊的區域。
- 依照畫面上的提示和指示建立堆疊。
- 建立堆疊之後,請按一下 Terraform 動作,然後選取計畫。
- 等待工作完成,然後複查計畫。
若要進行任何變更,請返回「堆疊詳細資訊」頁面,按一下編輯堆疊,然後進行必要的變更。然後,再次執行「計劃」動作。
- 如果不需要進一步的變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取套用。
- 按一下
- 使用 Terraform CLI 部署:
- 前往 GitHub。
- 將程式碼下載或複製到您的本機電腦。
- 遵循 README 中的指示。