實行 OCI 函數以在上傳至 OCI 物件儲存時更新 Oracle NoSQL 表格

雲端原生、事件驅動和無伺服器架構是一種建置和部署應用程式的方法,利用雲端運算資源和服務來最大限度地提高擴展性、效率和靈活性。

此參考架構示範了 Oracle Cloud Infrastructure EventsOCI FunctionsOCI Object Storage 儲存桶中建立或修改物件時,自動更新 Oracle NoSQL Database Cloud Service (Oracle NoSQL) 表格。每當在 OCI Object Storage 儲存桶中新增或修改檔案時,處理 Oracle NoSQL 表格中常見的資料剖析和更新案例。

OCI 活動提供強大的解決方案,可根據各種雲端資源的狀態變更自動執行任務。它可以建立規則,將事件傳遞至特定 OCI 服務,例如 OCI StreamingOCI Functions (作為處理事件資料並與其他 OCI 服務整合以執行各種動作的寶貴工具),以及 OCI Notifications

此外, OCI Functions 可合併程式碼來處理從 OCI Events 收到的有效負載資料,並根據特定業務需求調整 Oracle NoSQL 表格更新。

此參考架構提供全方位的概觀,可運用 OCI FunctionsOCI Events ,在 OCI Object Storage 儲存桶中建立或修改物件時更新 Oracle NoSQL 表格。

架構

此參考架構示範如何在 OCI Object Storage 中建立或更新檔案時,使用 OCI FunctionsOCI Events 來更新 Oracle NoSQL 表格。

架構圖顯示從檔案上傳至指定 OCI 物件儲存儲存桶開始的資料流程。事件服務觸發器設定為根據指定的事件規則條件啟動。發出的事件接著會呼叫功能,從上傳的檔案擷取資料、根據業務需求進行額外處理,以及最終使用處理的資料更新 Oracle NoSQL 表格。此方法利用事件導向架構並促進即時資料處理,從而帶來顯著的優勢。若在更新目標表之前需要預先處理資料,且需要執行必要的完整性檢查以確保資料完整性時,此功能可證明無效。

業務使用案例,只要在 OCI Object Storage 儲存桶中建立或更新檔案,就必須在 Oracle NoSQL 表格中剖析和更新資料,都可以使用下列方法:

  1. OCI 事件中設定事件規則,即可在每次在 OCI 物件儲存儲存桶中建立或更新物件時觸發 OCI 函數
  2. 建立接收由事件規則觸發之事件的函數。此函數將處理 Oracle NoSQL 表格中資料的剖析和更新。
  3. 在該函數內,實作必要的邏輯來剖析 OCI Object Storage 儲存桶中物件的資料。
  4. 使用適當的 OCI SDK 或 API 與 Oracle NoSQL 服務互動,並根據剖析的資料插入或更新 Oracle NoSQL 表格中的記錄。

藉由結合 OCI EventsOCI Functions 和 Oracle NoSQL 服務,只要在 OCI Object Storage 儲存桶中建立或更新檔案,我們就可以自動化剖析和更新 Oracle NoSQL 表格中資料的程序。此方法允許 OCI Object Storage 與 Oracle NoSQL 之間有效率且簡化的資料處理與同步。

下圖說明此參照架構。



object-storage-function-nosql-diagram-oracle.zip

開始前

  1. 設定函數應用程式,並使用 OCI 主控台建立 Oracle NoSQL 表格。
  2. 收集設定函數應用程式的環境變數所需的這些值。
    • 使用者 ID

      要認證之使用者的 OCID。

    • 租用戶 ID

      租用戶 OCID。可在使用者設定檔中找到。

    • 指紋

      將用於認證 OCI API。

    • 區域

      要建立要求之區域的 ID。

    • API 私密金鑰

      API 私密金鑰檔案位置。

    • 區間 OCID

      建立 Oracle NoSQL 表格的區間 OCID。

    • NoSQL 表格

      表格人員表格範例。使用下列屬性加以建立。

主索引鍵 資料欄名稱 類型 分享金鑰 非空值
ID INTEGER
不是 名稱 STRING 不是 不是
不是 時效 INTEGER 不是 不是
不是 性別 STRING 不是 不是

架構具有下列元件:

  • 租用戶

    租用戶是指註冊 Oracle Cloud Infrastructure 時,Oracle 在 Oracle Cloud 內設定的安全獨立分割區。您可以在租用戶的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。通常,公司會有單一租用戶,並反映其在該租用戶內的組織結構。單一租用戶通常與單一訂閱關聯,而單一訂閱通常只有一個租用戶。

  • 區域

    Oracle Cloud Infrastructure 區域是一個本地化的地理區域,包含一或多個資料中心 (稱為可用性網域)。區域與其他區域無關,因此廣大的距離可加以區隔 (跨國家或甚至洲)。

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織您在 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義原則來指定可存取資源的人員及可執行的動作。

  • 可用性網域

    可用性網域是區域內的獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域並不共用基礎設施,例如電力或冷卻系統或內部可用性網域網路。因此,一個可用性網域發生失敗並不會影響區域中的其他可用性網域。

  • 容錯域

    容錯網域是可用性網域內的一組硬體和基礎設施。每個可用性網域都有三個容錯域,具備獨立電源和硬體。當您將資源分散到多個容錯域時,您的應用系統就可容忍容錯域中的實體伺服器故障、系統維護以及電源故障。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。就像傳統的資料中心網路,VCN 可讓您完全控制網路環境。VCN 可以有多個非重疊 CIDR 區塊,而您可以在建立 VCN 之後進行變更。您可以將 VCN 區隔成子網路,然後對區域或可用性網域進行調整。每個子網路都是由不與 VCN 中其他子網路重疊的連續位址範圍所組成。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用子網路。

  • 安全清單

    您可以為每個子網路建立安全規則,以指定必須允許進出子網路的來源、目的地和流量類型。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。VCN 到 Oracle 服務的流量會透過 Oracle 網路光纖通道,而一律不會周遊網際網路。

  • 物件儲存

    物件儲存可快速存取任何內容類型的大量結構化與非結構化資料,包括資料庫備份、分析資料,以及豐富內容 (例如影像和影片)。您可以安全地儲存,然後直接從網際網路或雲端平台內擷取資料。您可以無縫擴充儲存,而不會發生任何效能或服務可靠性的降低。針對快速、立即和經常存取的「熱」儲存,使用標準儲存。將封存儲存用於長時間且鮮少存取的「冷」儲存。

  • 事件

    Oracle Cloud Infrastructure 服務會發出事件,也就是描述資源變更的結構化訊息。系統會發出事件來進行建立、讀取、更新或刪除 (CRUD) 作業、資源生命週期狀態變更,以及影響雲端資源的系統事件。

  • 功能

    Oracle Cloud Infrastructure Functions 是一個完全託管、多租用戶、可高度擴展、隨選、Functions-as-a-Service (FaaS) 平台。它由 Fn 專案開放原始碼引擎提供技術支援。函數可讓您部署程式碼,然後直接呼叫程式碼或觸發程式以回應事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中代管的 Docker 容器。

  • 記錄日誌
    日誌記錄是一種可高度擴展且完全受管理的服務,可讓您從雲端資源存取下列類型的日誌:
    • 稽核日誌:與稽核服務發出之事件相關的日誌。
    • 服務日誌:由個別服務 (例如 API 閘道、事件、函數、負載平衡、物件儲存以及 VCN 流量日誌) 發出的日誌。
    • 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境之診斷資訊的日誌。
  • Oracle NoSQL

    Oracle NoSQL Database Cloud Service 是一個完全託管的資料庫雲服務,專門為需要極短時間內回應簡單查詢的資料庫作業而設計。認證 Oracle Cloud 帳戶之後,您就可以建立 Oracle NoSQL 表格,並指定表格的傳輸量與儲存需求。Oracle 會保留並管理資源,以滿足您的需求,並為您佈建容量。使用傳輸量的讀取和寫入單位和儲存單位的 GB 來指定容量。

建議

請使用下列建議作為起點。 您的需求可能與此處所述的架構不同。
  • VCN

    建立 VCN 時,請根據您計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。

    選取未與欲設定專用連線之任何其他網路 (在 Oracle Cloud Infrastructure 、您的內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊。

    您可以在建立 VCN 之後,變更、新增及移除其 CIDR 區塊。

    設計子網路時,請考慮您的流量與安全需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。

  • 雲端保全

    複製並自訂 Oracle 提供的預設處方,以建立自訂偵測器與回應器處方。這些處方可讓您指定哪些類型的安全違規會產生警告,以及允許對其執行哪些動作。例如,您可以偵測可見性設為公用的物件儲存的儲存桶。

    在租用戶層次套用雲端保全以涵蓋最廣的範圍,並減少維護多個組態的管理負擔。

    您也可以使用「受管理清單」功能,將特定組態套用至偵測器。

  • 功能

    此架構中的 OCI 函數是使用 Python 開發的。請注意, OCI Functions 支援多種程式設計語言,您可以使用您選擇的語言來開發函數並進行部署。

  • Oracle NoSQL

    確定在適當的區間中建立 Oracle NoSQL 表格,並使用 OCI Identity and Access Management (IAM) 原則管理存取。建立表格之前,必須先正確預估讀取和寫入容量。請參閱 Oracle 文件,並複習提供的詳細指導方針。

    在此解決方案中,將使用名稱為 "person" 的範例表做為範例。請記得根據您的特定需求自訂函數和表格名稱。

  • OCI 物件儲存

    此架構使用標準物件儲存上傳檔案。請確定啟用省略物件事件,以便觸發事件服務。此外,建議您將專用儲存桶用於機密資料。

  • OCI 事件

    在此架構中, OCI 事件服務設定為監聽 OCI Object Storage 中 "Object Create" 和 "Object Update" 事件的變更。將物件上傳至 OCI Functions 並呼叫函數進行處理後,就會呼叫服務。

注意事項

部署此參照架構時,請考量以下各點。

  • 效能

    OCI EventsOCI Functions 和 Oracle NoSQL 都是可高度擴展的託管服務。Oracle NoSQL 服務提供隨選傳輸量和儲存佈建。

    佈建前,請務必先預估 Oracle NoSQL Database Cloud Service 的傳輸量和儲存容量。

  • 安全

    使用原則限制可存取 OCI 資源的人員。

    對於 OCI 物件儲存,預設會啟用加密,且無法關閉。

    建議將加密密碼和機密資料儲存在 OCI 保存庫中。請考慮使用 OCI Functions 來儲存用於 OCI 服務授權的 API 金鑰、資料庫使用者名稱、密碼以及認證權杖。

  • 使用狀態

    Oracle 可確保 OCI 活動OCI Functions 、Oracle NoSQL 和 OCI Logging (雲端原生和完全管理) 的高可用性。

  • 成本

    您只需支付函數執行時所使用的資源。

部署

GitHub 儲存區域包含實行此參照架構的 OCI Functions 程式碼。

  1. 前往 GitHub
  2. 複製或下載儲存區域到您的本機電腦。
  3. 遵循 README 文件中的說明。

探索更多

若要進一步瞭解 OCI 活動OCI Functions 和 NoSQL 服務,請參閱下列資源:

檢閱下列額外資源:

確認書

Authors: Shan Duraipandian

Contributors: John Sulyok