實行 OCI 函數以在上傳至 OCI 物件儲存時更新 Oracle NoSQL 表格
雲端原生、事件驅動和無伺服器架構是一種建置和部署應用程式的方法,利用雲端運算資源和服務來最大限度地提高擴展性、效率和靈活性。
此參考架構示範了 Oracle Cloud Infrastructure Events 與 OCI Functions 在 OCI Object Storage 儲存桶中建立或修改物件時,自動更新 Oracle NoSQL Database Cloud Service (Oracle NoSQL) 表格。每當在 OCI Object Storage 儲存桶中新增或修改檔案時,處理 Oracle NoSQL 表格中常見的資料剖析和更新案例。
OCI 活動提供強大的解決方案,可根據各種雲端資源的狀態變更自動執行任務。它可以建立規則,將事件傳遞至特定 OCI 服務,例如 OCI Streaming 、 OCI Functions (作為處理事件資料並與其他 OCI 服務整合以執行各種動作的寶貴工具),以及 OCI Notifications 。
此外, OCI Functions 可合併程式碼來處理從 OCI Events 收到的有效負載資料,並根據特定業務需求調整 Oracle NoSQL 表格更新。
此參考架構提供全方位的概觀,可運用 OCI Functions 與 OCI Events ,在 OCI Object Storage 儲存桶中建立或修改物件時更新 Oracle NoSQL 表格。
架構
此參考架構示範如何在 OCI Object Storage 中建立或更新檔案時,使用 OCI Functions 和 OCI Events 來更新 Oracle NoSQL 表格。
架構圖顯示從檔案上傳至指定 OCI 物件儲存儲存桶開始的資料流程。事件服務觸發器設定為根據指定的事件規則條件啟動。發出的事件接著會呼叫功能,從上傳的檔案擷取資料、根據業務需求進行額外處理,以及最終使用處理的資料更新 Oracle NoSQL 表格。此方法利用事件導向架構並促進即時資料處理,從而帶來顯著的優勢。若在更新目標表之前需要預先處理資料,且需要執行必要的完整性檢查以確保資料完整性時,此功能可證明無效。
業務使用案例,只要在 OCI Object Storage 儲存桶中建立或更新檔案,就必須在 Oracle NoSQL 表格中剖析和更新資料,都可以使用下列方法:
- 在 OCI 事件中設定事件規則,即可在每次在 OCI 物件儲存儲存桶中建立或更新物件時觸發 OCI 函數。
- 建立接收由事件規則觸發之事件的函數。此函數將處理 Oracle NoSQL 表格中資料的剖析和更新。
- 在該函數內,實作必要的邏輯來剖析 OCI Object Storage 儲存桶中物件的資料。
- 使用適當的 OCI SDK 或 API 與 Oracle NoSQL 服務互動,並根據剖析的資料插入或更新 Oracle NoSQL 表格中的記錄。
藉由結合 OCI Events 、 OCI Functions 和 Oracle NoSQL 服務,只要在 OCI Object Storage 儲存桶中建立或更新檔案,我們就可以自動化剖析和更新 Oracle NoSQL 表格中資料的程序。此方法允許 OCI Object Storage 與 Oracle NoSQL 之間有效率且簡化的資料處理與同步。
下圖說明此參照架構。
object-storage-function-nosql-diagram-oracle.zip
開始前
- 設定函數應用程式,並使用 OCI 主控台建立 Oracle NoSQL 表格。
- 收集設定函數應用程式的環境變數所需的這些值。
- 使用者 ID
要認證之使用者的 OCID。
- 租用戶 ID
租用戶 OCID。可在使用者設定檔中找到。
- 指紋
將用於認證 OCI API。
- 區域
要建立要求之區域的 ID。
- API 私密金鑰
API 私密金鑰檔案位置。
- 區間 OCID
建立 Oracle NoSQL 表格的區間 OCID。
- NoSQL 表格
表格人員表格範例。使用下列屬性加以建立。
- 使用者 ID
| 主索引鍵 | 資料欄名稱 | 類型 | 分享金鑰 | 非空值 |
|---|---|---|---|---|
| 是 | 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 Events 、 OCI 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 (雲端原生和完全管理) 的高可用性。
- 成本
您只需支付函數執行時所使用的資源。
