TimescaleDB 入门
在本文中,我们将探讨TimescaleDB ,这是一个构建在PostgreSQL之上的开源时间序列数据库。我们将深入研究其特性,检查其功能,并讨论如何有效地与该数据库交互。
什么是TimescaleDB
TimescaleDB 是 PostgreSQL 的开源数据库扩展,旨在有效处理时间序列数据。它扩展了 PostgreSQL 的功能,为时间序列数据提供专用功能,包括自动时间分区、优化索引和压缩。
让我们简要了解一下它的一些主要功能:
- 超级表是 TimescaleDB 中的一个关键概念。它们是按时间自动分区数据的 PostgreSQL 表。
- 它支持连续聚合,允许我们预先计算和存储聚合。它通过避免在查询时动态计算聚合的需要来提高查询性能。
- 它采用先进的压缩技术来最大限度地减少存储需求,同时保持查询性能。
- TimescaleDB使用多维索引和基于时间的索引来加速查询,使其非常适合时间序列数据。
安装
要开始使用 TimescaleDB,我们首先需要确保我们的计算机上安装了 PostgreSQL。我们可以使用操作系统的包管理器来安装 PostgreSQL,或者从 PostgreSQL 的网站下载它。
成功安装PostgreSQL后,我们可以继续安装TimescaleDB。在开始安装之前,我们还需要安装Homebrew :
brew tap timescale/tap |
使用TimescaleDB
初始化TimescaleDB
成功安装后,让我们连接到 PostgreSQL 实例并运行查询来初始化 TimescaleDB 实例:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
此查询设置必要的扩展并准备我们的 PostgreSQL 环境以进行高效的时间序列数据处理。
创建超级表
TimescaleDB引入了Hypertable的概念,它是针对时间序列存储优化的分区表。超表始终按时间分区,因为它适用于时间序列数据,并且还具有在其他列上分区的灵活性。我们可以使用支持的数据类型之一进行分区:date、smallint、int、bigint、timestamp和timestamptz。
创建超级表涉及首先创建一个表,然后将其转换为超级表。我们首先创建一个常规表:
CREATE TABLE employee( |
现在,让我们将其转换为超表:
SELECT create_hypertable('employee', by_range('login_time')); |
create_hypertable()所需的参数是表名 employee 和维度构建器 by_range('login_time')。
维度生成器定义我们要使用哪一列来对表进行分区。
在这种情况下,我们可以跳过维度构建器,因为create_hypertable()自动假定单个指定列默认按时间进行范围分区。
对于表中现有的数据,我们可以包含migrate_data 选项进行迁移:
SELECT create_hypertable('employee', by_range('login_time'), migrate_data => true); |
插入和查询数据
超级表就位后,我们就可以开始添加数据了。 TimescaleDB 提供了处理大量时间戳信息的有效机制。让我们执行插入:
INSERT INTO employee values('1', 'John', '2023-01-01 09:00:00', '2023-01-01 18:30:00'); |
TimescaleDB 引人注目的功能之一是它能够使用标准 SQL 对时间序列数据执行高效查询。数据成功填充后,让我们继续查询它:
SELECT * FROM employee WHERE login_time BETWEEN '2023-01-01 00:00:00' AND '2023-01-01 12:00:00'; |
此查询检索特定时间范围内的数据,展示了使用 TimescaleDB 分析和可视化时间序列数据的简便性。
结论
在本文中,我们快速概述了 TimescaleDB,深入研究了设置和查询数据的基本步骤。 TimescaleDB 可以有效地处理大型时间序列数据集,这对于各种应用程序中的稳健数据管理来说非常有价值。