TimescaleDB

time series数据的现有方案问题

  • 传统RDBMS
    • 无法支持high ingest rate,尤其index无法完全放入内存后
    • delete的成本高
      时序数据是有retention的
  • NoSQL和time series database
    Cassandar, MongoDB
    OpenTSDB, InfluxDB
    • 通常缺乏丰富的查询接口,复杂查询是高延时
  • Hadoop/Spark
    ingest rate可以高,但查询慢

TimescaleDB解决办法

Intro

PostgreSQL上的一个插件,目前只支持单机部署,cluster功能还在开发
因此,PQ具备的功能它都有,此外还针对tsdb提供了一些方便的函数

  • hypertable
    相当于多个chunk(物理)上的逻辑统一
  • chunk
    相当于shard,物理属性,通过time interval和[partition key]进行路由
    chunk就是PQ的table

解决方法

high inject rate

传统mysql/postgresql,受限于index,如果无法放到内存,性能会大大降低

在100亿条数据的hypertable,单机单磁盘,仍然可以享受10万插入/秒(in batch).

TimescaleDB solves this through its heavy utilization of time-space partitioning, even when running on a single machine.
So all writes to recent time intervals are only to tables that remain in memory, and updating any secondary indexes is also fast as a result.

retention

删除数据时,不是delete by row,而是delete by chunk,把整个chunk(table)删除就快了

SELECT drop_chunks(interval '7 days', 'conditions');

chunk partition

目前不支持adaptive time intervals,需要在创建hypertable时手工指定chunk_time_interval(默认1个月)

Share Comments