当前位置: 首页 > news >正文

PostgreSQL 之上的开源时序数据库 TimescaleDB 详解

TimescaleDB 是一个构建于 PostgreSQL 之上的开源时序数据库,它完全兼容 PostgreSQL 的所有功能和生态。配置 TimescaleDB 主要分为几个步骤:安装、创建扩展、配置以及优化。


下面将提供一个详细的配置指南。

1. 安装 TimescaleDB

首先,需要在系统上安装 TimescaleDB。

对于 macOS (使用 Homebrew)
brew tap timescale/tap
brew install timescaledb
对于 Ubuntu/Debian
# 添加 Timescale 的第三方仓库
sudo sh -c "echo 'deb [signed-by=/usr/share/keyrings/timescale.key] https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main' > /etc/apt/sources.list.d/timescaledb.list"
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescale.key
sudo apt-get update# 安装 TimescaleDB
sudo apt-get install timescaledb-2-postgresql-14 # 请确保 PostgreSQL 版本号正确
对于 RHEL/CentOS (使用 yum)
# 添加 Timescale 的第三方仓库
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOLsudo yum update -y
sudo yum install -y timescaledb-2-postgresql-14 # 请确保 PostgreSQL 版本号正确

2. 配置 PostgreSQL 以加载 TimescaleDB

安装完成后,需要修改 PostgreSQL 的配置文件 postgresql.conf 来预加载 TimescaleDB 库。

  1. 找到 postgresql.conf 文件。它的位置通常类似于:

    • macOS (Homebrew): /usr/local/var/postgres/postgresql.conf
    • Linux: /etc/postgresql/14/main/postgresql.conf/var/lib/pgsql/14/data/postgresql.conf
  2. 修改配置,添加或确保以下行存在:

    shared_preload_libraries = 'timescaledb'
    

    如果 shared_preload_libraries 已经有其他值,用逗号分隔,例如: 'timescaledb, pg_stat_statements'

  3. 重启 PostgreSQL 服务以使配置生效。

    # macOS (Homebrew)
    brew services restart postgresql# Ubuntu/Debian
    sudo systemctl restart postgresql# RHEL/CentOS
    sudo systemctl restart postgresql-14
    

3. 创建数据库和启用 TimescaleDB 扩展

现在,连接到 PostgreSQL 并创建一个数据库,然后在该数据库中启用 TimescaleDB 扩展。

  1. 使用 psql 连接到 PostgreSQL:

    psql -U postgres -h localhost
    
  2. 创建一个新数据库(可选,也可以使用现有数据库):

    CREATE DATABASE timeseries_db;
    \c timeseries_db; -- 连接到新创建的数据库
    
  3. 启用 TimescaleDB 扩展

    CREATE EXTENSION IF NOT EXISTS timescaledb;
    

4. 将表转换为超表

TimescaleDB 的核心概念是 超表,它是为自动分区和管理时序数据而设计的。

  1. 创建一个标准的 PostgreSQL 表。一个典型的时序表结构如下:

    CREATE TABLE conditions (time        TIMESTAMPTZ       NOT NULL,location    TEXT              NOT NULL,temperature DOUBLE PRECISION  NULL,humidity    DOUBLE PRECISION  NULL
    );
    
  2. 使用 SELECT create_hypertable() 函数将此表转换为超表:

    SELECT create_hypertable('conditions', 'time');
    
    • 'conditions' 是表名。
    • 'time' 是作为时间维度的列名。

5. 重要配置调优

TimescaleDB 提供了一个工具 timescaledb-tune,它可以自动分析系统并根据硬件配置推荐优化的 PostgreSQL 设置。

  1. 安装 timescaledb-tune(通常与 TimescaleDB 包一起安装)。
  2. 运行该工具(可能需要 sudo):
    timescaledb-tune --yes --dry-run
    
    • --dry-run 会先打印出推荐的配置,而不直接应用。
    • 确认无误后,去掉 --dry-run 再次运行以应用配置。
    timescaledb-tune --yes
    
  3. 应用配置后,务必重启 PostgreSQL

6. 其他有用的配置

也可以在数据库会话或 postgresql.conf 中手动设置一些常用参数。

  • 维护工作进程:用于执行后台作业(如数据保留策略)。

    -- 在 psql 中执行
    SET timescaledb.maintenance_workers = 4;
    

    或在 postgresql.conf 中设置:

    timescaledb.maintenance_workers = 4
    
  • 并行处理:利用多核CPU加速查询。

    SET max_parallel_workers_per_gather = 4;
    

7. 验证安装和配置

最后,可以运行一些命令来验证 TimescaleDB 是否已正确安装和配置。

-- 列出所有已安装的扩展,应该能看到 timescaledb
\dx-- 显示所有的超表
SELECT * FROM timescaledb_information.hypertables;-- 显示超表的详细信息,包括分区块等
SELECT * FROM timescaledb_information.chunks;

总结

一个典型的 TimescaleDB 配置流程如下:

  1. 安装:通过包管理器安装。
  2. 预加载:修改 postgresql.conf,添加 shared_preload_libraries = 'timescaledb'
  3. 重启:重启 PostgreSQL 服务。
  4. 创建扩展:在目标数据库中执行 CREATE EXTENSION timescaledb;
  5. 创建超表:创建普通表后,使用 create_hypertable() 函数进行转换。
  6. 调优:使用 timescaledb-tune 工具优化 PostgreSQL 配置。
  7. 验证:通过查询系统视图确认一切正常。

完成以上步骤后,TimescaleDB 就已经配置好并可以开始使用了。可以像使用普通 PostgreSQL 表一样使用超表,同时享受 TimescaleDB 为时序数据带来的高性能和自动化管理功能。

http://www.dtcms.com/a/569641.html

相关文章:

  • wordpress网站投放广告网站后台管理图片
  • 查询域名网站软文写作是什么意思
  • TCN-Transformer-GRU时间卷积神经网络结合编码器组合门控循环单元多特征分类预测Matlab实现
  • 类和对象(中):深入理解 C++ 类与对象:6 个默认成员函数核心解析
  • 中山哪里有做微网站的中国经济网
  • win11蓝屏笑脸提示重启怎么回事 蓝屏重启解决方法
  • 佰力博检测与你探讨压电薄膜介电/阻抗-频谱的应用领域有哪些
  • 长沙教育类网站建设好兄弟资源网
  • C++:哈希表的实现
  • 本地化部署后定制解决方案
  • Java中的WebSocket与实时通信!
  • SQL server创建数据表
  • MacOS-Terminal直接command解压缩文件文件夹
  • GIM 模型转 GLB 模型:从格式适配到前端渲染的完整方案
  • 什么是网站平台开发wordpress链接优化
  • 软件测试——自动化测试概念
  • 大模型-详解 Vision Transformer (ViT)
  • 建站公司互橙知乎郑州seo哪家专业
  • 09-ubuntu20.04 执行 apt update时报错,是因为官网已停止维护不再更新的缘故吗?
  • 南通做网站找谁求网站懂的说下开车
  • ps做网站宽度重庆公司团建推荐
  • uniapp中的uni_modules分包
  • 算法笔记 09
  • 【VLAs篇】08:以实时速度运行VLA
  • 广西桂林建设局网站建立网站需要多少钱 索 圈湖南岚鸿
  • 买完服务器怎么做网站网页编辑软件绿色
  • 从奠基到前沿:CIFAR-10 数据集如何驱动计算机视觉研发进化
  • 计算机网络第六章学习
  • 华为A800I A2 arm64架构鲲鹏920cpu的ubuntu22.04 tls配置直通的grub配置
  • 耐热型发光颜料:高温环境下的功能材料新星