InfluxDB存储数据是否需要水平拆分表?

2024-06-08 19:32

本文主要是介绍InfluxDB存储数据是否需要水平拆分表?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

业务场景是这样:8000个点,每秒存一次,存3个月,大约600亿条记录。
如果保存策略RP的保留是90天,那么分片shard的时长在一天就比较合理,那么一天的量就是:8,000×3,600×24=691,200,000,大概每天近7亿条数据。这个量对于influxdb单机来说是够用了,除非每条记录量的确很大,那么可以考虑采购商业版本做成分布式来提升磁盘I/O性能。

无需你再去做所谓的表水平切分,毫无意义。水平分表针对的都是按行存储与索引的传统关系型数据库,水平分表的逻辑还是按key或者时间进行行集的范围划分,加快定位,减少扫描。对于influxdb,其底层存储设计理念完全不同于传统关系表数据库,它的TSM数据模型源自于nosql常用的LSM-Tree数据模型设计,又远胜于此模型,是基于时序TS数据的特定优化,

至于按时间范围查询会不会很慢?这个问题,其实这种忧虑是多余的,这就需要理解其分片存放和TSM结构:

按照这种保留策略,每隔一天就会形成一个分片目录,存放一天的TSM数据,那么无论是600亿还是6000亿,按照时间范围查询一定是先根据目录索引。如果你是influxdb集群,例如:8个节点,2个副本,相当于对一天的数据又切成了四分,也就是一个节点的某个分片目录只对应了1.7亿的数据,集群的分布这会让读写更快。



我们在细究到influxdb时间查询问题的内部,influxdb为什么用时间范围查就一定很快,上面聊的是分片的文件目录优化带来的查询性能提升,其实tsm文件本身就分成了数据块集合和索引块集合两部分,一个数据块就是由时间戳(timestamps)的集合与值(values)的集合组成。索引块由N个索引实体组成,每个索引实体提供了数据块最小时间和最大时间的偏移量,这个时间范围就定位到了要取的数据块,因此查询的时候,Series + field作为主键定位一个索引块,然后用时间范围在索引块中去定位匹配的一组索引实体,也就很快定位到了匹配的数据块集合。

 我们在细究到它的内部结构原理上,influxdb的存储是按照Series+field的方式存储时间戳与数据块集合,内存中还原后类似Series+field={timestamp1:value1,timestamp2:value2,..}这种结构,典型的列式结构,查询时按照series作为行键进行fields列的排序成行,输出结果,这又类似于列簇的结构,明显看出要比常见的按k/v单元存储之上增强了V的按时间线的聚合性。这就完美地匹配了时序数据的特征,数据块中时间戳的聚合排列以及fields值的聚合排列,带来了惊人的压缩效率,同样按照时间范围的查询效率更为惊人!

因此我们可以看到,influxdb就是玩时间线存储的高手,这也是为什么几个亿的记录让它用时间范围去匹配,很轻松达到秒级以内别速度。


守护石 「技术创作」
关注领域:大数据技术、分布式架构 | 技术管理icon-default.png?t=LA92http://www.readbyte.com/

这篇关于InfluxDB存储数据是否需要水平拆分表?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043100

相关文章

JavaScript全屏,监听页面是否全屏

在JavaScript中,直接监听浏览器是否进入全屏模式并不直接支持,因为全屏API主要是关于请求和退出全屏模式的,而没有直接的监听器可以告知页面何时进入或退出全屏模式。但是,你可以通过在你的代码中跟踪全屏状态的改变来模拟这个功能。 以下是一个基本的示例,展示了如何使用全屏API来请求全屏模式,并在请求成功或失败时更新一个状态变量: javascriptlet isInFullscreen =

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

数据时代的数字企业

1.写在前面 讨论数据治理在数字企业中的影响和必要性,并介绍数据治理的核心内容和实践方法。作者强调了数据质量、数据安全、数据隐私和数据合规等方面是数据治理的核心内容,并介绍了具体的实践措施和案例分析。企业需要重视这些方面以实现数字化转型和业务增长。 数字化转型行业小伙伴可以加入我的星球,初衷成为各位数字化转型参考库,星球内容每周更新 个人工作经验资料全部放在这里,包含数据治理、数据要

如何在Java中处理JSON数据?

如何在Java中处理JSON数据? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Java中如何处理JSON数据。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代应用程序中被广泛使用。Java通过多种库和API提供了处理JSON的能力,我们将深入了解其用法和最佳

两个基因相关性CPTAC蛋白组数据

目录 蛋白数据下载 ①蛋白数据下载 1,TCGA-选择泛癌数据  2,TCGA-TCPA 3,CPTAC(非TCGA) ②蛋白相关性分析 1,数据整理 2,蛋白相关性分析 PCAS在线分析 蛋白数据下载 CPTAC蛋白组学数据库介绍及数据下载分析 – 王进的个人网站 (jingege.wang) ①蛋白数据下载 可以下载泛癌蛋白数据:UCSC Xena (xena

BD错误集锦8——在集成Spring MVC + MyBtis编写mapper文件时需要注意格式 You have an error in your SQL syntax

报错的文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.yuan.dao.YuanUserDao"><!

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上,选取净初级生产力,降水量,生物迁移阻力,土壤侵蚀度和道路密度五个变量,对生态系统供给服务、调节服务、支持服务和文化服务共4大类和11小类的当量因子进行了时空调整,计算了

mysql中存储过过程和游标的联合使用

1.SQL如下: DELIMITER //DROP PROCEDURE IF EXISTS PrintAllEmployeeNames5;CREATE PROCEDURE PrintAllEmployeeNames5()BEGINDECLARE error_count INT DEFAULT 0;DECLARE num INT ;DECLARE done INT DEFAULT

【计算机网络篇】数据链路层(12)交换机式以太网___以太网交换机

文章目录 🍔交换式以太网🛸以太网交换机 🍔交换式以太网 仅使用交换机(不使用集线器)的以太网就是交换式以太网 🛸以太网交换机 以太网交换机本质上就是一个多接口的网桥: 交换机的每个接口考研连接计算机,也可以理解集线器或另一个交换机 当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能在自身内部同时连通多对接口,使每一对相互通信的计算机都能像