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;

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

  

上一篇:Greenplum数据恢复


下一篇:# greenplum的监控配置 gpcc