采集
如果您使用关系数据库作为应用的记录系统,最终可能会发现其性能无法随着用户群的增长而很好地扩展。对于几千名用户来说,这可能是可以接受的,但对于几百万用户来说,这可能会成为一个大问题。如果您没有放弃关系数据库的选择,则应考虑使用快速数据库(例如 Redis)来缓存读取查询的数据。由于读取查询通常比写入查询常见很多倍,因此缓存将大大提高性能并让您的应用无需进行重大重新设计即可扩展。
RDI 使用变更数据捕获 (CDC)机制使 Redis 缓存与主数据库中的更改保持同步 。它还允许您将关系表中的数据转换为符合您的应用要求的方便快捷的数据结构。您可以使用配置系统指定转换,因此无需编写任何代码。
特征
RDI 提供企业级流数据管道,具有以下特点:
- 近实时管道——CDC 系统在非常短的时间间隔内捕获变化,然后以微批次的形式发送和处理它们,为 Redis 提供近乎实时的更新。
- 至少一次保证- RDI 将把对所选数据集的任何更改至少传递一次到目标 Redis 数据库。
- 数据完整性- RDI 保持每个源表或唯一键的数据更改顺序。
- 高可用性- 所有无状态组件都具有热故障转移或快速自动恢复功能。使用 Redis Enterprise 复制,RDI 状态始终高度可用。
- 易于安装和操作-使用自文档命令行界面 (CLI) 进行所有安装和第二天操作。
- 无需编码- 使用 Redis Insight 创建和测试您的管道。
- 传输中数据加密- RDI 永远不会将数据保存到磁盘。所有传输中的数据都使用 TLS 或 mTLS 连接进行保护。
- 可观察性 - 指标- RDI 收集源表粒度的数据处理计数器以及数据处理性能指标。这些可通过 GUI、CLI 和 Prometheus端点获取。
- 可观察性 - 日志- RDI 将轮换日志保存到单个文件夹中。它们采用 JSON 格式,因此您可以使用自己喜欢的可观察性工具收集和处理它们。
- 背压机制- RDI 旨在当缓存断开连接时停止写入数据,从而防止级联故障。由于更改数据保留在源数据库中,并且 Redis 速度非常快,因此 RDI 可以在短暂的断开连接后轻松追上错过的更改。有关更多信息,请参阅背压机制。
- 从完全故障中恢复- 如果缓存发生故障或长时间断开连接,RDI 可以使用定义数据集的完整快照在 Redis 中重建缓存数据。
- 高吞吐量- 由于 RDI 使用 Redis 进行暂存并将 Redis 作为目标进行写入,因此它具有非常高的吞吐量。凭借单个处理器核心和大约 1KB 大小的记录,RDI 每秒可处理大约 10,000 条记录。在获取源数据库的初始完整快照时,RDI 会自动扩展到可配置数量的处理单元,以尽快填充缓存。
何时使用 RDI Ingest
RDI 旨在支持必须使用基于磁盘的数据库作为记录系统的应用程序,但也必须快速且可扩展。这是用户数量快速增长的移动和 Web 应用程序的常见要求;主数据库的性能起初很好,但很快就会难以在没有缓存的情况下满足日益增长的需求。
在以下情况下应使用 RDI:
- 您必须使用慢速数据库作为应用程序的记录系统
- 应用程序必须始终将其数据写入缓慢的数据库
- 您已打算使用 Redis 作为应用程序缓存
- 数据频繁小幅变化
- 您的应用可以容忍Redis 缓存中数据的最终一致性
在以下情况下不应使用RDI:
- 您仅将现有数据集迁移到 Redis 一次
- 数据更新频率不高,且批量较大
- 你的应用需要的是即时缓存一致性,而不是最终一致性
- 数据同时从 Active-Active 的两个副本中提取
- 应用程序必须将数据写入Redis 缓存,然后更新源数据库
- 您的数据集将永远很小
支持的源数据库
RDI 可以从以下任何来源捕获数据:
| 数据库 | 版本 |
|---|---|
| 甲骨文 | 12c、19c、21c |
| 玛拉雅数据库 | >= 10.5 |
| MySQL | 5.7、8.0.x |
| Postgres | 10、11、12、13、14、15 |
| SQL 服务器 | 2017 年、2019 年 |
| 谷歌云 SQL MySQL | 8.0 |
| 谷歌云 SQL Postgres | 15 |
| Google Cloud SQL SQL 服务器 | 2019 |
| 适用于 PostgreSQL 的 Google Cloud AlloyDB |
文档
从本节的其他页面了解有关 RDI 摄取的更多信息: