【宏虹分享】什麼是Redis數據集成(RDI)?

大量的應用程式、日益增長的用戶規模、不斷擴展的技術需求,以及對即時回應的持續追求。想想這些是否正是你在經歷的。也許你嘗試過自己構建工具來應對這些需求,但是大量的編碼和集成工作使你焦頭爛額。那你是否知道,有這樣一個工具可以幫助你實現從緩存中執行所有查詢?

企業面臨著大量的應用程式、日益增長的用戶規模、不斷擴展的技術需求,以及對即時回應的持續追求。Redis Enterprise提供對數據的即時訪問,並且可以水準擴展,但是如何使 Redis 緩存與資料庫保持一致,以便所有查詢都可以從緩存執行?

有些組織決定自己承擔,只是發現構建緩存預取(或有時稱為提前刷新)非常困難。 他們需要自己構建一個可靠的流傳輸管道。首先捕獲源資料庫中發生的所有數據更改,然後將數據轉換為 Redis 數據類型以允許應用程式獲取它。此過程通常涉及數據轉換和去規範化。他們需要集成多個組件(變更數據捕獲 (Change Data Capture, CDC)、流式傳輸和 Redis 連接器)、編碼轉換、錯誤處理和許多其他企業基本要求,而這些用於工具構建的時間可以去做更有成效的工作。

在用戶面臨著種種問題的情況下, Redis 數據集成 (RDI) 的公開預覽版在萬眾期待下誕生了。RDI 允許開發人員將資料庫轉移到 Redis Enterprise、鏡像應用程式數據並以內存中的速度運行,而且不需要投入編碼或集成工作。

Redis 數據集成 (RDI) 是在 Redis Enterprise 內部運行的工具。它可以幫助用戶近乎即時地將數據從現有關係資料庫同步到 Redis,以便應用程式讀取查詢完全從關係資料庫轉移到 Redis。

Redis Data Integration Transformation Engine
數據轉換過程

RDI 管道有兩個階段:

捕獲資料庫更改並將其流式傳輸到 RDI 轉換任務中
使用聲明性指令對數據進行轉換和去規範化,然後將其寫入目標Redis 緩存

數據轉換過程:

Debezium是一個開源 CDC 平臺,捕獲源資料庫中數據的更改並將其流式傳輸到 RDI。在 Redis 內,數據可以被進一步過濾、轉換並映射到一個或多個 Redis 鍵。RDI 支持多種Redis 數據類型(Hash、JSON、Set 和 Stream)。RDI 將數據寫入目標 Redis 資料庫。它承擔了繁重的工作,因此開發人員可以專注於應用程式代碼,而不是集成瑣事和數據轉換代碼。
RDI可以與其他CDC工具和數據流連接,借助這樣的集成解決方案,開發人員可以使用 RDI 作為核心,以簡單的方式將各種資料庫的更改流式傳輸到 Redis Enterprise 和其他數據平臺。

Ingest
使用 Debezium 伺服器提取

從源資料庫捕獲更改並將數據從一個地方傳輸到另一個地方已經很困難了。然而,流動數據還存在另一個挑戰:轉換部分,這意味著過濾數據並將數據映射到 Redis 數據模型。

1)RDI 提供了一個選項來指定每個源表所需的所有過濾和轉換步驟。用 RDI 術語來說,這稱為作業;每個作業都是一個 YAML 檔。

數據轉換管道
數據轉換管道

過濾:
RDI 無需編碼即可完成過濾,而不需要開發人員編寫自定義代碼。開發人員可以使用SQL 運算式或Jmespath 函數的聲明式篩檢程式。RDI 附帶了額外的自定義 Jmespath 函數,以方便作業創建者使用。

RDI 有幾個級別的數據轉換:
基本轉換: 這是由 RDI 引擎自動完成的。
結構化: RDI 引擎有一種默認的結構方式,可以通過無代碼轉換的功能將其構造為哈希或JSON 。您可以選擇轉換鍵和字段,甚至重新計算這些字段中的值。
去規範化: RDI 將源數據轉換為 JSON 文檔,其中文檔中的父級詳細資訊被轉換為 JSON 對象的映射。

故障排除:
RDI 包含一個跟蹤工具,可幫助開發人員無需編寫自定義代碼,就可以創建複雜的數據管道並對其進行故障排除。這加快了流程並減少了所需的工作量和技能。 故障排除後,通過簡單的部署命令即可修改管道,無需停機。

至少保證一次交付

Debezium 伺服器和 RDI 的高可用性

死信佇列 (Dead Letter Queue, DLQ) 中的硬拒絕條目處理

支持的源資料庫:Oracle、Postgres、MySQL、MariaDB、Percona XtraDB、Microsoft SQL Server 和 Cassandra(包括 DataStax DSE)

數據提取模式:初始快照和CDC(流更改)

聲明式轉換:過濾條件、Redis 鍵模式、更改字段名稱、添加字段、刪除字段、嵌套

支持的 Redis 數據類型:Hash、JSON、Set、Stream

開發人員工具:RDI 命令行介面腳手架和跟蹤命令

操作員工具:RDI 命令行介面、Grafana 儀錶板(通過 Prometheus 導出器進行指標)

應用數據來自關係型資料庫,不可替換 。
關係資料庫可以適應數據寫入的速度,但無法擴展和執行以滿足讀取查詢的負載。從關係資料庫中轉移讀取查詢是必要的。
緩存中的數據必須近乎即時地反映關係資料庫中的數據,這一點至關重要。
關係資料庫的更改率為中高水準,批量插入更改不能滿足要求。
源資料庫和Redis之間的數據映射需要一些數據操作。

RDI的目前版本是公開預覽,以相反方向集成 Redis 的功能正在研究中:將對 Redis 數據的更改應用到下游資料庫。

Write-behind: CDC 源是用戶的 Redis 資料庫,用戶的目標是下游關係資料庫或 NoSQL 資料庫。此流程將讓用戶享受 Redis Enterprise 的即時寫入和讀取速度,同時保留應用程式生態系統和下游服務。
Write-through: 對 Redis 的每次寫入也會應用於關係資料庫。
通讀:如果發生緩存未命中,RDI 會自動從下游資料庫獲取丟失的數據,並將其作為鍵寫回 Redis,以便將其返回給請求的應用程式。

RDI 目前僅適用於自我管理的 Redis Enterprise 集群。

如果您是 Redis Enterprise 的現有客戶,請下載 RDI CLI軟體包並按照快速入門指南中的步驟操作。安裝指南將引導您完成 Debezium 伺服器的安裝和配置。運行一些 RDI CLI 命令後,您的管道會將數據從源資料庫轉移到 Redis。
如果您不是Redis Enterprise 的現有客戶,則需要首先安裝適用於 Kubernetes 的 Redis Enterprise Software。然後下載 RDI CLI 軟體包並按照快速入門指南中的步驟操作。