【问题标题】:How data is stored in timeseries database数据如何存储在时间序列数据库中
【发布时间】:2018-07-19 12:19:48
【问题描述】:

我很想知道,如果我使用任何时间序列数据库来存储我的日志数据,大约每秒数千条记录或每天百万条记录,时间序列数据库将如何在内部存储这些数据。如果我想对过去4个月的数据进行分析,如何确保快速响应我?

【问题讨论】:

  • redshift 不知道时间序列。也许你可以用你想要达到的目标来扩展你的问题?
  • @JonScott 我的错...我对基于列的时间序列数据库感到困惑。我只是想知道时间序列数据库如何在内部存储数据?

标签: time-series influxdb timescaledb


【解决方案1】:

不同的时间序列数据库有不同的数据存储策略。您的具体用例将决定哪一个适合您,或者您是否最好使用像弹性数据库和时间序列数据库这样的搜索引擎。 Timescale 是由最初构建 IOT 平台的团队设计的,因此有人认为 Timescale 是 IOT 的最佳时间序列数据库。 (IOT 数据 = 突发、无序、高基数、与其他元数据一起存在)

Timescale 使用底层的 postgres 存储引擎将数据写入持久存储。它的创新之处在于添加了一个中间层,该层将数据分块到多个底层表中,其中包含来自连续时间间隔的数据——但对于用户/消费者来说,它仍然看起来像一个表。你可以read more in the documentation

除了它的分块策略 - 它发生在幕后 - Timescale 是一个普通的 PostgreSQL 数据库 - 所以你可以做连接、二级和部分索引等。

(InfluxDB 使用日志结构的合并树以及用于缓存和性能优化的机制。您可以read more in the documentation。InfluxDB 最初旨在支持 Web 应用程序监控。)

(披露 - 我与 timescale 有联系)

【讨论】:

    【解决方案2】:

    这取决于特定时间序列数据库的设计。一般来说,时序数据库针对时序数据的存储和查询进行了优化,这是时序数据库的基本特征。

    例如,在 TDegnine 这个开源的高性能 TSDB 中,时序数据首先按照表名进行分片,每个表代表一个数据采集源。然后,在每个表内部,根据时间范围对数据进行切片,从而可以方便地根据时间戳检索数据,并且基于这种分片/切片机制也可以轻松实现数据保留策略。

    【讨论】:

    • 您是否与 TDengine 有任何关联?如果是这样,请注意,当链接到您自己的网站或内容(或您附属的内容)时,您must disclose your affiliation in the answer 以免被视为垃圾邮件。根据 Stack Exchange 政策,在您的用户名中包含与 URL 相同的文本或在您的个人资料中提及它不被视为充分披露。
    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 2012-09-02
    • 2014-08-03
    • 1970-01-01
    • 2012-04-17
    • 2016-10-31
    • 2021-11-23
    相关资源
    最近更新 更多