时间序列数据库的新时代:dbForge Studio for PostgreSQL + TimescaleDB

dbForge Studio for PostgreSQL的最新更新在其支持的数据库列表中又添加了一项。我们谈论的是 TimescaleDB,它是一个 PostgreSQL 分支,被宣传为“最简单、最快、最具成本效益的时间序列数据库”。现在可以从 Studio 无缝访问和管理它 - 这就是我们的故事。

如果您不熟悉 TimescaleDB,您将在下面获得了解所有信息的最快方法。如果您已经是活跃用户,那么在阅读本文后您很可能会发现一个出色的数据库管理工具,它将使您的日常工作变得轻而易举。不管怎样,系好安全带,我们走吧!

TimescaleDB 有何用途?

TimescaleDB被设计为常规 PostgreSQL 的卓越即服务替代品,它保留了其所有优点,包括与 PostgreSQL 工具、驱动程序和连接器的整个生态系统的兼容性,同时还具有显着提高的性能、更好的可扩展性和时间序列超函数。后者是 TimescaleDB 的主要关注点。

如果您不知道什么是时间序列数据库,让我们解释一下。它是一个允许存储、检索和管理带时间戳的数据的数据库。这包括属于所谓“时间序列”一部分的数据记录,其中数据点与时间戳相关联,并且所述时间戳定义数据点之间的实际关系。

让我们用一个简单的例子来更清楚地说明这一点。想象一下一个应用程序,它不断地从传感器检索测量结果,并允许您实时监控它们。这肯定是一个很大的数据流,但它很方便地带有时间戳,并且您始终可以从任何时间段检索所需的数据点以进行后续分析。

时间序列数据库与超表一起使用,超表是一种特定类型的表,旨在通过根据其时间参数对时间序列数据进行分区来提高性能。更准确地说,超表由多个称为块的常规 PostgreSQL 子表组成。块是基于特定时间约束的分区,因此包含特定时间范围内的数据。然而,它并不像听起来那么复杂 - 由于块是由数据库自动设置和管理的,因此您可以像存储在标准表中一样管理数据。

这是常规表与超表的比较,其中块时间跨度等于 1 天。 

顺便说一下,超表和标准 PostgreSQL 表可以轻松地共存于同一个数据库中。您只需对时间序列数据使用超表,对关系数据使用标准表,仅此而已。

现在,了解了基础知识后,我们将向您展示如何安装自托管 TimescaleDB 数据库并使用 dbForge Studio for PostgreSQL 连接到该数据库。

如何安装 TimescaleDB 扩展并连接 dbForge Studio for PostgreSQL

您需要做的第一件事是添加两个系统环境变量:和。要做到这一点:C:\Program Files\PostgreSQL\15\binC:\Program Files\Git\mingw64\bin

  1. 转到“开始”菜单,开始输入“环境变量”,系统将提示您打开“编辑系统环境变量”
  2. 单击它打开“系统属性”窗口。在那里,单击环境变量
  3. 在打开的环境变量窗口中,找到系统变量下的路径,选择它并单击编辑
  4. 在打开的编辑环境变量窗口中,单击新建并添加上述两个变量。
  5. 最后,单击“确定”应用您的更改。

现在让我们向您展示如何在 Windows 计算机上安装自托管 TimescaleDB。以下指南是官方TimescaleDB 安装手册的简明版本。如果安装过程中出现任何问题,请随时咨询以获取更多详细信息。

先决条件

  • 操作系统: Microsoft Windows 10 / Microsoft Windows 11 / Microsoft Windows Server 2019
  • 支持的最低 PostgreSQL 版本为:12.8 / 13.5 / 14.0 / 15.0;为了安装 PostgreSQL 15.1.1 或更高版本,请确保您的计算机上已安装 OpenSSL 1.1.1

在 Windows 上安装自托管 TimescaleDB

  1. Microsoft 网站下载并安装Visual C++ Redistributable for Visual Studio
  2. PostgreSQL 网站下载并安装PostgreSQL。您可能需要将pg_config文件位置添加到您的路径中。
  3. 从Windows 版本下载 TimescaleDB 安装 .zip 文件。
  4. 找到下载的存档并解压文件。
  5. 在解压的 TimescaleDB 目录中,右键单击setup.exe文件并选择以管理员身份运行以启动安装程序。
  6. 完成安装后,您需要配置数据库。您可以通过运行timescaledb-tune脚本来完成此操作,该脚本包含在timescaledb-tools包中。

设置 TimescaleDB 扩展

1. 转到命令提示符并以postgres超级用户身份连接到 PostgreSQL 实例。

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">psql </span></span><span style="color:#666600"><span style="color:#666600">-</span></span><span style="color:#000000"><span style="color:#000000">U postgres </span></span><span style="color:#666600"><span style="color:#666600">-</span></span><span style="color:#000000"><span style="color:#000000">h localhost</span></span></code></span></span>

如果连接成功,您将看到类似以下内容的消息,然后是提示psql

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">psql </span></span><span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#006666"><span style="color:#006666">13.3</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000"> server </span></span><span style="color:#006666"><span style="color:#006666">12.8</span></span> <span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#660066"><span style="color:#660066">Ubuntu</span></span> <span style="color:#006666"><span style="color:#006666">12.8</span></span><span style="color:#666600"><span style="color:#666600">-</span></span><span style="color:#006666"><span style="color:#006666">1.pgdg21.04</span></span><span style="color:#666600"><span style="color:#666600">+</span></span><span style="color:#006666"><span style="color:#006666">1</span></span><span style="color:#666600"><span style="color:#666600">))</span></span>
<span style="color:#000000"><span style="color:#000000">SSL connection </span></span><span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#000000"><span style="color:#000000">protocol</span></span><span style="color:#666600"><span style="color:#666600">:</span></span> <span style="color:#660066"><span style="color:#660066">TLSv1</span></span><span style="color:#666600"><span style="color:#666600">.</span></span><span style="color:#006666"><span style="color:#006666">3</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000"> cipher</span></span><span style="color:#666600"><span style="color:#666600">:</span></span><span style="color:#000000"><span style="color:#000000"> TLS_AES_256_GCM_SHA384</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000"> bits</span></span><span style="color:#666600"><span style="color:#666600">:</span></span> <span style="color:#006666"><span style="color:#006666">256</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000"> compression</span></span><span style="color:#666600"><span style="color:#666600">:</span></span><span style="color:#000000"><span style="color:#000000"> off</span></span><span style="color:#666600"><span style="color:#666600">)</span></span>
<span style="color:#660066"><span style="color:#660066">Type</span></span> <span style="color:#008800"><span style="color:#008800">"help"</span></span> <span style="color:#000088"><span style="color:#000088">for</span></span><span style="color:#000000"><span style="color:#000000"> help</span></span><span style="color:#666600"><span style="color:#666600">.</span></span>
<span style="color:#000000"><span style="color:#000000">tsdb</span></span><span style="color:#666600"><span style="color:#666600">=></span></span></code></span></span>

2. 根据psql提示,创建一个空数据库。这是名为example的数据库的样子:

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">CREATE database example</span></span><span style="color:#666600"><span style="color:#666600">;</span></span></code></span></span>

3. 接下来,使用以下命令连接到您创建的数据库:

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">\c example</span></span></code></span></span>

4.然后添加TimescaleDB扩展:

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">CREATE EXTENSION IF NOT EXISTS timescaledb</span></span><span style="color:#666600"><span style="color:#666600">;</span></span></code></span></span>

5. 最后,您可以使用以下命令连接到数据库:

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">psql </span></span><span style="color:#666600"><span style="color:#666600">-</span></span><span style="color:#000000"><span style="color:#000000">U postgres </span></span><span style="color:#666600"><span style="color:#666600">-</span></span><span style="color:#000000"><span style="color:#000000">h localhost </span></span><span style="color:#666600"><span style="color:#666600">-</span></span><span style="color:#000000"><span style="color:#000000">d example</span></span></code></span></span>

通过 dbForge Studio 连接到 TimescaleDB

现在我们将使用dbForge Studio for PostgreSQL 连接到新创建的数据库,这是一个用于数据库开发和管理的高级 IDE。当我们打开它时,我们会看到“数据库连接属性”窗口,我们可以在其中输入新创建的数据库的凭据。

然后我们点击Connect,就可以了!

注意:用于 PostgreSQL 的 dbForge Studio 既可以单独提供,也可以作为名为dbForge Edge 的捆绑包的一部分提供,其中包含另外三个用于 SQL Server、MySQL 和 Oracle 数据库的 Studio。

如何在 TimescaleDB 中创建超级表

现在让我们继续创建我们的第一个超级表。为此,我们将在 dbForge Studio 中运行以下查询。

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">CREATE TABLE conditions</span></span><span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#000000"><span style="color:#000000">
tstamp timestamptz NOT NULL</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000">
device VARCHAR</span></span><span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#006666"><span style="color:#006666">32</span></span><span style="color:#666600"><span style="color:#666600">)</span></span><span style="color:#000000"><span style="color:#000000"> NOT NULL</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000">
temperature FLOAT NOT NULL</span></span><span style="color:#666600"><span style="color:#666600">);</span></span>
 <span style="color:#000000"><span style="color:#000000">
SELECT create_hypertable</span></span><span style="color:#666600"><span style="color:#666600">(</span></span>
<span style="color:#008800"><span style="color:#008800">'conditions'</span></span><span style="color:#666600"><span style="color:#666600">,</span></span> <span style="color:#008800"><span style="color:#008800">'tstamp'</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000">
chunk_time_interval </span></span><span style="color:#666600"><span style="color:#666600">=></span></span><span style="color:#000000"><span style="color:#000000"> INTERVAL </span></span><span style="color:#008800"><span style="color:#008800">'1 day'</span></span>
<span style="color:#666600"><span style="color:#666600">);</span></span></code></span></span>

这就是 Studio 界面中的样子。

注意:具有列分区的替代查询如下所示:

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">SELECT create_hypertable</span></span><span style="color:#666600"><span style="color:#666600">(</span></span>
<span style="color:#008800"><span style="color:#008800">'conditions'</span></span><span style="color:#666600"><span style="color:#666600">,</span></span> <span style="color:#008800"><span style="color:#008800">'tstamp'</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000">
partitioning_column </span></span><span style="color:#666600"><span style="color:#666600">=></span></span> <span style="color:#008800"><span style="color:#008800">'device'</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000">
number_partitions </span></span><span style="color:#666600"><span style="color:#666600">=></span></span> <span style="color:#006666"><span style="color:#006666">8</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000">
chunk_time_interval </span></span><span style="color:#666600"><span style="color:#666600">=></span></span><span style="color:#000000"><span style="color:#000000"> INTERVAL </span></span><span style="color:#008800"><span style="color:#008800">'1 day'</span></span><span style="color:#666600"><span style="color:#666600">);</span></span></code></span></span>

运行查询后,我们的表已成功创建,我们可以立即向其中填充数据。为此,我们使用以下查询。

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">INSERT INTO conditions</span></span><span style="color:#000000"><span style="color:#000000">
SELECT</span></span><span style="color:#000000"><span style="color:#000000">
tstamp</span></span><span style="color:#666600"><span style="color:#666600">,</span></span> <span style="color:#008800"><span style="color:#008800">'device-'</span></span> <span style="color:#666600"><span style="color:#666600">||</span></span> <span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#000000"><span style="color:#000000">random</span></span><span style="color:#666600"><span style="color:#666600">()*</span></span><span style="color:#006666"><span style="color:#006666">30</span></span><span style="color:#666600"><span style="color:#666600">)::</span></span><span style="color:#000000"><span style="color:#000000">INT</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000"> random</span></span><span style="color:#666600"><span style="color:#666600">()*</span></span><span style="color:#006666"><span style="color:#006666">80</span></span> <span style="color:#666600"><span style="color:#666600">-</span></span> <span style="color:#006666"><span style="color:#006666">40</span></span><span style="color:#000000"><span style="color:#000000">
FROM</span></span><span style="color:#000000"><span style="color:#000000">
generate_series</span></span><span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#000000"><span style="color:#000000">
NOW</span></span><span style="color:#666600"><span style="color:#666600">()</span></span> <span style="color:#666600"><span style="color:#666600">-</span></span><span style="color:#000000"><span style="color:#000000"> INTERVAL </span></span><span style="color:#008800"><span style="color:#008800">'90 days'</span></span><span style="color:#666600"><span style="color:#666600">,</span></span><span style="color:#000000"><span style="color:#000000">
NOW</span></span><span style="color:#666600"><span style="color:#666600">(),</span></span>
<span style="color:#008800"><span style="color:#008800">'1 min'</span></span>
<span style="color:#666600"><span style="color:#666600">)</span></span><span style="color:#000000"><span style="color:#000000"> AS tstamp</span></span><span style="color:#666600"><span style="color:#666600">;</span></span></code></span></span>

这就是工作室里的样子。

现在让我们使用 SELECT 查询来检查它。瞧!我们已经拿到数据了。

我们也可以使用以下代码查看块:

<span style="background-color:#f1f1f1"><span style="color:#656871"><code><span style="color:#000000"><span style="color:#000000">SELECT show_chunks</span></span><span style="color:#666600"><span style="color:#666600">(</span></span><span style="color:#008800"><span style="color:#008800">'conditions'</span></span><span style="color:#666600"><span style="color:#666600">);</span></span>
 
<span style="color:#666600"><span style="color:#666600">--</span></span> <span style="color:#660066"><span style="color:#660066">The</span></span> <span style="color:#000088"><span style="color:#000088">function</span></span><span style="color:#000000"><span style="color:#000000"> selects chunks </span></span><span style="color:#000088"><span style="color:#000088">from</span></span><span style="color:#000000"><span style="color:#000000"> the following view</span></span><span style="color:#000000"><span style="color:#000000">
SELECT </span></span><span style="color:#666600"><span style="color:#666600">*</span></span><span style="color:#000000"><span style="color:#000000"> FROM timescaledb_information</span></span><span style="color:#666600"><span style="color:#666600">.</span></span><span style="color:#000000"><span style="color:#000000">chunks</span></span><span style="color:#666600"><span style="color:#666600">;</span></span></code></span></span>

一旦我们运行它,这就是我们得到的。

现在让我们向您展示 dbForge Studio 应用于 TimescaleDB 数据库的一些最重要的功能。

TimescaleDB 中的代码完成、格式化和语法检查

首先,我们来谈谈 dbForge 数据库解决方案的首要要素之一:SQL 编码帮助。它完全为您服务,从上下文感知的代码完成和语法验证(帮助您以更快的速度编写干净、无错误的 SQL 代码),到带有一组丰富的选项和模板的高级 SQL 格式化,旨在帮助创建统一、一致的代码风格。

TimescaleDB 中的架构和数据比较

Studio 的集成工具Schema Compare提供了发现 TimescaleDB 数据库对象差异的最简单方法。就像使用常规 PostgreSQL 数据库一样,您可以设置源、设置目标并运行比较。之后,可以查看差异并将其同步到目标数据库。

比较实际的表数据怎么样?好吧,由于块基本上是您的常规表,因此 Studio 可以毫无问题地比较整个超表并识别差异。这对于往往处理大量数据的时间序列数据库特别有用。同样,差异也可以在短时间内同步。

注意数据比较模式比较也可作为独立应用程序用于 PostgreSQL。

在 TimescaleDB 中测试数据生成

最后,您可以使用 Studio 的内置数据生成器用真实的测试数据填充 TimescaleDB 数据库。大量预定义生成器将快速提供任意数量的列智能数据,并根据您的数据库的具体情况进行定制。如果这还不够,您可以轻松创建自己的自定义生成器。

TimescaleDB 的实际应用:用例和业务应用程序

现在您已经了解了 TimescaleDB 的工作原理,让我们为您提供几个可以应用时序数据库的案例:

  • 数据驱动的预测分析
  • 使用物联网设备遥测数据的软件
  • 涉及快速变化的金融市场数据的解决方案
  • 电信
  • 机器学习算法
  • 系统或应用程序性能监控软件
  • 安全应用

猜你喜欢

转载自blog.csdn.net/m0_67129275/article/details/131697935