TimescaleDB
TimescaleDB 是一个开源数据库,旨在使 SQL 可扩展以处理时间序列数据。它从 PostgreSQL 中构建并打包为 PostgreSQL 扩展,保留了对 SQL 的完全支持。
目前官方安装文档提供了 6 种安装方式。安装文档
本文是在基于 Rocky Linux 系统中的 PostgreSQL 数据库进行安装。PostgreSQL 的版本为 17。
⚠️注意:在 Redhat Linux 系的 8 版本或者更高的版本需要关闭内置的 PostgreSQL
模块。才可以进行安装 PostgreSQL 数据库。本文这里仅记录 TimescaleDB 的安装配置,不包含 PostgreSQL 数据库的安装。
1 | # 关闭内置的 PostgreSQL 模块 |
首先,我们需要准备安装时序数据库的 Yum 源。
1 | sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL |
更新的仓库缓存,并执行安装命令。
1 | yum makecache |
安装完毕后,运行下面的命令对 PG 数据库进行参数调整。如果你很了解数据库,那么看好提示选择 yes 或者 no。
1 | timescaledb-tune --pg-config=/usr/pgsql-17/bin/pg_config |
登录数据库。⚠️你需要使用对应的账户登录你想使用 TimescaleDB 的数据库中。
1 | psql -h localhost -p 5432 -U postgres |
添加 TimescaleDB 扩展到你的数据库实例中。
⚠️TimescaleDB 是一个 PostgreSQL 扩展,扩展的安装和作用范围是数据库级别的,而不是实例级别的。因此,如果你有多个数据库,并且希望在每个数据库中使用 TimescaleDB,你需要在每个数据库中分别执行这个命令。
1 | CREATE EXTENSION IF NOT EXISTS timescaledb; |
使用 \dx
来查看扩展是否创建成功。
1 | List of installed extensions |
最后,我们来创建超表来使用这个扩展。
首先我们需要创建一个包含时间字段的普通数据表。
1 | CREATE TABLE conditions ( |
使用下面的 SQL 来转化这个普通的数据表。
1 | SELECT create_hypertable('表名', by_range('时间字段')); |
⚠️如果你的数据表把 ID
字段设置为了主键
。那么你想使用的时间字段也必须设置为主键
。否则转换会失败。
⚠️如果执行转化命令执行后提示警告,例如字段类型警告等。必须解决之后才可以转换。虽然提示的信息不是错误,是一个警告
。
如果你想删除一个超表。就像删除普通的数据表一样,直接删除即可。
1 | DROP TABLE <TABLE_NAME>; |
TimescaleDB 的数据表也支持各种配置。