我很想知道,如果我使用任何时间序列数据库来存储我的日志数据,大约每秒数千条记录或每天百万条记录,时间序列数据库将如何在内部存储这些数据。如果我想对过去 4 个月的数据进行分析,它如何确保快速响应我?
2 回答
不同的时间序列数据库有不同的数据存储策略。您的具体用例将决定哪一个适合您,或者您是否最好使用弹性数据库和时间序列数据库等搜索引擎。Timescale 是由最初构建 IOT 平台的团队设计的,因此有些人认为 Timescale 是 IOT 的最佳时间序列数据库。(IOT 数据 = 突发、无序、高基数、与其他元数据一起存在)
Timescale 使用底层的 postgres 存储引擎将数据写入持久存储。它的创新之处在于添加了一个中间层,将数据分块到多个底层表中,其中包含来自连续时间间隔的数据——但对于用户/消费者来说,它仍然看起来像一个表。您可以在文档中阅读更多内容。
除了它的分块策略 - 它发生在幕后 - Timescale 是一个普通的 PostgreSQL 数据库 - 所以你可以做连接,二级和部分索引等。
(InfluxDB 使用带有机制的日志结构合并树进行缓存和性能优化。您可以在文档中阅读更多内容。InfluxDB 最初旨在支持 Web 应用程序监控。)
(披露——我与时间尺度有联系)
这取决于特定时间序列数据库的设计。一般来说,时序数据库针对时序数据的存储和查询进行了优化,这是时序数据库的基本特征。
例如,在 TDegnine 这个开源的高性能 TSDB 中,时序数据首先按照表名进行分片,每个表代表一个数据采集源。然后,在每个表内部,根据时间范围对数据进行分片,这样就可以很容易地根据时间戳检索数据,并且基于这种分片/分片机制也可以很容易地实现数据保留策略。