pipelineDB安装
简介
PipelineDB旨在在减少时间序列数据集基数的SQL查询方面表现出色。例如:滑动时间窗口执行计算;文字搜索过滤;通过减少输入流的基数,PipelineDB可以大大减少需要持久存储到磁盘的信息量,因为仅存储连续查询的输出。原始数据一旦被需要读取的连续查询读取后就被丢弃。
因此,可以将通过PipelineDB传递的许多数据视为虚拟数据。数据虚拟化的思想是PipelineDB的核心思想,它使它可以使用相对较小的硬件占用空间非常有效地处理大量数据。
PipelineDB的目的是消除许多常见数据管道的ETL阶段的必要性。原始数据可以直接流式传输到PipelineDB中,通过声明的连续查询对原始数据进行实时实时精炼和提炼。这使得不必在将细化的数据加载到数据库中之前定期处理粒度数据,当然,只要该处理可以由SQL查询定义即可。
PipelineDB在设计时首先考虑了实用性,这就是为什么我们将其打包为PostgreSQL扩展的原因。所有数据存储和操作都委托给PostgreSQL,这是一个极其稳定、成熟的数据库。此外,PipelineDB与充满活力的PostgreSQL生态系统中的所有工具兼容。没有自己的专有语法,甚至没有PipelineDB客户端,因为它可以与任何已经PostgreSQL兼容的库一起使用。
注意:由于PipelineDB是作为PostreSQL的扩展运行,因此首先要安装PostgreSQL;
PipelineDB目前只支持PostgreSQL版本10以上,其他版本pipelineDB是作为独立的数据库存在的。
环境
系统版本:ubuntu~16.04.10
Postgresql版本:Postgresql-10.6
pipelineDB版本:piplelineDB-1.0.0
安装
安装完成PostgreSQL后开始安装pipelineDB,我们直接说安装pipelinedb,有两种方式。
- 使用apt-get install 安装
- 首先,将我们的apt存储库添加到您的系统中
curl -s http://download.pipelinedb.com/apt.sh | sudo bash
- 安装新的PipelineDB包
sudo apt-get install pipelinedb-postgresql-10
- 手动下载包安装
下载地址:https://github.com/pipelinedb/pipelinedb/releases
根据自己系统版本和Postgresql版本下载:
然后执行安装:
sudo dpkg -i pipelinedb-postgresql- <pg version> _ <pipelindb version> .deb
安装完成后,我们需要设置一下postgresql的配置文件postgresql.conf,搜索找到shared_preload_libraries参数设置为pipelinedb;搜索找到max_worker_processes的值可以设置为128,以使PipelineDB工作进程 具有足够的容量。
启动PostgreSQL服务,请使用pg_ctl驱动程序并将其指向新初始化的数据目录:
pg_ctl -D <data directory> -l postgresql.log start
注意 1. 的路径是Postgresql.conf 这个文件的路径,例如我的 /etc/postgresql/10/main,当然,如果您自定义了这个路径,请填写您自定义的路径。
- postgresql.log 这个是日志文件,建议指定目录存放。
如果报pg_ctl:Command not found:
你可以找到这个文件在这个文件目录下用./pg_ctl
的方式执行。
接下来,连接到数据库并创建扩展:
psql -c "CREATE EXTENSION pipelinedb"
重启服务器
创建扩展成功后 可以使用官方文档给的demo进行测试。
测试
首先,让我们使用psql命令来创建continuous view:
psql -c " CREATE FOREIGN TABLE wiki_stream ( hour timestamp, project text, title text, view_count bigint, size bigint) SERVER pipelinedb; CREATE VIEW wiki_stats WITH (action=materialize) AS SELECT hour, project, count(*) AS total_pages, sum(view_count) AS total_views, min(view_count) AS min_views, max(view_count) AS max_views, avg(view_count) AS avg_views, percentile_cont(0.99) WITHIN GROUP (ORDER BY view_count) AS p99_views, sum(size) AS total_bytes_served FROM wiki_stream GROUP BY hour, project;"
现在我们将数据集解压缩为流并将其写入stdin,
curl -sL http://pipelinedb.com/data/wiki-pagecounts | gunzip | psql -c "COPY wiki_stream (hour, project, title, view_count, size) FROM STDIN"
请注意,此数据集很大,因此上述命令将运行很长时间(随时取消)。在运行时,从连续视图中选择,因为它从输入流中摄取数据:
psql -c “SELECT * FROM wiki_stats ORDER BY total_views DESC”
相关文章