TimescaleDB的简单使用

2022-03-25 00:00:00 创建 数据 时间 触发器 间隔

官方资料

For more information on TimescaleDB, please visit the following links:


Getting started: TimescaleDB Developer Docs

API reference documentation: TimescaleDB Developer Docs

How TimescaleDB is designed: TimescaleDB Developer Docs

Note: TimescaleDB collects anonymous reports to better understand and assist our users.

For more information and how to disable, please see our docs TimescaleDB Developer Docs.


TimescaleDB 具有以下特点

1. 基于时序优化

2. 自动分片(自动按时间、空间分片(chunk))

3. 全 SQL 接口

4. 支持垂直于横向扩展

5. 支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器 ID,用户 ID 等)

6. 支持多个 SERVER,多个 CHUNK 的并行查询。分区在 TimescaleDB 中被称为 chunk。

7. 自动调整 CHUNK 的大小

8. 内部写优化(批量提交、内存索引、事务支持、数据倒灌)。

内存索引,因为 chunk size 比较适中,所以索引基本上都不会被交换出去,写性能比较好。

数据倒灌,因为有些传感器的数据可能写入延迟,导致需要写以前的 chunk,timescaleDB 允许这样的事情发生(可配置)。

9. 复杂查询优化(根据查询条件自动选择 chunk,近值获取优化(小化的扫描,类似递归收敛),limit 子句 pushdown 到不同的 server,chunks,并行的聚合操作)

10. 利用已有的 PostgreSQL 特性(支持 GIS,JOIN 等),方便的管理(流复制、PITR)

11. 支持自动的按时间保留策略(自动删除过旧数据)


使用TimescaleDB

建表时,好将非超表字段默认设为null

警告:如果将任何其他列的默认值设置为NULL,则更改表的架构将非常有效。如果默认值设置为非null值,则TimescaleDB将需要为属于该超表的所有行(所有块)填充该值。


创建超表

1.创建标准表

CREATE TABLE conditions (
  time        TIMESTAMPTZ       NOT NULL,
  location    TEXT              NOT NULL,
  temperature DOUBLE PRECISION  NULL,
  humidity    DOUBLE PRECISION  NULL
);

相关文章