TimescaleDB多节点功能概述

news2024/11/17 1:41:36

如果您有更大的pb级工作负载,则可能需要多个TimescaleDB实例。TimescaleDB多节点允许您运行和管理数据库集群,这可以为您提供更快的数据摄取,以及对大型工作负载响应更快、更高效的查询。

多节点架构

多节点TimescaleDB允许您将多个数据库连接到一个逻辑分布式数据库中,以组合许多物理PostgreSQL实例的处理能力。
其中一个数据库存在于一个访问节点上,并存储其他数据库的元数据。其他数据库位于数据节点上并保存实际数据。理论上,一个PostgreSQL实例可以同时作为不同数据库中的访问节点和数据节点。但是,建议不要使用混合设置,因为它可能会很复杂,并且服务器实例的配置通常会根据它们所服务的角色而有所不同。

对于自托管安装,创建一个可以充当访问节点的服务器,然后使用该访问节点在其他服务器上创建数据节点。
当您配置了多节点TimescaleDB时,访问节点协调数据块在数据节点上的放置和访问。在大多数情况下,建议您使用多维分区在时间和空间两个维度上跨块分发数据。本节图展示了一个接入节点如何在同一时间间隔内跨多个数据节点(DN1、DN2和DN3)进行数据分区。
在这里插入图片描述
数据库用户连接到访问节点以发出命令和执行查询,类似于连接到常规单节点TimescaleDB实例的方式。在大多数情况下,不需要直接连接到数据节点。

由于TimescaleDB作为特定数据库中的扩展而存在,因此可以在同一访问节点上同时拥有分布式和非分布式数据库。也可以使用几个使用不同物理实例集作为数据节点的分布式数据库。然而,在本节中,假设您有一个具有一致数据节点集的单一分布式数据库。

分布式超表

如果在分布式数据库上使用常规表或超级表,则它们不会自动分布。常规表和超级表继续像往常一样工作,即使底层数据库是分布式的。要启用多节点功能,需要在访问节点上显式创建一个分布式超表,以使用数据节点。分布式超级表与常规超级表类似,但不同之处在于,块分布在数据节点上,而不是在本地存储上。通过分布数据块,可以将数据节点的处理能力结合起来,以实现更高的摄取吞吐量和更快的查询。然而,实现良好性能的能力高度依赖于数据如何跨数据节点进行分区。
为了获得良好的摄取性能,可以分批写入数据,每个批次包含可以分布在多个数据节点上的数据。要获得良好的查询性能,请将查询分散到许多节点,并使结果集相对于处理的数据量较小。要实现这一点,重要的是要考虑适当的分区方法。

分区方式

摄取到分布式超级表中的数据根据所选择的分区方法分布在数据节点上。可以从访问节点发送到多个数据节点并同时处理的查询通常比在单个数据节点上运行的查询运行得更快,因此考虑您拥有的数据类型以及希望运行的查询类型非常重要。
TimescaleDB多节点目前支持的功能使其最适合按时间和位置等空间维度进行分区的大容量时间序列工作负载。如果您经常运行跨多个位置和设备聚合数据的广泛查询,请选择这种分区方法。例如,这样的查询在按时间和位置分区的数据库上更快,因为它将工作并行地分布在所有数据节点上:

SELECT time_bucket('1 hour', time) AS hour, location, avg(temperature)
FROM conditions
GROUP BY hour, location
ORDER BY hour, location
LIMIT 100;

如果您需要更快的插入性能,那么根据时间和空间维度(如位置)进行分区也是最好的。如果只按时间进行分区,并且插入通常是按时间顺序进行的,那么每次总是写入一个数据节点。按时间和位置进行分区意味着按时间排序的插入分布在多个数据节点上,这可以带来更好的性能。
如果您主要在单个位置上运行深度时间查询,那么仅根据时间维度或位置以外的空间维度进行分区可能会获得更好的性能。例如,这样的查询在仅按时间分区的数据库上更快,因为单个位置的数据分布在所有数据节点上,而不是在单个数据节点上:

SELECT time_bucket('1 hour', time) AS hour, avg(temperature)
FROM conditions
WHERE location = 'office_1'
GROUP BY hour
ORDER BY hour
LIMIT 100;

事务与一致性模型

发生在分布式超级表上的事务是原子的,就像常规超级表上的事务一样。这意味着涉及多个数据节点的分布式事务保证要么在所有节点上成功,要么在任何节点上都不成功。这种保证是由两阶段提交协议提供的,该协议用于在TimescaleDB中实现分布式事务。
但是,分布式超级表的读一致性与常规超级表不同。由于分布式事务是跨多个节点的一组单独事务,因此由于网络传输延迟或其他小波动,每个节点可以在略有不同的时间提交其本地事务。因此,接入节点无法保证跨所有数据节点的数据快照完全一致。例如,当另一个并发写事务处于提交阶段并且在某些数据节点上提交而其他数据节点上没有提交时,可能会启动分布式读事务。因此,读事务可以在一个节点上使用包含其他事务修改的快照,而另一个数据节点上的快照可能不包括这些修改。
如果在分布式事务中需要更强的读一致性,那么可以跨所有数据节点使用一致性快照。然而,这需要大量的协调和管理,这可能会对性能产生负面影响,因此它没有在默认情况下为分布式超级表实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/800503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】视频检测方法调研

目录 1 引言2 方法2.1 视频目标跟踪2.1.1 生成式模型方法2.1.2 判别式模型方法2.1.2.1 基于相关滤波跟踪2.1.2.2 基于深度学习跟踪 2.2 视频异常检测2.2.1 基于重构方法2.2.2 基于预测方法2.2.3 基于分类方法2.2.4 基于回归方法 2.3 深度伪造人脸视频检测2.3.1 基于RNN时空融合…

UG NX二次开发(C++)-利用UFun函数获取曲面上等参数的点

文章目录 1、前言2、叶片的三维模型3、利用UFun函数获取曲面的三种方法3.1 利用UF_Modl来实现3.2 利用UF_Point来实现3.2 利用UF_So来实现4、结果展示1、前言 在多轴加工过程中(尤其是薄壁零件),由于需要根据工件表面的几何信息以获取切触点,然后生成刀位轨迹,本文以叶片…

UEditor 百度富文本编辑器使用 遇到问题

小小吐槽 碰到前后不分离项目,富文本使用的UEdtior UEditor 点击上传图片转base64 在ueditor.all.js文件中找到这个 callback()函数 这里使用根据图片的url转成base64 UEditore 粘贴图片转base64 UEditor回显图片(base64) 把ueditor.all…

【Docker】制作Docker私有仓库

文章目录 1. 安装私有镜像仓库2. 镜像仓库可视化3. 参考资料 1. 安装私有镜像仓库 由于之后我们需要推送到私有镜像仓库,我们预先安装好,使用的是Docker公司开发的私有镜像仓库Registry。 下载Registry的Docker镜像; docker pull registry:2使…

【Django+Vue】英文成绩管理平台--20230727

项目需求 能够满足大部分核心需求(标绿):报表部分应该比较难。 项目地址 前端编译 https://gitlab.com/m7840/toeic_vue_dist Vue源码 https://gitlab.com/m7840/toeic_vue Django源码 https://gitlab.com/m7840/toeic_python 项目…

docker部署nextcloud+onlyoffice详细教程【外置MySQL】

一、部署环境 系统版本:CentOS Linux release 7.9.2009 (Core) 配置:16C 16G MySQL:5.7.20 二、部署过程 1、安装docker和docker-compose 请百度 2、创建数据库和用户,并授权 因为我使用外置MySQL,所以需要先创…

从零开始学Docker(一):Docker的安装部署

前述:本次学习与整理来至B站【Python开发_老6哥】老师分享的课程,有兴趣的小伙伴可以去加油啦,附链接 Linux 环境:RockyLinux 9 版本管理 Docker引擎主要有两个版本:企业版(EE)和社区版&#…

C语言爱心代码

代码&#xff1a; #include <stdio.h> int main() { int i, j, k, l, m; char c3; //ASCII码里面 3 就是一个字符小爱心 for (i1; i<5; i) printf("\n"); //开头空出5行 for (i1; i<3; i) { //前3行中间有空隙分开来写 for (j1; j<32-2*i; j) p…

计算机图形学十三加速结构

加速光线追踪 摘要 在上一节中&#xff0c;我们介绍了whited-style 光线追踪的原理&#xff0c;以及实现细节。相比与光栅化中所使用的blinn-phong模型&#xff0c;光线追踪显著提升了图像质量&#xff0c;但是随之而来的问题是渲染速度过慢。因为在判断光线与场景交点的时候…

面试典中典之线程池的七大参数

文章目录 一、七大元素解释1.corePoolSize&#xff08;核心线程数&#xff09;&#xff1a;2.maximumPoolSize&#xff08;最大线程数&#xff09;&#xff1a;3.keepAliveTime&#xff08;线程空闲时间&#xff09;&#xff1a;4.unit&#xff08;时间单位&#xff09;&#x…

MATLAB与ROS联合仿真(慕羽☆)全套开源资料索引

自2021年9月份开始进行MATLAB与ROS联合仿真相关的研究&#xff0c;至2021年12月份研究基本上结束&#xff0c;至今&#xff0c;已经近两年时间&#xff0c;期间曾收到过很多小伙伴的私信&#xff0c;想让我出点教程&#xff0c;期间我也曾多次想要抽点时间出教程&#xff0c;但…

地矿人专属的二次开发工具——地矿Web二次开发平台

工欲善其事必先利其器&#xff0c;随着互联网信息化时代的不断发展&#xff0c;信息系统和管理规范也越来越复杂&#xff0c;现有的软件产品功能会需要重新完善升级或更改&#xff0c;所以使用一套灵活应变可二次开发的软件产品是必不可少的&#xff0c;一款好的二次开发平台可…

【Apollo学习笔记】—— Routing模块

Routing模块功能 Apollo的routing模块读取高精地图原始信息&#xff0c;用于根据输入RoutingRequest信息在base_map中选取匹配最近的点作为导航轨迹的起点和终点&#xff0c;读取依据base_map生成的routing_map作为生成topo_graph的&#xff0c;然后通过Astar算法在拓扑图中搜…

Java中I/O流是什么?输入/输出流又是什么?

在 Java中所有数据都是使用流读写的。流是一组有序的数据序列&#xff0c;将数据从一个地方带到另一个地方。根据数据流向的不同&#xff0c;可以分为输入&#xff08;Input&#xff09;流和输出&#xff08;Output&#xff09;流两种。 在学习输入和输出流之前&#xff0c;我们…

监控和可观察性在 DevOps 中的作用!

在不断发展的DevOps世界中&#xff0c;深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念&#xff0c;为系统的健康状况和性能提供有价值的可见性。虽然这些术语经常互换使用&#xff0c;但它们代表了理解和管理复杂…

R730服务器用光盘安装系统(Esxi系统)

准备阶段&#xff1a;dell R730服务器&#xff0c;本教程一般适用于dell所有服务器&#xff0c;移动光盘&#xff0c;光碟做好镜像系统。在这里我安装的系统是Esxi系统&#xff0c;其他操作系统类似&#xff0c;只是安装的步骤不一样而已。 1、将系统盘插入光驱(移动光盘)&…

LeetCode 2500. Delete Greatest Value in Each Row【数组,排序】简单

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

【深度学习中常见的优化器总结】SGD+Adagrad+RMSprop+Adam优化算法总结及代码实现

文章目录 一、SGD&#xff0c;随机梯度下降1.1、算法详解1&#xff09;MBSGD&#xff08;Mini-batch Stochastic Gradient Descent&#xff09;2&#xff09;动量法&#xff1a;momentum3&#xff09;NAG(Nesterov accelerated gradient)4&#xff09;权重衰减项&#xff08;we…

c++网络编程

网络编程模型 c/s 模型&#xff1a;客户端服务器模型b/s 模型&#xff1a;浏览器服务器模型1.tcp网络流程 服务器流程&#xff1a; 1.创建套接字2.完善服务器网络信息结构体3.绑定服务器网络信息结构体4.让服务器处于监听状态5.accept阻塞等待客户端连接信号6.收发数据7.关闭套…

C++那些事之template disambiguator

template disambiguator 1.背景 最近看到一段代码&#xff1a; auto chunk_left first_sort_key.template GetChunk<ArrayType>(left); 请问&#xff0c;这里的.template代表什么意义&#xff1f; 本节将从实际例子出发&#xff0c;探讨这个意义。 2.template disambigu…