zoukankan      html  css  js  c++  java
  • psotgres、timescaledb

    postgres介绍

    PostgreSQL (简称Postgres )是一个开源,强大,先进,高性能和稳定的关系文档数据库系统。 它使用并增强了SQL语言,并具有大量功能,可实现安全的数据存储和管理。

    它高效,可靠,可扩展,可处理大量复杂的数据量并设置企业级和容错环境,同时确保高数据完整性。 Postgres还具有高度可扩展性,索引附带API等功能,因此您可以开发自己的解决方案来解决数据存储挑战。

    postgres的安装和配置

    首先,创建一个存储存储库配置的文件/etc/apt/sources.list.d/pgdg.list ,然后将存储库密钥导入系统,更新系统软件包列表并使用以下命令安装Postgres软件包

    $ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    $ sudo apt install wget ca-certificates
    $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    $ sudo apt update
    $ sudo apt install postgresql-10 pgadmin4
    

    安装postgres后 ,数据库服务会自动启动,通过键入以下命令进行确认。  

    $ sudo systemctl status postgresql.service
    

    打开psql客户端

    sudo -u postgres psql 进入,提示符变成: postgres=#
    

    修改数据库用户密码

    ALTER USER postgres WITH PASSWORD '123456';
    

    修改ubuntu操作系统的postgres用户的密码(密码要与数据库用户postgres的密码相同)
    切换到root用户

    sudo su

    删除PostgreSQL用户密码

    sudo passwd -d postgres //passwd -d 是清空指定用户密码的意思
    

    设置PostgreSQL系统用户的密码

    sudo -u postgres passwd
    

    修改PostgresSQL数据库配置实现远程访问

    sudo vim /etc/postgresql/10/main/postgresql.conf

    1.监听任何地址访问,修改连接权限

    #listen_addresses = 'localhost' 改为 listen_addresses = '*'

    2.启用密码验证

    #password_encryption = xxx 改为 password_encryption = xxx
    
    sudo vim /etc/postgresql/10/main/pg_hba.conf
    在文档末尾加上以下内容
    host all all 0.0.0.0 0.0.0.0 md5  

    #重启服务

    /etc/init.d/postgresql restart
    或者
    service postgresql restart  

    #登录postgre SQL数据库

    psql -U postgres -h 127.0.0.1

    #完整卸载postgres

    sudo apt-get remove postgresql* -y 
    sudo rm -r /etc/postgresql/
    sudo rm -r /etc/postgresql-common/
    sudo rm -r /var/lib/postgresql/
    sudo userdel -r postgres
    sudo groupdel postgres

    创建postgres用户:

    CREATE USER dbuser WITH PASSWORD '*****';
    CREATE DATABASE exampledb OWNER dbuser;
    GRANT ALL PRIVILEGES ON DATABASE exampledb TO dbuser;
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO bms;
    

     

    postgres=# CREATE DATABASE exampledb OWNER dbuser;
    postgres=# GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
    postgres=# c exampledb;
    postgres=# ALTER SCHEMA public OWNER to dbuser;
    postgres=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dbuser;
    postgres=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dbuser;  

     

    TimescaleDB概述

    1、TimescaleDB是开放源代码的时间序列数据库,针对快速提取和复杂查询进行了优化。,并且像传统的关系数据库一样易于使用,但可以按以前为NoSQL数据库保留的方式进行扩展。

    与这两种选择(关系型与NoSQL)所需要的权衡相比,TimescaleDB更完美的提供了时间序列数据

    随着物联网的发展,时序数据库的需求越来越多,比如水文监控、工厂的设备监控、国家安全相关的数据监控、通讯监控、金融行业指标数据、传感器数据等。

    在互联网行业中,也有着非常多的时序数据,例如用户访问网站的行为轨迹,应用程序产生的日志数据等等。

    2、TimescaleDB被实现为PostgreSQL上的扩展,这意味着它在整个PostgreSQL实例中运行。扩展模型使数据库可以利用PostgreSQL的许多属性,例如可靠性,安全性以及与各种第三方工具的连接性。同时,TimescaleDB通过在PostgreSQL的查询计划程序,数据模型和执行引擎中添加钩子,从而充分利用了扩展可利用的高度定制。

    从用户的角度来看,TimescaleDB公开了看起来像单表的表,称为表,实际上是包含数据的许多单个表(称为的抽象或虚拟视图

    是通过将超表的数据划分为一个或多个维度来创建的:所有超表均按一个时间间隔进行分区,并且可以另外通过键(例如设备ID,位置,用户ID等)进行分区。我们有时将其称为分区跨越“时空”。

    特点:  

    1. 基本上都是插入,没有更新的需求。

    2. 数据基本上都有时间属性,随着时间的推移不断产生新的数据,旧的数据不需要保存太久。

    业务方对时序数据通常有几个查询需求

    1. 获取最新状态,查询最近的数据(例如传感器最新的状态)

    2. 展示区间统计,指定时间范围,查询统计信息,例如平均值,最大值,最小值,计数等。。。

    3. 获取异常数据,根据指定条件,筛选异常数据

    特征

    如果仔细观察它的产生和摄取方式,那么诸如TimescaleDB之类的时序数据库通常具有以下重要特征:

    • 以时间为中心:数据记录始终带有时间戳。
    • 仅追加-:数据是几乎完全追加(只插入)。
    • 最近的:新数据通常与最近的时间间隔有关,而我们很少更新或回填有关旧时间间隔的缺失数据。

    数据的频率或规律性不太重要;可以每毫秒或每小时收集一次。也可以定期或不定期地收集它(例如,在某些事件发生时,而不是在预定时间)。

    但是数据库是否早就没有时间字段?与其他数据(例如标准关系“业务”数据)相比,时间序列数据(以及支持它们的数据库)之间的主要区别在于,对数据的更改是插入而不是覆盖

    Hypertables

    与数据交互的主要点是一个超表,它是跨所有空间和时间间隔的单个连续表的抽象,因此可以通过标准SQL查询该表。

    几乎所有与TimescaleDB的用户交互都与超表有关。创建表和索引,更改表,插入数据,选择数据等可以(也应该)在超表上执行。跳转至基本SQL操作 ]

    超表由具有列名称和类型的标准架构定义,其中至少一列指定时间值,一列(可选)列指定其他分区键。

    一个TimescaleDB部署可以存储多个超表,每个超表具有不同的架构。

    在TimescaleDB中创建一个超表需要两个简单的SQL命令:(CREATE TABLE使用标准SQL语法),后跟SELECT create_hypertable()

    时间索引和分区键是在超级表上自动创建的,尽管也可以创建其他索引(并且TimescaleDB支持所有PostgreSQL索引类型)

    TimescaleDB的安装和配置

    需要先安装postgres

    添加TimescaleDB的第三方存储库并安装TimescaleDB,它将从PostgreSQL存储库下载所需的任何依赖项:

    # Add our PPA
    sudo add-apt-repository ppa:timescale/timescaledb-ppa
    sudo apt-get update
    
    # To install for PG 10.2+
    sudo apt install timescaledb-postgresql-10
    # To install for PG 9.6.3+
    sudo apt install timescaledb-postgresql-9.6
    

    更新 postgresql.conf

    sudo vim /etc/postgresql/11/main/postgresql.conf
    
    修改postgresql.conf
    #shared_preload_libraries = '' 改为 shared_preload_libraries = 'timescaledb'
    
    重启postgresql
    sudo service postgresql restart
    
    可能出现问题
    
    add-apt-repository: command not found:
    sudo apt-get install software-properties-common python-software-properties # 18.04好像只需要sudo apt-get install software-properties-common即可。
    

     psql下执行:

    sudo su - postgres
    psql
    d 进入数据库
    create extension timescaledb ;          CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
    

    激活服务

    systemctl status postgresql
    sudo systemctl enable postgresql

    创建用户和数据库

    create user bms with password 'bms@2018';
    create database bms owner bms;
    

     配置pg的远程访问

    sudo vim /etc/postgresql/11/main/postgresql.conf
    # 添加 一行:
    listen_addresses = '*'
    
    sudo vi /etc/postgresql/10/main/pg_hba.conf
    # 添加一行:
    host all all 0.0.0.0/0 md5
    
    sudo systemctl restart postgresql 
    

      

    参考:https://www.howtoing.com/install-postgresql-on-ubuntu

    参考:https://www.postgresql.org/download/linux/ubuntu/

    参考:https://docs.timescale.com/v1.0/getting-started/installation/linux/installation-apt-ubuntu

    postgres命令使用参考:https://mozillazg.com/2014/06/hello-postgresql.html

      

    I can feel you forgetting me。。 有一种默契叫做我不理你,你就不理我

  • 相关阅读:
    C# savefiledialog 保存文件后 再操作数据库 提示数据库文件路径错误
    转:在C#中使用Nullable类型
    转:Global.asax通过Application_BeginRequest()事件实现访问链接的静态地址映射
    DZ7.0自动伸缩广告
    转:使用HttpModule来实现sql的防注入
    转:System.Web.UI.Page类的构造函数的执行时机
    使用ISAPI_Rewrite做简单实用的301重定向
    IIS7添加ASP.NET网站碰到的问题
    IE9 崩溃的解决方法
    利用ZEND Studio与Zend server对PHP WEB进行调试
  • 原文地址:https://www.cnblogs.com/weidaijie/p/11599496.html
Copyright © 2011-2022 走看看