dot Redis 8 发布了——它是开源的

了解更多

介绍 Redis 数据集成

Redis 宣布发布 Redis Data Integration (RDI) 的公开预览版。RDI 让开发者可以将数据库卸载到 Redis Enterprise,镜像应用数据,并以内存速度运行。而且您无需投入编码或集成精力。

根本问题:您现有的数据库速度太慢了。

您有大量的应用、不断增长的用户、日益增加的技术需求以及对实时响应的持续需求。Redis Enterprise 提供数据的实时访问并可水平扩展,但您如何使 Redis 缓存与数据库保持同步,以便所有查询都可以从缓存执行?

一些组织决定自己动手——结果却发现构建缓存预取(有时也称为提前刷新)有多么困难。要构建一个这样的系统,您需要建立一个可靠的流处理管道。这首先要捕获源数据库中发生的所有数据变更,然后将数据转换为 Redis 数据类型,以供应用获取。此过程通常涉及数据转换和反范式化。

我们看到用户在自行构建这些流处理管道时遇到了困难。这需要集成多个组件(变更数据捕获 (CDC)、流处理和 Redis 连接器)、编码转换、错误处理以及许多其他企业必需的需求。构建这些工具的时间本可以用于更具生产力的、业务正在等待的工作。 

我们决定自己迎接这一挑战。

推出 Redis 数据集成

Redis 数据集成 (RDI) 是一款运行在 Redis Enterprise 内部的工具。它帮助您将现有关系数据库中的数据近乎实时地同步到 Redis,从而将 应用读取查询完全从关系数据库卸载到 Redis。 

The data transformation process
数据转换过程

RDI 管道有两个阶段

  • 捕获数据库变更并将其流式传输到 RDI 转换作业
  • 使用声明性指令转换和反范式化数据,然后将其写入目标 Redis 缓存

数据转换过程

Debezium,一个开源的 CDC 平台,捕获源数据库中的数据变更并将其流式传输到 RDI。在 Redis 中,数据可以进一步过滤、转换并映射到一个或多个 Redis 键。RDI 支持多种 Redis 数据类型(Hash、JSON、Set 和 Stream)。RDI 将数据写入目标 Redis 数据库。

Ingest with the Debezium server
使用 Debezium 服务器摄取数据

它负责繁重的工作,因此开发者可以专注于应用代码,而不是集成杂务和数据转换代码。

RDI 可以连接其他 CDC 工具和流数据。我们已经开始构建生态系统,并很高兴地分享我们与 Arcion 建立了技术合作伙伴关系。

借助这种集成解决方案,开发者可以使用 RDI 作为骨干,轻松地将各种数据库的变更流式传输到 Redis Enterprise 和其他数据平台。

无代码数据过滤和转换

从源数据库捕获变更并将数据从一个地方传输到另一个地方已经够困难了。然而,数据迁移还有一个挑战:转换部分,这意味着过滤数据并将数据映射到 Redis 数据模型。

RDI 提供了一个选项来指定每个源表所需的所有过滤和转换步骤。在 RDI 中,这称为一个 job;每个 job 都是一个 YAML 文件。

Data transformation pipeline
数据转换管道

过滤很重要。CDC 产品提供复杂的过滤功能,但您必须编写自定义代码。RDI 在不编写代码的情况下实现了同样的功能。相反,它应用使用 SQL 表达式Jmespath 函数的声明性过滤器。RDI 还提供了额外的 自定义 Jmespath 函数,以方便作业创建者使用。

RDI 具有多个级别的数据转换功能

  • 基本转换:这由 RDI 引擎自动完成。
  • 结构化:RDI 引擎有一种默认方式将数据结构化为 Hash 或 JSON,并具备无代码转换能力。您可以选择转换键和字段,甚至可以重新计算这些字段中的值。
  • 反范式化:RDI 将源数据转换为 JSON 文档,其中文档中的父级详细信息会转换为 JSON 对象的映射。

RDI 包含一个 Trace 工具,可帮助您无需编写自定义代码即可创建和排除复杂数据管道的故障。这加快了流程并减少了所需的精力和 技能要求。 

故障排除后,通过简单的部署命令即可修改管道,无需停机。 

公开预览版的附加功能

  • 保证至少一次送达
  • Debezium 服务器和 RDI 的高可用性
  • 死信队列 (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 适合您吗?

RDI 非常适合满足以下条件的应用

  • 应用数据来自无法替换的关系数据库 
  • 关系数据库可以适应数据写入的速度,但无法扩展并满足读取查询的负载需求。将读取查询从关系数据库中卸载出去至关重要。
  • 关键在于,缓存中的数据必须近乎实时地反映关系数据库中的数据。
  • 变更率中等到较高的关系数据库,其中批量处理变更无法满足需求。
  • 源数据库和 Redis 之间的数据映射需要进行一些数据操作。

展望未来

这是一个公开预览版。我们正在将 RDI Ingest 流推向正式发布,同时也在开发功能,以便将 Redis 集成到下游数据库:将 Redis 数据的变更应用到下游数据库。

  • 写回 (Write-behind):CDC 源是您的 Redis 数据库,目标是下游的关系型或 NoSQL 数据库。此流程将使您能够享受 Redis Enterprise 在写入和读取方面的实时速度,同时保留您的应用生态系统和下游服务。
  • 写穿 (Write-through):每次写入 Redis 的数据也会同步到数据库。 
  • 读穿 (Read-through):如果缓存未命中,RDI 会自动从下游数据库获取缺失数据,并将其作为键写回 Redis,以便返回给请求应用。

开始使用 RDI

RDI 目前仅适用于自管理 Redis Enterprise 集群。

如果您是 Redis Enterprise 的现有客户,请下载 RDI CLI 包并按照快速入门指南中的步骤操作。安装指南将引导您完成 Debezium 服务器的安装和配置。运行少量 RDI CLI 命令后,您的管道将开始将数据从源数据库移动到 Redis。 

如果您不是 Redis Enterprise 的现有客户,您需要先安装适用于 Kubernetes 的 Redis Enterprise Software。然后下载 RDI CLI 包并按照快速入门指南中的步骤操作。