附註:

使用 OCI 函數將資料串流至 Oracle Autonomous Transaction Processing 資料庫

簡介

在本教學課程中,我們將瞭解如何使用 Oracle Cloud Infrastructure (OCI) 服務建置及部署即時資料串流管線。管線會運用 OCI Connector Hub 和 OCI 函數,將資料從 OCI 串流串流串流串流串流串流串流串流至 Oracle Autonomous Database。此函數是以 Java 撰寫,採用資源主體認證方法,以安全地存取 OCI 服務和資料庫公事包來建立與 Oracle Autonomous Database 的連線。

OCI Streaming: OCI 提供一系列工具來處理雲端中的資料,而 OCI Streaming 是為高傳輸量、即時資料串流量而量身打造的服務。透過利用 OCI Streaming,開發人員可以建構可擴展且可靠的資料管線,以有效地擷取、處理和分發資料串流。

OCI Functions: OCI Functions 是一個完全受管理、多租用戶、高度可擴展、隨選、Functions-as-a-Service 平台。它建立在企業級 OCI 上,並由 Fn Project 開放原始碼引擎提供技術支援。如果您想要專注於編寫程式碼以滿足業務需求,請使用 OCI Functions。

資源主體認證:您可以使用資源主體認證及存取 OCI 資源。資源主體由暫時階段作業記號和安全證明資料組成,讓 OCI Functions 能夠向其他 OCI 服務 (例如 OCI Streaming) 自行認證。

OCI Connector Hub: OCI Connector Hub 是雲端訊息匯流排平台,提供單一窗格,用於描述、執行和監控在 OCI 服務之間移動資料時的互動。

注意:

目標

必要條件

作業 1:設定動態群組

登入 OCI 主控台,瀏覽至您的網域,按一下動態群組,然後建立包含以下資訊的群組。

作業 2: 建立原則

前往 OCI 主控台,瀏覽至原則並使用下列資訊建立原則。

作業 3:建立 OCI 容器登錄

  1. 移至 OCI 主控台,瀏覽至開發人員服務容器和使用者自建物件,選取容器登錄,然後按一下建立儲存區域,為功能映像檔建立專用儲存區域。

    • 儲存庫名稱:輸入 lab/fn-java-event-to-atp

      T3_1

  2. 檢查儲存區域,並記下命名空間

    T3_1

  3. 開啟應安裝 OCI CLI 和 Docker 的 OCI Cloud Shell,然後繼續登入登錄。檢查您所在區域的正確 URL。本教學課程使用 Brazil East (Sao Paulo) ,其中登錄 URL 為 gru.ocir.io

    注意:您需要在「先決條件」區段中建立的使用者認證權杖。

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

作業 4:建立 OCI 物件儲存的儲存桶以儲存您的資料庫公事包

前往 OCI 主控台,瀏覽至儲存物件儲存與封存儲存儲存桶,然後按一下建立儲存桶以建立名稱為 Wallet 的新儲存桶,以儲存您的資料庫公事包壓縮檔。

T4_1

作業 5:下載資料庫公事包並將其儲存在 OCI 物件儲存的儲存桶

注意:此程式碼範例示範如何使用公事包安全地連線至 Oracle Autonomous Database。若要繼續進行,您需要設定公事包證明資料並建立密碼,才能在此教學課程中使用。

  1. 移至 OCI 主控台,瀏覽至 Oracle Database ,按一下 Autonomous Database 並選取您的 ATP。

    T4_1

  2. 按一下資料庫連線

    T4_1

  3. 輸入您的公事包密碼並記下,您需要在應用程式中設定此密碼。

    T4_1

  4. 前往在作業 4 中建立的 OCI 物件儲存的儲存桶,然後按一下上傳以上傳下載的公事包壓縮檔。

    T4_1

作業 6:安全地將資料庫憑證和公事包密碼儲存在 Vault 中

注意:為先決條件,請確定您已建立保存庫。

  1. 移至 OCI 主控台,瀏覽至識別與安全保存庫並選取您的保存庫。

  2. 按一下加密密碼建立加密密碼,然後使用下列資訊建立加密密碼。

    加密密碼名稱 數值
    MYRDBMS_WALLET_PASSWORD 您的錢包密碼,使用純文字格式
    MYRDBMS_DB_PASSWORD 您的資料庫密碼 (純文字)

    T5_1

    注意:請確定您為秘密類型範本選取純文字

MYRDBMS_DB_PASSWORD 重複此程序,並記下將用於函數組態的 OCID。

T5_1

作業 7:建立 Java OCI 函數以接收事件訊息並插入至 ATP 資料庫

注意:請確定您選取的專用子網路與串流集區的相同子網路。

  1. 前往 OCI 主控台,瀏覽至開發人員服務函數應用程式,然後按一下建立應用程式

    T6_1

  2. 請前往已安裝 Docker、OCI、Fn Project CLI 的 OCI Cloud Shell,然後執行下列命令以起始此函數。

    注意:如果您遵循這些工作,現在已經執行您的 Docker 登入命令 (如果沒有的話),請繼續進行「工作 3」中的 Docker 日誌步驟。

  3. 檢查目前的相關資訊環境,因為您使用的是 OCI Cloud Shell,因此必須在目前的相關資訊環境中設定。

    fn list context 
    

    T6_2

  4. 執行下列命令以更新您的函數設定值,以便能夠從在「工作 3」中建立的容器登錄中提取映像檔。

    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    fn list context
    

    T6_2

    注意:在此教學課程中,我們使用 Brazil East (Sao Paulo) 區域,如果您使用其他區域,則必須變更 API URLREGISTRY 位置。

  5. 執行下列命令,檢查您建立的應用程式是否列在您的 OCI Cloud Shell 上。

    注意: 確定您的 OCI Cloud Shell 使用 Network:Public

    fn list apps
    

    T6_2

  6. 從此處取得 Java 函數範例程式碼: fn-java-event-to-atp.zip 並將其上傳至您的 OCI Cloud Shell,然後繼續解壓縮檔案。

  7. 按一下右上方的輪狀結構功能表,然後選取上傳以上傳檔案。

    T6_2

    T6_2

  8. 執行下列指令以解壓縮檔案。

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-event-to-atp.zip
    # check again
    ls -lrt
    

    T9_1

    注意:此簡潔的 Java 專案會從 OCI Connector Hub 擷取 JSON 資料輸入、根據預先定義的格式進行剖析,然後順暢地將擷取的資訊插入您的 ATP 資料庫中。若要確保正確的資料插入,請參考下列步驟,以取得 ATP 資料庫中所需訊息格式與對應表格的指引。

  9. 在您的 OCI Cloud Shell 中,執行下列命令以建立程式碼並部署函數。

    fn deploy --app MyApp
    # After deploy complete, check the function is there:
    fn list functions MyApp |grep fn-java-event-to-atp
    

    T9_1

    T9_1

  10. 移至 OCI 主控台,瀏覽至開發人員服務函數應用程式,選取您的應用程式 (Myapp),然後按一下您的函數。

    T9_1

    T9_1

    注意:此教學課程的 Java 範例程式碼使用組態變數來建立資料庫連線。請確定您提供環境中的適當值,以保證執行成功。

  11. 建立下列所有組態。

加密密碼名稱 / 金鑰 數值
WALLET_BUCKET 公事包
WALLET_OBJECT 您壓縮檔的名稱
BUCKET_NAMESPACE 您的儲存桶命名空間
DB_USER 您的資料庫使用者名稱
DB_SERVICE_NAME 您在資料庫連線詳細資訊中找到的資料庫服務名稱
DB_PASSWORD_OCID_VAULT 貼上您的加密密碼 OCID
DB_WALLET_PASSWORD_OCID_VAULT 貼上您的加密密碼 OCID

作業 8:在可承諾量資料庫上建立新表格

在 ATP 資料庫上建立一個名為 MY_TABLE 的新表格,以便從串流接收資料。

  1. 選取下載公事包的 Oracle Autonomous Database,按一下資料庫動作下拉式功能表,然後按一下 SQL

    T9_1

  2. 執行下列表格建立 DDL 命令。

    注意:此實驗室使用 ADMIN 使用者進行資料庫連線。若您的使用者名稱不同,請替換。

    CREATE TABLE "ADMIN"."MY_TABLE" 
    ( "CODE" VARCHAR2(50 BYTE), 
    	"NAME" VARCHAR2(500 BYTE)
    ) ;
    

    T9_1

作業 9:設定 OCI 連線器中心,在新訊息到達串流時呼叫函數

現在您已建立函數和新表格來儲存資料,現在就是將所有資料連結在一起的時候了!我們會透過設定從 OCI Streaming、OCI Connector Hub 流向 OCI Functions 的管線,最後再到您的 OCI Functions 進行此操作。

  1. 移至 OCI 主控台,瀏覽至 Analytics & AI訊息傳遞,然後按一下 Connector Hub

  2. 按一下建立連線器,然後輸入下列資訊。

    • 連線器名稱:輸入 StreamingToFN
    • 來源:選取串流
    • 目標:選取函數

    注意:您必須確定您已經建立名稱為 myfirststream 的串流集區和串流。

    T9_1

  3. 設定來源中,選取您的串流集區串流

    T9_1

  4. 設定目標中,選取 MyApp 作為函數應用程式,選取 fn-java-event-to-atp 作為函數

    T9_1

注意:您可能需要建立建立連線器頁面上建議的其他原則。

作業 10:在 OCI 串流上建立訊息並驗證管線運作

注意:提供的 Java 程式碼範例是設計來處理特定 JSON 結構中的訊息。程式碼會剖析此 JSON 以擷取必要資料,然後將它插入 MY_TABLE 表格中。若偏離預期的 JSON 格式,將會導致剖析錯誤,並防止順利插入資料庫。

JSON 範例訊息:

{"code": "001", "name":"Larry"}

遵循其步驟:

  1. 前往 OCI 主控台,瀏覽至 Analytics & AIMessagingStreaming ,選取您的串流 (myfirststream),然後按一下產生測試訊息

  2. 資料中,輸入範例 JSON 訊息,然後按一下產生

    T9_1

    注意:串流管線在第一次執行時可能會發生冷啟動,因此可能會發生明顯的延遲。這是連線器中心第一次嘗試傳送訊息時,發生函數初始化的結果。

作業 11:驗證到達資料庫的資料

  1. 選取下載公事包的 Oracle Autonomous Database,按一下資料庫動作下拉式功能表,然後按一下 SQL

    T9_1

  2. 執行下列查詢。

    select * from admin.my_table;
    

    T9_1

疑難排解與秘訣

認可

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center