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