时序数据库、数据处理方法、存储设备及计算机程序产品与流程

文档序号:26406545发布日期:2021-08-24 16:21阅读:118来源:国知局
时序数据库、数据处理方法、存储设备及计算机程序产品与流程

本申请涉及计算机技术领域,尤其涉及一种时序数据库、数据处理方法、存储设备及计算机程序产品。



背景技术:

随着物联网或工业互联网的应用越来越广泛,工业互联网中的监测系统或者物联网设备,产生了越来越多的基于时间序列的数据,这些数据被称为时序数据点。时序数据点通常采用时序数据库进行存储和管理,常用的时序数据库有influxdb、timescaledb、kairosdb等,其具有支持时序数据点的快速存入、持久化、聚合统计查询等。

目前,在物联网和工业互联网领域存在一类需求是查询时序数据集中的最新时序数据点。其中,最新时序数据点是指时序数据集中时间戳最晚的数据点。而现有最新时序数据点查询方案存在额外开销大、查询效率低等问题。



技术实现要素:

本申请提供一种解决上述问题或至少部分地解决上述问题的时序数据库、数据处理方法、存储设备及计算机程序产品。

在本申请的一个实施例中,提供了一种时序数据库。该时序数据库包括:

多个存储分区;

第一管理器,用于在有待存入的目标数据时,根据所述目标数据的第一时间戳及所属数据序列的序列标识,在所述多个存储分区中确定目标存储分区,触发所述目标存储分区执行存入所述目标数据的操作;

预设分区;

所述第一管理器,还用于根据所述目标数据所属数据序列的序列标识,获取对应的新点判定条件,在所述目标数据的第一时间戳满足所述新点判定条件时,触发所述预设分区执行存入所述目标数据的操作。

在本申请的另一实施例中,提供了一种数据处理方法。该方法包括:

有待存入时序数据库的目标数据时,根据所述目标数据所属数据序列的序列标识,获取对应的新点判定条件;

所述目标数据的第一时间戳满足所述新点判定条件时,触发预设分区执行存入所述目标数据的操作;

其中,所述时序数据库包括所述预设分区及多个存储分区,所述存储分区用于存储需存入时序数据库的数据,所述预设分区用于存入满足新点判定条件的数据以为新点查询提供服务。

在本申请的又一实施例中,还提供了一种数据处理方法。该方法包括:

接收新点查询请求,其中,所述请求携带有序列标识;

根据所述序列标识,在时序数据库的预设分区中查询与所述请求指定数据匹配的新点数据;

其中,所述时序数据库包括所述预设分区及多个存储分区,所述预设分区用于存入时间戳满足新点判定条件的数据。

在本申请的又一实施例中,还提供了一种存储设备。该存储设备包括处理器及存储器,其中,

所述存储器,用于存储一条或多条计算机指令;

所述处理器,与所述存储器耦合,用于所述至少一条或多条计算机指令,以用于实现上述各数据处理方法实施例中的步骤。

在本申请的又一实施例中,还提供了一种计算机程序产品。该计算机程序产品包括计算机程序或指令,当所述计算机程序或指令被处理器执行时,致使所述处理器能够实现上述各数据处理方法实施例中的步骤。

本申请实施例提供的技术方案,通过在时序数据库中设置预设分区,该预设分区专门用于存入满足新点判定条件的数据(下文将统一称为新点数据);也就是说将新点数据单独存入预设分区内,在有新点查询需求时,直接在预设分区内查询即可,查询效率高,响应速度快。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要利用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了一种时序数据库的原理性架构图;

图2示出了时序数据库中数据在存区内存中的组织形式;

图3示出了本申请一实施例提供的时序数据库的原理性架构图;

图4示出了预设文件中的一个预设文件块通过mmap映射到内存后的示意图;

图5示出了本申请实施例提供的一种数据处理方法的流程示意图;

图6示出了本申请另一实施例提供的一种数据处理方法的流程示意图;

图7示出了本申请实施例提供的所述数据处理方法中新点数据查询过程示意图;

图8示出了本申请一实施例提供的数据处理装置的结构示意图;

图9示出了本申请另一实施例提供的数据处理装置的结构示意图;

图10示出了本申请一实施例提供的存储设备的原理性结构示意图。

具体实施方式

在介绍本申请各实施例的技术方案之前,先对本文中涉及到的名词或术语进行简要说明。

tsdb(timeseriesdatabase,时序数据库)是一种特定类型的数据库,提供高效存取时序数据和统计分析功能的数据管理系统。tsdb可应用物联网领域。物联网场景下,很多设备都会联网,这些设备每时每刻都会吐出大量的按照时间戳组织的数据,需要将这些数据存储下来进行查询、统计和分析。tsdb还可应用在监测场景,比如在服务器上部署各种脚本客户端用来采集服务器指标数据(io指标、cpu指标、带宽内存指标等等)、数据库相关数据(读取延迟、存入延迟等等)。这些数据都是时间序列相关的,将采集到的这些时间序列数据进行存储,并提供页面给用户进行查询。

时序数据(timeseriesdata):持续产生的一系列指标监测数据。例如,监测某城市的空气质量时,每秒采集一个二氧化硫浓度的值而产生的一系列数据。

度量(metric):监测数据的指标,例如风力和温度。

标签(tag):度量虽然指明了要监测的指标项,但没有指明要针对什么对象的该指标项进行监测。标签(tag)就是用于标明指标项监测针对的具体对象,属于指定度量下的数据子类别。

一个标签(tag)由一个标签键(tagkey)和一个对应的标签值(tagvalue)组成。其中,标签键(tagkey,简称tagk)为度量(metric)监测指定的对象类型,如国家、省份、城市、机房、ip等。标签值(tagvalue,简称tagv)为标签键(tagkey)对应的值,用来定位所述标签键指定的对象类型下的具体对象值,例如,tagk是“国家”时,相应的tagv可为“中国”。

值(value):度量对应的值,例如:风力15级、温度25℃

例如:

注意:当标签键和标签值都相同才算同一个标签;标签键相同,标签值不同,则不是同一个标签。

时间戳(timestamp):值(value)产生的时间点。

数据点(datapoint):一个度量+n个标签(n≥1)+一个时间戳+一个值,为一个数据点。

时间序列(timeseries);等同于时间线(timeline)的概念,针对某个监测对象的某项指标(由度量和标签定义)的描述。一个度量+n个标签(n≥1)+多个时间戳+多个时间戳分别对应的值,定义为一个时间序列。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。此外,下述的各实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1示出了一种时序数据库的原理性架构图。如图1所示,时序数据库内部会一个或多个rententionpolicy(数据保留策略,简称rp),负责配置数据duration(即数据的过期时间戳),shardgroupduration(分区组持续时间戳)和数据副本数量。不同分区组(如图1中的分区组1和分区组2)对应的数据保留策略可不同。当然,不同分区组(如图1中的分区组1和分区组3)对应的数据保留策略也可相同,本实施例对此不作限定。对于shardgroup(分区组)而言,shardgroup包含有一个或多个shard(存储分区)。其实,shardgroup是一个逻辑概念。对于shard的数量,可按照数据节点数以及所需的数据副本数量确定。shard就是存储分区,具体形式就是存储引擎(如tsmengine,timesortmergetreeengine,中文时间排序合并树引擎),其主要负责数据编码,数据读写。如图1所示,存储分区具有cache(内存)、wal文件(日志文件)、datafile(数据文件)等组件,还具有compaction(压缩),flush(刷新)等数据操作。

这里需要补充的是,下文中提出的实施例中时序数据库中还包括预设分区,为区别预设分区具有的内存和存储分区具有的内存,本文中将存储分区具有的内存称为存区内存,将预设分区具有的内存称为预设内存。

shardgroup会包含多个shard,每个shardgroup只存储指定时间段的数据。不同shardgroup对应的时间段不会重合。比如,2021年5月份的数据落在分区组1上,2021年6月份的数据落在分区组3上。每个shardgroup对应多长时间戳是通过retentionpolicy中字段“shardduration”指定的。

图2所示的是时序数据库中数据在存区内存中的组织形式。时序数据存入存区内存后会按照serieskey进行组织,可以认为serieskey是一个数据源的唯一标识。比如上文中的表格:serieskey的值可以是:metric+tag;其中,tag可以包含有多个。field包含多个时间戳+多个时间戳分别对应的值(value)。将field视为数据序列(或是上述专有名词中的时间序列),相应的serieskey便可称为该数据序列的序列标识。

时序数据库中,数据是以数据块为最小单位存储在相应存储分区的数据文件中。数据文件的结构包括:多个文件块(datablock)、索引块(indexblock)以及页脚(footer)等。

存储引擎(即存储分区)采用内存缓存和日志文件来保证高效存入,内存缓存数据的目的是:代替日志文件提供对临近数据的高效读取。日志文件写入数据的目的是:在数据库重启后能够重建内存缓存,日志文件不用于读取数据。即为了保证存入的高效,数据先存入存储分区的存区内存,当存区内存容量达到一定阈值之后flush(刷新或存入)到数据文件。

为了能离散的存储数据以及提高读取效率,时序数据库大多采用哈希分片策略(hashsharding),以将数据分散存入到不同存储分区、同一存储分区的数据文件中的不同文件块内等。其中,哈希分片策略就是采用取模法,相关的更详尽的内容可参见现有技术中的描述,本文不作赘述也不作具体的限定。

因为时序数据库的上述特性,如果想要从时序数据库中查询最新数据,比如传感器采集并存入时序数据库内的最新的北京市**区的风力值,需要先查询索引,再遍历相应存储分区的数据文件。在遍历存储分区的数据文件时,基于需查询数据所属数据序列的序列标识(如上文中的serieskey)过滤出文件块,这些文件块中存储有带有所述序列标识的数据;再对过滤出的文件块按照时间戳进行排序;最后对排好序的文件块从最新时间戳开始逐个遍历,直到找到时间戳最晚的最新点。这种查询方式包含过滤、排序、遍历等多个步骤,整体查询效率低。

用户查询时序数据库最关心的就是最新数据点(即时间戳最晚的数据点,比如近1个或半个小时内北京市**区的风力)。针对这种需求,本申请实施例提供了如下技术方案,以提高最新数据点的查询效率。当然,本申请各实施例提供的方案不仅适用于查询最新数据点,这一单一数据点的场景,还可实现查询最新时段内多个数据点的场景。

图3示出了本申请实施例提供的时序数据库的原理性架构图。其中,所述时序数据库包括:多个存储分区101、第一管理器(图中未示出)及预设分区102。在具体实施时,所述预设分区102可以为一个或多个,本实施例对此不作具体限定。图3中示出了包括一个预设分区102的情况。

第一管理器,用于在有待存入的目标数据时,根据所述目标数据的第一时间戳及所属数据序列的序列标识,在所述多个存储分区101中确定目标存储分区,触发所述目标存储分区执行存入所述目标数据的操作。

所述第一管理器,还用于根据所述目标数据所属数据序列的序列标识,获取对应的新点判定条件,在所述目标数据的第一时间戳满足所述新点判定条件时,触发所述预设分区102执行存入所述目标数据的操作。

具体的,本实施例中的所述预设分区102用于执行存入所述目标数据的操作,还用于在有新点查询请求时,查询所述预设分区内存储的与所述请求指定数据匹配的新点数据。

本实施例中目标数据可以是上文专有名词中提及的包括一个度量+n个标签(n≥1)+一个时间戳+一个值的数据点,当然也可以是其它结构形式的数据,本文不作具体限定。

本实施例中的第一管理器可以是时序数据库底层管理引擎,即时序数据库启动后运行的具有上文中所述功能逻辑的管理程序。

相较于图1,本申请实施例提供的时序数据库增加了预设分区,该预设分区用于存放满足新点判定条件的数据,这样在有新点查询请求时,只需在预设分区中查找所需查询的新点数据即可,无需遍历相应分区组内的一个或多个存储分区,再过滤出文件块,排序、遍历等,整体查询过程简化了不少,查询效率可大幅提高。其中,本实施例中使用的新点数据可包括上文中提及的最新数据,还可包括时间戳早于最新数据的至少一个数据(比如近半个小时、1个小时的数据)。具体实现时可通过配置新点判定条件来确定存入预设分区内的新点数据。比如,预设分区中仅存储各序列标识对应数据序列中的最新数据(即时间戳最晚的数据),则该序列标识对应的新点判定条件可以是:时间戳晚于新点判定基准时间戳的数据点。若预设分区中存储序列标识对应数据序列中距当前时刻一个小时内产生的新点数据,则该序列标识对应的新点判定条件可以是:时间戳距当前时间小于60分钟的所有数据。

进一步的,如图3所示,所述预设分区包括:预设内存1021、至少一个预设文件1023、第二管理器1024。其中,

第二管理器1024,用于将所述目标数据写入所述至少一个预设文件1023,并更新所述至少一个预设文件1023映射在所述预设内存1021中的映射信息;还用于在有新点查询请求时,根据所述请求中携带的序列标识及所述预设内存1021中的映射信息,查询所述至少一个预设文件1023中与所述请求指定数据匹配的新点数据。

具体实施时,预设文件1023可采用mmap的方式映射到预设内存中,内存中存储(或是维护)有映射信息。该映射信息包括第一映射文件和第二映射文件。第一映射文件,包括至少一组第一数据对,其中,预设文件中存储的数据对应的序列标识及该数据在所述预设文件中的索引位置构成一组第一数据对。第二映射文件,包括至少一组第二数据对,其中,预设文件中存储的数据及该数据对应的序列标识构成一组第二数据对,所述第二数据对中数据对应的第二时间戳能作为新点判定条件中的判定基准。

其中,mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。mmap的关键点是实现了用户空间和内核空间的数据直接交互而省去了空间不同数据不通的繁琐过程。因此,mmap效率更高。

如图4所示,在时序数据库所在机器重启时,内存的两个容器(如图中的container1(即容器1)和container2(即容器2))从这两个映射文件(即上文中提及的第一映射文件和第二映射文件)中重构恢复。其中,预设文件包含有一个或多个预设文件块。图4示出了预设文件中的一个预设文件块通过mmap映射到内存后的示意图,容器1和容器2重构恢复映射信息。具体的,容器1中包含有多组第一数据对,如<序列标识1、offset1>、<序列标识2、offset2>、……<序列标识n、offsetn>。其中,序列标识可以是上文中提及的serieskey,offset反映了该序列标识对应新点数据在预设文件中的索引位置,或者是反映了该序列标识对应新点数据(序列标识+时间戳+值)在内存地址中的索引位置。容器2中包含有多组第二数据对,如<序列标识1、lastestpoint>、<序列标识2、lastestpoint>、……<序列标识n、lastestpoint>。其中,lastestpoint为该序列标识对应的可作为新点判定条件中的判定基准。例如,该lastestpoint可以是新点判定条件中的作为判定基准的第二时间戳。具体的,如本实施例中目标数据的第一时间戳晚于该目标数据所属数据序列的序列标识对应的第二时间戳,那么目标数据满足新点判定条件属于可存入预设分区的新点数据;否则,目标数据不满足新点判定条件。

另外,本实施例中的预设分区也可包含日志文件1022,该预设分区的日志文件1022的作用与存储分区中的日志文件作用相同,在时序数据库重启后能够重建预设内存的缓存,日志文件不用于读取数据。

图5示出了本申请实施例提供的一种数据处理方法的流程示意图。所述方法包括:

101、有待存入时序数据库的目标数据时,根据所述目标数据所属数据序列的序列标识,获取对应的新点判定条件;

102、所述目标数据的第一时间戳满足所述新点判定条件时,触发预设分区执行存入所述目标数据的操作;

其中,所述时序数据库包括所述预设分区及多个存储分区,所述存储分区用于存储需存入时序数据库的数据,所述预设分区用于存入满足新点判定条件的数据以为新点查询提供服务。

本实施例提供的所述方法是在上述实施例提供的时序数据库的基础上实现的。

上述101中,不同序列标识(如serieskey)其对应的新点判定条件会不同。比如,风力测量传感器每间隔一个小时测量一次,对应的存入时序数据库中的测量数据即每隔一个小时存储一个。相应的,该风力测量数据构成的数据序列的序列标识对应的新点判定条件中作为判定基准的第二时间戳就每隔一个小时更新一次。又比如,cpu温度检测装置每个两个小时检测一次,并将检测到的温度数据存入时序数据库,相应的,该温度测量数据构成的随时间延续构成的数据序列的序列标识对应的新点判定条件中作为判定基准的第二时间戳就每隔两个小时更新一次。

如上文中描述的,内存(具体的预设分区的预设内存)中存储(或维护)有新点判定条件与序列标识组成的第二数据对。相应的,本步骤101中“根据所述序列标识,获取对应的新点判定条件”可包括如下步骤:

1011、根据所述序列标识,获取作为新点判定条件中判定基准的第二时间戳;

1012、所述目标数据的第一时间戳晚于所述第二时间戳时,所述目标数据满足最新点判定条件;

1013、所述目标数据的第一时间戳早于或等于所述第二时间戳时,所述目标数据不满足最新点判定条件。

如图3所示,本实施例中所述的预设分区可包括但不限于:预设内存、至少一个预设文件、日志文件、第二管理器等。其中第二管理器可以是所述预设分区对应底层的存储引擎。具体的,本实施例步骤102中被触发的“所述预设分区执行存入所述目标数据的操作”,可具体包括:

1021、将所述目标数据写入所述预设分区中的至少一个预设文件;

1022、更新所述至少一个预设文件映射在所述预设内存中的映射信息。

上述1021中,将所述目标数据写入预设文件中的过程可理解为“更新”的过程。若预设文件中仅存储数据序列(即对应时间线)的最新点数据,则本步骤具体为:将所述预设文件中所述序列标识对应的新点数据更新为所述目标数据。

又比如另一种场景,所述预设文件存储数据序列(即对应时间线)近1小时的新点数据,即新点数据的时间戳距当前时刻的时差小于或等于1小时。此时,将所述目标数据写入所述预设文件即可。若所述预设文件中有超出1小时的数据,则该数据需删除。即,本实施例提供的所述方法还可包括如下步骤:

检查预设文件中不满足新点判定条件的数据;

将所述预设文件中的不满足新点判定条件的数据删除。

进一步的,所述预设内存中存储有映射信息的前提是预设文件通过映射的方式被映射至预设内存中。即本实施例提供的所述方法还可包括如下步骤:

103、将所述至少一个预设文件映射到所述预设分区的预设内存中;

所述预设内存中存储有所述映射信息,所述映射信息包括第一映射文件及第二映射文件;

其中,第一映射文件,包括至少一组第一数据对,其中,预设文件中存储的数据对应的序列标识及该数据在所述预设文件中的索引位置构成一组第一数据对;

第二映射文件,包括至少一组第二数据对,其中,预设文件中存储的数据及该数据对应的序列标识构成一组第二数据对,所述第二数据对中数据对应的第二时间戳能作为新点判定条件中的判定基准。

参见上文中提及的图4所示的两个容器,容器1和容器2分别基于第一映射文件和第二映射文件重构恢复出的第一数据组和第二数据组。

本实施例提供的方案将待存入目标数据存入预设分区的存储逻辑外,还保留有现有时序数据库存储数据的逻辑。即本实施例提供的所述方法还包括:

104、根据所述目标数据的第一时间戳及所属数据序列的序列标识,在所述多个存储分区中确定目标存储分区;

105、触发所述目标存储分区执行存入所述目标数据的操作。

其中,所述目标存储分区执行存入所述目标数据的操作可参见上文中的相应内容,此次不作赘述。

结合图3所示的时序数据库原理性架构图。存储分区、预设分区均可视为一个shard对象,每个shard对象都有一个单独的底层数据存储引擎(engine)。存储引擎负责和底层的文件数据打交道。shard还保存了一个指向所在数据库索引的指针,便于快速检索到shard中的数据。存储引擎是一个抽象接口,对于时序数据库(如influxdb)来说,可以很方便地替换掉底层的存储引擎。各shard对象对应的存储引擎负责维护和管理该shard对象具有的cache(内存)、filestore(数据文件),wal文件(日志文件)等对象。当用户进行插入或查询操作时,engine都会对这些对象进行相应的操作。

下面结合具体实施例,对本申请实施例提供的时序数据库的工作过程进行说明。以下内容将以influxdb为例进行展开说明。

数据写入存储分区的过程:

通过http的接口写入一条或同时写入多条数据(如datapoints)。在influxdb启动时会启动一个httpd服务。

httpd服务解析出要插入的所有数据(如datapoints)以及数据库、存储策略等内容,之后调用pointswriter的writepoints方法插入数据。

将要写入的datapoint按照时间划分到要写入到的shard,返回一个datapoint和shard之间的映射关系;每个shard都有一个独立的协程负责写入。

writepoints函数会根据datapoint的时间戳判断出其属于哪一个shard,之后调用writetoshard函数批量将datapoints分别写入到不同的shard中。shard会继续调用底层存储引擎(即engine对象)来执行真正意义上的数据写入操作。

engine对象实际写入数据的过程:

写入操作实际上就是将value写入cache(即存区内存)和wal文件(即日志文件)中,cache中主要是一个map的结构,根据序列标识(如serieskey)缓存不同时间戳的value,而wal文件中的数据就是cache中数据的一个持久化的存储文件。cache中存储的一条插入语句中一个serieskey(即序列标识)对应的多个value会被拆分出来,形成多条数据。待cache中的数据超过阈值上限时,将cache中的数据写入数据文件。

对于本申请实施例中的预设分区对应的存储引擎(即上述时序数据库实施例中提及的第二管理器)来说,其存储逻辑与存储分区对应的存储引擎的存储逻辑类似。只是在触发预设分区存入数据之前,还需增加判断datapoint的时间戳是否满足相应的新点判定条件,在判断出datapoint的时间戳满足相应的新点判定条件时,预设分区再被触发,即预设分区对应的存储引擎才被触发,以执行datapoint的数据写入操作。

图6示出了本申请另一实施例提供的一种数据处理方法的流程示意图。如图6所示,所述方法包括:

201、接收新点查询请求,其中,所述请求携带有序列标识;

202、根据所述序列标识,在时序数据库的预设分区中查询与所述请求指定数据匹配的新点数据;

其中,所述时序数据库包括所述预设分区及多个存储分区,所述预设分区用于存入时间戳满足新点判定条件的数据。

如上述时序数据实施例中的介绍,所述预设分区包括预设内存及至少一个预设文件。相应的,本实施例提供的所述方法还包括如下步骤:

203、所述至少一个预设文件映射至所述预设内存中,使得所述预设内存中存储有相应的映射信息。

相应的,本实施例中步骤202“根据所述序列标识,在时序数据库的预设分区中查询与所述请求指定数据匹配的新点数据”,具体包括:

根据所述序列标识及所述预设内存中的映射信息,查询与所述请求指定数据匹配的新点数据。

参见图7所示的查询过程,新点查询请求中携带有标签;预设分区接收到新点查询请求后,可基于预设内存中缓存的索引文件,查询到所述标签对应的序列标识;然后预设分区根据序列标识查询相应的新点数据并反馈。在实际应用中,查询标签相对固定。因此,本申请实施例提供的方案可扩展查询协议,查询方可直接在新点查询请求中携带序列标识,预设分区根据序列标识查询相应的新点数据并反馈,避免标签查询,即节省了一步查询的开销。

进一步的,本申请实施例中预设分区在存入目标数据时,可采用哈希分片的方式,把目标数据存入到多个预设文件中,提升吞吐和容量。

综上可知,本申请各实施例提供的技术方案,由于单独记录了新点数据,即将新点数据存入预设分区;在查询新点数据时,不需要遍历相应分区组内的所有存储分区中的数据文件,避免文件块排序遍历等耗时操作,单个数据点的查询可以从百毫秒提升到几毫秒。另外,在查询过程中,查询协议提供hint能力,避免索引查询开销(即通过标签查询序列标识的开销),直接命中数据点。

另外,需要特别提出的是:本申请实施例中预设分区的预设内存可自定义新点数据的组织方式,无需像其他存储分区的存区内存那样组织数据。存入时,可基于标签和指标独立存入预设文件;当然也可全量存入预设文件。其中,全量存入是指将包含有序列标识(如serieskey)+时间戳+值的新点数据存入预设文件中。

图8示出了本申请一实施例提供的数据处理装置的结构示意图。如图8所示,所述装置包括:获取模块21及触发模块22。其中,所述获取模块21用于在有待存入时序数据库的目标数据时,根据所述目标数据所属数据序列的序列标识,获取对应的新点判定条件,所述触发模块22用于在所述目标数据的第一时间戳满足所述新点判定条件时,触发预设分区执行存入所述目标数据的操作。

其中,所述时序数据库包括所述预设分区及多个存储分区,所述存储分区用于存储需存入时序数据库的数据,所述预设分区用于存入满足新点判定条件的数据以为新点查询提供服务。

进一步的,所述预设分区包括预设内存及至少一个预设文件。其中,本实施例提供的所述装置还包括第一存储模块。该第一存储模块可以是预设分区对应的存储引擎。具体的,在所述预设分区执行存入所述目标数据的操作时,所述存储模块用于将所述目标数据写入所述预设分区中的至少一个预设文件;更新所述至少一个预设文件映射在所述预设内存中的映射信息。

进一步的,本实施例提供的所述装置还可包括映射模块。该映射模块用于将所述至少一个预设文件映射到所述预设分区的预设内存中。所述预设内存中存储有所述映射信息,所述映射信息包括第一映射文件及第二映射文件;其中,第一映射文件,包括至少一组第一数据对,其中,预设文件中存储的数据对应的序列标识及该数据在所述预设文件中的索引位置构成一组第一数据对;第二映射文件,包括至少一组第二数据对,其中,预设文件中存储的数据及该数据对应的序列标识构成一组第二数据对,所述第二数据对中数据对应的第二时间戳能作为新点判定条件中的判定基准。

进一步的,所述获取模块21在根据所述序列标识,获取对应的新点判定条件时,具体用于:

根据所述序列标识,获取作为新点判定条件中判定基准的第二时间戳;所述目标数据的第一时间戳晚于所述第二时间戳时,所述目标数据满足最新点判定条件;所述目标数据的第一时间戳早于或等于所述第二时间戳时,所述目标数据不满足最新点判定条件。

进一步的,本实施例提供的所述装置中还包括第二存储模块。该第二存储模块可以是存储分区对应的存储引擎。具体的,所述第二存储模块用于:

根据所述目标数据的第一时间戳及所属数据序列的序列标识,在所述多个存储分区中确定目标存储分区;触发所述目标存储分区执行存入所述目标数据的操作。

这里需要说明的是:上述实施例提供的数据处理装置可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。

图9示出了本申请另一实施例提供的数据处理装置的结构示意图。如图9所示,所述装置包括:接收模块31及查询模块32。其中,所述接收模块31用于接收新点查询请求,所述请求携带有序列标识。查询模块32用于根据所述序列标识,在时序数据库的预设分区中查询与所述请求指定数据匹配的新点数据。所述时序数据库包括所述预设分区及多个存储分区,所述预设分区用于存入时间戳满足新点判定条件的数据。

进一步的,所述预设分区包括预设内存及至少一个预设文件。本实施例提供的所述装置还包括映射模块。所述映射模块用于将所述至少一个预设文件映射至所述预设内存中,使得所述预设内存中存储有相应的映射信息。相应的,所述查询模块在根据所述序列标识,在时序数据库的预设分区中查询与所述请求指定数据匹配的新点数据时,具体用于:

根据所述序列标识及所述预设内存中的映射信息,查询与所述请求指定数据匹配的新点数据。

这里需要说明的是:上述实施例提供的数据处理装置可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。

图10示出了本申请一实施例提供的存储设备的原理性结构示意图。所述存储设备包括处理器41及存储器43。其中,所述存储器43用于存储一条或多条计算机指令;所述处理器41,与所述存储器43耦合,用于所述至少一条或多条计算机指令(如实现数据存储逻辑的计算机指令),以用于实现:

有待存入时序数据库的目标数据时,根据所述目标数据所属数据序列的序列标识,获取对应的新点判定条件;

所述目标数据的第一时间戳满足所述新点判定条件时,触发预设分区执行存入所述目标数据的操作;

其中,所述时序数据库包括所述预设分区及多个存储分区,所述存储分区用于存储需存入时序数据库的数据,所述预设分区用于存入满足新点判定条件的数据以为新点查询提供服务。

这里需要说明的是:所述处理器除可实现上述各步骤外,还可实现上述数据处理方法实施例中提供的其他方法步骤,具体可参见上述实施例中详述内容,此处不作赘述。存储器43可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。进一步,如图10所示,存储设备还包括:通信组件45、电源组件42及显示器44等其它组件。图10中仅示意性给出部分组件,并不意味着电子设备只包括图10所示组件。

本申请另一实施例提供了一种存储设备,其原理性结构图如上述图所示。具体的,所述存储设备包括处理器及存储器。其中,所述存储器用于存储一条或多条计算机指令;所述处理器,与所述存储器耦合,用于执行所述至少一条或多条计算机指令,以用于实现:

接收新点查询请求,其中,所述请求携带有序列标识;

根据所述序列标识,在时序数据库的预设分区中查询与所述请求指定数据匹配的新点数据;

其中,所述时序数据库包括所述预设分区及多个存储分区,所述预设分区用于存入时间戳满足新点判定条件的数据。

这里需要说明的是:所述处理器除可实现上述各步骤外,还可实现上述数据处理方法实施例中提供的其他方法步骤,具体可参见上述实施例中详述内容,此处不作赘述。

本申请还有一实施例提供一种计算机程序产品(说明书附图中无相应附图示出)。该计算机程序产品包括计算机程序或指令,当所述计算机程序或指令被处理器执行时,致使所述处理器能够实现上述各数据处理方法实施例中的步骤。

相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的数据处理方法步骤或功能。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1