pipelineDB安装

2022-02-28 00:00:00 查询 路径 数据 版本 安装

简介

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,有两种方式。

  1. 使用apt-get install 安装
  • 首先,将我们的apt存储库添加到您的系统中
curl -s http://download.pipelinedb.com/apt.sh | sudo bash
  • 安装新的PipelineDB包
sudo apt-get install pipelinedb-postgresql-10
  1. 手动下载包安装

下载地址: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进行测试。

测试

  1. 首先,让我们使用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;"
    
  2. 现在我们将数据集解压缩为流并将其写入stdin,

curl -sL http://pipelinedb.com/data/wiki-pagecounts | gunzip | psql -c "COPY wiki_stream (hour, project, title, view_count, size) FROM STDIN"
  1. 请注意,此数据集很大,因此上述命令将运行很长时间(随时取消)。在运行时,从连续视图中选择,因为它从输入流中摄取数据:

    psql -c “SELECT * FROM wiki_stats ORDER BY total_views DESC”

相关文章