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


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

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

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

    1. 获取 Premium Edition 许可证

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

    目前 Premium 版本为期 30 天的免费试用活动还在进行中,赶快行动吧~

    可通过运行以下 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 是一款开源的分布式流处理数据库,旨在帮助用户降低实时应用的开发成本。RisingWave 采用存算分离架构,提供 Postgres-style 使用体验,具备比 Flink 高出 10 倍的性能以及更低的成本。

    👨‍🔬加入 RW 社区,欢迎关注公众号:RisingWave中文开源社区

    🧑‍💻想要了解和探索 RisingWave,欢迎浏览我们的官网:risingwave.com/

    🔧快速上手 RisingWave,欢迎体验入门教程:github.com/risingwave

    💻深入理解使用 RisingWave,欢迎阅读用户文档:zh-cn.risingwave.com/docs

  • 相关阅读:
    认识.NET Aspire:高效构建云原生应用的利器
    Oracle day9
    中国光刻胶行业现状动态与投资前景展望报告2022-2028年
    用户登录和退出,以及访问请求的token校验
    node.js入门之 http.Agent 控制并发数量
    Flex and Bison 阅读与学习笔记
    Web应用基础
    AutoReleasePool 工作机制
    Postgresql分区表大量实例与分区建议(LIST / RANGE / HASH / 多级混合分区)
    大厂常见面试题LRU算法实现
  • 原文地址:https://blog.csdn.net/weixin_61169526/article/details/143437161