问题标签 [timescaledb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 在 Spilo 容器上预加载 TimescaleDB
我将 postgres 运算符与 Spilo build 一起使用spilo-11:1.5-p7
。
如何配置它以预加载 timescaledb 库?
我尝试使用 sed 来更改配置文件,如下所示:
但这不起作用,因为它是在 Dockerfile 的构建时运行的,这似乎为时过早。有什么方法可以在压缩内容扩展之后,但在运行 postgres 之前运行它?某种脚本回调?
sql - 从 TimescaleDB 获取 1 年结果
我有一张包含物联网设备数据的表格,每小时发送一次测量值。必须获得今天、周、月和年的报告。
使用 timescaleDB,我得到了今天、周和月的一些“好的”结果。例如每月:
但是多年找不到取值的好方法?有人试过吗?
时间刻度不支持年份,使用周会导致错误结果。
错误:不支持按月、年、世纪等定义的间隔
postgresql - 时间尺度超表列与多个表/规范化模式
我正在使用 Timescale DB 存储来自许多设备的测量值。由于迄今为止大多数设备都有一组相似的指标,因此我使用了一个包含许多列的超表(每个指标一个列)。
但是,一些新设备必须支持不同的指标,并且还有我需要为每个设备计算和存储的派生值。
所以看来我必须将这些值存储为单独的表,或者如果我想要一种保存时间序列数据的通用方法,或者使用规范化方法(时间戳、设备、metric_type、值)?
对于这些类型的测量,“多列”模式方法是错误的,还是我做错了?
influxdb - 单个硬盘上的多进程 fsync 停顿
fsync/fdatasync 调用很昂贵,但它们在数据库中是必不可少的,因为它允许 ACID 中的持久性。正如我所测试的,当只有一个进程定期进行一些写入和 fsync 时,每个 fsync 大约需要 50 毫秒。但是当有多个进程在做同样的事情时,比如说其中两个,有时(可能 50%)fsync 会花费大量时间,数百或数千毫秒,甚至数十秒,显然系统在这种情况下变得无法使用。我想知道如何在数据库中解决这个问题,特别是在分布式时间序列数据库中,当有多个节点使用单个硬盘时。
postgresql - TimescaleDB 查询以选择列值从前一行更改的行
最近才开始使用 TimescaleDB 和 Postgres 来处理大多数数据请求。
但是,我遇到了一个问题,即我对时间序列数据的请求效率极低。
这是一个可以是任意时间长度的数据系列,具有特定的整数值。
大多数情况下,除非出现异常,否则该值将是相同的。因此,而不是获取 +10,000 行数据。我想将其汇总为“时间块”。
假设一行中有 97 个项目,其值为 100(每 5 分钟新项目)#98 连续 5 个项目的值为 48,然后再返回 100,再增加 2,900 行。
我不想获取 3002 项来显示此数据。我应该只需要取 3 件物品。
- 1 项表示从 startDate 开始的值为 100
- 1 项表示从 #1 之后的 startDate 开始的值为 48
- 1 项表示该值从 #2 之后的 startDate 再次为 100
但是我在弄清楚如何使用 timescaledb 做到这一点时遇到了一些麻烦。
基本上,如果该值与最后一个值相同,则将其聚合。这就是我需要它做的所有事情。
有谁知道如何使用连续聚合(或者如果有更快的方法)为 timescaleDB 中的这种情况构建一个 VIEW 来获取这个?
timescaledb - 如果我每小时有 1 GB 的数据,那么块间隔的最佳大小应该是多少
当我使用 TimescaleDB 时,我每小时有 1 GB 的数据。我需要确定相同的最佳块时间间隔,以便性能最大化。那会是 1 天还是 1 小时或其他什么。
postgresql - Homebrew MacOS 安装后在 postres 中加载扩展问题
我最近在 MacOSX Mojave 上使用 Homebrew 安装了 Postgres 11.3。我想使用 TimescaleDB 扩展数据库,也与 Homebrew 一起安装,但收到以下错误:
看起来该命令希望 Postgres 安装在 /Library 中,但brew info postgres
说它位于/usr/local/Cellar/postgresql/11.3
. 有没有办法可以修改命令使用的路径或更改 Postgres 的安装位置?
database - 如何在 SQL 中对具有多列的时间序列数据进行下采样?
我正在运行一个 postgresql 数据库(也使用 timescaledb,用于 grafana),并且已经学习了如何使用以下方法对简单表进行下采样:
此代码创建一个具有三个传感器的 VIEW,并从(例如)1 秒采样率下采样到 1 分钟采样率。
这一切都很好,直到我有一个包含数百列的表,我希望对其进行下采样。我不想写出这段代码,数百个平均值显式出现在每个传感器的查询中。我希望 postgresql 有一种方法可以一次将我的平均聚合应用于表的所有列。
我已经用谷歌搜索了很长时间的答案,这是我能找到的最接近的答案,尽管不是完全相同的问题:
我尝试使用语法 avg(*),但收到语法错误。
另一种尝试是
这给出了语法错误。
我希望有一种方法可以执行此查询,而不必为每个传感器写出跨越数百行的代码。谢谢你的帮助。
sql - 使用 time_bucket 的慢 TimescaleDB 查询
我有一个包含数百万数据的简单数据库(PostgreSQL 11)。我想平均value
每天。为此,我正在使用time_bucket()
函数。
数据库架构
我想要做的查询是:
询问
结果+解释
即使我使用索引,查询的运行时间也很慢。查询返回 626 行,需要 26.5 秒才能完成。已创建 90 个 TimescaleDB 块。这是此查询的 EXPLAIN 语句:
问题
我是否正确创建了索引?我是否正确创建了数据库?或者对于这么多的行,TimescaleDB 是否像这样慢?
time_bucket()
这可能是速度慢的原因: https ://github.com/timescale/timescaledb/issues/1229 。建议的解决方案是使用连续聚合视图。这是如何在 PostgreSQL 中使用时间序列的推荐方法吗?
sql - 如何在 TimescaleDB 中的一张表上创建多个连续聚合?
我有这张series
桌子和它的超表。我想对该表中的数据进行不同的连续聚合。
但在PostgreSQL 11中似乎是不可能的——这是我在运行上面的查询时得到的:
甚至不可能在同一张表上创建不同的超表。
是否可以解决此限制?series
或者我应该使用另一种方法(例如,每个连续聚合的重复表:-x)?