大量的应用程序、日益增长的用户规模、不断扩展的技术需求,以及对即时响应的持续追求。想想这些是否正是你在经历的。也许你尝试过自己构建工具来应对这些需求,但是大量的编码和集成工作使你焦头烂额。那你是否知道,有这样一个工具可以帮助你实现从缓存中执行所有查询?
什么是Redis数据集成?一、推出Redis数据集成(RDI)的背景
企业面临着大量的应用程序、日益增长的用户规模、不断扩展的技术需求,以及对即时响应的持续追求。RedisEnterprise提供对数据的实时访问,并且可以水平扩展,但是如何使Redis缓存与数据库保持一致,以便所有查询都可以从缓存执行?
有些组织决定自己承担,只是发现构建缓存预取(或有时称为提前刷新)非常困难。他们需要自己构建一个可靠的流传输管道。首先捕获源数据库中发生的所有数据更改,然后将数据转换为Redis数据类型以允许应用程序获取它。此过程通常涉及数据转换和去规范化。他们需要集成多个组件(变更数据捕获(ChangeDataCapture,CDC)、流式传输和Redis连接器)、编码转换、错误处理和许多其他企业基本要求,而这些用于工具构建的时间可以去做更有成效的工作。
在用户面临着种种问题的情况下,Redis数据集成(RDI)的公开预览版在万众期待下诞生了。RDI允许开发人员将数据库转移到RedisEnterprise、镜像应用程序数据并以内存中的速度运行,而且不需要投入编码或集成工作。
二、进入Redis数据集成
Redis数据集成(RDI)是在RedisEnterprise内部运行的工具。它可以帮助用户近乎实时地将数据从现有关系数据库同步到Redis,以便应用程序读取查询完全从关系数据库转移到Redis。
数据转换过程RDI管道有两个阶段:
·捕获数据库更改并将其流式传输到RDI转换任务中
·使用声明性指令对数据进行转换和去规范化,然后将其写入目标Redis缓存
数据转换过程:
·Debezium是一个开源CDC平台,捕获源数据库中数据的更改并将其流式传输到RDI。在Redis内,数据可以被进一步过滤、转换并映射到一个或多个Redis键。RDI支持多种Redis数据类型(Hash、JSON、Set和Stream)。RDI将数据写入目标Redis数据库。它承担了繁重的工作,因此开发人员可以专注于应用程序代码,而不是集成琐事和数据转换代码。
·RDI可以与其他CDC工具和数据流连接,借助这样的集成解决方案,开发人员可以使用RDI作为核心,以简单的方式将各种数据库的更改流式传输到RedisEnterprise和其他数据平台。
使用Debezium服务器提取三、无代码数据过滤和转换
从源数据库捕获更改并将数据从一个地方传输到另一个地方已经很困难了。然而,流动数据还存在另一个挑战:转换部分,这意味着过滤数据并将数据映射到Redis数据模型。
1)RDI提供了一个选项来指定每个源表所需的所有过滤和转换步骤。用RDI术语来说,这称为作业;每个作业都是一个YAML文件。
数据转换管道过滤:
RDI无需编码即可完成过滤,而不需要开发人员编写自定义代码。开发人员可以使用SQL表达式或Jmespath函数的声明式过滤器。RDI附带了额外的自定义Jmespath函数,以方便作业创建者使用。
RDI有几个级别的数据转换:
·基本转换:这是由RDI引擎自动完成的。
·结构化:RDI引擎有一种默认的结构方式,可以通过无代码转换的功能将其构造为哈希或JSON。您可以选择转换键和字段,甚至重新计算这些字段中的值。
·去规范化:RDI将源数据转换为JSON文档,其中文档中的父级详细信息被转换为JSON对象的映射。
故障排除:
RDI包含一个跟踪工具,可帮助开发人员无需编写自定义代码,就可以创建复杂的数据管道并对其进行故障排除。这加快了流程并减少了所需的工作量和技能。故障排除后,通过简单的部署命令即可修改管道,无需停机。
四、公开预览版中的附加功能:
·至少保证一次交付
·Debezium服务器和RDI的高可用性
·死信队列(DeadLetterQueue,DLQ)中的硬拒绝条目处理
·支持的源数据库:Oracle、Postgres、MySQL、MariaDB、PerconaXtraDB、MicrosoftSQLServer和Cassandra(包括DataStaxDSE)
·数据提取模式:初始快照和CDC(流更改)
·声明式转换:过滤条件、Redis键模式、更改字段名称、添加字段、删除字段、嵌套
·支持的Redis数据类型:Hash、JSON、Set、Stream
·开发人员工具:RDI命令行界面脚手架和跟踪命令
·操作员工具:RDI命令行界面、Grafana仪表板(通过Prometheus导出器进行指标)
五、什么情况下可以使用RDI?
·应用数据来自关系型数据库,不可替换。
·关系数据库可以适应数据写入的速度,但无法扩展和执行以满足读取查询的负载。从关系数据库中转移读取查询是必要的。
·缓存中的数据必须近乎实时地反映关系数据库中的数据,这一点至关重要。
·关系数据库的更改率为中高水平,批量插入更改不能满足要求。
·源数据库和Redis之间的数据映射需要一些数据操作。
六、Redis数据集成(RDI)的发展
RDI的目前版本是公开预览,以相反方向集成Redis的功能正在研究中:将对Redis数据的更改应用到下游数据库。
·Write-behind:CDC源是用户的Redis数据库,用户的目标是下游关系数据库或NoSQL数据库。此流程将让用户享受RedisEnterprise的实时写入和读取速度,同时保留应用程序生态系统和下游服务。
·Write-through:对Redis的每次写入也会应用于关系数据库。
·通读:如果发生缓存未命中,RDI会自动从下游数据库获取丢失的数据,并将其作为键写回Redis,以便将其返回给请求的应用程序。
七、如何开始使用RDI?
RDI目前仅适用于自我管理的RedisEnterprise集群。
如果您是RedisEnterprise的现有客户,请下载RDICLI软件包并按照快速入门指南中的步骤操作。安装指南将引导您完成Debezium服务器的安装和配置。运行一些RDICLI命令后,您的管道会将数据从源数据库转移到Redis。
如果您不是RedisEnterprise的现有客户,则需要首先安装适用于Kubernetes的RedisEnterpriseSoftware。然后下载RDICLI软件包并按照快速入门指南中的步骤操作。