TimescaleDB入门-创建超表(翻译整理)

2022-03-25 00:00:00 序列 查询 数据 时间 您的

当您启动您的个 TimescaleDB 实例并访问您的数据库时,您可以创建您的个超表。Hypertables 是 TimescaleDB 的核心,它使 TimescaleDB 能够如此有效地处理时间序列数据。

块和超表

块和超表使时间序列数据的存储和查询速度达到 PB 级的惊人速度。TimescaleDB 根据时间和空间自动将时间序列数据划分为块或子表。例如,块可以基于散列键、设备 ID、位置或其他一些不同的键。您可以配置块大小,以便近的块适合内存以加快查询速度。

超表是保存时间序列数据的块之上的抽象层。Hypertables 允许您从所有块中查询和访问数据,就好像它们在单个表中一样。这是因为对超表发出的命令适用于属于该超表的所有块。

Hypertables 和块为浅层和宽查询提供卓越的性能,例如实时监控中使用的查询。它们也适用于深度和狭窄的查询,例如用于时间序列分析的查询。

创建您的个超表

------------------------------------------ Hypertable to store weather metrics------------------------------------------ Step 1: Define regular tableCREATE TABLE IF NOT EXISTS weather_metrics (
time TIMESTAMP WITHOUT TIME ZONE NOT NULL, timezone_shift int NULL, city_name text NULL, temp_c double PRECISION NULL, feels_like_c double PRECISION NULL, temp_min_c double PRECISION NULL, temp_max_c double PRECISION NULL, pressure_hpa double PRECISION NULL, humidity_percent double PRECISION NULL, wind_speed_ms double PRECISION NULL, wind_deg int NULL, rain_1h_mm double PRECISION NULL, rain_3h_mm double PRECISION NULL, snow_1h_mm double PRECISION NULL, snow_3h_mm double PRECISION NULL, clouds_percent int NULL, weather_type_id int NULL);
-- Step 2: Turn into hypertableSELECT create_hypertable('weather_metrics','time');

创建超表是一个两步过程。首先使用一条CREATE TABLE 语句创建一个常规的关系表。然后,使用SELECT 带有函数的语句create_hypertable将表转换为超表。该SELECT语句需要要转换的表的名称,以及该表中时间列的名称。

超表如何帮助处理时间序列数据

Hypertables 加快了摄取率:因为数据只插入到当前块中,其他块中的数据保持不变。如果使用单个表,每次将数据摄取到表中,它就会变得更大、更臃肿。

Hypertables 加快查询速度:因为通过时间或空间的自动索引,只查询特定的块。

超表的价值在于数据在磁盘上的分区方式。数据的时间依赖性会自动增加索引值,以允许更集中地使用内存和查询计划资源。在 PostgreSQL(和其他关系数据库管理系统)中,您可以在一个或多个值上构建索引,但仍必须检索数据。在大多数情况下,从物理层(内存或磁盘)的某些部分进行检索,这并不总是导致内存和磁盘资源的有效使用。通过按时间自动和透明地分区,超级表提高了资源使用率。查询和数据存储变得更加高效。

来源 https://mp.weixin.qq.com/s/WVZK8HGHh1UH37mNouA2Tg

相关文章