TimescaleDB入门-创建超表(翻译整理)
当您启动您的个 TimescaleDB 实例并访问您的数据库时,您可以创建您的个超表。Hypertables 是 TimescaleDB 的核心,它使 TimescaleDB 能够如此有效地处理时间序列数据。
块和超表
块和超表使时间序列数据的存储和查询速度达到 PB 级的惊人速度。TimescaleDB 根据时间和空间自动将时间序列数据划分为块或子表。例如,块可以基于散列键、设备 ID、位置或其他一些不同的键。您可以配置块大小,以便近的块适合内存以加快查询速度。
超表是保存时间序列数据的块之上的抽象层。Hypertables 允许您从所有块中查询和访问数据,就好像它们在单个表中一样。这是因为对超表发出的命令适用于属于该超表的所有块。
Hypertables 和块为浅层和宽查询提供卓越的性能,例如实时监控中使用的查询。它们也适用于深度和狭窄的查询,例如用于时间序列分析的查询。
创建您的个超表
----------------------------------------
-- Hypertable to store weather metrics
----------------------------------------
-- Step 1: Define regular table
CREATE 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 hypertable
SELECT create_hypertable('weather_metrics','time');
创建超表是一个两步过程。首先使用一条CREATE TABLE
语句创建一个常规的关系表。然后,使用SELECT
带有函数的语句create_hypertable
将表转换为超表。该SELECT
语句需要要转换的表的名称,以及该表中时间列的名称。
超表如何帮助处理时间序列数据
Hypertables 加快了摄取率:因为数据只插入到当前块中,其他块中的数据保持不变。如果使用单个表,每次将数据摄取到表中,它就会变得更大、更臃肿。
Hypertables 加快查询速度:因为通过时间或空间的自动索引,只查询特定的块。
超表的价值在于数据在磁盘上的分区方式。数据的时间依赖性会自动增加索引值,以允许更集中地使用内存和查询计划资源。在 PostgreSQL(和其他关系数据库管理系统)中,您可以在一个或多个值上构建索引,但仍必须检索数据。在大多数情况下,从物理层(内存或磁盘)的某些部分进行检索,这并不总是导致内存和磁盘资源的有效使用。通过按时间自动和透明地分区,超级表提高了资源使用率。查询和数据存储变得更加高效。
来源 https://mp.weixin.qq.com/s/WVZK8HGHh1UH37mNouA2Tg
相关文章