【问题标题】:Have an ordinary table on a PostgreSQL TimescaleDB (timeseries) database在 PostgreSQL TimescaleDB (timeseries) 数据库上有一个普通表
【发布时间】:2022-01-03 23:10:22
【问题描述】:

对于一个项目,我需要两种类型的表格。

  1. hypertable(这是 PostgreSQL 中的一种特殊类型的表(在 PostgreSQL TimescaleDB 中))用于某些时间序列记录
  2. 我的普通表不是时间序列

我可以创建一个 PostgreSQL TimescaleDB 并在上面存储我的普通表吗? PostgreSQL TimescaleDB 上的所有表都是超表(时间序列)吗?如果没有,如果我将我的普通表存储在 PostgreSQL TimescaleDB 中是否会产生一些开销?

如果可以的话,将我的普通表存储在单独的普通 PostgreSQL 数据库中是否有任何好处?

【问题讨论】:

    标签: postgresql time-series timescaledb


    【解决方案1】:

    我可以创建一个 PostgreSQL TimescaleDB 并在上面存储我的普通表吗?

    当然... TimescaleDB 是作为 PostgreSQL 的扩展提供的,最大的好处之一是您可以将常规 PostgreSQL 表与专业时间序列表一起使用。这包括在带有超表的 SQL 查询中使用常规表。标准 SQL 有效,此外 Timescale 还使用 PostgreSQL 的可扩展性功能创建了一些附加函数。

    所有表都是 PostgreSQL TimescaleDB 上的超表(时间序列)吗?

    不,您必须显式创建一个表作为超表才能实现 TimescaleDB 功能。值得查看 Timescale 文档中的操作指南以获取完整(和最新)详细信息。

    如果没有,如果我将普通表存储在 PostgreSQL TimescaleDB 中是否会产生一些开销?

    我认为没有存储开销。您可能会看到一些性能提升,例如用于数据摄取和查询性能。本文可能有助于澄清https://docs.timescale.com/timescaledb/latest/overview/how-does-it-compare/timescaledb-vs-postgres/

    总体而言,您可以将 TimescaleDB 视为为“香草”PostgreSQL 提供附加功能,因此除非应用程序设计有理由将非时间序列数据分离到单独的数据库中,否则您没有义务这样做。

    另一点,由我们 Slack 社区中一位非常有经验的成员分享 [谢谢 Chris]:

    为我们在一个或单独的数据库中拥有时间序列数据和“正常”数据(规范化)归结为“我们可以异步复制时间序列信息”之类的东西吗? 在我们的例子中,我们使用了两种不同的 pg 系统,一种是异步复制(用于 TimescaleDB),另一种是同步复制(用于所有其他数据)。

    透明度:我为 Timescale 工作

    【讨论】:

    • 感谢您的完整回复。但是关于开销我应该说:我在没有 CTO 的情况下检查它,我知道在时间尺度数据库上创建普通表会产生一些开销。所以最好将普通表和超表分开。无论如何,感谢您的完整回复。
    猜你喜欢
    • 2020-02-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多