CN112286948B - 时序数据库的数据存储方法、读取方法及装置 - Google Patents
时序数据库的数据存储方法、读取方法及装置 Download PDFInfo
- Publication number
- CN112286948B CN112286948B CN202011298938.8A CN202011298938A CN112286948B CN 112286948 B CN112286948 B CN 112286948B CN 202011298938 A CN202011298938 A CN 202011298938A CN 112286948 B CN112286948 B CN 112286948B
- Authority
- CN
- China
- Prior art keywords
- file
- target
- segment file
- data
- time stamp
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种时序数据库的数据存储方法、读取方法及装置。该时序数据库的数据存储方法包括:获取待存储的第一目标数据以及所述第一目标数据的时间戳;根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内;将所述目标数据写入所述目标段文件内,并基于所述目标数据形成一个不稳定文件;当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有文件进行压缩,得到目标稳定文件。本申请实施例可以提高时序数据的存储效率。
Description
技术领域
本申请涉及时序数据库技术领域,具体而言,涉及一种时序数据库的数据存储方法、读取方法及装置。
背景技术
现有技术中,时序数据库的时序数据的存储方式通常都是基于LSM-Tree(LogStructured Merge Tree)数据结构。时序数据在磁盘上的组织方式为分级存储,分为Level0至LevelN,下一级的数据大小通常是上一级的10倍。从从不可变内存表持久化到磁盘的文件,即形成Level0层SSTable文件(Sorted String Table文件),SSTable文件内容通常是存储Key Value(键值对)型数据,并且是按Key值进行排序的。当Level0的文件个数或者数据量达到指定大小时,则会对将Level0的SSTable文件和Level1的有Key重叠的SSTable文件进行合并压缩,然后,删除旧的Level0,Level1的SSTable文件,形成新的Leve1的SSTable文件。当Leve1的SSTable文件大小达到指定大小,和上面类似的思路,会继续和Leve2的文件进行合并压缩,以此类推,直到LeveN层。每一次不同层之间的合并压缩都将对磁盘I/O以及设备的CPU产生较大的压力,导致存储效率较低。
针对上述问题,目前尚未有有效的技术解决方案。
发明内容
本申请实施例的目的在于提供一种时序数据库的数据存储方法、读取方法及装置,可以提高时序数据的存储效率。
第一方面,本申请实施例提供了一种时序数据库的数据存储方法,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件的时间戳范围没有交集,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述方法包括:
获取待存储的第一目标数据以及所述第一目标数据的时间戳;
根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内;
将所述目标数据写入所述目标段文件内,并基于所述目标数据形成一个不稳定文件;
当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有文件进行压缩,得到目标稳定文件。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述将目标段文件内的所有文件进行压缩,得到目标稳定文件,包括:
若所述目标段文件内存在稳定文件,则将所述稳定文件以及所有不稳定文件进行压缩,得到目标稳定文件;
若所述目标段文件内不存在稳定文件,则将所有不稳定文件进行压缩,得到目标稳定文件。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述计量参数为所述目标段文件内的不稳定文件的数量或所有不稳定文件的数据量。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述获取待存储的第一目标数据,包括:
将待存储的第一目标数据写入预存日志文件,所述写入预存日志文件用于在第一目标数据未写入所述目标段文件之前暂存所述第一目标数据,并在所述第一目标数据写入所述目标段文件之后删除所述第一目标数据;
将所述第一目标数据从所述预存日志文件写入预设内存区域。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述时序数据库还包括索引关系表,所述索引关系表用于将每一时间戳映射至对应的段文件;
所述根据所述时间戳定位用于存储所述第一目标数据的目标段文件,包括:根据所述时间戳查询所述索引关系表,以定位用于存储所述第一目标数据的目标段文件。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述至少一个段文件包括至少一个第一段文件以及一个第二段文件;所述第一段文件内的数据量大于或者等于第一预设值,所述第二段文件内的数据量小于第一预设值;
所述第一段文件的时间戳范围为其内存储的目标数据的最小时间戳至最大时间戳;所述第二段文件的时间戳范围为预设时间戳至正无穷,所述预设时间戳为所述第一段文件中最大的一个时间戳与预设时间值的和。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述将目标段文件内的所有文件进行压缩,得到目标稳定文件之后,还包括:
判断所述目标段文件在写入所述第一目标数据之前为第一段文件或第二目标段文件;
若所述目标段文件为第二段文件,则判断在写入所述第一目标数据之后,所述目标段文件的数据量是否大于或等于第一预设值;
若大于或等于第一预设值,则判断所述目标段文件的数据量是否小于第二预设值;
若小于第二预设值,则对所述目标段文件对的时间戳范围进更新使得所述目标段文件转换为第一段文件,并建立新的第二段文件。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述判断所述目标段文件在写入所述第一目标数据之前为第一段文件或第二目标段文件之后,还包括:
若所述目标段文件为第一段文件,则判断在写入所述第一目标数据之后,所述目标段文件的数据量是否大于或等于第二预设值;
若大于或等于第二预设值,则将所述目标段文件切分设置形成至少两个第一段文件。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述判断所述目标段文件的数据量是否小于第二预设值之后,还包括:
若不小于第二预设值,则将所述目标段文件切分设置形成至少两个第一段文件,并建立新的第二段文件。
可选地,在本申请实施例所述的时序数据库的数据存储方法中,所述方法还包括:
在将所述目标段文件转换为一个第一段文件或者切分设置为至少两个第一段文件之后,或者建立新的第二段文件之后,对索引关系表进行更新。
第二方面,本申请实施例还提供了一种时序数据库的数据读取方法,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述方法包括:
获取数据读取请求,所述数据读取请求携带有待读取的第一目标数据的时间戳;
根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述第一目标数据的时间戳位于所述目标段文件的时间戳范围内;
根据所述时间戳从所述目标段文件读取所述第一目标数据。
可选地,在本申请实施例所述的时序数据库的数据读取方法中,所述时序数据库还包括索引关系表,所述索引关系表用于将每一时间戳映射至对应的段文件;
所述根据所述时间戳定位用于存储所述第一目标数据的目标段文件,包括:
根据所述时间戳查询所述索引关系表,以定位用于存储所述第一目标数据的目标段文件。
第三方面,本申请实施例还提供了一种时序数据库的数据存储装置,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述装置包括:
第一获取模块,用于获取待存储的第一目标数据的时间戳;
第一定位模块,根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内;
第一写入模块,用于将所述目标数据写入所述目标段文件内并形成一个不稳定文件;
压缩模块,用于当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有不稳定文件以及所述稳定文件进行压缩,得到新的稳定文件。
第四方面,本申请实施例还提供了一种时序数据库的数据读取装置,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述装置包括:
第二获取模块,用于获取数据读取请求,所述数据读取请求携带有待读取的第一目标数据的时间戳;
第二定位模块,用于根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述第一目标数据的时间戳位于所述目标段文件的时间戳范围内;
读取模块,用于根据所述时间戳从所述目标段文件读取所述第一目标数据。
第五方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第六方面,本申请实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
由上可知,本申请实施例通过获取待存储的第一目标数据以及所述第一目标数据的时间戳;根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内;将所述目标数据写入所述目标段文件内,并基于所述目标数据形成一个不稳定文件;当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有文件进行压缩,得到目标稳定文件;由于将数据库分为多个数据段来存储文件,每次在写入数据时,需要进行压缩的数据量较小,使得写放大较小,可以提高数据写入效率。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的时序数据库的数据存储方法的一种流程图。
图2为本申请实施例提供的时序数据库的结构示意图。
图3为本申请实施例提供的时序数据库的数据存储方法的场景示意图。
图4为本申请实施例提供的时序数据库的数据存储方法的另一种流程图。
图5为本申请实施例提供的时序数据库的数据存储装置的一种结构图。
图6为本申请实施例提供的时序数据库的数据读取方法的一种流程图。
图7为本申请实施例提供的时序数据库的数据读取装置的一种结构图。
图8为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请同时参照图1以及图2,图1是本申请一些实施例中的一种时序数据库的数据存储方法的流程图。图2为本申请一些实施例中的时序数据库的结构图。该时序数据库包括:索引层以及存储层。其中,该索引层设置有索引关系表,该存储层设置有至少一个用于存储目标数据的段文件Segment。其中,该索引关系表用于将某一目标数据的时间戳映射至该至少一个段文件中的对应段文件。其中,在某一初始状态或者中间状态下,该至少一个段文件的数量可以为一个或多个。当该至少一个段文件的数量为一个时,该至少一个段文件为第一段文件,其中该第二段文件是指存入其中的数据的数据量未超过第一预设值的段文件,也即是数据库中刚开始存入数据或者存入数据不多。当该至少一个段文件的数量为多个时,该至少一个段文件包括至少一个第一段文件以及一个第二段文件。其中,该第一段文件是指存入的数据的数据量大于或等于该第一预设值的段文件。
其中,第一段文件的时间戳范围为其中的目标数据的最小时间戳至最大时间戳。第二段文件的时间戳范围为预设时间戳至正无穷。其中,该预设时间戳为所有第一段文件中的最大的时间戳与预设时长的和。其中,该预设时长可以设置为一个单位时间或者1ms,当然,其并不限于此。
其中,每一第一段文件中存储有一个Stable文件(稳定文件),每一个Stable文件中存储有多个Unstable文件(不稳定文件)。该Unstable文件由待存储的目标数据持久化形成。该Stable文件由多个Unstable文件压缩形成。其中,第二段文件中可能存储有至少一个Unstable文件和/或一个Stable文件,也即是第二段文件中可能存储有一个Stable文件,或者存储有至少一个Unstable文件,或者二者均存在。
其中,该时序数据库的数据存储方法,包括以下步骤:
S101、获取待存储的第一目标数据以及所述第一目标数据的时间戳。
S102、根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内。
S103、将所述目标数据写入所述目标段文件内,并基于所述目标数据形成一个不稳定文件。
S104、当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有文件进行压缩,得到目标稳定文件。
其中,在该步骤S101中,该时间戳为对应的目标数据的生成时间。该时间戳可以通过对该第一目标数据的对应的时间标识位进行读取从而得到,当然,也可以采用其他方式来得到该时间戳。
其中,在一些实施例中,该获取待存储的第一目标数据的步骤可以包括以下子步骤:S1011、将待存储的第一目标数据写入预存日志文件,所述写入预存日志文件用于在第一目标数据未写入所述目标段文件之前暂存所述第一目标数据,并在所述第一目标数据写入所述目标段文件之后删除所述第一目标数据。S1012、将所述第一目标数据从所述预存日志文件写入预设内存区域。具体,如图3所示,该待存储的目标数据先写入到硬盘区域的预存日志文件内,然后写入到该内存区域的可变内存表中。当该可变内存表中的数据量达到第一阈值时,该可变内存表转换为不可变内存表,然后该不可变内存表不再接收目标数据,并将其中的数据持久化到硬盘区域的对应区域。而该内存区域新建一个可变内存表,继续接收该目标数据。其中,该预存日志文件主要是为了避免断电或者死机后,未成功存入该时序数据库的目标数据消失。当该目标数据完全写入到该硬盘区域中的时序数据库的目标段文件后,该预存日志文件删除该目标数据。
其中,在该步骤S102中,例如,当前该时序数据库中设置有第一段文件a1、第一段文件a2、第一段文件a3、第一段文件a4、第二段文件a5。该五个段文件的时间戳范围分别是t1至t2、t3至t4、t5至t6、t7至t8、t9至正无穷。而该目标数据的时间戳为t0,t0位于t3至t4范围内,则该目标数据需要存储至该第一段文件a2;且说明该目标数据为之前产生的旧数据。如果该时间戳t0位于t9至正无穷的范围内,则说明该目标数据需要存储至该第二段文件a5,且该目标数据为较新的数据。
具体地,在一些实施例中,可以根据预先建立的索引关系表来实现快速定位,从而提高数据写入速度。该步骤S102可以包括以步骤:根据所述时间戳查询所述索引关系表,以定位用于存储所述第一目标数据的目标段文件。该索引关系表是可以进行动态更新的,具体更新策略后续描述。其中,每一目标段文件均设置有对应的段标识,该索引关系表将时间戳范围与该段标识进行关联存储。
其中,在该步骤S103中,将该目标数据从该内存区域中的不可变内存列表持久化到该硬盘区域的时序数据库中,具体为持久化到该时序数据库的对应的目标段文件中。并且,在持续到该目标段文件中后,将该目标数据生成为一个Unstable文件(不稳定文件)。
其中,在该步骤S104中,该计量参数可以为该目标段文件中的不稳定文件的数量或者该目标段文件中的所有不稳定文件的数据量。其中,在该步骤S104中,若所述目标段文件内存在稳定文件,则将所述稳定文件以及所有不稳定文件进行压缩,得到目标稳定文件;若所述目标段文件内不存在稳定文件,则将所有不稳定文件进行压缩,得到目标稳定文件。并且,在压缩形成目标稳定文件后,要将原先的旧的稳定文件以及不稳定文件删除。由于将数据库分为多个数据段来存储文件,每次在写入数据时,需要进行压缩的数据量较小,使得写放大较小,可以提高数据写入效率。
由上可知,本申请实施例提供的时序数据库的数据存储方法通过获取待存储的第一目标数据以及所述第一目标数据的时间戳;根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内;将所述目标数据写入所述目标段文件内,并基于所述目标数据形成一个不稳定文件;当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有文件进行压缩,得到目标稳定文件;由于将数据库分为多个数据段来存储文件,每次在写入数据时,需要进行压缩的数据量较小,使得写放大较小,可以提高数据写入效率。
请参照图4所示,在一些实施例中,在该步骤S104之后,该数据存储方法还可以包括以下步骤:
S105、判断所述目标段文件在写入所述第一目标数据之前为第一段文件或第二段文件。
S106、若所述目标段文件为第二段文件,则判断在写入所述第一目标数据之后,所述目标段文件的数据量是否大于或等于第一预设值。
S107、若所述目标段文件的数据量大于或等于第一预设值,则判断所述目标段文件的数据量是否小于第二预设值。
S108、若所述目标段文件的数据量小于第二预设值,则对所述目标段文件对的时间戳范围进更新使得所述目标段文件转换为第一段文件,并建立新的第二段文件。
S109、若所述目标段文件的数据量不小于第二预设值,则将所述目标段文件切分设置形成至少两个第一段文件,并建立新的第二段文件。
S110、若所述目标段文件为第一段文件,则判断在写入所述第一目标数据之后,所述目标段文件的数据量是否大于或等于第二预设值。
S111、若所述目标段文件的数据量大于或等于第二预设值,则将所述目标段文件切分设置形成至少两个第一段文件。
其中,在该步骤S105中,可以根据该目标段文件的时间戳范围来进行判断,时间戳范围的两端为具体值的说明是第一段文件,时间戳范围的一端为无穷大时,说明是第二段文件。当然,也可以采用其他方法来进行判断,在此不一一列举。
其中,在该步骤S106-S107中,如果该目标段文件为第二段文件,则说明该第二段文件在写入目标数据之后,可能转换为第一段文件,也可能被分割为至少两个第一段文件,也可能继续保持为第二段文件。如果写入所述第一目标数据之后,所述目标段文件的数据量小于该第一预设值,则说明该目标段文件依然保持为第二段文件。如果写入所述第一目标数据之后,所述目标段文件的数据量大于或等于该第一预设值,则说明该目标数据段在写入第一目标数据后可能会转换为一个第一段文件或者被切分为至少两个第二段文件,需要进一步判断该目标段文件在写入目标数据之后的数据量。
在步骤S108中,如果,该目标段文件在写入目标数据之后的数据量小于或等于第二预设值,则无需对该目标段文件进行拆分,直接将其转换为第一段文件即可,并建立新的第二段文件。
在步骤S109中,如果该目标段文件在写入目标数据之后的数据量大于第二预设值,则需要对目标段文件进行拆分,具体拆分数量则需要根据该数据量来决定。例如,如果该数据量为第二预设值的3倍,则需要平均分成三个第一段文件。如果该数据量为第二预设值的2倍或者2倍以下,则均分成两个第一段文件即可。当然,在完成均分之后,还需要建立新的第二段文件。
其中,在该步骤S110以及步骤S111中,如果写入所述第一目标数据之后,所述目标段文件的数据量是否小于第二预设值,则无需对该目标段文件进行切割,如果该目标段文件在写入目标数据之后的数据量大于第二预设值,则需要对目标段文件进行拆分,具体拆分数量则需要根据该数据量来决定。例如,如果该数据量为第二预设值的3倍,则需要平均分成三个第一段文件。如果该数据量为第二预设值的2倍或者2倍以下,则均分成两个第一段文件即可。
其中,在一些实施例中,在本申请实施例所述的时序数据库的数据存储方法中,所述方法还包括:在将所述目标段文件转换为一个第一段文件或者切分设置为至少两个第一段文件之后,或者建立新的第二段文件之后,对索引关系表进行更新;以便于在后续的段文件定位中不会出现错误,保持索引定位的准确性。
请参照图5,图5是本申请一些实施例中的时序数据库的数据存储装置的结构示意图。该时序数据库的数据存储装置,包括:第一获取模块201、第一定位模块202、第一写入模块203以及压缩模块204。
其中,该第一获取模块201用于获取待存储的第一目标数据的时间戳。
其中,该第一定位模块202根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内。
其中,该第一写入模块203于将所述目标数据写入所述目标段文件内并形成一个不稳定文件。
其中,该压缩模块204用于当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有不稳定文件以及所述稳定文件进行压缩,得到新的稳定文件。
请参照图6,图6是本申请一些实施例中的一种时序数据库的数据读取方法的流程图。该序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;该方法包括以下步骤:
S301、获取数据读取请求,所述数据读取请求携带有待读取的第一目标数据的时间戳。
S302、根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述第一目标数据的时间戳位于所述目标段文件的时间戳范围内。
S303、根据所述时间戳从所述目标段文件读取所述第一目标数据。
其中,在该步骤S301中,该数据读取请求用于读取该时序数据库中与该数据读取请求携带的时间戳具有相同时间戳的目标数据。
其中,在该步骤S302中,例如,当前该时序数据库中设置有第一段文件a1、第一段文件a2、第一段文件a3、第一段文件a4、第二段文件a5。该五个段文件的时间戳范围分别是t1至t2、t3至t4、t5至t6、t7至t8。而该待读取的第一目标数据的时间戳为t0,t0位于t3至t4范围内,则该目标数据需要存储至该第一段文件a2。
具体地,在一些实施例中,可以根据预先建立的索引关系表来实现快速定位待读取的第一目标数据所在的段文件,从而提高数据写入速度。该步骤S302可以包括以步骤:根据所述时间戳查询所述索引关系表,以定位用于存储所述第一目标数据的目标段文件。该索引关系表是可以进行动态更新的,具体更新策略后续描述。其中,每一目标段文件均设置有对应的段标识,该索引关系表将时间戳范围与该段标识进行关联存储。
其中,在该步骤S303中,由于直接定位到了对应的目标段文件,因此,可以直接对该目标段文件中的稳定文件进行解压,从而查找到对应的不稳定文件,从而将该不稳定文件中的第第一目标数据读出,相对于现有的LSM-Tree的读操而言,无需对该数据库中的所有数据进行从新到旧(从上到下)一层一层查找,直到查找到待读取的第一目标数据,从而大大提高了数据的读出效率。
请参照图7所示,图7是本申请一些实施例中的一种时序数据库的数据读取装置的结构图。时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;时序数据库的数据读取装置,包括:第二获取模块401、第二定位模块402以及读取模块403。
其中,该第二获取模块401用于获取数据读取请求,所述数据读取请求携带有待读取的第一目标数据的时间戳。该数据读取请求用于读取该时序数据库中与该数据读取请求携带的时间戳具有相同时间戳的目标数据。
其中,该第二定位模块402用于根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述第一目标数据的时间戳位于所述目标段文件的时间戳范围内。例如,当前该时序数据库中设置有第一段文件a1、第一段文件a2、第一段文件a3、第一段文件a4、第二段文件a5。该五个段文件的时间戳范围分别是t1至t2、t3至t4、t5至t6、t7至t8。而该待读取的第一目标数据的时间戳为t0,t0位于t3至t4范围内,则该目标数据需要存储至该第一段文件a2。
具体地,在一些实施例中,可以根据预先建立的索引关系表来实现快速定位待读取的第一目标数据所在的段文件,从而提高数据写入速度。该第二定位模块402用于:根据所述时间戳查询所述索引关系表,以定位用于存储所述第一目标数据的目标段文件。该索引关系表是可以进行动态更新的,具体更新策略后续描述。其中,每一目标段文件均设置有对应的段标识,该索引关系表将时间戳范围与该段标识进行关联存储。
其中,该读取模块403用于根据所述时间戳从所述目标段文件读取所述第一目标数据。由于直接定位到了对应的目标段文件,因此,可以直接对该目标段文件中的稳定文件进行解压,从而查找到对应的不稳定文件,从而将该不稳定文件中的第一目标数据读出,相对于现有的LSM-Tree的读操而言,无需对该数据库中的所有数据进行从新到旧(从上到下)一层一层查找,直到找到想要的第一目标数据,从而大大提高了数据的读出效率。
请参照图8,图8为本申请实施例提供的一种电子设备的结构示意图,本申请提供一种电子设备5,包括:处理器501和存储器502,处理器501和存储器502通过通信总线503和/或其他形式的连接机构(未标出)互连并相互通讯,存储器502存储有处理器501可执行的计算机程序,当计算设备运行时,处理器501执行该计算机程序,以执行时执行上述实施例的任一可选的实现方式中的方法。
本申请实施例提供一种存储介质,所述计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法。其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random AccessMemory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种时序数据库的数据存储方法,其特征在于,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件的时间戳范围没有交集,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述方法包括:
获取待存储的第一目标数据以及所述第一目标数据的时间戳;
根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内;
将所述目标数据写入所述目标段文件内,并基于所述目标数据形成一个不稳定文件;
当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有文件进行压缩,得到目标稳定文件;
其中,所述至少一个段文件包括至少一个第一段文件以及一个第二段文件;所述至少一个第一段文件以及所述一个第二段文件的时间戳范围没有交集;若所述目标段文件为所述第二段文件,且所述第二段文件的数据量满足预设条件,则将所述第二段文件转换为所述第一段文件。
2.根据权利要求1所述的时序数据库的数据存储方法,其特征在于,所述将目标段文件内的所有文件进行压缩,得到目标稳定文件,包括:
若所述目标段文件内存在稳定文件,则将所述稳定文件以及所有不稳定文件进行压缩,得到目标稳定文件;
若所述目标段文件内不存在稳定文件,则将所有不稳定文件进行压缩,得到目标稳定文件。
3.根据权利要求1所述的时序数据库的数据存储方法,其特征在于,所述计量参数为所述目标段文件内的不稳定文件的数量或所有不稳定文件的数据量。
4.根据权利要求1所述的时序数据库的数据存储方法,其特征在于,所述获取待存储的第一目标数据,包括:
将待存储的第一目标数据写入预存日志文件,所述写入预存日志文件用于在第一目标数据未写入所述目标段文件之前暂存所述第一目标数据,并在所述第一目标数据写入所述目标段文件之后删除所述第一目标数据;
将所述第一目标数据从所述预存日志文件写入预设内存区域。
5.根据权利要求1所述的时序数据库的数据存储方法,其特征在于,所述时序数据库还包括索引关系表,所述索引关系表用于将每一时间戳映射至对应的段文件;
所述根据所述时间戳定位用于存储所述第一目标数据的目标段文件,包括:根据所述时间戳查询所述索引关系表,以定位用于存储所述第一目标数据的目标段文件。
6.根据权利要求1所述的时序数据库的数据存储方法,其特征在于,所述第一段文件内的数据量大于或者等于第一预设值,所述第二段文件内的数据量小于第一预设值;
所述第一段文件的时间戳范围为其内存储的目标数据的最小时间戳至最大时间戳;所述第二段文件的时间戳范围为预设时间戳至正无穷,所述预设时间戳为所述第一段文件中最大的一个时间戳与预设时间值的和。
7.根据权利要求6所述的时序数据库的数据存储方法,其特征在于,所述将目标段文件内的所有文件进行压缩,得到目标稳定文件之后,还包括:
判断所述目标段文件在写入所述第一目标数据之前为第一段文件或第二目标段文件;
若所述目标段文件为第二段文件,则判断在写入所述第一目标数据之后,所述目标段文件的数据量是否大于或等于第一预设值;
若大于或等于第一预设值,则判断所述目标段文件的数据量是否小于第二预设值;
若小于第二预设值,则对所述目标段文件对的时间戳范围进更新使得所述目标段文件转换为第一段文件,并建立新的第二段文件。
8.根据权利要求7所述的时序数据库的数据存储方法,其特征在于,所述判断所述目标段文件在写入所述第一目标数据之前为第一段文件或第二目标段文件之后,还包括:
若所述目标段文件为第一段文件,则判断在写入所述第一目标数据之后,所述目标段文件的数据量是否大于或等于第二预设值;
若大于或等于第二预设值,则将所述目标段文件切分设置形成至少两个第一段文件。
9.根据权利要求7所述的时序数据库的数据存储方法,其特征在于,所述判断所述目标段文件的数据量是否小于第二预设值之后,还包括:
若不小于第二预设值,则将所述目标段文件切分设置形成至少两个第一段文件,并建立新的第二段文件。
10.根据权利要求7-9任一项所述的时序数据库的数据存储方法,其特征在于,所述方法还包括:
在将所述目标段文件转换为一个第一段文件或者切分设置为至少两个第一段文件之后,或者建立新的第二段文件之后,对所述时序数据库的索引关系表进行更新。
11.一种时序数据库的数据读取方法,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述方法包括:
获取数据读取请求,所述数据读取请求携带有待读取的第一目标数据的时间戳;
根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述第一目标数据的时间戳位于所述目标段文件的时间戳范围内;
根据所述时间戳从所述目标段文件读取所述第一目标数据;
其中,所述至少一个段文件包括至少一个第一段文件以及一个第二段文件;所述至少一个第一段文件以及所述一个第二段文件的时间戳范围没有交集;
在所述根据所述时间戳从所述目标段文件读取所述第一目标数之前,对所述目标段文件进行判断;
若所述目标段文件为所述第二段文件,且所述第二段文件的数据量满足预设条件,则将所述第二段文件转换为所述第一段文件。
12.根据权利要求11所述的时序数据库的数据读取方法,其特征在于,所述时序数据库还包括索引关系表,所述索引关系表用于将每一时间戳映射至对应的段文件;
所述根据所述时间戳定位用于存储所述第一目标数据的目标段文件,包括:
根据所述时间戳查询所述索引关系表,以定位用于存储所述第一目标数据的目标段文件。
13.一种时序数据库的数据存储装置,其特征在于,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述装置包括:
第一获取模块,用于获取待存储的第一目标数据的时间戳;
第一定位模块,根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述目标数据的时间戳位于所述目标段文件的时间戳范围内;
第一写入模块,用于将所述目标数据写入所述目标段文件内并形成一个不稳定文件;
压缩模块,用于当所述目标段文件内的不稳定文件的计量参数大于或等于第一阈值时,将目标段文件内的所有不稳定文件以及所述稳定文件进行压缩,得到新的稳定文件;
其中,所述至少一个段文件包括至少一个第一段文件以及一个第二段文件;所述至少一个第一段文件以及所述一个第二段文件的时间戳范围没有交集;若所述目标段文件为所述第二段文件,且所述第二段文件的数据量满足预设条件,则将所述第二段文件转换为所述第一段文件。
14.一种时序数据库的数据读取装置,所述时序数据库包括设置有至少一个用于存储目标数据的段文件,不同段文件设置有不同的时间戳范围,每一段文件内的目标数据的时间戳均位于对应段文件的时间戳范围内;所述装置包括:
第二获取模块,用于获取数据读取请求,所述数据读取请求携带有待读取的第一目标数据的时间戳;
第二定位模块,用于根据所述时间戳定位用于存储所述第一目标数据的目标段文件,所述第一目标数据的时间戳位于所述目标段文件的时间戳范围内;
读取模块,用于根据所述时间戳从所述目标段文件读取所述第一目标数据;
其中,所述至少一个段文件包括至少一个第一段文件以及一个第二段文件;所述至少一个第一段文件以及所述一个第二段文件的时间戳范围没有交集;
在所述根据所述时间戳从所述目标段文件读取所述第一目标数之前,对所述目标段文件进行判断;
若所述目标段文件为所述第二段文件,且所述第二段文件的数据量满足预设条件,则将所述第二段文件转换为所述第一段文件。
15.一种电子设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1-12任一项所述的方法。
16.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时运行如权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011298938.8A CN112286948B (zh) | 2020-11-18 | 2020-11-18 | 时序数据库的数据存储方法、读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011298938.8A CN112286948B (zh) | 2020-11-18 | 2020-11-18 | 时序数据库的数据存储方法、读取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112286948A CN112286948A (zh) | 2021-01-29 |
CN112286948B true CN112286948B (zh) | 2023-05-23 |
Family
ID=74398275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011298938.8A Active CN112286948B (zh) | 2020-11-18 | 2020-11-18 | 时序数据库的数据存储方法、读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112286948B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021513A (zh) * | 2016-11-02 | 2018-05-11 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN108304142A (zh) * | 2017-12-29 | 2018-07-20 | 杭州华为数字技术有限公司 | 一种数据管理方法和装置 |
CN110764706A (zh) * | 2019-10-25 | 2020-02-07 | 普联技术有限公司 | 存储系统、数据管理方法及存储介质 |
CN110795428A (zh) * | 2019-10-10 | 2020-02-14 | 中盈优创资讯科技有限公司 | 应用于工业物联网的时序数据存储方法和时序数据库 |
CN111008183A (zh) * | 2019-11-19 | 2020-04-14 | 武汉极意网络科技有限公司 | 一种用于业务风控日志数据的存储方法及系统 |
CN111309687A (zh) * | 2020-01-21 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种对象存储小文件处理方法、装置、设备及存储介质 |
US10776355B1 (en) * | 2016-09-26 | 2020-09-15 | Splunk Inc. | Managing, storing, and caching query results and partial query results for combination with additional query results |
CN111966695A (zh) * | 2020-10-23 | 2020-11-20 | 山东鼎滏软件科技有限公司 | 一种用于油气田生产的时序数据库系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691693B2 (en) * | 2018-01-30 | 2020-06-23 | Salesforce.Com, Inc. | Cache for efficient record lookups in an LSM data structure |
-
2020
- 2020-11-18 CN CN202011298938.8A patent/CN112286948B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776355B1 (en) * | 2016-09-26 | 2020-09-15 | Splunk Inc. | Managing, storing, and caching query results and partial query results for combination with additional query results |
CN108021513A (zh) * | 2016-11-02 | 2018-05-11 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN108304142A (zh) * | 2017-12-29 | 2018-07-20 | 杭州华为数字技术有限公司 | 一种数据管理方法和装置 |
CN110795428A (zh) * | 2019-10-10 | 2020-02-14 | 中盈优创资讯科技有限公司 | 应用于工业物联网的时序数据存储方法和时序数据库 |
CN110764706A (zh) * | 2019-10-25 | 2020-02-07 | 普联技术有限公司 | 存储系统、数据管理方法及存储介质 |
CN111008183A (zh) * | 2019-11-19 | 2020-04-14 | 武汉极意网络科技有限公司 | 一种用于业务风控日志数据的存储方法及系统 |
CN111309687A (zh) * | 2020-01-21 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种对象存储小文件处理方法、装置、设备及存储介质 |
CN111966695A (zh) * | 2020-10-23 | 2020-11-20 | 山东鼎滏软件科技有限公司 | 一种用于油气田生产的时序数据库系统 |
Non-Patent Citations (2)
Title |
---|
Time-series clustering – A decade review;Saeed Aghabozorgi等;Information Systems;第53卷;16-38 * |
时间序列数据压缩算法研究;薄梦雅;中国优秀硕士学位论文全文数据库 (基础科学辑)(第3期);A002-390 * |
Also Published As
Publication number | Publication date |
---|---|
CN112286948A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636083B2 (en) | Data processing method and apparatus, storage medium and electronic device | |
KR101708261B1 (ko) | 개별 액세스 가능한 데이터 유닛의 스토리지 관리 | |
US9069809B2 (en) | Compression scheme for improving cache behavior in database systems | |
US20070118547A1 (en) | Efficient index versioning in multi-version databases | |
CN107577436B (zh) | 一种数据存储方法及装置 | |
US20060004840A1 (en) | Index adding program of relational database, index adding apparatus, and index adding method | |
CN112148794B (zh) | 智能合约的版本管理方法、装置和存储介质 | |
CN113297278B (zh) | 时序数据库、数据处理方法、存储设备及计算机程序产品 | |
CN114490060A (zh) | 内存分配方法、装置、计算机设备和计算机可读存储介质 | |
CN111737244A (zh) | 数据质量检查方法、装置、计算机系统及存储介质 | |
CN108021562B (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
CN114328601A (zh) | 数据降采样和数据查询方法、系统及存储介质 | |
CN112286948B (zh) | 时序数据库的数据存储方法、读取方法及装置 | |
CN115391355B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116048396B (zh) | 基于日志结构化合并树的数据存储装置和存储控制方法 | |
CN113348450A (zh) | 一种车载数据存储方法及系统 | |
CN114896250B (zh) | 一种键值分离的键值存储引擎索引优化方法及装置 | |
CN111399759B (zh) | 读数据、写数据的方法、以及对象文件系统 | |
CN112380174B (zh) | 含删除文件的xfs文件系统解析方法、终端设备及存储介质 | |
CN114217741A (zh) | 存储装置的存储方法及存储装置 | |
CN114116714A (zh) | 一种大数据标签存储方法、分析方法及系统 | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
CN118093557B (zh) | 区块链节点状态数据处理方法、电子装置和存储介质 | |
CN118349573A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |