Time Travel Queries|在 RisingWave 中访问历史数据

文摘   科技   2024-11-01 16:02   北京  

对于许多组织来说,能够访问历史数据十分关键。以金融交易公司为例:

  • 特定时间点的数据快照与合规审查、审计流程息息相关。
  • 企业的关键业务系统也依赖历史数据来恢复故障并重建系统。
  • 分析过去事件及其对当前状况的影响,还有助于准确预测并制定战略规划。
  • 此外,回顾历史事件如何影响当下也是数据治理和数据完整性的关键,能帮助组织追踪变化并保持清晰的可追溯记录。

因此,我们在 RisingWave 2.0 版本中推出了时间旅行查询(Time Travel Queries)功能。通过时间旅行查询,您可以在指定的时间旅行窗口内检索过去某个时间点的数据。同时,时间旅行查询也支持将数据保存为单独的表,或将其发送到下游系统进行进一步分析或处理。下面将为大家分享如何使用 RisingWave 中的时间旅行查询。

1获取 Premium Edition 许可证

时间旅行查询是 RisingWave Premium 特有功能,需要购买许可证以使用。

目前 Premium 版本为期 30 天的免费试用活动还在进行中,如需获取许可证密钥,请赶快联系 sales@risingwave-labs.com  或者社区小助手吧。

可通过运行以下 SQL 查询验证您的 RisingWave 实例是否具有有效的许可证密钥,如果许可证密钥设置正确且有效,将返回 t
SELECT rw_test_paid_tier();

2设置环境

为了在 RisingWave 中运行时间旅行查询,请参照以下要求设置环境:

  1. 确保元存储类型与 SQL 兼容,并至少保留 50 GB 的磁盘空间。默认情况下,RisingWave 使用 PostgreSQL 作为元存储。
  2. 系统参数 time_travel_retention_ms 设置为大于 0 的值。该值确定历史数据的保留时间,超过该值的数据将被删除。例如,以下 SQL 命令将系统参数设置为历史数据保留一天。
ALTER SYSTEM SET time_travel_retention_ms = 86400000;

3时间旅行查询的语法

SELECT 查询中使用 FOR SYSTEM_TIME AS OF 子句,以访问指定时间点的数据。该子句应包含一个时间值。

根据以下格式指定历史时间。以下查询从表 historic_table 查询历史数据。

  • Unix 时间戳(以秒为单位)
SELECT * FROM historic_table
FOR SYSTEM_TIME AS OF 1728025608;
  • 日期时间字符串
SELECT * FROM historic_table
FOR SYSTEM_TIME AS OF '2024-10-02T12:13:14-08:30';
  • 相对于当前时间的时间间隔
SELECT * FROM historic_table
FOR SYSTEM_TIME AS OF NOW() - '1' HOUR;

如果指定的时间超出时间旅行期间,查询将报错。

4持久化历史数据

如果需要持久化某个时间点的数据,可以创建表或 sink,这样即使在数据超出时间旅行保留窗口后也能访问数据。如下所示,要保存一小时前的表状态,可以根据历史数据创建新表。

CREATE TABLE table_at_202409202300 AS
SELECT * FROM historic_table
FOR SYSTEM_TIME AS OF NOW() - '1' HOUR;

5自动空间回收

元存储和对象存储中的过时时间旅行数据会在后台自动移除,以释放存储空间。默认配置通常适用于大多数情况,但也支持自定义。

  • 元存储的回收间隔默认设置为 30 秒,也可以通过调整 vacuum_interval_sec 设置来更改此间隔。设置完需要重启元节点以使其生效。
  • 对象存储的回收间隔默认设置为 1 天,也可以通过调整两个设置 full_gc_interval_sec min_sst_retention_time_sec 来自定义此计划。同样,设置完需要重启元节点以生效。

6结论

随着 RisingWave 成功引入时间旅行查询,我们期待看到客户开发出各种创新用例。从增强金融服务中的欺诈检测和审计追踪,到优化预测性维护,这些应用前景广阔。此外,我们诚邀您试用时间旅行查询以及 2.0 中发布的众多新功能并向我们分享反馈,共同完善 RisingWave 这一广受喜爱的流式数据库系统。

关于 RisingWave 

RisingWave 是一款基于 Apache 2.0 协议开源的分布式流数据库,致力于为用户提供极致简单、高效的流数据处理与管理能力。RisingWave 采用存算分离架构,实现了高效的复杂查询、瞬时动态扩缩容以及快速故障恢复,并助力用户极大地简化流计算架构,轻松搭建稳定且高效的流计算应用。
RisingWave 始终聆听来自社区的声音,并积极回应用户的反馈。目前,RisingWave 已汇聚了 150+ 名开源贡献者和 3000+ 名社区成员。全球范围内,已有上百个 RisingWave 集群在生产环境中部署。

往期推荐

技术内幕

如何上手 RisingWave 👉 新手入门教程

RisingWave 中文用户文档上线,阅读更高效!

深入探索 RisingWave 中的高可用性与容错机制

深入理解 RisingWave 流处理引擎(三):触发机制

深入理解 RisingWave 流处理引擎(二):计算模型

深入理解 RisingWave 流处理引擎(一):总览

用户案例
视源股份(CVTE)IT 流计算应用历程
尘锋 SCRM 如何使用 RisingWave 实时打宽
RisingWave 在超百亿管理规模对冲基金公司中的应用
金融科技公司 Kaito 使用 RisingWave 实现实时智能化
龙腾出行如何通过 RisingWave 实现实时数据分析
RisingWave 助力乾象投资打造实时监控平台

RisingWave中文开源社区
RisingWave 是一款开源分布式 SQL 流数据库,致力于大幅降低流计算使用门槛与复杂度。RisingWave 已为全球超百家企业构建新一代流处理与分析平台。
 最新文章