大量的应用程序、日益增长的用户规模、不断扩展的技术需求,以及对即时响应的持续追求。想想这些是否正是你在经历的。也许你尝试过自己构建工具来应对这些需求,但是大量的编码和集成工作使你焦头烂额。那你是否知道,有这样一个工具可以帮助你实现从缓存中执行所有查询?

一、推出Redis数据集成(RDI)的背景

企业面临着大量的应用程序、日益增长的用户规模、不断扩展的技术需求,以及对即时响应的持续追求。Redis Enterprise提供对数据的实时访问,并且可以水平扩展,但是如何使 Redis 缓存与数据库保持一致,以便所有查询都可以从缓存执行?

有些组织决定自己承担只是发现构建缓存预取(或有时称为提前刷新)非常困难。他们需要自己构建一个可靠的流传输管道。首先捕获源数据库中发生的所有数据更改,然后将数据转换为 Redis 数据类型以允许应用程序获取它。此过程通常涉及数据转换和去规范化。他们需要集成多个组件(变更数据捕获 (Change Data Capture, CDC)、流式传输和 Redis 连接器)、编码转换、错误处理和许多其他企业基本要求,而这些用于工具构建的时间可以去做更有成效的工作。

在用户面临着种种问题的情况下, Redis 数据集成 (RDI) 的公开预览版在万众期待下诞生了。RDI 允许开发人员将数据库转移到 Redis Enterprise、镜像应用程序数据并以内存中的速度运行而且不需要投入编码或集成工作。

二、进入Redis数据集成

Redis 数据集成(RDI) 是在 Redis Enterprise 内部运行的工具。它可以帮助用户近乎实时地将数据从现有关系数据库同步到 Redis,以便应用程序读取查询完全从关系数据库转移到 Redis。

数据转换过程

RDI 管道有两个阶段:

  • 捕获数据库更改并将其流式传输到 RDI 转换任务中
  • 使用声明性指令对数据进行转换和去规范化,然后将其写入目标Redis 缓存

数据转换过程

  • Debezium是一个开源 CDC 平台,捕获源数据库中数据的更改并将其流式传输到 RDI。在 Redis 内,数据可以被进一步过滤、转换并映射到一个或多个 Redis 键。RDI 支持多种Redis 数据类型(Hash、JSON、Set 和 Stream)。RDI 将数据写入目标 Redis 数据库。它承担了繁重的工作,因此开发人员可以专注于应用程序代码,而不是集成琐事和数据转换代码。
  • RDI可以与其他CDC工具和数据流连接,借助这样的集成解决方案,开发人员可以使用 RDI 作为核心,以简单的方式将各种数据库的更改流式传输到 Redis Enterprise 和其他数据平台。

使用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 导出器进行指标)

五、什么情况下可以使用RDI ?

  • 应用数据来自关系型数据库,不可替换 。
  • 关系数据库可以适应数据写入的速度,但无法扩展和执行以满足读取查询的负载。从关系数据库中转移读取查询是必要的。
  • 缓存中的数据必须近乎实时地反映关系数据库中的数据,这一点至关重要。
  • 关系数据库的更改率为中高水平,批量插入更改不能满足要求。
  • 源数据库和Redis之间的数据映射需要一些数据操作。

六、Redis数据集成(RDI)的发展

RDI的目前版本是公开预览,以相反方向集成 Redis 的功能正在研究中:将对 Redis 数据的更改应用到下游数据库。

  • Write-behind:CDC 源是用户的 Redis 数据库,用户的目标是下游关系数据库或 NoSQL 数据库。此流程将让用户享受 Redis Enterprise 的实时写入和读取速度,同时保留应用程序生态系统和下游服务。
  • Write-through:对 Redis 的每次写入也会应用于关系数据库。
  • 通读:如果发生缓存未命中,RDI 会自动从下游数据库获取丢失的数据,并将其作为键写回 Redis,以便将其返回给请求的应用程序。

七、如何开始使用 RDI

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

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

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

虹科干货 | 什么是Redis数据集成(RDI)?的更多相关文章

  1. SpringBoot | 第十一章:Redis的集成和简单使用

    前言 上几节讲了利用Mybatis-Plus这个第三方的ORM框架进行数据库访问,在实际工作中,在存储一些非结构化或者缓存一些临时数据及热点数据时,一般上都会用上mongodb和redis进行这方面的 ...

  2. Kafka ETL 之后,我们将如何定义新一代实时数据集成解决方案?

    上一个十年,以 Hadoop 为代表的大数据技术发展如火如荼,各种数据平台.数据湖.数据中台等产品和解决方案层出不穷,这些方案最常用的场景包括统一汇聚企业数据,并对这些离线数据进行分析洞察,来达到辅助 ...

  3. Redis数据导入工具优化过程总结

    Redis数据导入工具优化过程总结 背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻 ...

  4. Oracle 数据集成的实际解决方案

    就针对市场与企业的发展的需求,Oracle公司提供了一个相对统一的关于企业级的实时数据解决方案,即Oracle数据集成的解决方案.以下的文章主要是对其解决方案的具体描述,望你会有所收获. Oracle ...

  5. 5.1.1 读取Redis 数据

    Redis 服务器是Logstash 推荐的Broker选择,Broker 角色就意味会同时存在输入和输出两个插件. 5.1.1 读取Redis 数据 LogStash::Input::Redis 支 ...

  6. Redis数据备份和重启恢复

    一.对Redis持久化的探讨与理解 目前Redis持久化的方式有两种: RDB 和 AOF 首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复. Redis是一个内存数据库,无论是RD ...

  7. Redis数据迁移方案

    场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: ...

  8. 基于Kafka Connect框架DataPipeline可以更好地解决哪些企业数据集成难题?

    DataPipeline已经完成了很多优化和提升工作,可以很好地解决当前企业数据集成面临的很多核心难题. 1. 任务的独立性与全局性. 从Kafka设计之初,就遵从从源端到目的的解耦性.下游可以有很多 ...

  9. 基于Kafka Connect框架DataPipeline在实时数据集成上做了哪些提升?

    在不断满足当前企业客户数据集成需求的同时,DataPipeline也基于Kafka Connect 框架做了很多非常重要的提升. 1. 系统架构层面. DataPipeline引入DataPipeli ...

  10. 以Kafka Connect作为实时数据集成平台的基础架构有什么优势?

    Kafka Connect是一种用于在Kafka和其他系统之间可扩展的.可靠的流式传输数据的工具,可以更快捷和简单地将大量数据集合移入和移出Kafka的连接器.Kafka Connect为DataPi ...

随机推荐

  1. uniapp学习(一)

    [新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握] https://www.bilibili.com/video/BV1mT411K7nW/?p=24&sh ...

  2. 2023年陕西彬州第八届半程马拉松赛153pb完赛

    1.赛事背景 2023年6月3日,我参加了2023陕西彬州第八届半程马拉松赛,最终153完赛,PB了5分钟.起跑时间早上7点30分,毕竟6月天气也开始热了.天气预报显示当天还是小到中雨,上次铜川宜君半 ...

  3. GoFrame v2.5 版本发布,企业级 Golang 开发框架

    大家好啊,GoFrame 框架今天发布了 v2.5.0 正式版本啦! 本次版本主要是对已有功能组件以及开发工具上的改进工作.其中,开发工具新增了 gf gen ctrl 命令,以规范化定义.开发 AP ...

  4. 2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。 请你返回你需要移除的最短子数组的长度,如果

    2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和 能被 p 整除. 不允许 将整个数组都移除. 请你返回你需要移除的最短子数组的长度,如果 ...

  5. CSS:使用透明色

    使用如下代码: background-color="#00000000"

  6. 端路由原理及react-router的常用组件

    在react中,通常都是使用单页面应用(SPA),即整个页面只有一个html,然后通过不同的url地址进行组件的匹配和切换. 我们看到的url地址可能会有两种形式,一种是 localhost:3000 ...

  7. 通过Proxy和Reflect实现vue的响应式原理

    vue3通过Proxy+Reflect实现响应式,vue2通过defineProperty来实现 Proxy Proxy是什么 Proxy是ES6中增加的类,表示代理. 如果我们想要监听对象的操作过程 ...

  8. debian11编译安装freeswitch

    前言 环境: 系统版本:debian 11 x86_64 FreeSWITCH版本:1.10.6 安装步骤 安装依赖(安装之前最好换apt软件源为国内的) apt install -y gnupg2 ...

  9. 【pytorch】ResNet源码解读和基于迁移学习的实战

    "工欲善其事,必先利其器",掌握ResNet网络有必要先了解其原理和源码.本文分别从原理.源码.运用三个方面出发行文,先对ResNet原理进行阐述,然后对pytorch中的源码进行 ...

  10. 《SQL与数据库基础》09. 事务

    @ 目录 事务 简介 操作 方式一 方式二 四大特性(ACID) 并发事务问题 事务隔离级别 本文以 MySQL 为例 事务 简介 事务是一组操作的集合,它是一个不可分割的工作单位.事务会把所有的操作 ...