PipeLineDB数据库介绍和总结

PipelineDB 是开源的关系型数据库,可以在 streams 中持续运行 SQL 查询,逐渐将结果存储在表中。本文将对PipelineDB做相应的总结。

1、基于Postgre数据库, 可以使用数据库库的函数,表达式,存储过程等功能,自身功能就已经足够强大了。而且还支持proxy等分表分库插件。

2、所有的流必须以Stream开始,先创建stream然后才可以使用view或者transform来查询。stream中的数据必须通过insert插入。

3、view和transform的区别在于,view的计算结果会保存在pg数据库中,transform不会保存,只能定义触发器来将结果输出到其他地方。

4、可以在存储过程中调用view,但是 transform由于结果已经被重定向了,所以无法调用。

5、在没有transofrm或者view的情况下性能很高,在8U32G的虚拟机下性能接近10WTPS。如果使用view之后性能会急剧下降。即使将pg的data空间放在内存盘中,性能也会下降的很厉害,一个stream下挂了10个view,TPS大约在3000左右。可见,PipelineDB的性能消耗在于计算部分,即使数据不落盘,但是计算仍然还是比较消耗性能。

窗口:

PipelineDB中只支持滑窗。使用当前时间和到达时间做对比,来确定窗口范围。

Clock_Timestmap:当前时间,Arrival_timestamp到达pipelinedb的时间。

比如一个最近1分钟的滑动窗:

[sql] view plain copy

  1. CREATE CONTINUOUS VIEW recent_users WITH (sw = '1 minute') AS
  2. SELECT user_id::integer FROM stream;  

pipelinedb会将语句改写为:

[sql] view plain copy

  1. CREATE CONTINUOUS VIEW recent_users AS
  2. SELECT user_id::integer FROM stream  
  3. WHERE (arrival_timestamp > clock_timestamp() - interval '1 minute');  

多个不同大小的滑窗之间可以进行合并,比如5分钟,10分钟的滑窗,在pipelinedb中会进行合并,值创建一个10分钟的滑窗。这样可以有效减少数据量。

步长决定了窗口内数据更新的频率,pipelinedb使用一个1-50的范围数字用来描述更新粒度,单位为百分比,步长是数据更新的间隔,数据一个步长一个步长的过期

一个较小的步长,滑窗统计会更加精确,但是会占用更多的数据存储空间,比如1小时的滑窗,步长为5,也就是3分钟更新一次数据,那么物化视图的表中数量就会比步长为10的窗口数据多出一倍。

但是这样统计结果也会更加精确,统计精度在3分钟,而10的步长,统计进度就会在6分钟。误差就大了一倍。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码匠的流水账

HashedWheelTimer算法详解

George Varghese 和 Tony Lauck 1996 年的论文:Hashed and Hierarchical Timing Wheels: da...

681
来自专栏UAI人工智能

使用 Ray 用 15 行 Python 代码实现一个参数服务器

参数服务器是很多机器学习应用的核心部分。其核心作用是存放机器学习模型的参数(如,神经网络的权重)和提供服务将参数传给客户端(客户端通常是处理数据和计算参数更新的...

1032
来自专栏xingoo, 一个梦想做发明家的程序员

理解距离矢量路由

1 常用的距离矢量路由:IP RIP、IGRP等等 2 距离矢量算法让路由器向每个邻居周期性的发送完整的路由表,包括每个网络或者子网的信息,相关的度量值等等 3...

1835
来自专栏Java与Android技术栈

Kotlin Coroutines 笔记 (二)

协程虽然是微线程,但是并不会和某一个特定的线程绑定,它可以在A线程中执行,并经过某一个时刻的挂起(suspend),等下次调度到恢复执行的时候,很可能会在B线程...

631
来自专栏前端技术总结

附实例!实现iframe父窗体与子窗体的通信

本文主要会介绍如何基于MessengerJS,实现iframe父窗体与子窗体间的通信,传递数据信息。

1.3K76
来自专栏代码GG之家

google 分屏 横屏模式 按home键界面错乱故障分析(三)

google 进入分屏后在横屏模式按home键界面错乱( 三) 你确定你了解分屏的整个流程? ? 故障解析系列文章列表: google 分屏 横屏模式 按hom...

1916
来自专栏IT笔记

Dubbo负载均衡配置

在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用。 负载均衡扩展 (1) 扩展说明: 从多个服务提者方中选择一个进行调用。 (2) 扩...

3215
来自专栏AIUAI

Caffe2 - (三十三) Detectron 之 roi_data - data loader

3154
来自专栏朱慕之的博客

iOS 优化界面流畅的技巧

对象的创建会分配内存、调整属性、甚至还有读取文件等操作,比较消耗 CPU 资源。尽量用轻量的对象代替重量的对象,可以对性能有所优化。比如 CALayer 比 U...

941
来自专栏hightopo

快速开发基于 HTML5 网络拓扑图应用--入门篇(一)

1284

扫码关注云+社区