Hypertable 和 chunk 超表和块

2023-11-10

文档:https://docs.timescale.com/v0.9/introduction/architecture

概述

TimescaleDB作为PostgreSQL的扩展实现,这意味着Timescale数据库在整个PostgreSQL实例中运行。 该扩展模型允许数据库利用PostgreSQL的许多属性,如可靠性,安全性以及与各种第三方工具的连接性。 同时,TimescaleDB通过在PostgreSQL的查询规划器,数据模型和执行引擎中添加钩子,充分利用扩展可用的高度自定义。

从用户的角度来看,TimescaleDB公开了一些看起来像单数表的称为hypertable的表,它们实际上是一个抽象或许多单独表的虚拟视图,这些表包含称为块的数据。


通过将hypertable的数据划分为一个或多个维度来创建块:所有可编程元素按时间间隔进行分区,并且可以通过诸如设备ID,位置,用户ID等的关键字进行分区。我们有时将此称为分区 横跨“时间和空间”。

Hypertables

与数据交互的主要点是一个可以抽象化的跨越所有空间和时间间隔的单个连续表,从而可以通过标准SQL查询它。

实际上,所有与TimescaleDB的用户交互都是使用可调整的。 创建表格和索引,修改表格,插入数据,选择数据等都可以(也应该)在hypertable上执行。 [跳转到基本的SQL操作]

一个带有列名和类型的标准模式定义了一个hypertable,其中至少一列指定了一个时间值,另一列(可选)指定了一个额外的分区键。

提示:请参阅我们的数据模型,进一步讨论各种组织数据的方法,这取决于用例。最简单和最自然的是在“宽表”中,就像许多关系数据库一样。

单个TimescaleDB部署可以存储多个超表,每个超表具有不同的模式。

在TimescaleDB中创建一个超表需要两个简单的SQL命令:创建表(使用标准SQL语法),然后选择CLEATEYHYTABLE()。

可以在超级表上自动创建时间索引和分区键,但也可以创建附加索引(TimescaleDB支持PostgreSQL索引类型的完整范围)。

chunks

在内部,TimescaleDB自动将每个可分区块分割成块,每个块对应于特定的时间间隔和分区键空间的一个区域(使用散列)。 这些分区是不相交的(非重叠的),这有助于查询计划人员最小化它必须接触以解决查询的组块集合。

每个块都使用标准数据库表来实现。 (在PostgreSQL内部,这个块实际上是一个“父”可变的“子表”。)

块是正确的大小,确保表的索引的所有B树可以在插入期间驻留在内存中。 这可以避免在修改这些树中的任意位置时发生颠簸。

此外,通过避免过大的块,我们可以避免根据自动化保留策略删除删除的数据时进行昂贵的“抽真空”操作。 运行时可以通过简单地删除块(内部表)来执行这些操作,而不是删除单独的行。

单点与集群

TimescaleDB在单节点部署和集群部署(开发中)上执行这种广泛的分区。 虽然分区传统上只用于在多台机器上扩展,但它也允许我们扩展到高写入速率(并改进了并行查询),即使在单台机器上也是如此。

TimescaleDB的当前开源版本仅支持单节点部署。 值得注意的是,TimescaleDB的单节点版本已经在商用机器上基于超过100亿行的超级变量进行了基准测试,而且没有插入性能的损失。

单节点分区的好处

在单台计算机上扩展数据库性能的常见问题是内存和磁盘之间的显着成本/性能折衷。最终,我们的整个数据集不适合内存,我们需要将我们的数据和索引写入磁盘。

一旦数据足够大以至于我们无法将索引的所有页面(例如B树)放入内存中,那么更新树的随机部分可能涉及从磁盘交换数据。像PostgreSQL这样的数据库为每个表索引保留一个B树(或其他数据结构),以便有效地找到该索引中的值。所以,当您索引更多列时,问题会复杂化。

但是由于TimescaleDB创建的每个块本身都存储为单独的数据库表,因此它的所有索引都只能建立在这些小得多的表中,而不是代表整个数据集的单个表。所以,如果我们正确地确定这些块的大小,我们可以将最新的表(和它们的B-树)完全放入内存中,并避免交换到磁盘的问题,同时保持对多个索引的支持。

有关TimescaleDB自适应空间/时间组块的动机和设计的更多信息,请参阅我们的技术博客文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hypertable 和 chunk 超表和块 的相关文章

  • 如何授予所有表的 REFERENCES 权限

    我必须授予REFERENCES登录权限说sql login 我可以给予资助REFERENCES对单个表的权限 例如 GRANT REFERENCES ON Mytable TO sql login 有什么办法可以授予REFERENCES允许
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • postgres 有 CLOSEST 运算符吗?

    我正在寻找这样的东西 给定一个表格 id number 1 7 2 1 25 3 1 01 4 3 0 查询SELECT FROM my table WHEREnumberCLOSEST 1 将返回第 3 行 我只关心数字 现在我有一个程序
  • 数据库错误:值对于类型字符变化来说太长(100)

    我有一个 Django 网站 运行我们几年前在内部构建的迷你 CMS 它使用 postgresql 保存简单的标题和一段文本时 出现以下错误 value too long for type character varying 100 奇怪的
  • sql查询将两列与一列连接起来

    我在 MS Access 2010 中有 2 个表 如下所示 USERS u id u name LOAN l id l from ref users u id l to ref users u id l amount Users u id
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • 是否有可能在 postgres 中捕获外键违规

    我正在尝试将数据插入具有外键约束的表中 如果我插入的行中存在约束违规 我想丢弃该数据 问题是每次我违反约束时 postgres 都会返回一个错误 我是否可以在插入语句中添加一些语句 例如 ON FOREIGN KEY CONSTRAINT
  • Google Cloud SQL - Postgresql 存储不断增长

    我最近开始修补 Google Cloud SQL PostgreSQL 我创建了一个空数据库 在 4 5 天的时间里 其存储使用量已增长到超过 20GB 它一直在上升 但数据库中没有数据 它甚至没有被使用 有谁知道会发生什么以及如何阻止它
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 如何使用 typeorm 在 postgres 中保存 json 对象数组

    我正在尝试在 postgres 中保存 jsonb 类型的对象数组 Entity Column type jsonb array true nullable true testJson object 我在邮递员中发送的json testJs
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是
  • 在sqlite SQL语句中与order by子句结合使用limit

    下面的两条 SQL 语句总是会产生相同的结果集吗 1 SELECT FROM MyTable where Status 0 order by StartTime asc limit 10 2 SELECT FROM SELECT FROM
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N

随机推荐

  • Mysql系列(一) - Mysql的架构体系

    目录 前言 MySQL架构图 连接层 编辑 服务层 连接池 缓存 解析器 优化器 执行器 存储引擎层 MyISAM 与 InnoDB 引擎的区别 如何在两种存储引擎中进行选择 系统文件存储层 数据文件 日志文件 错误日志 binglog和慢
  • ARP学习笔记

    ARP学习笔记 简单情况下的ARP 以太网是最普遍的一种计算机局域网技术 以太网有两类 第一类是经典以太网 第二类是交换式以太网 现主要使用交换式以太网 在以太网 局域网 物理连接搭建后 两台终端第一次通信前 将首先进行ARP 地址解析协议
  • SQL 如何查询某一张表某一字段重复次数,以及重复的字段值

    小插曲 如果你们公司想使用spring cloud进行微服务改造 本人提供完整的解决方案 GITHUB 地址 https github com Mranxiaoranran spring cloud sofa QQ 2767855941 我
  • stream流对集合对象里的时间降序排列

    List
  • This XMLfile does not appear to have any style information associated with it. THe document tree is

    This XMLfile does not appear to have any style information associated with it THe document tree is shown below 1 百度翻译 此X
  • STM32在Keil中使用串口助手打印中文字符出现乱码问题

    问题 问题如下 中文字符显示乱码 但数字正常 原因 通常这种在串口助手打印出现乱码情况 无非是波特率设置错误 不对应 就像一个滴水的水龙头 水滴进一个循环开合的容器 双方速率不能很好匹配 一定会出现水滴不能完全滴进容器 或者完全滴进或者完全
  • HTML5夜晚海上轮船动画js特效代码

    下载地址 HTML5夜晚海上轮船动画特效代码 pixi js制作夜空下海面上迷失的轮船航行动画场景特效 dd
  • Netty网络编程(六):搭建websocket服务器

    一 简介 二 netty中的websocket 1 websocket的版本 2 FrameDecoder和FrameEncoder 3 WebSocketServerHandshaker 4 WebSocketFrame 三 netty中
  • gin框架08--Query 和 post form

    gin框架08 Query 和 post form 介绍 案例 说明 介绍 本文主要介绍 Query 和 post form 并配上相关案例加以理解 通过Query方法可以获取url 中 之后的请求参数 通过PostForm方法可以获取到P
  • 迭代和递归的时间复杂度分析

    文章目录 1 迭代 1 1 常数阶 1 2 线性阶 1 3 对数阶 1 4 平方阶 1 5 多个复杂度的顺序组合 1 6 多个复杂度的选择组合 2 递归 3 习题 4 答案 1 迭代 1 1 常数阶 下面算法的时间复杂度为 O 1 O 1
  • 和小伙伴们一起学Unity3D(四)角色移动之Transform

    经过前三章的介绍 我们终于搞定了游戏界面 从本章开始 我将带大家创造游戏世界 作为一个游戏爱好者 最熟悉的莫过于WASD键 它控制着人物行走 带我们认识游戏世界 那么在Unity3D中我们如何控制人物行走移动呢 本章目标 使用Transfo
  • RJ45网口座子上的LED接法详解

    搞硬件的朋友 经常免不了会用到RJ45网口座子 但是你会发现在许多参考设计中 RJ45上的LED接线方式经常各不相同 许多朋友可能并不是很在意这个 认为只要网络通了就行 此外在进行物料替换的时候 通常也只是关注4对差分信号的连接方式 并不怎
  • 2023华为OD机试真题【补种未成活胡杨】

    题目内容 近些年来 我国防沙治沙取得显著成果 某沙漠新种植N棵胡杨 编号1 N 排成一排 一个月后 有M棵胡杨未能成活 现可补种胡杨K棵 请问如何补种 只能补种 不能新种 可以得到最多的连续胡杨树 输入描述 N 总种植数量 M 未成活胡杨数
  • web自动化测试从安装到实战(全)

    1 什么是Web自动化测试 让程序代替人工自动验证web项目功能的过程 预期结果和实际结果的比较 2 为什么要在做Web自动化测试 在较少的时间内运行更多和测试用例 脚本可重复执行 减少人为的错误 克服手工测试的局限 3 在什么场景下适合做
  • XCode 编译ffmpeg

    环境 macOS10 13 3 Xcode9 4 1 FFmpeg4 0 2 准备 brew install sdl2 brew命令如果出错 要能是版本问题 可按以下命令卸载后 重新安装brew usr bin ruby e curl fs
  • git分支切换

    在git中 可利用checkout命令转换分支 该命令的作用就是切换分支或恢复工作树文件 语法为 git checkout 分支名 当参数设置为 b 时 可以在新分支创建的同时切换分支 语法为 git checkout b 分支名 本文操作
  • 计及源-荷双重不确定性的虚拟电厂/微网日前随机优化调度

    目录 1主要内容 1 1 场景生成及缩减 1 2 随机优化调度 2 程序链接 1主要内容 程序主要做的是一个虚拟电厂或者微网单元的日前优化调度模型 考虑了光伏出力和负荷功率的双重不确定性 采用随机规划法处理不确定性变量 构建了虚拟电厂随机优
  • 计算机端口详解(总结)

    计算机端口详解 总结 https blog csdn net qq 17204441 article details 89063083 0x00 什么是端口 0x01 端口的分类 0x02 端口在入侵中的作用 0x03 端口的相关工具 0x
  • 第十届蓝桥杯 JavaA 迷宫

    第十届蓝桥杯 JavaA 迷宫 法一 思路 bfs path记录路径 1 编程https www cnblogs com woxiaosade p 10592061 html 2 观察https www cnblogs com yzm10
  • Hypertable 和 chunk 超表和块

    文档 https docs timescale com v0 9 introduction architecture 概述 TimescaleDB作为PostgreSQL的扩展实现 这意味着Timescale数据库在整个PostgreSQL