Postgresql - PipelineDB - Continuous Views

本文深入解析PipelineDB的核心概念连续视图,介绍其创建、查看、修改及激活过程,探讨高吞吐量实时物化视图的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前有写过 初识PipelineDB,里面做了一个小实验,来学习PipelineDB,现在我们通过官方文档,看看PipelineDB的原理。

 

PipelineDB 最根本的概念叫做 continuous view (连续视图)。continuous view 非常类似于常规视图,只是它从流与表的组合中选择作为其输入,并在新数据写入这些输入时实时递增地更新。

一旦 stream row 已被必须读取它的连续视图读取,就丢弃它。原始的、颗粒状的数据不会存储在任何地方。对于 continuous view ,唯一持久化的数据是通过运行 SELECT * FROM that_view 返回的任何数据。因此,可以将连续视图看作一个高吞吐量、实时的物化视图。

 

==============================================

Creating Continuous Views

Continuous views是被定义为PostgresSQL views,action设置为materialize。

 

CREATE VIEW name [WITH (action=materialize [, ...])] AS query

 

默认action是materialize,因此可以提交用于创建 continuous views。只要从stream中选择一个,PipelineDB就会使用 materialize 解释CREATE VIEW语句。

 

SELECT [ DISTINCT [ ON ( expression [, ...] ) ] ] expression [ [ AS ] output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] where from_item can be one of: stream_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] from_item [ NATURAL ] join_type from_item [ ON join_condition ]

 

Stream 类似于表,并且是从它们的FROM子句中读取的continuous views and transforms read 。

 

expression: PostgreSQL表达式或分组设置规范。

output_name: 一个可选的标识符来命名表达式。

condition: 任何类型为布尔类型结果的表达式。任何不满足此条件的行都将从输出中删除。当实际行值被替换为任何变量引用时,如果行返回true,则该行满足条件。

 

 

==============================================

Dropping Continuous Views

mytest=# drop view v0 ;

 

==============================================

Truncating Continuous Views

mytest=# select * from v1;

count

-------

4

(1 row)

mytest=# SELECT pipelinedb.truncate_continuous_view('v1');

truncate_continuous_view

--------------------------

 

(1 row)

 

mytest=# select * from v1;

count

-------

(0 rows)

 

 

==============================================

Viewing Continuous Views

mytest=# SELECT * from pipelinedb.views;

 

==============================================

Data Retrieval

mytest=# SELECT * FROM v_sum;

sum

-----

60

(1 row)

 

==============================================

Time-to-Live (TTL) Expiration

CREATE VIEW v_ttl WITH (ttl = '1 month', ttl_column = 'minute') AS SELECT minute(arrival_timestamp), COUNT(*) FROM some_stream GROUP BY minute;

 

==============================================

Modifying TTLs

TTL可以通过pipelinedb.set_ttll函数从连续视图中添加、修改和删除:

 

select pipelinedb.set_ttl ( cv_name, ttl, ttl_column )

用给定参数更新给定的连续视图的TTL。ttl是表示为字符串(例如“1天”)的间隔,ttl_column是基于时间戳的列的名称。

 

==============================================

Activation and Deactivation

因为 continuous views 是连续处理输入流的,所以在不必完全关闭PipelineDB的情况下启动和停止该处理是有用的。例如,如果连续视图导致意外的系统负载量或开始抛出错误,则暂时停止对该视图(或所有视图)的连续处理直到问题得到解决可能是有用的。

这个级别的控制是由激活和停用函数提供的,它相当于是 “play” 和 “pause”。

当连续视图处于活动状态时,它们会主动地从输入流中读取数据,并相应地递增地更新结果。相反,不活动的连续视图不从它们的输入流读取,也不更新它们的结果。当连续视图处于非活动状态,并且continuous views 本身仍然可读时,PipelineDB保持功能——它们只是没有更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值