当前位置: 首页 > 后端技术 > Node.js

时序数据库InfluxDB(四)

时间:2023-04-03 11:16:51 Node.js

相关文章:时序数据库InfluxDB(一)时序数据库InfluxDB(二)时序数据库InfluxDB(三)时序数据库InfluxDB(四)时序数据库InfluxDB(五)时序数据库数据库InfluxDB(6)存储引擎InfluxDB数据的写入如下图所示:所有数据先写入WAL(WriteAheadLog)预写日志文件,同步到Cache缓存。当缓存的数据达到一定大小,或者达到一定时间间隔后,将数据写入tsm文件。为了更高效地存储大量数据,存储引擎会对数据进行压缩。压缩的输入和输出都是TSM文件。因此,为了原子地替换和删除TSM文件,存储引擎负责调节FileStore对所有TSM文件的访问。允许。CompactionPlanner负责确定哪些TSM文件已准备好进行压缩,并确保多个并发压缩不会相互干扰。Compactor压缩器负责具体的Compression压缩工作。为了处理文件,存储引擎通过Writers/Readers处理数据的写入和读取。此外,存储引擎还将使用In-MemoryIndex内存索引来快速访问measurements、tags、series等数据。存储引擎的组成部分:In-MemoryIndex:跨分片的共享内存索引不是存储引擎本身独有的,只是存储引擎使用的。WAL:预写日志。Cache:同步缓存WAL的内容,最后flush到TSM文件中。TSM文件:以特定格式存储最终数据的磁盘文件。FileStore:控制对磁盘上所有TSM文件的访问。压缩机:压缩机。CompactionPlanner:压缩计划。压缩:编码和解码压缩。Writers/Readers:读写文件。硬件指南为了应对不同的负载情况,机器需要怎样的硬件配置?由于集群模式只有商业版,这里我们只看免费的单机版。为了定义负载,我们关注以下三个指标:每秒写入数每秒查询系列基数对于查询情况,我们根据复杂性将其分为三个级别:简单查询:几乎无用函数和正则表达式时间范围以分钟为单位,几个小时,或者一天以内,执行时间一般是几毫秒到几十毫秒中等复杂度查询:使用多个函数和一两个正则表达式,可能会用到复杂的GROUPBY语句,或者时间范围是几个星期执行时间通常在数百毫秒到数千毫秒之间。复杂查询:使用多个聚合转换函数,或多个正则表达式时间跨度大,数月或数年的执行时间达到秒级。硬件配置需要注意的有:CPU核心数、RAM内存大小、IOPS性能。IOPS(Input/OutputOperationsPerSecond):每秒读写次数,衡量存储设备(如SSD固态硬盘、HDD机械硬盘等)的性能指标。不同负载情况下的硬件配置参考如下:由于SSD固态硬盘性能更高,官方推荐使用SSD。上图也是使用SSD的情况。对于元数据,如数据库名称、测量、标签键、标签值和字段键将只存储一次,并且每个点只会存储字段值和时间戳。一个非字符串值大约需要三个字节,而一个字符串值需要可变大小的空间,这需要根据压缩情况来确定。内存越大越好,但是如果series的基数超过千万,默认的内存索引方式会造成内存溢出,所以在设计数据结构的时候需要注意。通过将wal和data目录设置到不同的存储设备,有利于减少磁盘争用,从而应对更高的写入负载。相关配置项(默认配置文件为influxdb.conf):[data]dir="/var/lib/influxdb/data"wal-dir="/var/lib/influxdb/wal"personal公众号连续输出原图文章,感兴趣的可以关注一下。

猜你喜欢