psotgres、timescaledb

摘要:
Postgres介绍,PostgreSQL是一个开源、强大、高级、高性能和稳定的关系文档数据库系统。同时,TimescaleDB通过向PostgreSQL的查询调度器、数据模型和执行引擎添加挂钩,充分利用了高度可定制的扩展。从用户的角度来看,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

  

免责声明:文章转载自《psotgres、timescaledb》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java字节码常量池深入剖析小程序的当下和未来可能-----------引用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

更新所有数据库索引统计信息

代码 USE masterDECLARE @SQL VARCHAR(1000) DECLARE @DB sysnameDECLARE curDB CURSOR FORWARD_ONLY STATIC FORSELECT [name]FROM sys.sysdatabasesWHERE [name] NOT IN ('model', 'tempdb')OR...

日期/时间 相关查询

获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month"      FROM DUAL; 获取当前月份的最后一天 这个查询语句类似于上面那个语句,而且充...

解决sqlite删除数据后,文件大小不变问题 转载

原文地址:http://blog.csdn.net/yangchun1213/article/details/7656146 说了这么多,没进主题,我的主题是给Sqlite在删除数据后擦屁股。 大家或许发现了,当你在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。 就用我的项目来说,3M的数据删除后,sqlite的.db文件依然是...

【环境搭建】PostgreSQL 10.7 rpm安装离线部署到 centOS 6.8

1.下载rpm包: 1)下载依赖包 libicu.rpm 百度rpm, 进入http://fr2.rpmfind.net/linux/RPM/, 搜索libicu, 下载对应linux系统版本的依赖,此处下载的是centos6.8的 http://fr2.rpmfind.net/linux/rpm2html/search.php?query=libicu&...

DB2存储过程——参数详解

语法说明1、procedure-name: 存储过程的名字,在同一个数据库的同一模式下,不能存在存储过程名相同参数数目相同的存储过程,即使参数的类型不同也不行。2、(IN | OUT | INOUT parameter-name data-type,...) :传入参数     IN:输入参数OUT:输出参数INOUT:作为输入输出参数parameter...

PostgreSQL手动主从切换

主从切换操作: 1》主库宕机或者测试主备切换情况下停掉主库:systemctl stop postgres 从库会报日志错误信息:[root@db02 /]# cd /var/postgresql/logfile/[root@db02 logfile]# lltotal 4-rw-rw-r--. 1 postgres postgres 3074 Sep 2...