CN111813782A - 一种时序数据的存储方法、装置 - Google Patents
一种时序数据的存储方法、装置 Download PDFInfo
- Publication number
- CN111813782A CN111813782A CN202010674620.9A CN202010674620A CN111813782A CN 111813782 A CN111813782 A CN 111813782A CN 202010674620 A CN202010674620 A CN 202010674620A CN 111813782 A CN111813782 A CN 111813782A
- Authority
- CN
- China
- Prior art keywords
- data
- mapping code
- mapping
- code
- attribute information
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 94
- 238000013500 data storage Methods 0.000 title abstract description 13
- 238000013507 mapping Methods 0.000 claims abstract description 273
- 238000005259 measurement Methods 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims abstract description 10
- 230000002085 persistent effect Effects 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 52
- 238000013499 data model Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 5
- 230000002688 persistence Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
-
- 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
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种时序数据的存储方法,该方法包括,将待存储时序数据处理为定义的数据结构,并组装成入库数据;其中,数据结构至少包括时序数据的测量名称、标签键、度量、时间精度字段;所述入库数据以至少包括测量名称映射码、时间戳、标签键所包括标签值的映射码为数据点中的行键,以相对时间戳的时间差为数据点中的限定符,其中,时间差与时间精度相关;将所述入库数据写入时序数据库。本申请提高了数据点中行键中可包含的标签数据,实现了时序数据的多值存储,避免了拆分时序数据导致的存储压力。
Description
技术领域
本发明涉及时序数据库领域,特别地,涉及一种时序数据的存储方法。
背景技术
时序数据是基于时间的一系列的数据,带时间标签的数据也称为时间序列数据。
时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快,每一个监测点一秒钟内可产生多条数据;严重依赖于采集时间,每一条数据均要求对应唯一的时间;测点多信息量大,常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量。
参见图1所示,图1为时序数据库中的时序序列的一种示意图。其中,
测量(masurerement):一系列相关的字段(Field)对应的集合,例如:一个Measurement包含多个Metric,针对单个服务器,分别是cpu使用率,内存使用率,IO使用率,
度量(metric):用于随着时间的变化不断变化的采集指标项,由字段键(FieldKey)和字段值(FieldValue)组成,例如,图中的速度,方向,相当于关系型数据库中的table。
数据点(data point):相当于关系型数据库中的row。
时间戳(timestamp):代表数据点产生的时间。
标签(tag):用来描述Measurement的维度组合,一般存放的是并不随着时间戳变化的属性信息;一个标签由标签键(TagKey)和标签值(TagValue)组成,前者表示唯一标签键,后者表示唯一标签的值。例如:国家、省份、市、县、街道名来确定某个唯一街道。
如图中,度量为Wind,每一个数据点都具有一个timestamp,两个field:direction和speed,两个tag:sensor、city。它的第一行和第三行,存放的都是sensor号码为95D8-7913的设备,属性城市是上海。随着时间的变化,风向和风速都发生了改变,风向从23.4变成23.2;而风速从3.4变成了3.3。
由于时序数据量巨大,存在海量数据需要入库的情形,在实际应用中会存在同一设备有大量的上报数据需要进行存储和使用,同一时间几百万的设备数据上报。数据需要在指定的时间内完成存储,这些海量数据面临着存储压力。
现有的海量时序数据存储中,通过将设备上报的数据进行数据拆分来存储。这种方式有效地减少了同一种数据的重复属性存储问题,但是拆分过后数据的写入性能无法满足需求,且进行关联查询时效率较低。例如在设备运维过程中,存在每5分钟一百万级设备进行100个的数据上报情况,存储时写入性能需要达到极高的写入速度,在这种情况下数据的查询工作无法进行。
另一种存储方法中,在数据存储结构和方式对标签字段的一次索引基础上,进行二次索引,但是这种方式本质上只是将数据点的行键(RowKey)进行缩减,并没有对数据的查询进行有效的提升,本质上未能解决当前面临的数据写入压力。
发明内容
本发明提供了一种时序数据的存储方法,以提高海量时序数据的存储效率。
本发明提供的一种时序数据的存储方法是这样实现的:
将待存储时序数据处理为定义的数据结构,并组装成入库数据;
其中,
数据结构至少包括时序数据的测量名称、标签键、度量、时间精度字段;
所述入库数据以至少包括测量名称映射码、时间戳、标签键所包括标签值的映射码为数据点中的行键,以相对时间戳的时间差为数据点中的限定符,其中,时间差与时间精度相关;
将所述入库数据写入时序数据库。
较佳地,所述度量字段中存储的是各个指标项的名称、和该指标项对应数据值的数据类型,
所述将待存储时序数据处理为定义的数据结构,并组装成入库数据,包括,
对于任一待存储时序数据:
基于映射码数据库,获取待写入时序数据中获取测量名称的映射码、以及所有标签值的映射码,并将映射码按照数据结构模式Schema中的标签键的顺序排列,
获取度量集合中各个字段键对应的字段值,将各个字段值转换为字符串,按照数据结构模式Schema中字段键顺序,组成度量集合中的各个字段键、及字段键对应的字符串,
将测量名称的映射码、顺序的标签值映射码、以及最近整点的时间精度字节组装成行键,
获取时间戳到最近整点的时间差,查询时序数据库模式中的时间精度,按照该时间精度将所述时间差进行转换,将转换后的时间差作为限定符。
较佳地,所述将待存储时序数据处理为定义的数据结构,并组装成入库数据,进一步包括,
判断待存储时序数据是否为预统计数据,
如果是,则将标签值的映射码、以及最近零点的时间精度的字节组装成行键,获取时间戳到最近零点的时间差,组成限定符。
较佳地,所述映射码数据库中的映射码数据按照如下方式写入:
根据所需查询映射码的属性信息,进行映射码查询;
如果时序数据库中已存在对应的属性信息,则返回该属性信息对应的映射码;否则,获取映射码,并将属性信息与映射码的相互映射关系进行持久化,返回该属性信息对应的映射码。
较佳地,所述根据所需查询映射码的属性信息,进行映射码查询,包括,
获取属性信息所属的数据结构字段以及类型,
将数据结构字段和类型作为查询条件,基于映射码数据库进行查询;
该方法进一步包括,在内存中加载映射码数据。
较佳地,所述数据结构还包括,标签中的唯一对象标签;
所述映射码数据库包括,用于存储唯一对象标签与其对应的映射码相互映射关系的第一映射码数据库、以及用于存储除唯一对象标签之外的其他非唯一对象标签与该非唯一对象标签对应的映射码相互映射关系的第二映射码数据库;
所述在内存中加载映射码数据包括,
创建唯一对象标签的组装条件请求,
组装映射码关系扫描条件,对映射码数据库进行扫描,获取结果集;将获取的结果集保存至内存中。
较佳地,所述组装映射码关系扫描条件包括,判断扫描条件中是否包含唯一对象标签,当包含唯一对象标签时,创建全映射码数据库查询,否则,创建不包含唯一对象标签的查询;
所述对映射码数据库进行扫描,获取结果集,包括,当映射码数据库扫描成功时,获取到对应的数据,否则,输出错误信息;
所述将获取的结果集保存至内存中,包括,
判断属性信息是否为唯一对象标签,如果是,则获取该唯一对象标签与映射码的映射关系缓存表,否则,判断属性信息是否测量名称,如果是,则获取该测量名称与映射码的映射关系缓存表,如果不是测量名称,则获取非唯一对象标签与映射码的映射关系缓存表;
判断待缓存的映射码与属性信息是否为相互映射关系,如果是,则缓存映射码对应的属性信息和属性信息对应的映射码,否则,判断是否仅缓存根据映射码查询的属性信息关系,如果是,则缓存映射码对应的属性信息,否则,缓存属性信息对应的映射码。
判断唯一对象标签与映射码的映射关系缓存表是否到达上限,如果是,则将最早进入缓存的唯一对象标签去除;
所述根据所需查询映射码的属性信息,进行映射码查询,包括,
判断属性信息是否为唯一对象标签,
如果是,则获取该唯一对象标签与映射码的映射关系缓存表,
否则,判断属性信息是否是测量名称,如果是,则获取该测量名称与映射码的映射关系缓存表,如果不是测量名称,则获取非唯一对象标签与映射码的映射关系缓存表;
判断查询条件是否为映射码,如果是,则获取映射码对应属性信息缓存关系表,根据映射码获取对应属性信息,否则,则获取属性信息对应映射码缓存关系表,根据属性信息获取对应的映射码。
较佳地,所述获取映射码包括,
判断待获取的映射码类型是否为唯一对象标签,如果是,则获取唯一对象标签对应的编号,管理该编号数据,并自增,否则,获取非唯一对象标签对应的编号,管理该编号数据,并自增,
将获取的编号根据映射码配置的大小转化为字节数组,并输出该字节数组。
较佳地,所述将属性信息与映射码的相互映射关系进行持久化,包括,
获取测量名称、标签值、唯一对象标签值以及对应的映射码,将映射码作为键数据写入映射码数据库中,
判断写入是否成功,如果是,则将测量名称、标签值、唯一对象标签值作为键数据写入时序数据库中,否则,输出异常信息。
本发明提供的一种时序数据的存储装置,该装置包括,
写入模块,将待存储时序数据处理为定义的数据结构,并组装成入库数据;
其中,
数据结构至少包括时序数据的测量名称、标签键、度量、时间精度字段;
所述入库数据以至少包括测量名称映射码、时间戳、标签键所包括标签值的映射码为数据点中的行键,以相对时间戳的时间差为数据点中的限定符,其中,时间差与时间精度相关;
将所述入库数据写入时序数据库。、
本发明提供的一种时序数据的存储方法,将待存储时序数据处理为至少包括时序数据的测量名称、标签键、度量、时间精度字段的数据结构,有效地减少了重复数据的冗余,避免了对无法计算的指标值进行计算;以测量名称映射码、时间戳、标签键所包括标签值的映射码为数据点中的行键,以相对时间戳的时间差为数据点中的限定符,组装成入库数据,提高了数据点中行键中可包含的标签数据,实现了数据的多值存储,避免了拆分时序数据导致的存储压力,并实现了指标值除数字类型之外其他数据类型的存储功能。
附图说明
图1为时序数据库中的时序序列的一种示意图。
图2为本申请将时序数据写入时序数据库中的一种流程示意图。
图3为时序数据写入过程中各个进程之间交互的一种示意图。
图4为时序数据模型构建进程的一种流程示意图。
图5为时序数据持久化进程的一种流程示意图。
图6为映射码数据写入进程的一种流程示意图。
图7为映射码数据查询子进程的一种流程示意图。
图8为在内存中加载映射码数据的一种流程示意图。
图9为映射码缓存子进程的一种流程示意图。
图10为映射码缓存查询的一种流程示意图。
图11为映射码获取子进程的一种流程示意图。
图12为映射码数据持久化子进程的一种流程示意图。
图13为本申请存储装置的一种示意图。
具体实施方式
为了使本申请的目的、技术手段和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。
本发明通过构建时序数据模型所获得的数据点,来进行数据存储,即,数据写入。
参见图2所示,图2为本申请将时序数据写入时序数据库中的一种流程示意图。当客户端发送时序数据写入请求时,该写入流程包括,
步骤201,对时序数据参数进行校验,以确定时序数据的合法性;
步骤202,对于校验成功的时序数据,启动映射码数据写入进程,以查询度量、标签值等对应的映射码,或者,创建对应的映射码;
对于校验失败的时序数据,则将失败结果进行组装,获取所有通过校验的时序数据,然后再启动映射码数据写入进程。
如下表1所示的映射码。
Measurement\TagValue | 映射码UID |
服务资源(Service.resource) | {0,0,1} |
杭州 | {0,0,2} |
表1
其中,所述映射码数据用于保存度量、标签值与自增编码的映射关系,以减少数据表中数据点的行键RowKey长度,并且使得所有标签在Rowkey中的长度一致。
在TagValue中可以包含唯一对象标签值(UniqueTagValue),其属于特殊的Tag,可以用来唯一地标识一个唯一对象。例如:个人信息表中的身份证、设备信息表中的设备ID。由于UniqueTagValue与数据对象属于一一对应关系,所以UniqueTagValue的量会比Metric和其他的TagValue多很多,在数据的模糊查询和拆分查询时会导致许多不必要的查询,故将UniqueTagValue的编码与度量、标签值等部分的编码进行分开编码分配,如表2所示,从而提升查询性能。这样,用于存储唯一对象标签与其对应的映射码相互映射关系的第一映射码数据库、以及用于存储除唯一对象标签之外的其他非唯一对象标签与该非唯一对象标签对应的映射码相互映射关系的第二映射码数据库。
UniqueTagValue | 映射码UID |
127.0.0.1 | {0,0,1} |
表2
步骤203,启动时序数据模型构建进程,以构建预设的数据结构,并基于所构建数据结构中的数据,将时序数据组装成入库数据,即组装成数据点数据。
如下表3所示的数据结构。
表3
数据结构包括Measurement、Tagkey、Metrics、时间精度(TimePercision)字段,还可以包括唯一对象标签键(UniqueTagKey)字段。通过TagKey字段可以保证数据点的RowKey中各个Tag的顺序,同时可以去除RowKey中的TagKey部分,从而提高RowKey的可用性。Metrics字段中存储的是各个指标项的名称、和该指标项对应数据值的数据类型,这样可以实现多种指标的免拆分,从而提升单条数据的信息质量,并且避免非法类型或脏时序数据入库。TimePrecision用于保证时序数据的入库时间精度,保证时序数据按照用户使用需求进行存储,同时避免不同时间精度转换而影响数据的查询性能,例如,时间精度为秒,或者毫秒等。UniqueTagKey是指TagKey中能够唯一指向唯一对象的标签键,该字段用于查询映射码。
数据点的RowKey部分是由Measurement的UID+整点时间精度时间戳+TagValue的UID集合组成;其中,整点时间精度时间戳可以为整点秒级时间戳或者,整点毫秒级时间戳,具体取决于数据结构中设置的时间精度,TagValue的UID集合中的顺序由数据结构模式(Schema)来保证。行值RowValue部分由相对于时间戳的各整点时间精度的度量集合中的字段值组成。
如表4所示,该数据点中,RowKey中的各部分分别表示:{0,0,1}为Measurement中的Service.resource测量业务所对应的映射码,1465920000为时间戳,{0,0,2}为TagKey中local(杭州)对应的映射码,{0,0,1}为UniqueTagKey中ip对应的映射码。RowValue中,1465920000的0秒时cpu的负荷为10%,100字节,1465920000的1秒时cpu的负荷为30%,1000字节,1465920000的2秒时cpu的负荷为70%,10000字节……以此类推。
RowKey | +0 | +1 | +2 |
{0,0,1},1465920000,{0,0,2},{0,0,1} | {10%,100} | {30%,1000} | {70%,10000} |
表4
步骤204,在时序数据持久化进程中,基于时序数据模型获得的入库数据,将入库数据写入时序数据库中。
步骤205,判断是否存在持久化失败数据,如果是,则将失败结果进行组装,否则,结束当前时序数据写入。
参见图3所示,图3为时序数据写入过程中各个进程之间交互的一种示意图。该交互过程包括如下步骤:
步骤301,客户端(服务调用者)向写入进程发送时序数据写入请求,
步骤302,写入进程进行数据校验,
步骤303,当校验成功时,写入进程向时序数据库中的元数据查询对应的模式,并接收返回的查询结果。
步骤304,写入进程向映射码数据写入进程发送所需查询映射码的属性信息,映射码数据写入进程响应于该发送请求,进行映射码查询,将该属性对应的映射码反馈给写入进程,以使得写入进程获得该属性对应的映射码,如果写入进程未获得该属性对应的映射码,则向映射码数据写入进程发送所需创建映射码的属性信息;映射码数据写入进程基于属性信息创建映射码,并向写入进程反馈映射码;
步骤305,写入进程基于构建的时序数据模型,将待写入时序数据组装成入库数据,
步骤306,写入进程将入库数据加入到压缩进程中的压缩队列,接收压缩进程队列返回的加入压缩队列情况;
步骤307,写入进程向时序数据库发送数据写入请求,接收时序数据库返回的数据写入结果,
步骤308,写入进程向客户端返回写入情况。
参见图4所示,图4为时序数据模型构建进程的一种流程示意图。该构建进程包括,
步骤401,判断时序数据是否为压缩数据,如果是,则结束,否则,执行步骤402,
步骤402,基于映射码数据,获取时序数据中所有TagValue的映射码,并将映射码按照Schema中标签键(TagKey)的顺序排序,以得到数据结构中的标签键字段,
步骤403,获取度量集合中各个字段键对应的字段值,即,获取字段值集合;将各个字段值转换为JSON格式的字符串;按照Schema中字段键顺序,组成度量集合中的各个字段键、及其对应的字符串,以得到数据结构中的度量字段,
步骤404,判断是否为预统计数据,以实现对时序数据聚合后的二次存储,
如果是,则执行步骤405,将TagValue的映射码、以及最近零点的秒级的字节组装为RowKey,获取时间戳到最近零点的时间差组成限定符(Qualifier),例如,时间戳为20:32,最近零点为24:00,时间差为3小时28分钟。
否则,执行步骤406,获取Measurement的映射码,将Measurement的映射码、顺序的TagValue映射码、以及最近整点的秒级字节组装成RowKey;步骤407,查询Schema中的时间精度,获取时间戳到最近整点的时间差,按照查询的Schema中的时间精度进行转换,将转换的时间差作为限定符。例如,时间戳为16:23,最近整点为17:00,时间差为37分钟。通过上述进程所构建按时序数据模型,得到包括TagKey、度量的数据结构,以及包括RowKey、和限制符的数据点。
参见图5所示,图5为时序数据持久化进程的一种流程示意图。该进程包括,
步骤501,获取时序数据模型,基于时序数据模型所得到的数据结构,将待写入的时序数据中测量名称的标签值、各个度量的字段键和对应的字段值、时间精度按照数据结构进行记录;基于时序数据模型所得到数据点中的RowKey、和限定符,将数据结构对应的字段记录为对应的RowValue,组装为入库数据,
步骤502,将入库数据写入时序数据库中,
步骤503,判断入库数据是否写入成功,如果是,则缓存入库数据,否则,判断是否为批量写入时序数据库,如果是,则组装失败结果,并输出错误信息,否则,则直接输出错误信息,并向客户端返回写入结果。
参见图6所示,图6为映射码数据写入进程的一种流程示意图。该进程包括,
步骤601,判断待写入的时序数据参数校验是否正确,如果是,则将所需查询映射码的属性信息(例如测量名称、标签键、唯一对象标签等)作为条件,发送给映射码数据查询子进程,否则,输出异常信息,
步骤602,映射码数据查询子进程进行查询,
步骤603,判断时序数据库中对应存入的属性信息是否已存在,如果是,则返回该属性对应的映射码,否则,通过映射码获取子进程获取映射码,
步骤604,对于获取的映射码,映射码数据持久化子进程将映射码与属性信息相互映射关系存入映射码关系表中,以将映射码数据持久化到映射码数据库中
步骤605,映射码缓存子进程对映射码进行缓存。
步骤606,向写入进程返回该属性对应的映射码。
其中,为了提高映射码的查询效率,根据数据库硬件配置情况,可以在业务应用启动时将映射码关系表加载到内存中,这样,映射码数据表查询子进程包括了映射码缓存查询和映射码数据库查询,当参数校验正确时,先在缓存中查询属性对应的映射码,如果缓存查询失败,则在映射码数据表中进行查询,并将查询到的映射码保存至缓存中。
参见图7所示,图7为映射码数据查询子进程的一种流程示意图。通过该进程,可实现根据唯一对象标签值、测量名称、标签值、或映射码获取对应的数据。该进程包括,
步骤701,获取所需查询映射码数据(属性信息)所属的数据结构字段,例如,是唯一对象标签值还是非唯一对象标签值,
步骤702,获取所需查询数据的类型,包括映射码、名称等。
步骤703,组装步骤701、702所获取的结果,作为查询条件,
步骤704,查询映射码数据库,
步骤705,判断是否查询成功,如果是,则向写入进程返回查询结果,否则,返回错误信息。
参见图8所示,图8为在内存中加载映射码数据的一种流程示意图。创建包含唯一对象标签的组装条件请求,通过组装查询条件子进程组装映射码关系扫描条件,以组装批量扫描条件从映射码数据库中扫描数据;通过映射码数据扫描子进程对映射码数据库进行扫描获取结果集;通过映射码缓存子进程将获取的结果集保存至内存中。
其中,在组装查询条件子进程中,判断扫描条件中是否包含唯一对象标签,当包含唯一对象标签时,创建全映射码数据库查询,否则,创建不包含唯一对象标签的查询;
在映射码数据扫描子进程中,获取扫描请求,进行映射码数据库扫描,当数据库扫描成功时,获取到对应的数据,否则,输出错误信息,从而实现了按照组装条件从映射码数据库汇总获取到所有符合条件结果。
参见图9所示,图9为映射码缓存子进程的一种流程示意图,用于映射码写入缓存和缓存查询结果,提高后续的查询效率。该进程包括,
步骤901,判断属性信息是否为唯一对象标签,
如果是,则获取该唯一对象标签与映射码的映射关系缓存表,
否则,判断属性信息是否是测量名称,如果是,则获取该测量名称与映射码的映射关系缓存表,如果不是测量名称,则获取非唯一对象标签与映射码的映射关系缓存表;
步骤902,判断待缓存的映射码与属性信息是否为相互映射关系,如果是,则缓存映射码对应的属性信息和属性信息对应的映射码,否则,判断是否仅缓存根据映射码查询属性信息关系,如果是,则缓存映射码对应的属性信息,否则,缓存属性信息对应的映射码。
步骤903,判断唯一对象标签与映射码的映射关系缓存表是否到达上限,如果是,则将最早进入缓存的唯一对象标签去除。
参见图10所示,图10为映射码缓存查询的一种流程示意图,用于根据条件获取缓存中映射码。
步骤1001,判断属性信息是否为唯一对象标签,
如果是,则获取该唯一对象标签与映射码的映射关系缓存表,
否则,判断属性信息是否是测量名称,如果是,则获取该测量名称与映射码的映射关系缓存表,如果不是测量名称,则获取非唯一对象标签与映射码的映射关系缓存表;
步骤1002,判断查询条件是否为映射码,
如果是,则获取映射码对应属性信息缓存关系表,根据映射码获取对应属性信息,
否则,则获取属性信息对应映射码缓存关系表,根据属性信息获取对应的映射码。
参见图11所示,图11为映射码获取子进程的一种流程示意图。该进程包括,
判断待获取的映射码类型是否为唯一对象标签,如果是,则获取唯一对象标签对应的编号,管理该编号数据,并自增,否则,获取非唯一对象标签对应的编号,管理该编号数据,并自增,
将获取的编号根据映射码配置的大小转化为字节数组,并输出该字节数组。
参见图12所示,图12为映射码数据持久化子进程的一种流程示意图。该进程包括,
获取测量名称、标签值、唯一对象标签值以及对应的映射码,将映射码作为键(Key)数据写入映射码数据库中,
判断写入是否成功,如果是,则将测量名称、标签值、唯一对象标签值作为键数据写入时序数据库中,当写入成功时,则说明完成了映射码关系的持久化,否则,输出异常信息。
下表中汇总了本申请时序数据存储(写入)过程中所包括的各进程/子进程及其的功能。
在上述实施例中,较佳地,将第一映射码数据库加载至内存中,以提高映射码查询的效率。
通过本申请实施例时序数据存储方法,由于RowKey中无需保存标签本身,从而能够提高数据的RowKey中可包含的Tag数量,例如,一个包括3个标签值且每个标签值的映射码包括3字节的时序数据中,相对于现有技术中将3个标签存储的时序数据,假如标签键也是用3个字节的映射码,就需要9个字节存储,这样,本申请的每个RowKey减少了9字节;假设measurement对应的映射码为3字节,整点秒级时间戳为4字节,Tagvalue的映射码为3字节,3个Tagvalue共9字节,3个tagkey的映射码就是9字节,那么整体上节约的空间为:9/(3+4+9+9)=36%;在查询时,为查询到对应映射码,只需要进行数据映射码查询交互4次(3个标签查询需要3次,测量名称查询需要1次)、与数据结构交互1次(确定限定符对应的度量集合中的字段值),相对于现有技术拆分存储,大大减少了交互的次数,同时RowKey中去除了TagKey映射码,也减少了映射码的查询压力。在数据存储方面,根据Schema的Metrics字段既能减少对数据类型的多重校验同时也可以做到支持字符串类型的存储功能,并且避免了数据拆分存储导致的存储压力提升。
参见图13所示,图13为本申请存储装置的一种示意图。该存储装置包括,写入模块,将待存储时序数据处理为定义的数据结构,并组装成入库数据;
其中,
数据结构至少包括时序数据的测量名称、标签键、度量、时间精度字段;
所述入库数据以至少包括测量名称映射码、时间戳、标签键所包括标签值的映射码为数据点中的行键,以相对时间戳的时间差为数据点中的限定符,其中,时间差与时间精度相关;
将所述入库数据写入时序数据库。
本实施例的存储方法可应用于任一包括存储器和处理器的电子设备中。其中,存储器用于存储数据,所述处理器被配置执行上述时序数据存储方法的步骤。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述时序数据存储方法的步骤:
对于装置/网络侧设备/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种时序数据的存储方法,其特征在于,该方法包括,
将待存储时序数据处理为定义的数据结构,并组装成入库数据;
其中,
数据结构至少包括时序数据的测量名称、标签键、度量、时间精度字段;
所述入库数据以至少包括测量名称映射码、时间戳、标签键所包括标签值的映射码为数据点中的行键,以相对时间戳的时间差为数据点中的限定符,其中,时间差与时间精度相关;
将所述入库数据写入时序数据库。
2.如权利要求1所述的存储方法,其特征在于,所述度量字段中存储有各个指标项的名称、和该指标项对应数据值的数据类型,
所述将待存储时序数据处理为定义的数据结构,并组装成入库数据,包括,
对于任一待存储时序数据:
基于映射码数据库,获取待写入时序数据中获取测量名称的映射码、以及所有标签值的映射码,并将映射码按照数据结构模式Schema中的标签键的顺序排列,
获取度量集合中各个字段键对应的字段值,将各个字段值转换为字符串,按照数据结构模式Schema中字段键顺序,组成度量集合中的各个字段键、及字段键对应的字符串,
将测量名称的映射码、顺序的标签值映射码、以及最近整点的时间精度字节组装成行键,
获取时间戳到最近整点的时间差,查询时序数据库模式中的时间精度,按照该时间精度将所述时间差进行转换,将转换后的时间差作为限定符。
3.如权利要求2所述的存储方法,其特征在于,所述将待存储时序数据处理为定义的数据结构,并组装成入库数据,进一步包括,
判断待存储时序数据是否为预统计数据,
如果是,则将标签值的映射码、以及最近零点的时间精度的字节组装成行键,获取时间戳到最近零点的时间差,组成限定符。
4.如权利要求2所述的存储方法,其特征在于,所述映射码数据库中的映射码数据按照如下方式写入:
根据所需查询映射码的属性信息,进行映射码查询;
如果时序数据库中已存在对应的属性信息,则返回该属性信息对应的映射码;否则,获取映射码,并将属性信息与映射码的相互映射关系进行持久化,返回该属性信息对应的映射码。
5.如权利要求4所述的存储方法,其特征在于,所述根据所需查询映射码的属性信息,进行映射码查询,包括,
获取属性信息所属的数据结构字段以及类型,
将数据结构字段和类型作为查询条件,基于映射码数据库进行查询;
该方法进一步包括,在内存中加载映射码数据。
6.如权利要求4所述的存储方法,其特征在于,所述数据结构还包括,标签中的唯一对象标签;
所述映射码数据库包括,用于存储唯一对象标签与其对应的映射码相互映射关系的第一映射码数据库、以及用于存储除唯一对象标签之外的其他非唯一对象标签与该非唯一对象标签对应的映射码相互映射关系的第二映射码数据库;
所述在内存中加载映射码数据包括,
创建唯一对象标签的组装条件请求,
组装映射码关系扫描条件,对映射码数据库进行扫描,获取结果集;将获取的结果集保存至内存中。
7.如权利要求6所述的存储方法,其特征在于,所述组装映射码关系扫描条件包括,判断扫描条件中是否包含唯一对象标签,当包含唯一对象标签时,创建全映射码数据库查询,否则,创建不包含唯一对象标签的查询;
所述对映射码数据库进行扫描,获取结果集,包括,当映射码数据库扫描成功时,获取到对应的数据,否则,输出错误信息;
所述将获取的结果集保存至内存中,包括,
判断属性信息是否为唯一对象标签,如果是,则获取该唯一对象标签与映射码的映射关系缓存表,否则,判断属性信息是否测量名称,如果是,则获取该测量名称与映射码的映射关系缓存表,如果不是测量名称,则获取非唯一对象标签与映射码的映射关系缓存表;
判断待缓存的映射码与属性信息是否为相互映射关系,如果是,则缓存映射码对应的属性信息和属性信息对应的映射码,否则,判断是否仅缓存根据映射码查询的属性信息关系,如果是,则缓存映射码对应的属性信息,否则,缓存属性信息对应的映射码;
判断唯一对象标签与映射码的映射关系缓存表是否到达上限,如果是,则将最早进入缓存的唯一对象标签去除;
所述根据所需查询映射码的属性信息,进行映射码查询,包括,
判断属性信息是否为唯一对象标签,
如果是,则获取该唯一对象标签与映射码的映射关系缓存表,
否则,判断属性信息是否是测量名称,如果是,则获取该测量名称与映射码的映射关系缓存表,如果不是测量名称,则获取非唯一对象标签与映射码的映射关系缓存表;
判断查询条件是否为映射码,如果是,则获取映射码对应属性信息缓存关系表,根据映射码获取对应属性信息,否则,则获取属性信息对应映射码缓存关系表,根据属性信息获取对应的映射码。
8.如权利要求4所述的存储方法,其特征在于,所述获取映射码包括,
判断待获取的映射码类型是否为唯一对象标签,如果是,则获取唯一对象标签对应的编号,管理该编号数据,并自增,否则,获取非唯一对象标签对应的编号,管理该编号数据,并自增,
将获取的编号根据映射码配置的大小转化为字节数组,并输出该字节数组。
9.如权利要求4所述的存储方法,其特征在于,所述将属性信息与映射码的相互映射关系进行持久化,包括,
获取测量名称、标签值、唯一对象标签值以及对应的映射码,将映射码作为键数据写入映射码数据库中,
判断写入是否成功,如果是,则将测量名称、标签值、唯一对象标签值作为键数据写入时序数据库中,否则,输出异常信息。
10.一种时序数据的存储装置,其特征在于,该装置包括,
写入模块,将待存储时序数据处理为定义的数据结构,并组装成入库数据;
其中,
数据结构至少包括时序数据的测量名称、标签键、度量、时间精度字段;
所述入库数据以至少包括测量名称映射码、时间戳、标签键所包括标签值的映射码为数据点中的行键,以相对时间戳的时间差为数据点中的限定符,其中,时间差与时间精度相关;
将所述入库数据写入时序数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010674620.9A CN111813782B (zh) | 2020-07-14 | 2020-07-14 | 一种时序数据的存储方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010674620.9A CN111813782B (zh) | 2020-07-14 | 2020-07-14 | 一种时序数据的存储方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813782A true CN111813782A (zh) | 2020-10-23 |
CN111813782B CN111813782B (zh) | 2024-07-26 |
Family
ID=72842839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010674620.9A Active CN111813782B (zh) | 2020-07-14 | 2020-07-14 | 一种时序数据的存储方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813782B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112364033A (zh) * | 2021-01-13 | 2021-02-12 | 北京云真信科技有限公司 | 一种数据检索系统 |
CN112732714A (zh) * | 2020-12-30 | 2021-04-30 | 杭州海康威视数字技术股份有限公司 | 一种基于Hbase的时序数据存储方法、装置及设备 |
CN112818013A (zh) * | 2021-01-27 | 2021-05-18 | 北京百度网讯科技有限公司 | 时序数据库查询优化方法、装置、设备以及存储介质 |
CN112953913A (zh) * | 2021-01-29 | 2021-06-11 | 江苏提米智能科技有限公司 | 一种实现工业物联网智能设备数据快速接入、汇聚、存储和发布的方法 |
CN113111098A (zh) * | 2021-06-11 | 2021-07-13 | 阿里云计算有限公司 | 检测时序数据的查询的方法、装置及时序数据库系统 |
CN113312313A (zh) * | 2021-01-29 | 2021-08-27 | 淘宝(中国)软件有限公司 | 数据查询方法、非易失性存储介质及电子设备 |
CN115757427A (zh) * | 2022-12-01 | 2023-03-07 | 北京空间飞行器总体设计部 | 一种航天器测试数据的存储方法和软件 |
CN116049153A (zh) * | 2022-12-12 | 2023-05-02 | 本原数据(北京)信息技术有限公司 | 时序数据处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140040276A1 (en) * | 2012-07-31 | 2014-02-06 | International Business Machines Corporation | Method and apparatus for processing time series data |
CN103605805A (zh) * | 2013-12-09 | 2014-02-26 | 冶金自动化研究设计院 | 一种海量时序数据的存储方法 |
CN106547888A (zh) * | 2016-11-04 | 2017-03-29 | 北京集奥聚合科技有限公司 | 一种时间序列数据库的构造方法及系统 |
CN106648446A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于时序数据的存储方法、装置及电子设备 |
CN110109923A (zh) * | 2019-04-04 | 2019-08-09 | 北京市天元网络技术股份有限公司 | 时序数据的存储方法、分析方法及装置 |
-
2020
- 2020-07-14 CN CN202010674620.9A patent/CN111813782B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140040276A1 (en) * | 2012-07-31 | 2014-02-06 | International Business Machines Corporation | Method and apparatus for processing time series data |
CN103605805A (zh) * | 2013-12-09 | 2014-02-26 | 冶金自动化研究设计院 | 一种海量时序数据的存储方法 |
CN106648446A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于时序数据的存储方法、装置及电子设备 |
CN106547888A (zh) * | 2016-11-04 | 2017-03-29 | 北京集奥聚合科技有限公司 | 一种时间序列数据库的构造方法及系统 |
CN110109923A (zh) * | 2019-04-04 | 2019-08-09 | 北京市天元网络技术股份有限公司 | 时序数据的存储方法、分析方法及装置 |
Non-Patent Citations (1)
Title |
---|
黄缙华;周伊琳;: "基于EMS时间序列数据的实时全息无损压缩方法的研究与应用", 广东电力, no. 09 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732714A (zh) * | 2020-12-30 | 2021-04-30 | 杭州海康威视数字技术股份有限公司 | 一种基于Hbase的时序数据存储方法、装置及设备 |
CN112364033A (zh) * | 2021-01-13 | 2021-02-12 | 北京云真信科技有限公司 | 一种数据检索系统 |
CN112364033B (zh) * | 2021-01-13 | 2021-04-13 | 北京云真信科技有限公司 | 一种数据检索系统 |
CN112818013B (zh) * | 2021-01-27 | 2023-07-21 | 北京百度网讯科技有限公司 | 时序数据库查询优化方法、装置、设备以及存储介质 |
CN112818013A (zh) * | 2021-01-27 | 2021-05-18 | 北京百度网讯科技有限公司 | 时序数据库查询优化方法、装置、设备以及存储介质 |
CN112953913A (zh) * | 2021-01-29 | 2021-06-11 | 江苏提米智能科技有限公司 | 一种实现工业物联网智能设备数据快速接入、汇聚、存储和发布的方法 |
CN113312313A (zh) * | 2021-01-29 | 2021-08-27 | 淘宝(中国)软件有限公司 | 数据查询方法、非易失性存储介质及电子设备 |
CN113312313B (zh) * | 2021-01-29 | 2023-09-29 | 淘宝(中国)软件有限公司 | 数据查询方法、非易失性存储介质及电子设备 |
CN113111098A (zh) * | 2021-06-11 | 2021-07-13 | 阿里云计算有限公司 | 检测时序数据的查询的方法、装置及时序数据库系统 |
CN115757427A (zh) * | 2022-12-01 | 2023-03-07 | 北京空间飞行器总体设计部 | 一种航天器测试数据的存储方法和软件 |
CN115757427B (zh) * | 2022-12-01 | 2023-12-29 | 北京空间飞行器总体设计部 | 一种航天器测试数据的存储方法 |
CN116049153A (zh) * | 2022-12-12 | 2023-05-02 | 本原数据(北京)信息技术有限公司 | 时序数据处理方法、装置、电子设备及存储介质 |
CN116049153B (zh) * | 2022-12-12 | 2023-08-25 | 本原数据(北京)信息技术有限公司 | 数据库的数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111813782B (zh) | 2024-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813782B (zh) | 一种时序数据的存储方法、装置 | |
US9135280B2 (en) | Grouping interdependent fields | |
US10204111B2 (en) | System and method for compressing data in a database | |
CN101344893B (zh) | 一种历史数据的存取方法和装置 | |
US8913264B2 (en) | Method and system for storing and retrieving data | |
US9842134B2 (en) | Data query interface system in an event historian | |
KR20110014987A (ko) | 개별 액세스 가능한 데이터 유닛의 스토리지 관리 | |
CN112667720A (zh) | 接口数据模型的转化方法、装置、设备及存储介质 | |
CN105389352A (zh) | 日志处理方法和装置 | |
CN103942287A (zh) | 海量数据处理方法、数据库服务器及应用服务器 | |
CN112364033B (zh) | 一种数据检索系统 | |
CN103678338A (zh) | 一种带智能缓存模块的物联网标识解析方法 | |
US20110289112A1 (en) | Database system, database management method, database structure, and storage medium | |
CN109684528A (zh) | 跨库分页查询方法、系统和存储介质 | |
CN111782671B (zh) | 一种基于分布式数据库实现cdc的优化方法 | |
CN111046081B (zh) | 一种工业时序数据的访问方法及系统 | |
CN113553341A (zh) | 多维数据分析方法、装置、设备及计算机可读存储介质 | |
CN115391495A (zh) | 在中文语境中检索关键词的方法、装置及设备 | |
CN117251414B (zh) | 一种基于异构技术的数据存储及处理方法 | |
CN109299089B (zh) | 一种画像标签数据的计算及存储方法和计算及存储系统 | |
CN109495537B (zh) | 物联网监测大数据的存储方法与存储系统 | |
CN116303628A (zh) | 基于Elasticsearch的告警数据查询方法、系统及设备 | |
CN112181994B (zh) | 运维大数据的分布式内存数据库的刷新方法、装置、介质 | |
EP3436988B1 (en) | "methods and systems for database optimisation" | |
CN108959581A (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 |