pipelinedb的使用
简介
pipelinedb是一个方便操作流式数据的postgresql的一个扩展,postgresql版本10之前是独立的数据库
(注意:pipelinedb扩展是基于pgsql数据库的,例如:你新建了一个数据库ifm,需要用命令行\c ifm 切换到ifm数据库 然后执行创建create extension pipelinedb;创建pipelinedb扩展时注意当前所在数据库再执行,删除扩展 drop extension pipelinedb)
pipelinedb运行原理
这里说一下个人的理解:
先说我们用这个pipelinedb是要做一件什么事,我们要多维度实时统计一个大数据集,传统方法是把数据存到表中,查表统计,这个过程太慢了,于是你就需要用到pipelinedb了,它省去了你把数据存入表中的这个步骤,通过一个类似管道的东西把数据交给内存来直接计算,只保存统计结果,过程非常快,我在项目中用到的是统计功能。
使用流程
- 首先创建一个流式数据的表(就是上面说的管道):例如官方例子
CREATE FOREIGN TABLE wiki_stream (
hour timestamp,
project text,
title text,
view_count bigint,
size bigint
)SERVER pipelinedb;
流式数据也是一行一行的数据,类似mysql一行一行的数据
注意:这个表可以理解为一个管道,通俗一点说就是这个表规定了你录入的数据和格式,没有别的意义,不能用sql语句直接select,为什么说是管道了 因为他的作用跟现实中的管道一样,官网上有这样一段话:
PipelineDB can dramatically reduce the amount of information that needs to be persisted to disk because only the output of continuous queries is stored. Raw data is discarded once it has been read by the continuous queries that need to read it.
大致意思就是pipelinedb可以大量减少存入数据库中的数据量,因为他只存储统计结果,一旦数据流被读取,被读取的数据流就会被丢弃,就是读一行丢一行。
- 数据已经通过管道输送给内存了,然后就是统计了,既然是统计就一定是有一个规则,不然给内存这么多数据它也不知道怎么统计,举个例子方便理解:
姓名 | 年龄 | 性别 |
---|---|---|
张三 | 18 | 男 |
李四 | 20 | 男 |
王五 | 18 | 女 |
赵六 | 21 | 男 |
相关文章