绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
基于PostgreSQL的时序数据库TimescaleDB
2022-03-25 14:27:15


什么是时序数据库?顾名思义,用于处理按照时间变化顺序的数据的数据库即为时序数据库(time-series database),时序数据库专门优化处理带时间标签的数据,为什么会衍生时序数据库这一种新趋势呢?我们知道像PostgreSQL和MySQL这种关系型数据库对于短期需求不大的情况下下还是可以满足的,但是一旦数据量增长,其性能不足以支持频繁的添加和读取需求。运用时间模型来构造的应用非常需要时序数据库的加持,包括未来大数据的趋势,时序数据库必然会成为一个新潮流。




今天的主角TimescaleDB在DB-Engines中排名的处于第5位,并一直处于上升的趋势,其中不乏PostgreSQL的占有率提高而导致其增长的一部分原因,因为本质上它是PostgreSQL的一个插件,除了其本身丰富强大的功能外,TimescaleDB完全支持SQL且拥有PostgreSQL的丰富生态。


TimescaleDB是目前市面上一款开源的时间序列数据库,且完全支持SQL。官方称之为“Full SQL”,它像传统的关系数据库一样易于使用,并且可以按以前为NoSQL数据库保留的方式进行扩展。



它依赖于PostgreSQL,拥有坚如磐石的可靠性以及大量级的开发人员、管理工具和生态系统。其包含以下特性和优点:


  • 完整的SQL以及强大的分析功能,没有限制
  • 以PostgreSQL扩展的方式安装,支持已有的PostgreSQL特性
  • 拥有高基数的工作负载
  • 基于时序优化
  • 自动分片(自动按时间、空间分片(chunk))
  • 写入能力强大,每秒写入百万级的数据点
  • 支持多个SERVER,多个CHUNK的并行查询
  • 简化堆栈并将关系数据与时间序列数据一起存储
  • 支持自动的按时间保留策略


对于TimescaleDB来说,在功能的丰富程度上战胜了排名更靠前的几位选手,但是对于性能上可能处于下风,因此TimescaleDB如何持续地发展下去、如何发展地更好,除了探寻在性能等综合素质方面的提升外,在PostgreSQL的肩膀上怎么样更好地适应现代化需求才是重中之重。


接下来介绍一下如何安装并使用TimescaleDB


一、前期准备:


操作系统环境:CentOS Linux release 7.4.1708(Core)

Cmake编译环境:需要3.4以上,本实验环境使用新版本3.21.2

PostgreSQL软件:支持PostgreSQL 9.6.3 +,10.9 +或11.4 +,本实验环境使用12.2


二、安装或升级你的Cmake版本:


卸载原有的旧版本


# yum remove cmake -y


进入cmake的官网下载对应版本的软件包:Download | CMake


这里我们直接下载3.21.2版本的二进制软件包


# wget https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-linux-x86_64.tar.gz


解压软件包


# tar xzvf cmake-3.21.2-linux-x86_64.tar.gz


进入解压后的目录,将bin/目录下的cmake做软链接,当然也可以直接将cmake添加到环境变量中


# ln -s /root/cmake-3.21.2-linux-x86_64/bin/cmake /usr/bin/cmake


检查cmake是否可用


# cmake --version
cmake version 3.21.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).


三、编译安装TimescaleDB软件:


从github中下载软件


https://github.com/timescale/timescaledb


解压软件包,进入解压目录,进行编译安装


如果在编译安装PostgreSQL软件的时候没有选择安装openssl,那么可以使用


/bootstrap -BUSE_OPENSSL=0进行安装,如果有选择安装openssl,就去掉参数选项,直接进行安装


# ./bootstrap && make && make install





四、配置PostgreSQL:


在postgresql.conf配置文件中修改


$ vim postgresql.conf
shared_preload_libraries = 'timescaledb'


重启数据库服务


创建一个时序数据库


$ psql
psql (12.2)
Type "help" for help.
postgres=# create database tsdb;
CREATE DATABASE
postgres=# \c tsdb -
You are now connected to database "tsdb" as user "postgres".
tsdb=# create extension timescaledb ;



到此为止,就完成了TimescaleDB的安装步骤,可以看到得益于扩展形式的存在,安装变得非常简便,并且随着PostgreSQL软件的更新,整个基于PostgreSQL软件的TimescaleDB时序数据库也在同步更新。


五、如何使用TimescaleDB:


使用TimescaleDB库,其实就多了一步转换为超表的步骤,其它基本和操作普通的表一样


创建标准表


CREATE TABLE conditions (
  time        TIMESTAMPTZ       NOT NULL,
  location    TEXT              NOT NULL,
  temperature DOUBLE PRECISION  NULL,
  humidity    DOUBLE PRECISION  NULL
);


以时间字段作为分片字段,将标准表转换为超表


SELECT create_hypertable('conditions', 'time');


在超表中进行插入和查询操作


INSERT INTO conditions(time, location, temperature, humidity)
  VALUES (NOW(), 'office', 70.0, 50.0);
 
SELECT * FROM conditions ORDER BY time DESC LIMIT 100;

来源 https://zhuanlan.zhihu.com/p/423100705
分享好友

分享这个小栈给你的朋友们,一起进步吧。

TimescaleDB
创建时间:2022-03-21 14:43:25
TimescaleDB
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~