Linux/macOS | Linux i386 | 视窗 | 覆盖性 | 代码覆盖率 | 开放SSF |
---|---|---|---|---|---|
TimescaleDB 是一个开源数据库,旨在使 SQL 对于时间序列数据具有可扩展性。它由 PostgreSQL 设计而成,并打包为 PostgreSQL 扩展,提供跨时间和空间的自动分区(分区键),以及完整的 SQL 支持。
如果您不想安装或管理TimescaleDB实例,请尝试 Timescale,这是我们完全托管的云产品(按需付费,开始免费试用)。
要确定哪个选项最适合您,请参阅Timescale 产品 ,了解有关我们的 Apache-2 版本、TimescaleDB 社区(自托管)和 Timescale Cloud(托管)的更多信息,包括:功能比较、常见问题解答、文档和支持。
下面是TimescaleDB的介绍。欲了解更多信息,请查看以下其他资源:
为了参考和清晰起见,此存储库中的所有代码文件在其标头中都引用了许可(Apache-2-开源许可证或Timescale License (TSL)
)。-DAPACHE_ONLY=1
Apache-2 许可的二进制文件可以通过传递到来构建bootstrap
。
(要从源代码构建 TimescaleDB,请参阅从源代码构建中的说明。)
TimescaleDB 通过跨时间和空间的自动分区(分区键)来扩展 PostgreSQL 的时间序列数据,但保留了标准的 PostgreSQL 接口。
换句话说,TimescaleDB 公开了看起来像常规表的内容,但实际上只是包含实际数据的许多单独表的抽象(或虚拟视图)。这个单表视图,我们称为 超表,由许多块组成,这些块是通过在一维或二维上对超表的数据进行分区而创建的:按时间间隔和(可选)“分区键”,例如设备id、位置、用户id等(架构讨论)
事实上,所有用户与 TimescaleDB 的交互都是通过超表进行的。创建表和索引、更改表、插入数据、选择数据等都可以(并且应该)在超表上执行。
从使用和管理的角度来看,TimescaleDB 看起来和感觉就像 PostgreSQL,并且可以像 PostgreSQL 一样进行管理和查询。
PostgreSQL 的开箱即用设置对于现代服务器和 TimescaleDB 来说通常过于保守。您应该确保postgresql.conf
通过使用timescaledb-tune
或手动调整您的设置。
-- Do not forget to create timescaledb extension CREATE EXTENSION timescaledb;-- We start by creating a regular SQL table CREATE TABLE conditions ( time TIMESTAMPTZ NOT NULL, location TEXT NOT NULL, temperature DOUBLE PRECISION NULL, humidity DOUBLE PRECISION NULL );
-- Then we convert it into a hypertable that is partitioned by time SELECT create_hypertable('conditions', 'time');
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
将数据插入超表是通过普通 SQL 命令完成的:
INSERT INTO conditions(time, location, temperature, humidity) VALUES (NOW(), 'office', 70.0, 50.0);SELECT * FROM conditions ORDER BY time DESC LIMIT 100;
SELECT time_bucket('15 minutes', time) AS fifteen_min, location, COUNT(*), MAX(temperature) AS max_temp, MAX(humidity) AS max_hum FROM conditions WHERE time > NOW() - interval '3 hours' GROUP BY fifteen_min, location ORDER BY fifteen_min DESC, max_temp DESC;
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
此外,TimescaleDB 还包含普通 PostgreSQL 中不存在的用于时间序列分析的附加函数。(例如time_bucket
上面的函数。)
TimescaleDB 已针对多个平台(Linux、Docker、MacOS、Windows)进行了预打包。更多信息可以在我们的文档中找到。
要从源代码构建,请参阅 此处的说明。
Timescale是云中完全托管的 TimescaleDB,可通过免费试用获得。在预安装了 TimescaleDB 的云中创建 PostgreSQL 数据库,以便您可以使用 TimescaleDB 为您的应用程序提供支持,而无需管理开销。
- timescaledb-tune:帮助根据系统资源设置 PostgreSQL 配置设置。
- timescaledb-parallel-copy:通过在多个工作进程中使用 PostgreSQL 来并行化初始批量加载
COPY
。
- Timescale 发行说明和未来计划:查看计划和正在进行的更新以及有关当前和过去版本的详细信息。-订阅 Timescale 发行说明以获取有关新版本、修复和早期访问/测试计划的通知。