PostgreSQL 流计算插件 - pipelinedb 1.x 参数配置介绍

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介: 标签PostgreSQL , 流计算 , pipelinedb背景术语1、stream,流。数据写入流中,流不落盘。流通常会接continue view或continue transform,用于存储实时计算的结果(continue view),或者定义对流数据进行处理的规则(continue transform)。

标签

PostgreSQL , 流计算 , pipelinedb


背景

术语

1、stream,流。数据写入流中,流不落盘。流通常会接continue view或continue transform,用于存储实时计算的结果(continue view),或者定义对流数据进行处理的规则(continue transform)。

2、continue view,经过实时计算后的结果,存入continue view,注意只有主动查询continue view时,continue view的内容才会被持久化(或者等内部INTERVAL调度)。

3、continue transform,定义对流数据进行处理的规则,当流中的数据记录满足continue transform QUERY定义的条件时,触发规则。常用于流监控,事件触发。

4、滑窗 continue view,属于continue view的一种。例如定义滑窗为1小时,那么这个视图就是最近一小时的统计,为了得到这个统计值,必须实时老化一小时前的数据,保持统计是最近一小时的。怎么做到的呢?

实际上pipelinedb内部通过定义比滑窗更小粒度窗口的实时统计,把窗口切成更小的窗口,查询时对小粒度窗口进行汇聚产生大窗口的数据。

例如定义的窗口为1小时,那么可以按分钟的粒度进行统计,查询时,汇聚最近的60个窗口的数据,得到小时的窗口数据。

5、worker,计算。

6、combiner,合并worker的计算结果并持久化到磁盘。

7、queue proc,当数据从STREAM取出(worker和combiner批量消费、计算stream内的数据,并将结果持久化到磁盘,然后从stream中清掉对应的流数据。整个过程需要queue process,确保做这一系列动作的时候,不影响用户持续将数据写入stream。)

8、reaper proc,清除设置了TTL的continue view的过期数据。

pic

参数配置详解

由于pipelinedb这类流数据库本身就是重计算的,不必有太高的可靠性,可以建议性能优先的设置。

1、pipelinedb.stream_insert_level

性能最佳,可以设置为async,数据写入内存即响应写入客户端。

性能适中,设置为sync_receive,数据被worker process接收后响应写入客户端。

Determines when a client INSERT operation will return. Its options are:

async: return as soon as the inserts have been loaded into the server’s memory
sync_receive (default): return as soon as the inserts have been received by a worker process
sync_commit: return only when the downstream combiner has committed all changes resulting from the inserted rows

Note

sync_commit is primarly used for testing purposes and is not meant for production workloads due to significantly increased write latency.

2、pipelinedb.num_combiners

有多少个combiner进程。由于combiner进程负责将计算好的结果数据合并落盘,所以当设置的COMBINER进程个数足够达到IO瓶颈时为宜。

设置取决于IO能力。

Sets the number of parallel continuous query combiner processes to use for each database. A higher number will utilize multiple cores and increase throughput until we’re I/O bound. Default: 1.

3、pipelinedb.commit_interval

每个combiner进程,会先将合并的结果数据HOLD在combiner_work_mem,以提高性能。commit_interval表示间隔多长时间刷提交结果。

Sets the number of milliseconds that combiners will keep combining in memory before committing the result. A longer commit interval will increase performance at the expense of less frequent continuous view updates and more potential data loss. Default: 50ms.

4、pipelinedb.num_workers

worker进程负责计算STREAM上定义的continue view, continue transform。

设置取决于有多少STREAM,有多少continue view, continue transform,有多少CPU能力。

Sets the number of parallel continuous query worker processes to use for each database. A higher number will utilize multiple cores and increase throughput until we’re CPU bound. Default: 1.

5、pipelinedb.num_queues

当数据从STREAM取出(worker和combiner批量消费、计算stream内的数据,并将结果持久化到磁盘,然后从stream中清掉对应的流数据。整个过程需要queue process,确保做这一系列动作的时候,不影响用户持续将数据写入stream。)

设置取决于num_workers,num_combiners。

Sets the number of parallel continuous query queue processes to use for each database. Queues are used when workers and combiners are writing out results to streams, necessitating an IPC queue to prevent stalls. Default: 1.

6、pipelinedb.num_reapers

reaper进程,用于清除设置了TTL的continue view的过期数据。

类似于后台定时任务进程。不需要太多,设置取决于有多少设置了TTL的continue view。

Sets the number of parallel reaper processes to use for each database. Reaper processes handle Time-to-Live (TTL) Expiration. Default: 1.

7、pipelinedb.ttl_expiration_batch_size

清除设置了TTL的continue view的过期数据。

一个事务中,最多清理多少条数据,主要防止长事务。

Sets the maximum number of rows that a reaper will delete from a continuous view per transaction. This is designed to minimize long-running transactions. A value of 0 means an unlimited number of rows can be deleted in a given transaction. Default: 10000.

8、pipelinedb.ttl_expiration_threshold

当超出设置阈值多少后,开始清理过期数据。

例如设置TTL为2天,设置ttl_expiration_threshold为5%。

那么当数据过期达到 (2 + 5%*2) 天后,才开始触发清理。

也可以理解为TTL continue view的膨胀率。

Sets the percentage of a TTL that must have elapsed since a reaper last deleted rows from a continuous view before attempting to delete from it again. A lower percentage will yield more aggressive expiration at the expensive of more delete transactions on the continuous view. Default: 5%.

9、pipelinedb.batch_size

当查询continuous view时,会触发PIPELINEDB对continuous view的结果进行持久化。

batch_size设置,表示执行continuous view查询前,最多允许多少个events堆积(例如insert stream的条数)。

设置越大,可能增加查询continuous view的响应延迟,或者当数据库CRASH时丢掉更多数据。

Sets the maximum number of events to accumulate before executing a continuous query plan on them. A higher value usually yields less frequent continuous view updates, but adversely affects latency and can cause more data loss in case of process crashes. Default: 10000.

10、pipelinedb.combiner_work_mem

每个combiner的工作内存大小。combiner process在合并WORKER计算结果时用于排序,HASH TABLE等。

如果combiner使用内存超出这个设置,则使用磁盘。

Sets the maximum memory to be used for combining partial results for continuous queries. This much memory can be used by each combiner processes’s internal sort operation and hash table before switching to temporary disk files. Default: 256mb.

11、pipelinedb.anonymous_update_checks

Toggles whether PipelineDB should anonymous check if a new version is available. Default: true.

12、pipelinedb.matrels_writable

是否允许continue view被直接修改。(直接通过SQL修改,而不是仅被combiner进程修改)

Toggles whether changes can be directly made to materialization tables. Default: false.

13、pipelinedb.ipc_hwm

Sets the high watermark for IPC messages between worker and combiner processes. Default: 10.

14、pipelinedb.max_wait

与pipelinedb.batch_size含义类似,只是时间度量。

执行continuous view查询前,最多允许等多长时间。

Sets the time a continuous query process will wait for a batch to accumulate. A higher value usually yields less frequent continuous view updates, but adversely affects latency and can cause more data loss in case of process crashes. Default: 10ms.

15、pipelinedb.fillfactor

continue view的fillfactor,由于流计算的结果continue view需要经常被combiner更新,所以多数为更新操作,那么设置合理的fillfactor可以使得更容易HOT(避免索引膨胀)。

HOT的条件,新版本在同一个PAGE,同时所有索引字段的值都没有发生变化。

《PostgreSQL Heap Only Tuple - HOT (降低UPDATE引入的索引写IO放大)》

Sets the default fillfactor to use for materialization tables. Default: 50.

16、pipelinedb.sliding_window_step_factor

滑窗continue view的小窗颗粒度。

例如定义滑窗为1小时,那么这个视图就是最近一小时的统计,为了得到这个统计值,必须实时老化一小时前的数据,保持统计是最近一小时的。怎么做到的呢?

实际上pipelinedb内部通过定义比滑窗更小粒度窗口的实时统计,把窗口切成更小的窗口,查询时对小粒度窗口进行汇聚产生大窗口的数据。

例如定义的窗口为1小时,那么可以按分钟的粒度进行统计,查询时,汇聚最近的60个窗口的数据,得到小时的窗口数据。

颗粒度为5,表示5%的颗粒。例如定义窗口为1小时,那么颗粒就是5%*60min = 3min,也就是说会3分钟统计一个值,最后查询时汇聚为1小时的窗口值。

Sets the default step size for a sliding window query as a percentage of the window size. A higher number will improve performance but tradeoff refresh interval. Default: 5.

参考

http://docs.pipelinedb.com/conf.html

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4月前
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
|
5月前
|
SQL 分布式计算 关系型数据库
实时计算 Flink版产品使用问题之在使用FlinkCDC与PostgreSQL进行集成时,该如何配置参数
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用问题之在使用FlinkCDC与PostgreSQL进行集成时,该如何配置参数
|
4月前
|
开发框架 关系型数据库 数据库
在 PostgreSQL 中,解决图片二进制数据,由于bytea_output参数问题导致显示不正常的问题。
在 PostgreSQL 中,解决图片二进制数据,由于bytea_output参数问题导致显示不正常的问题。
|
7月前
|
SQL 关系型数据库 数据库
postgresql数据库修改参数的方式
在PostgreSQL数据库中,你可以通过多种方式修改数据库参数,以更改其行为。以下是一些常见的修改数据库参数的方式: 1. **通过配置文件修改(postgresql.conf):** PostgreSQL的配置文件是 `postgresql.conf`。你可以直接编辑该文件,找到要修改的参数,修改其值,然后重新启动PostgreSQL服务以使更改生效。 通常,`postgresql.conf` 文件位于 PostgreSQL 数据目录下。修改完毕后,确保重新启动 PostgreSQL 服务。 2. **使用 ALTER SYSTEM 命令:** PostgreSQL
426 2
|
5月前
|
安全 关系型数据库 Linux
|
7月前
|
人工智能 自然语言处理 关系型数据库
|
6月前
|
缓存 关系型数据库 数据库
postgresql.conf配置详解
postgresql.conf配置详解
|
6月前
|
XML 关系型数据库 数据库
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
586 0
|
7月前
|
SQL JSON 关系型数据库
[UE虚幻引擎插件DTPostgreSQL] PostgreSQL Connector 使用蓝图连接操作 PostgreSQL 数据库说明
本插件主要是支持在UE蓝图中连接和操作PostgreSQL 数据库。
66 2
|
7月前
|
关系型数据库 网络安全 数据安全/隐私保护
你会开启Postgresql 的SSL单向认证 配置?
你会开启Postgresql 的SSL单向认证 配置?
375 0
你会开启Postgresql 的SSL单向认证 配置?

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版