CN116149566A - 一种时序数据存储方法、装置、计算机设备及存储介质 - Google Patents
一种时序数据存储方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN116149566A CN116149566A CN202310166015.4A CN202310166015A CN116149566A CN 116149566 A CN116149566 A CN 116149566A CN 202310166015 A CN202310166015 A CN 202310166015A CN 116149566 A CN116149566 A CN 116149566A
- Authority
- CN
- China
- Prior art keywords
- data
- time sequence
- target
- slot
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种时序数据存储方法、装置、计算机设备及存储介质,所述方法包括:根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中。本申请所提供的方法能够提高时序数据库的存储、查询与写入性能,同时还能够支持大数据查询引擎。
Description
技术领域
本申请涉及时序数据库技术领域,具体而言,涉及一种时序数据存储方法、装置、计算机设备及存储介质。
背景技术
时序数据库全称为时间序列数据库,时间序列数据库主要用于处理带时间标签的数据,带时间标签的数据也称为时序数据,如物联网是指通过各种信息传感器实时采集任何需要管理的设备的信息,并进行存储,时序数据具有数据量大、结构单一、时间属性强、查询简单等特点,传统的关系型数据库不适合存储时序数据。目前市面主流时序数据库有InfluxDB、OpenTSDB、TiDB、TDEngine等。
Parquet是一种存储格式,它是与语言、平台无关的,并且不需要和任何一种数据处理框架绑定,并支持主流的大数据查询引擎和计算框架,如查询引擎Impala、Presto等,以及计算框架Spark、Flink等。
现有的时序数据库的数据存储能力与查询能力有限,时序数据库InfluxDB主要是基于单机存储,查询性能较高,但存储性能有限,时序数据库OpenTSDB基于开源数据库HBase,利用了开源框架Hadoop的大数据分布式存储能力,存储性能较高,但OpenTSDB的写入性能和查询性能与InfluxDB相比,写入要慢15倍左右,查询要慢3倍左右,因此,现有的时序数据库存在存储与查询能力不均衡的问题。
发明内容
有鉴于此,本申请实施例提供了一种时序数据存储方法、装置、计算机设备及存储介质,能够提高时序数据库中的时序数据的写入和存储性能,同时还能够支持大数据查询引擎,提高数据查询能力。
第一方面,本申请实施例提供了一种时序数据存储方法,包括以下步骤:
根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;
根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽;
将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;所述文件槽的大小是根据磁盘所确定的;
根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中。
在一种可能的实施方式中,所述根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据,包括:
将所述目标时序数据的检查点存储位中填充数据检查点;
根据所述目标时序数据和所述数据检查点,生成预处理预写日志数据;
根据所述预处理预写日志数据的数据大小,生成符合预设的多种数据大小之一的预写日志数据。
在一种可能的实施方式中,所述预设的多种数据大小包括:
256B、512B、1K。
在一种可能的实施方式中,所述目标数据槽的确定方法,包括:
从所述内存中设置的数据槽中确定与所述预写日志数据的数据大小相等且未存储数据的数据槽;所述数据槽分别设置于所述内存中预设的双缓冲队列中;
从与所述预写日志数据的数据大小相等且未存储数据的数据槽中按照顺序确定目标数据槽。
在一种可能的实施方式中,所述文件槽大小的确定方法,包括:
将所述磁盘的一个扇区所对应的数据大小确定为所述文件槽的大小。
在一种可能的实施方式中,所述根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中,包括:
通过数据写入线程将所述目标时序数据转换成预设格式的时序数据;
将所述转换成预设格式的时序数据存储至所述磁盘中的目标数据块中。
在一种可能的实施方式中,所述方法还包括:
将所述目标数据块的属性信息和所述目标时序数据携带的时间范围存储至所述磁盘对应的数据节点中。
第二方面,本申请实施例提供了一种时序数据存储装置,包括:
生成模块,用于根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;
第一存储模块,用于根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽;
第二存储模块,用于将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;所述文件槽的大小是根据磁盘所确定的;
第三存储模块,用于根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面任一项所述的时序数据存储方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行第一方面任一项所述的时序数据存储方法的步骤。
本申请实施例提供的技术方案具有以下有益效果:
本申请所述时序数据存储方法,为了提高时序数据库中时序数据的持续高并发写入,首先根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据,为了提高预写日志数据的存储速率,在所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽,并根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中,然后为了提升时序数据到磁盘的写入速率,预设格式的文件槽需与磁盘所能存储数据的大小保持一致,并将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式后存储至磁盘中,再根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中,在上述存储方法中,使预写日志数据的大小与目标数据槽的大小保持一致,同时将目标数据槽中的数据对应传输到文件槽,保证在时序数据传输时,尽可能少的跨数据块存储,同时提高数据的存储效率,提升时序数据库的存储性能。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种时序数据存储方法的流程示意图;
图2为本申请实施例提供的一种预写日志数据生成方法的流程示意图;
图3为本申请实施例提供的一种目标数据槽的确定方法的流程示意图;
图4为本申请实施例提供的一种时序数据的存储方法的流程示意图;
图5为本申请实施例提供的一种时序数据存储装置的结构示意图;
图6为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在现有技术中,在执行时序数据库中的时序数据存储方法时,可能会存在以下问题:
现有的时序数据库InfluxDB主要是基于单机存储,查询性能较高,但存储性能有限,时序数据库OpenTSDB基于开源数据库HBase,利用了开源框架Hadoop的大数据分布式存储能力,虽然存储性能较高,但OpenTSDB的写入性能和查询性能较低,因此,现有的时序数据库存在存储与查询能力不均衡的问题。
基于上述缺陷,本申请实施例提供了一种时序数据存储方法,如图1所示,包括以下步骤:
S101,根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;
S102,根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽;
S103,将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;所述文件槽的大小是根据磁盘所确定的;
S104,根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中。
下面分别对本申请实施例的上述示例性的各步骤进行说明。
在步骤S101中,根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;
具体的,由于时序数据在传输时,是批量传输,且传输速率较慢,因此为了提高数据的写入性能,将获取的时序数据生成预写日志(Write Ahead Log,WAL)数据,还能够在时序数据存储失败时,使用已经存储的预写日志数据对时序数据进行恢复。
在一些实施例中,在对时序数据库中的时序数据进行存储时,需要将时序数据存储到磁盘,首先从时序数据库获取需要存储的目标时序数据,为了将WAL数据尽可能的不跨数据块存储而提高存储速率和查询性能,首先按照预设的多种数据大小,根据目标时序数据的字节大小,生成对应的预写日志数据,在本实施例中,所述预设的多种数据大小包括:256B、512B、1K。
作为示例:若WAL数据的字节小于或等于256B,则在数据不足的长度填补字段\0以补齐占位,然后生成256B的数据,若WAL数据的字节大于256B而小于或等于512B,则生成512B的数据,若WAL数据的字节大于512B而小于或等于1K,则生成1K的数据。
在步骤S102中,根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽;
具体的,在所述内存中的数据缓存区设置有上述三种数据大小的数据槽,也即256B的数据槽、512B的数据槽、1K的数据槽,三种数据槽分别设置有多个,根据所述预写日志数据的数据大小,找到对应大小的数据槽,并在未存储数据的数据槽中选择目标数据槽,将所述预写日志数据存储至该目标数据槽中。
通过上述的存储方式,能够在时序数据存储的过程中,以数据对齐的方式存储到对应大小的数据槽中,防止跨数据槽存储,也即,防止跨数据块存储,能够提高数据的存储和查询效率。
在一些实施例中,对所述内存的数据缓存区中的数据采用B+树索引进行关联排序,B+树是一种树数据结构,常见于数据库与档案系统之中,B+树能够使数据保持有序,从而保证刷盘时的数据有序性。
在步骤S103中,将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;所述文件槽的大小是根据磁盘所确定的;
在一些实施例中,预设格式可以是Parquet格式,Parquet是一种存储格式,与语言和平台无关,且不需要和任何一种数据处理框架绑定,还支持大数据查询引擎和计算框架,因此在本申请实施例中,为了使时序数据库能够支持大数据查询引擎,将预写日志数据转换成Parquet格式的数据。
具体的,Parquet格式的文件槽的设置方法是,默认Parquet文件下的Page也即分页的大小为1M,将Parquet文件中的分页进行物理划分为512B的文件槽,这样,一个分页也就划分了多个文件槽。
在一些实施例中,在设置文件槽的大小时,采用如下方法:将所述磁盘的一个扇区所对应的数据大小确定为所述文件槽的大小,所述磁盘的一个扇区所对应的数据大小为512B,也即,将所述文件槽的大小设置为512B。
通过上述将文件槽的大小与磁盘的一个扇区的数据大小保持一致的方法,能够使WAL数据快速落盘写入,有利于提升磁盘写入速度,提高WAL数据的存储效率。
在步骤S104中,根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中;
具体的,在存储时序数据时,要在预写日志数据写入成功后,实行时序数据的存储,由于WAL格式定义为{ckpt:检查点时间戳,db:数据库Id,schema:shemaId,field:字段,value:值,ts:time,fill:数据补齐},在WAL数据写入成功后,由于Parquet格式存储在schema中,schema为数据库对象的集合,也就是元数据,用于记录数据库的属性信息,获取WAL数据的Parquet格式并将目标时序数据转换成Parquet格式存储到磁盘中。
上述的方式,通过将时序数据转换成Parquet格式,并采用上述文件槽,有利于提升时序数据的存储效率。
上述时序数据存储方法,为了提高时序数据库中时序数据的持续高并发写入,首先根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据,为了提高预写日志数据的存储速率,在所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽,并根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中,然后为了提升时序数据到磁盘的写入速率,预设格式的文件槽需与磁盘所能存储数据的大小保持一致,并将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式后存储至磁盘中,再根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中,在上述存储方法中,使预写日志数据的大小与目标数据槽的大小保持一致,同时将目标数据槽中的数据对应传输到文件槽,保证在时序数据传输时,尽可能少的跨数据块存储,同时提高数据的存储效率,提升时序数据库的存储性能。
在一些实施例中,如图2所示,步骤S101,包括以下步骤:
S201,将所述目标时序数据的检查点存储位中填充数据检查点;
在一些实施例中,数据存储引擎通过JDBC接口接收客户端的存储请求,并从收到的数据中解析出所述目标时序数据,然后将所述目标时序数据发送至该引擎的数据库连接(Java Database Connectivity,JDBC)接口,JDBC接口接收到上述数据后,生成数据检查点,并填充进所述目标时序数据的检查点存储位。
S202,根据所述目标时序数据和所述数据检查点,生成预处理预写日志数据;
具体的,将所述目标时序数据和所述数据检查点根据WAL规范生成预处理预写日志数据。
S203,根据所述预处理预写日志数据的数据大小,生成符合预设的多种数据大小之一的预写日志数据;
具体的,根据所述预处理预写日志数据的数据大小,生成三种数据大小之中的对应大小的预写日志数据,在所述预处理预写日志数据的数据大小不满足对应的字节大小时,在数据不足长度填补字段\0以使其生成对应的字节大小。
在一些实施例中,如图3所示,步骤S102,包括以下步骤:
S301,从所述内存中设置的数据槽中确定与所述预写日志数据的数据大小相等且未存储数据的数据槽;所述数据槽分别设置于所述内存中预设的双缓冲队列中;
S302,从与所述预写日志数据的数据大小相等且未存储数据的数据槽中按照顺序确定目标数据槽;
在一些实施例中,将内存中的数据缓存区设计为双缓冲队列,每个缓冲队列中均设置有数据槽,当队列一正在刷盘时,由队列二接收缓存数据,当队列二正在刷盘时,由队列一接收缓存数据,保证任何时候都有一个队列可用于缓存数据,从而减少队列争取与队列扩容的耗时。
在一些实施例中,在内存中的数据缓存区设置有多个数据槽,其中有些数据槽已经被使用,需要在与所述预写日志数据的数据大小相等的数据槽中确定未被使用,也即未存储过数据的数据槽。
作为示例,若所述预写日志数据的数据大小为256B,则首先确定数据缓存区中的对应256B大小的多个数据槽,在所述多个数据槽中确定未存储数据的数据槽,然后按照数据槽的顺序,将排在第一个的数据槽作为目标数据槽,以将所述预写日志数据存储至该目标数据槽中。
在一些实施例中,如图4所示,步骤S104,包括以下步骤:
S401,通过数据写入线程将所述目标时序数据转换成预设格式的时序数据;
S402,将所述转换成预设格式的时序数据存储至所述磁盘中的目标数据块中。
具体的,在WAL数据写入成功后,将目标时序数据存储在内存中的数据缓存队列,由于时序数据是批量存储,需等待数据写入线程读取,数据写入线程根据触发条件,将所述目标时序数据连同数据检查点,根据WAL格式中的Schema定义格式中的Parquet格式,将所述目标时序数据也转换成Parquet格式,批量异步写入磁盘中的目标数据块中。
在一些实施例中,所述数据写入线程的触发条件可以包括以下三种情况:
WAL数据达到预设提交次数;可以是10次;
与WAL数据的上次提交间隔达到预测时长;可以是3秒;
系统收到关闭服务请求。
由于系统在关闭时,有可能还在排队的时序数据还未完全存储到磁盘中,此时触发数据写入线程读取一批排队的时序数据,并存储到磁盘中。
在一些实施例中,所述方法还包括:
将所述目标数据块的属性信息和所述目标时序数据携带的时间范围存储至所述磁盘对应的数据节点中。
具体的,在所述目标时序数据存储完成后,记录存储情况的元数据,也即,在Schema元数据中记录所述目标时序数据携带的时间范围以及所述目标时序数据所在的目标数据块的属性信息,该属性信息可以是表征所述目标数据块的地址的标签,将Schema元数据存储在该时序数据库所在的数据节点中。
在查询时序数据时,数据查询引擎通过运行在数据节点上的远程过程调用(Remote Procedure Call,RPC)接口读取Schema元数据,根据Schema元数据快速定位所述目标数据块的位置,节省了目标数据块的查询时间,同时避免读取无关数据块而减少磁盘IO,parquet存储格式在默认情况下会根据过滤条件扫描parquet数据块元数据,而采用Schema元数据能够精准定位数据块,减少parquet数据块元数据的扫描时间和磁盘IO开销。
通过上述步骤确定目标数据块后,数据查询引擎通过数据节点本地读取的方式读取数据,利用数据节点本地读取的优势,避免了使用网络读取数据块。
由于本申请所述时序数据存储方法引入了parquet存储格式,使对应的时序数据库能够接入数据查询引擎,数据查询引擎运行在Master节点上,Master节点是服务器集群的控制节点,也即数据节点集群的控制节点,数据查询引擎对外提供查询服务接口,由于时序数据可能存储在多个数据节点上,例如有三个数据节点,则为了找到最适合的数据节点提供查询服务,需要检测这三个数据节点的运行状态,具体的,数据查询引擎在接收到数据查询请求后,根据数据查询条件,读取三个数据节点的属性信息,包括硬件资源信息,统计三个数据节点的磁盘IO信息和中央处理器(Central Processing Unit,CPU)信息,磁盘IO信息也即磁盘的输入输出信息,再结合节点权重,根据以下算法得出数据节点的状态信息:
数据节点得分=[1-(IO使用率+CPU使用率)]*权重
通过上述公式依次计算得到三个数据节点的得分,得分最高的数据节点为运行状态最好的数据节点,将得分最高的数据节点作为所要查询的目标数据节点,有利于提升数据查询的效率及安全性。
综上所述,通过本申请实施例具有以下有益效果:
本申请所述时序数据存储方法,为了提高时序数据库中时序数据的持续高并发写入,首先根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据,为了提高预写日志数据的存储速率,在所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽,并根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中,然后为了提升时序数据到磁盘的写入速率,预设格式的文件槽需与磁盘所能存储数据的大小保持一致,并将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式后存储至磁盘中,再根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中,在上述存储方法中,使预写日志数据的大小与目标数据槽的大小保持一致,同时将目标数据槽中的数据对应传输到文件槽,保证在时序数据传输时,尽可能少的跨数据块存储,同时提高数据的存储效率,提升时序数据库的存储性能。
基于同一发明构思,本申请实施例中还提供了与第一实施例中时序数据存储方法对应的时序数据存储装置,由于本申请实施例中的装置解决问题的原理与上述时序数据存储方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,图5是本申请提供的时序数据存储装置的结构示意图。时序数据存储装置包括:
生成模块501,用于根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;
第一存储模块502,用于根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽;
第二存储模块503,用于将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;所述文件槽的大小是根据磁盘所确定的;
第三存储模块504,用于根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中。
本领域技术人员应当理解,图5所示的时序数据存储装置中的各模块的实现功能可参照前述时序数据存储方法的相关描述而理解。图5所示的时序数据存储装置中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
在一种可能的实施方式中,生成模块501,包括:
填充单元,用于将所述目标时序数据的检查点存储位中填充数据检查点;
第一生成单元,用于根据所述目标时序数据和所述数据检查点,生成预处理预写日志数据;
第二生成单元,用于根据所述预处理预写日志数据的数据大小,生成符合预设的多种数据大小之一的预写日志数据。
在一种可能的实施方式中,所述预设的多种数据大小包括:
256B、512B、1K。
在一种可能的实施方式中,第一存储模块502,包括:
第一确定单元,用于从所述内存中设置的数据槽中确定与所述预写日志数据的数据大小相等且未存储数据的数据槽;所述数据槽分别设置于所述内存中预设的双缓冲队列中;
第二确定单元,用于从与所述预写日志数据的数据大小相等且未存储数据的数据槽中按照顺序确定目标数据槽。
在一种可能的实施方式中,所述装置还用于文件槽大小的确定,包括:
将所述磁盘的一个扇区所对应的数据大小确定为所述文件槽的大小。
在一种可能的实施方式中,第三存储模块504,包括:
格式转换单元,用于通过数据写入线程将所述目标时序数据转换成预设格式的时序数据;
存储单元,用于将所述转换成预设格式的时序数据存储至所述磁盘中的目标数据块中。
在一种可能的实施方式中,所述装置还用于:
将所述目标数据块的属性信息和所述目标时序数据携带的时间范围存储至所述磁盘对应的数据节点中。
上述时序数据存储装置,为了提高时序数据库中时序数据的持续高并发写入,首先根据获取的目标时序数据,通过生成模块501生成符合预设的多种数据大小之一的预写日志数据,为了提高预写日志数据的存储速率,在所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽,并根据所述预写日志数据的数据大小,通过第一存储模块502将所述预写日志数据存储到内存中的目标数据槽中,然后为了提升时序数据到磁盘的写入速率,预设格式的文件槽需与磁盘所能存储数据的大小保持一致,并通过第二存储模块503将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式后存储至磁盘中,再根据所述预写日志数据的预设格式,通过第三存储模块504将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中,在上述存储装置的使用过程中,使预写日志数据的大小与目标数据槽的大小保持一致,同时将目标数据槽中的数据对应传输到文件槽,保证在时序数据传输时,尽可能少的跨数据块存储,同时提高数据的存储效率,提升时序数据库的存储性能。
对应于图1中的时序数据存储方法,本申请实施例还提供了一种计算机设备600,如图6所示,该设备包括存储器601、处理器602及存储在该存储器601上并可在该处理器602上运行的计算机程序,其中,上述处理器602执行上述计算机程序时实现上述时序数据存储方法。
具体地,上述存储器601和处理器602能够为通用的存储器和处理器,这里不做具体限定,当处理器602运行存储器601存储的计算机程序时,能够执行上述时序数据存储方法,解决了现有技术中时序数据库的数据存储性能与查询性能不均衡的问题。
对应于图1中的时序数据存储方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述时序数据存储方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述时序数据存储方法,解决了现有技术中时序数据库的数据存储性能与查询性能不均衡的问题。
上述计算机可读存储介质,为了提高时序数据库中时序数据的持续高并发写入,首先根据获取的目标时序数据,生成符合预设的多种数据大小之一的日志数据,为了提高日志数据的存储速率,在所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽,并根据所述日志数据的数据大小,将所述日志数据存储到内存中的目标数据槽中,然后为了提升时序数据到磁盘的写入速率,预设格式的文件槽需与磁盘所能存储数据的大小保持一致,并将所述目标数据槽中的所述日志数据存储到预设格式的文件槽转换成预设格式后存储至磁盘中,再根据所述日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中,在上述计算机可读存储介质存储数据的过程中,能够使日志数据的大小与目标数据槽的大小保持一致,同时将目标数据槽中的数据对应传输到文件槽,保证在时序数据传输时,尽可能少的跨数据块存储,同时提高数据的存储效率,提升时序数据库的存储性能。
在本申请所提供的实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,本申请实施例中所用到的术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语是为了描述本申请实施例的目的,不是在限制本申请。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种时序数据存储方法,其特征在于,包括以下步骤:
根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;
根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽;
将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;所述文件槽的大小是根据磁盘所确定的;
根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中。
2.根据权利要求1所述的时序数据存储方法,其特征在于,所述根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据,包括:
将所述目标时序数据的检查点存储位中填充数据检查点;
根据所述目标时序数据和所述数据检查点,生成预处理预写日志数据;
根据所述预处理预写日志数据的数据大小,生成符合预设的多种数据大小之一的预写日志数据。
3.根据权利要求1所述的时序数据存储方法,其特征在于,所述预设的多种数据大小包括:
256B、512B、1K。
4.根据权利要求1所述的时序数据存储方法,其特征在于,所述目标数据槽的确定方法,包括:
从所述内存中设置的数据槽中确定与所述预写日志数据的数据大小相等且未存储数据的数据槽;所述数据槽分别设置于所述内存中预设的双缓冲队列中;
从与所述预写日志数据的数据大小相等且未存储数据的数据槽中按照顺序确定目标数据槽。
5.根据权利要求1所述的时序数据存储方法,其特征在于,所述文件槽大小的确定方法,包括:
将所述磁盘的一个扇区所对应的数据大小确定为所述文件槽的大小。
6.根据权利要求1所述的时序数据存储方法,其特征在于,所述根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中,包括:
通过数据写入线程将所述目标时序数据转换成预设格式的时序数据;
将所述转换成预设格式的时序数据存储至所述磁盘中的目标数据块中。
7.根据权利要求6所述的时序数据存储方法,其特征在于,所述方法还包括:
将所述目标数据块的属性信息和所述目标时序数据携带的时间范围存储至所述磁盘对应的数据节点中。
8.一种时序数据存储装置,其特征在于,包括:
生成模块,用于根据获取的目标时序数据,生成符合预设的多种数据大小之一的预写日志数据;
第一存储模块,用于根据所述预写日志数据的数据大小,将所述预写日志数据存储到内存中的目标数据槽中;所述内存中针对所述预设的多种数据大小均分别设置有多个数据槽;
第二存储模块,用于将所述目标数据槽中的所述预写日志数据存储到预设格式的文件槽转换成预设格式,并存储至磁盘中;所述文件槽的大小是根据磁盘所确定的;
第三存储模块,用于根据所述预写日志数据的预设格式,将所述目标时序数据转换成预设格式的时序数据并存储到磁盘中。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1-7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1-7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310166015.4A CN116149566A (zh) | 2023-02-23 | 2023-02-23 | 一种时序数据存储方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310166015.4A CN116149566A (zh) | 2023-02-23 | 2023-02-23 | 一种时序数据存储方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116149566A true CN116149566A (zh) | 2023-05-23 |
Family
ID=86354161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310166015.4A Pending CN116149566A (zh) | 2023-02-23 | 2023-02-23 | 一种时序数据存储方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116149566A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033470A (zh) * | 2023-10-08 | 2023-11-10 | 天津市天河计算机技术有限公司 | 数据生成方法、装置、设备及介质 |
-
2023
- 2023-02-23 CN CN202310166015.4A patent/CN116149566A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033470A (zh) * | 2023-10-08 | 2023-11-10 | 天津市天河计算机技术有限公司 | 数据生成方法、装置、设备及介质 |
CN117033470B (zh) * | 2023-10-08 | 2024-01-30 | 天津市天河计算机技术有限公司 | 数据生成方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009008B (zh) | 数据处理方法和系统、电子设备 | |
US20160357740A1 (en) | Metadata Updating Method and Apparatus Based on Columnar Storage in Distributed File System, and Host | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
Canim et al. | Buffered Bloom Filters on Solid State Storage. | |
EP4216061A1 (en) | Transaction processing method, system, apparatus, device, storage medium, and program product | |
CN107888687B (zh) | 一种基于分布式存储系统的代理客户端存储加速方法及系统 | |
CN109710185A (zh) | 数据处理方法及装置 | |
CN114327280B (zh) | 一种基于冷热分离存储的消息存储方法及系统 | |
US20230418811A1 (en) | Transaction processing method and apparatus, computing device, and storage medium | |
CN116108057B (zh) | 一种分布式数据库访问方法、装置、设备及存储介质 | |
CN116149566A (zh) | 一种时序数据存储方法、装置、计算机设备及存储介质 | |
CN115712583B (zh) | 一种提升分布式缓存跨节点访问性能的方法及装置、介质 | |
CN113139017A (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
CN114741449A (zh) | 一种基于分布式数据库的对象存储方法及装置 | |
CN111639087B (zh) | 数据库中数据更新方法、装置和电子设备 | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
CN112988884B (zh) | 大数据平台数据存储方法及装置 | |
CN112667593A (zh) | 一种ETL流程执行hbase快速装载的方法与装置 | |
CN115840654B (zh) | 消息的处理方法、系统、计算设备及可读存储介质 | |
CN111694806A (zh) | 一种事务日志的缓存方法、装置、设备和存储介质 | |
CN104572737A (zh) | 数据存储辅助方法及系统 | |
CN113157777B (zh) | 一种分布式实时查询数据的方法、集群、系统及存储介质 | |
CN115934583A (zh) | 分级缓存方法、装置及系统 | |
US20210397524A1 (en) | Systems and methods for implementing persistent data structures on an asymmetric non-volatile memory architecture | |
CN112000289B (zh) | 全闪存储服务器系统数据管理方法及相关组件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |