时间序列数据

您的数据是时间序列吗?PostgreSQL 和 Timescale 支持的数据类型

A colorful elephant with a matrix grid in the background, representing the various data types.

作者:Ana Tavares Carlota Soto

如果您听说过 Timescale,您就知道我们致力于构建更快、更强大的 PostgreSQL,以支持繁重的工作负载,包括 时间序列数据(或时间数据)。然而,在与我们的社区成员和客户的对话中,我们经常发现,即使人们经常处理时间序列数据,他们也不会将其数据类型称为时间序列数据。 

如果您想知道您的数据是否是时间序列数据,可以使用以下试金石测试:您的数据是否具有某种与其相关的时间戳或时间元素,即使这可能不是其主要维度?如果答案是“是”,那么您就是在处理时间序列数据。我们试图在名为“您有时间序列数据吗?”的文章中涵盖了这个主题,但为了使事情尽可能清楚,我们列出了 PostgreSQL 和 Timescale 支持的所有数据类型。

Timescale 的工作原理与 PostgreSQL 完全相同(我们团队设计了一些很酷的优化,使其速度极快),但这两个数据库都可以处理各种数据类型,从而满足不同部门的多样化需求。在本文中,我们将列出其中许多数据类型,并且随着我们向产品组合中添加更多用例,您可以预期此列表会不断增长。

现在,您的数据是……

传感器数据

PostgreSQL 和 Timescale 可以处理和存储传感器数据,使其成为物联网应用的理想选择。例如,它们可以捕获 温度或湿度传感器读数 以进行分析,或者捕获 房地产使用数据以优化大型房地产足迹,以及物联网传感器收集的许多其他数据点。

CREATE TABLE smart_home_data (
    timestamp TIMESTAMPTZ NOT NULL,
    device_id UUID NOT NULL,
    temperature DOUBLE PRECISION,
    motion_detected BOOLEAN,
    PRIMARY KEY(timestamp, device_id)
);

交易数据/金融交易/客户交易/订单历史记录

交易数据、金融交易或客户交易,或者订单历史记录——无论您如何称呼这些数据,这些数据库都能很好地容纳它们。此类别涵盖从购买到 ATM 取款再到在线购物活动的所有内容,便于对用户行为进行全面分析。

CREATE TABLE financial_transactions (
    transaction_id SERIAL PRIMARY KEY,
    customer_id INT NOT NULL,
    timestamp TIMESTAMPTZ NOT NULL,
    amount DECIMAL(20,2) NOT NULL,
    transaction_type VARCHAR(50) NOT NULL,
    description TEXT
);

运营分析/应用程序数据

PostgreSQL 和 Timescale 可以管理来自各种应用程序的数据,包括 运营分析 和实时应用程序。这有助于提高应用程序的效率并解决问题。运营分析尤其适用于涉及业务运营分析的分析。它可以应用于各种业务领域,例如供应链管理、客户服务、人力资源、生产和物流。

CREATE TABLE operational_data (
    data_id SERIAL PRIMARY KEY,
    app_id INT NOT NULL,
    timestamp TIMESTAMPTZ NOT NULL,
    cpu_usage DECIMAL(5,2) NOT NULL,
    memory_usage DECIMAL(5,2) NOT NULL,
    response_time INT NOT NULL,
    error_rate DEC
);

车队数据/物流

对于运输或配送公司,车队数据(如车辆位置、状况和使用统计数据)可以通过这些数据库得到很好的管理。如今,送货车辆都配备了 GPS 跟踪器,可以频繁记录其位置和速度。这使配送公司能够实时跟踪路线、优化行驶时间、改进安全协议并确保准时送达。使用 PostgreSQL/Timescale,管理这些数据变得简单高效,突出了技术信息方法对物流的好处。

CREATE TABLE fleet_data (
    record_id SERIAL PRIMARY KEY,
    vehicle_id INT NOT NULL,
    timestamp TIMESTAMPTZ NOT NULL,
    location GEOGRAPHY NOT NULL,
    speed DECIMAL(5,2) NOT NULL,
    fuel_level DECIMAL(5,2),
    engine_status BOOLEAN NOT NULL
);

指标数据

指标数据(包括能源指标)也可以由 PostgreSQL 和 Timescale 处理,提供对能源使用模式和效率的重要见解。下面是一个例子:为了提高能源效率,办公楼在每一层都使用了智能传感器,以持续跟踪电力使用情况、照明水平、温度和房间占用率。该系统在一个标准工作日内可以生成数百万个数据点。 

CREATE TABLE energy_metrics (
    metric_id SERIAL PRIMARY KEY,
    timestamp TIMESTAMPTZ NOT NULL,
    facility_id INT NOT NULL,
    power_usage DECIMAL(10,2) NOT NULL,
    voltage DECIMAL(10,2) NOT NULL,
    current DECIMAL(10,2) NOT NULL,
    efficiency DECIMAL(5,2)
);

报价数据/金融科技数据/交易数据

这些数据库能够处理金融科技数据,包括 交易数据报价数据。高频交易应用程序每秒多次跟踪个别股票或加密货币的价格波动,每天为每个代码积累数百万条记录。这种数据分析使交易者能够识别市场趋势、预测价格变化并规划其策略。此外,实时分析能够对市场变化做出即时反应,从而抓住机遇或将风险降至最低。 

CREATE TABLE tick_data (
    tick_id SERIAL PRIMARY KEY,
    timestamp TIMESTAMPTZ NOT NULL,
    symbol VARCHAR(10) NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    volume INT NOT NULL
);

事件数据

PostgreSQL 和 Timescale 可以管理事件数据,捕捉用户与系统或应用程序的每一次交互,并且提供用于增强用户体验的重要见解,以及其他优势。

想象一下,一个在线购物平台,每天有数百万的流量。 每个用户交互——从点击和搜索到将产品添加到购物车,都用时间戳进行了仔细记录。 分析这些事件可以提供有关用户行为的宝贵见解,从而能够优化他们的体验,定制营销策略,检测异常以及改进平台的功能。 这种数据驱动的方法可以显着提高参与度和销售额。 

另一个很好的例子是在线游戏,有时数百万玩家在同一个环境中互动。 这些互动会产生数十亿个数据点,可以通过分析这些数据点来改善游戏动态和游戏内销售。

CREATE TABLE event_data (
    event_id SERIAL PRIMARY KEY,
    user_id INT NOT NULL,
    timestamp TIMESTAMPTZ NOT NULL,
    event_type VARCHAR(50) NOT NULL,
    details JSONB
);

矢量数据

在地理空间分析领域,这些数据库可以处理矢量数据。 矢量数据是一种地理空间数据,将对象表示为点、线或多边形。 它可以包含有关建筑物、道路和水体等物理特征的信息,以及有关行政边界和选区等抽象特征的信息。 矢量数据通常用于地理信息系统 (GIS) 中,用于空间分析、制图和可视化。

气象数据

气象数据是指在特定位置和时间收集和记录的有关大气条件的信息。 这些数据可以包括温度、湿度、风速和风向、压力、降水量和其他气象变量。 

想象一下,一个研究机构致力于解码地球长达一个世纪的气候历史。 他们积累了全球每小时的气象数据,跟踪温度、湿度、降雨量和风速。 对过去天气趋势的深入研究使他们能够识别模式,将气候事件联系起来,预测未来的异常情况,并为气候变化对话贡献重要的见解。

CREATE TABLE weather_data (
    record_id SERIAL PRIMARY KEY,
    location_id INT NOT NULL,
    timestamp TIMESTAMPTZ NOT NULL,
    temperature DECIMAL(5,2),
    humidity DECIMAL(5,2),
    wind_speed DECIMAL(5,2),
    wind_direction DECIMAL(5,2),
    pressure DECIMAL(7,2),
    precipitation DECIMAL(5,2)
);

保险数据

这些数据库可以有效管理保险数据,包括保单详细信息、索赔历史和客户记录,以便准确地评估风险和处理索赔。

想象一下,一家领先的保险公司每天处理数千起不同的索赔。 每个索赔电话都会被彻底记录下来,包括通话时间、持续时间、索赔性质和来电者情绪模式等详细信息。 这些数据使他们能够发现索赔趋势,评估其索赔处理效率,完善客户服务策略,识别潜在的欺诈行为,并最终增强运营,以提供更有效、更高效的保单持有人服务。 

CREATE TABLE insurance_data (
    record_id SERIAL PRIMARY KEY,
   policy_number VARCHAR(50) NOT NULL,
    customer_id INT NOT NULL,
    issue_date TIMESTAMPTZ NOT NULL,
    expiry_date TIMESTAMPTZ,
    coverage_type VARCHAR(50) NOT NULL,
    coverage_amount DECIMAL(20,2) NOT NULL,
    premium DECIMAL(10,2) NOT NULL,
  claim_status VARCHAR(50)
);

通话记录

对于电信公司而言,这些数据库可以高效地处理通话记录,从而帮助进行计费、欺诈检测和网络优化。

CREATE TABLE call_records (
    call_id SERIAL PRIMARY KEY,
    caller_id INT NOT NULL,
    receiver_id INT NOT NULL,
   start_time TIMESTAMPTZ NOT NULL,
   end_time TIMESTAMPTZ NOT NULL,
    call_duration INT NOT NULL,
    call_type VARCHAR(20) NOT NULL,
    location GEOGRAPHY
);

您有时间序列数据吗? ✅

所以,也许您认为您没有时间序列数据,而这篇文章改变了您的想法。 也许您知道您有一个时间序列问题,但您以不同的方式称呼它(以上任何一种)。 

无论哪种方式,请记住 PostgreSQL 和 Timescale 支持所有这些类型的数据,这使得它们成为各个行业的通用选择。 虽然它们为许多数据管理需求提供了灵活可靠的解决方案,但Timescale 具有优势,允许您将数据与历史数据一起存储和查询。 只需看看我们的一些时间序列分析示例

如果您需要扩展 PostgreSQL,我们还有其他方法可以帮助您。 😼 您的查询是否变得越来越慢? 您的数据库性能是否在下降? 了解如何通过超表自动进行 Postgres 分区来解决此问题