我正在运行一个 PostgreSQL 数据库,该数据库正在记录许多系统的健康状况信息。目前,它在标准的 PostgreSQL 服务器上运行,但似乎 TimescaleDB 有一些可用的特性。
大多数系统都是直接记录的,因此数据在收集后立即存储。但有些系统并不总是在线。他们离线时会在本地记录数据,在线时会将收集到的数据下载并插入数据库。这种模式会对 TimescaleDB 造成任何问题吗?在某些文档中,按时间顺序写入数据似乎很重要。
我正在运行一个 PostgreSQL 数据库,该数据库正在记录许多系统的健康状况信息。目前,它在标准的 PostgreSQL 服务器上运行,但似乎 TimescaleDB 有一些可用的特性。
大多数系统都是直接记录的,因此数据在收集后立即存储。但有些系统并不总是在线。他们离线时会在本地记录数据,在线时会将收集到的数据下载并插入数据库。这种模式会对 TimescaleDB 造成任何问题吗?在某些文档中,按时间顺序写入数据似乎很重要。
在 psql 中,如果我这样做\d+
,我会得到类似的东西
Schema | Name | Type | Owner | Size | Description
--------+-------------------------+----------+--------+------------+-------------
norsar | Routing Result | table | morten | 16 kB |
norsar | Routing Result_id_seq | sequence | morten | 8192 bytes |
等等。最后一个字段“描述”始终为空白。该字段在哪里读取其内容?- 因此,我如何在表格上设置描述?在某些情况下,这可能非常有用 - 如果我这样做,对显示的列的描述也是如此\d+ <tablename>
。
我试过\set ECHO_HIDDEN ON
了,但这并没有使它更清楚。
我在 psql 中运行了一些查询,使用了一个时间间隔,其中一部分查询就像
where g2.datetime between g1.datetime+'19 minutes' and g1.datetime+'21 minutes'
即我想在 g1.datetime 之后间隔 20 分钟左右
如果我想多次执行此操作,既可以使其更容易又不易出错(我在查询中也多次提到 20 分钟)。我打算做类似的事情:
\set timelag 20
\set before :timelag-1
\set after :timelag+1
如果我做一个
select :timelag, :before, :after;
这似乎工作得很好,但令人讨厌的是,我只是连接字符串(所以查询实际上是“选择 20、20-1、20+1”),因为如果我确实尝试制作我需要的东西:
\set beforemin '\'' :before ' minutes\''
事实证明,我所拥有的是“20-1 分钟”——这与查询中的预期不符。
是否有可能使 psql 变量作为数字工作,或者是否超出了这些范围,所以我将不得不用其他语言或函数定义查询?
我有一个带有时间戳数据的表。对于所有行,我想找到最接近 20 分钟后和 15 到 25 分钟后的行。
例如,如果桌子像
CREATE TABLE foo(id,ts)
AS VALUES
( 1::int, '2017.10.27T10:12:15'::timestamp with time zone ),
( 2, '2017.10.27T10:24:17' ),
( 3, '2017.10.27T10:30:22' ),
( 4, '2017.10.27T10:40:12' ),
( 5, '2017.10.27T10:52:16' ),
( 6, '2017.10.27T10:53:11' );
然后我运行一个查询
select t1.id as base t2.id as after
from table t1, table t2 where ??
我想得到答案:
base after
1 3
2 4
3 5
对于 4,5 和 6 作为基础,我没有得到任何结果,因为没有符合我的标准的行
对于给定的时间戳,很容易得到这个:
select id from table where timestamp > $mytimestamp+'00:15:00'
and timestamp < $mytimestamp + '00:25:00'
order by
abs(extract ( epoch from (timestamp -($mytimestamp + '00:20:00')))
limit 1;
但是如何对表中的所有行执行此操作?
我们正在工作中建立一个 PostgreSQL 9.1 数据库。数据库中没有分类数据,但我们想知道谁在做什么。我们在网络上使用 LDAP 身份验证,因此我们也希望将其用于数据库,但根据文档,无论如何都需要将所有用户定义为数据库用户。
我们当然可以将用户“转储”到数据库中,但我们希望能够在用户在 LDAP 中通过身份验证后立即在数据库中定义用户。使用包装脚本不会太难,但有没有可能直接做到这一点?(大多数用户使用 登录psql
。)
我正在寻找一种方法来复制 postgresql 数据库(运行服务器版本 9.1)。我希望镜像能够让一台服务器(从服务器)站在我们的防火墙之外。我一直在研究 slony 和流式复制——在这两种情况下,从服务器需要与主服务器通信,出于安全原因,我希望情况并非如此。理想情况下,我希望主人将更改发送给奴隶而不期待任何答复。有没有这样的系统?
(当然,我知道如果slave宕机了,或者其他什么原因收不到数据,master是不知道的,但是我们有其他的工具可以随时关注服务器的问题,这也是可以接受的)