数据处理方法、装置、电子设备以及计算机可读存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、电子设备以及计算机可读存储介质。
背景技术
由于大型的云部署带来日志指数级别的增长,提高现有数据库的横向扩展能力,使其拥有高可用、无限扩展、弹性扩容、自动容灾等能力,是亟待解决的问题。
现有的单机数据库或nosql数据库,有的不满足数据量的需求,有的不满足数据查询的需求,而目前火热的elasticsearch等产品,又不能满足实时查询,以及存储大规模数据量(最大可支持数据量在100T-1P之间),而且elasticsearch方案采用分布式的异步构建索引数据,集群管理困难,写入TPS低,异步全文索引构建导致查询的数据有构建延迟,不支持SQL查询,且聚合查询效率低等诸多缺陷。
发明内容
本发明提供了一种数据处理方法、装置、电子设备以及计算机可读存储介质,通过采用两级分区的集群数据库体系,能够方便写入和读取数据。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种数据处理方法,包括:
获取数据的写入请求,基于所述写入请求确定所述数据对应的主键以及时间戳;
根据所述主键确定所述数据的存储节点所在的第一分区;
根据所述时间戳确定所述存储节点所在的第二分区,并在所述第二分区中,确定存储所述数据的存储节点;
其中,所述第一分区根据主键范围划分,所述第二分区根据时间范围划分,所述第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
将数据写入到该存储节点上。
第二方面,提供了另一种数据处理方法,包括:
获取数据的读取请求,基于所述读取请求确定所述数据对应的主键以及时间戳;
根据所述主键确定所述数据的存储节点所在的第一分区;
根据所述时间戳确定所述存储节点所在的第二分区,并在所述第二分区中,确定读取所述数据的存储节点;
其中,所述第一分区根据主键范围划分,所述第二分区根据时间范围划分,所述第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
将数据从所述存储节点上读取出来。
第三方面,提供了一种数据处理装置,包括:
写入请求获取模块,用于获取数据的写入请求,基于所述写入请求确定所述数据对应的主键以及时间戳;
第一分区确定模块,用于根据所述主键确定所述数据的存储节点所在的第一分区;
第二分区确定模块,用于根据所述时间戳确定所述存储节点所在的第二分区,并在所述第二分区中,确定存储所述数据的存储节点;
其中,所述第一分区根据主键范围划分,所述第二分区根据时间范围划分,所述第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
数据写入模块,用于将数据写入到该存储节点上。
第四方面,提供了另一种数据处理装置,包括:
读取请求获取模块,用于获取数据的读取请求,基于所述读取请求确定所述数据对应的主键以及时间戳;
第一分区读取模块,用于根据所述主键确定所述数据的存储节点所在的第一分区;
第二分区读取模块,根据所述时间戳确定所述存储节点所在的第二分区,并在所述第二分区中,确定读取所述数据的存储节点;
其中,所述第一分区根据主键范围划分,所述第二分区根据时间范围划分,所述第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
数据读取模块,用于将数据从所述存储节点上读取出来。
第五方面,提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
获取数据的写入请求,基于所述写入请求确定所述数据对应的主键以及时间戳;
根据所述主键确定所述数据的存储节点所在的第一分区;
根据所述时间戳确定所述存储节点所在的第二分区,并在所述第二分区中,确定存储所述数据的存储节点;
其中,所述第一分区根据主键范围划分,所述第二分区根据时间范围划分,所述第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
将数据写入到该存储节点上。
第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有当被处理器执行时使得处理器执行第一方面中所述的方法的程序指令。
第七方面,提供了另一种计算机可读存储介质,所述计算机可读存储介质存储有当被处理器执行时使得处理器执行第二方面中所述的方法的程序指令。
本发明提供了一种数据处理方法、装置、电子设备以及计算机可读存储介质,在用于写入数据的存储节点构成的存储系统(以下称为“集群数据库”)中采用两级分区:第一级分区(简称“第一分区”)是通过主键范围进行分区,第二级分区(简称“第二分区”)是通过数据的产生时间范围进行分区,因此在写入数据到集群数据库时,可以根据两级分区的数据库体系,方便写入和读取数据。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为现有技术中的针对数据库进行扩容的数据处理逻辑示意图;
图2a为本发明实施例的集群数据库两级分区体系逻辑图一;
图2b为本发明实施例的集群数据库两级分区体系逻辑图二;
图3a为本发明实施例的集群数据库扩容的数据处理逻辑示意图一;
图3b为本发明实施例的集群数据库扩容的数据处理逻辑示意图二;
图3c为本发明实施例的集群数据库扩容的数据处理逻辑示意图三;
图4为本发明实施例的集群数据库的数据处理系统示意图;
图5为本发明实施例的数据处理方法流程图一;
图6为本发明实施例的数据处理方法流程图二;
图7为本发明实施例的数据处理方法流程图三;
图8a为本发明实施例的数据处理方法流程图四;
图8b为本发明实施例的时间范围设置方法流程图一;
图9a为本发明实施例的数据处理方法流程图五;
图9b为本发明实施例的时间范围设置方法流程图二;
图10为本发明实施例的数据处理方法流程图六;
图11为本发明实施例的数据处理装置结构图一;
图12为本发明实施例的数据处理装置结构图二;
图13为本发明实施例的数据处理装置结构图三;
图14a为本发明实施例的数据处理装置结构图四;
图14b为本发明实施例的时间范围设置装置结构图一;
图15a为本发明实施例的数据处理装置结构图五;
图15b为本发明实施例的时间范围设置装置结构图二;
图16为本发明实施例的数据处理装置结构图六;
图17为本发明实施例的电子设备的结构示意图一
图18为本发明实施例的电子设备的结构示意图二。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
技术术语定义或相关说明:
集群:属于同一个机房的主机逻辑集合;
主机:一般单指一个物理主机单位;
数据库:提供数据存储的服务统称;
分区:分布式数据库会将数据部署在不同的区块中,每个区块成为一个分区,分区可以是逻辑的,也可以是物理的,逻辑的分区一般含有多个物理机,而物理的分区则特指分区存在一个单独的物理机上。一个物理机基于所挂载的磁盘数量,可以含有多个物理分区。
图1为现有技术中的针对数据库进行扩容的数据处理逻辑示意图。如图中所示,在一个完整的集群数据库中,各存储节点(单独物理机,或者在物理机上实例化后的虚拟存储节点,每个物理机上可实例化生成多个虚拟存储节点)直接按其所存储的数据所属的主键范围被划分为多个分区,每个分区确定后,其上包括的存储资源的大小即确定。当某一分区的所有存储节点的存储资源均已被写满数据后,就需要对该分区进行扩容,在扩容过程中需要将该分区中的数据进行数据迁移。
例如图1中,当主键范围为101-200的分区上的存储节点全部写满数据后,需要对该分区进行拆分形成两个新的分区:首选,将主键范围进行拆分,形成两个新的主键范围如主键为101-150构成的主键范围和主键为151-200构成的主键范围,并将这两个主键范围对应的数据从原存储节点1-5上分别迁移到新存储节点6-8和新存储节点9-10上,使得新存储节点6-8上存储的数据的主键范围为101-150,节点9-10上存储的数据的主键范围为151-200。在数据迁移过程中,原分区的数据照常提供数据查询服务,但不能提供写入数据服务,需要等到数据完全迁移成功后,在新存储节点对应的分区上实现新数据的写入。现有这种分区扩容的方法,在分区分裂的时候,需要做数据迁移,TB级别的数据迁移需要的时间会很长,并且当热点数据大量产生时,热点分区面临的问题就是无法承受流量的同时又不能快速分裂,导致数据库系统被挂起,暂时停止执行操作。
为了改善现有技术中,分区扩容过程中需要进行数据迁移所带来的弊端和缺陷,其核心思想是,在基于主键范围进行分区划分的基础上,对每个分区(第一分区)再按数据的产生时间的时间范围继续进行划分形成多个对应不同时间范围的分区(第二分区),即采用两级分区的方式构建集群数据库。在写入数据时按照数据对应的键值范围和时间范围写入到指定的存储节点上,从而可以方便的实现分区的扩容。例如,可以在时间范围对应的分区中增加存储节点;或者按时间的延展顺序,增加新的时间范围对应的第二分区,并在新增的第二分区中创建新的存储节点;又或者对于第一分区进行拆分,形成多个新的第一分区,拆分后的每个新的第一分区完全继承原第一分区的数据,如原第一分区所包含的第二分区的时间范围和第二分区包括的存储节点的路由信息等,然后在分裂后形成的新的第一分区中再增加新的第二分区从而完成对原第一分区的扩容,该分区分裂方式不需要对数据进行迁移即可实现分区扩容。
如图2a所示,为本发明实施例的集群数据库两级分区体系逻辑图。如图2a所示,该体系逻辑图中引入了两级分区的概念。在存储数据的集群数据库中,各存储节点按其存储的数据的主键范围划分为多个第一分区,如主键范围0-100对应的第一分区、主键范围101-200对应的第一分区和主键范围201-300对应的第一分区。每个第一分区按数据的产生时间分为不同时间范围的多个第二分区。每个第二分区中包括多个存储节点,用于存储相应主键范围内的主键在相应时间范围内产生的数据。如图2b所示,以上述主键范围0-100对应的第一分区为例,该第一分区中包含的第二分区对应的时间范围分别为2017.12.1日以前、2017.12.1-2018.01.20、以及2018.1.20以后(图中各第二分区对应的时间范围不包括下限日期本身)。
基于图2a和图2b所示的集群数据库两级分区体系逻辑图,以下图3a-图3c分别给出了针对上述集群数据库进行分区扩容的数据处理逻辑示意图。
首先,如图3a所示,为通过增加第二分区中存储节点来实现分区扩容。作为图2b状态下的延展,在当前拥有执行写入数据的第二分区(对应时间范围为2018.01.20以后)的各存储节点上已经全部被写满数据,需要对当前第一分区进行分区扩容时,可以在当前处于写入操作的第二分区增加存储节点,变成图3a中扩容后的状态。当需要后续写入新的数据时,可以在该第二分区中新创建的存储节点上完成写数据操作。
其次,如图3b所示,为通过增加第二分区来实现分区扩容。作为图2b状态下的延展,在当前拥有执行写入数据的第二分区(对应时间范围为2018.01.20以后)的各存储节点上已经全部被写满数据,需要对当前第一分区进行分区扩容时,可以将当前时间节点(如2018.01.29或者上一次写入的数据对应的时间戳)作为当前执行写入数据的第二分区对应的时间范围的结束时间,并停止向该第二分区写入数据。同时在当前第一分区中创建新的第二分区,并在该新增的第二分区中增加新的存储节点,变成图3b中扩容后的状态。当需要后续写入新的数据时,可以在该新增的第二分区中新创建的存储节点上完成写数据操作。
再次,如图3c所示,为通过第一分区分裂来实现分区扩容。作为图2b状态下的延展,在当前拥有执行写入数据的第二分区(对应时间范围为2018.01.20以后)的各存储节点上已经全部被写满数据,需要对当前第一分区进行分区扩容时,可以将当前时间节点(如2018.01.29或者上一次写入的数据对应的时间戳)作为当前执行写入数据的第二分区对应的时间范围的结束时间,并停止向该第二分区写入数据。同时将当前第一分区按键值范围分裂成两个新的第一分区,每个新第一分区对应原键值范围的部分范围,且每个新第一分区中包含了原第一分区的全部数据,并在每个新第一分区中创建新的第二分区,并在该新增的第二分区中创建新的存储节点(每个新增的第二分区中创建的存储节点数量可以相同也可以不相同),变成图3c中扩容后的状态。当需要后续写入新的数据时,可以根据分裂后新第一分区的键值范围,在相应新增的第二分区中新创建的存储节点上完成写数据操作。
基于上述所示集群数据库两级分区体系逻辑及其扩容的数据处理逻辑,图4为本发明实施例提供的数据处理系统结构图,用于实现向上述集群数据库写入和读取数据。如图4所示,该数据处理系统包括:客户端410、数据库平台420。其中:
客户端410,用于搜集各种云端设备产生的数据,如日志数据等,然后将这些数据按指定的数据写入请求的格式生成相应的请求内容,并发送至数据库平台420;也可以向数据库平台420发送数据读取请求。
数据库平台420包括数据处理装置430和集群数据库。其中:
集群数据库即为上面描述的具有两级分区的数据库结构,即包括:多个所属不同主键范围的第一分区,第一分区包括主键范围内所属不同时间范围的第二分区;第二分区包括多个实例化的存储节点,用于存储该存储节点所属第一分区对应的主键范围在当前第二分区所属时间范围内产生的数据。
数据处理装置430主要用于在客户端410与集群数据库之间协调前端设备对集群数据库的写入及读取数据的操作。具体地,数据处理装置430包括两部分:数据写入装置和数据读取装置。
其中,数据写入装置包括:
写入请求获取模块,用于获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳;
第一分区确定模块,用于根据主键确定数据的存储节点所在的第一分区;
第二分区确定模块,用于根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定存储数据的存储节点;
数据写入模块,用于将数据写入到该存储节点上。
其中,数据读取装置包括:
读取请求获取模块,用于获取数据的读取请求,基于读取请求确定所述数据对应的主键以及时间戳;
第一分区读取模块,用于根据主键确定数据的存储节点所在的第一分区;
第二分区读取模块,根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定读取数据的存储节点;
数据读取模块,用于将数据从存储节点上读取出来。
为了方便锁定写入和读取的数据在集群数据库中的分区位置,需要在获取到写入请求和读取请求后,基于这些请求确定出数据对应的主键以及时间戳;该时间戳可为数据产生的时间。
进一步地,上述第二分区确定模块可以根据当前执行存储数据的第二分区的存储空间是否充足,来决定是否对分区进行扩容,并且可以选择上述任一种分区的扩容方式对分区进行扩容。在完成分区扩容后,对分区中新创建的存储节点上执行写入数据。
下面通过多个实施例来进一步说明本申请的技术方案。
实施例一
基于上述数据处理系统的方案思想,如图5所示,其为本发明实施例示出的数据处理方法流程图一,该方法的执行主体为图4中所示的数据库平台,或者设置在数据库平台中的数据写入装置。该数据库平台中包括一集群数据库。该集群数据库包括:多个所属不同主键范围的第一分区,所述第一分区包括主键范围内所属不同时间范围的第二分区;所述第二分区包括多个实例化的存储节点,用于存储该存储节点所属第一分区对应的主键范围在当前第二分区所属时间范围内产生的数据。本实施例所示方法从数据写入的过程角度进行方案展开,如图5所示,该数据处理方法包括如下步骤:
S510,获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳。
在利用如上述集群数据库存储数据的过程中,可将待写入的数据对应的主键和时间戳与数据一起携带在写入请求中,数据写入装置可从写入请求中获取主键和时间戳的信息;也可以在获取到包含数据的写入请求后,根据数据的内容由数据处理装置为该数据确定主键和时间戳的信息,以方便数据库平台为该数据选择指定分区位置进行存储。
其中,数据的主键和时间戳可以是前端客户端在获取数据时,一并从数据源中提取,该数据可以是云端设备产生的日志数据,主键可以是日志数据对应的业务ID(如用户的身份ID),时间戳为产生该日志数据对应的时间。由于本方案对于新产生的数据会马上存储到集群数据库,因此时间戳对应的具体时间接近数据库平台接收到写入请求时的时间,以及将数据写入到存储节点上的时间。如此,也可以将后两种时间确定为该数据对应的时间戳的实际时间。
S520,根据主键确定数据的存储节点所在的第一分区;
S530,根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定存储数据的存储节点。
其中,第一分区根据主键范围划分,第二分区根据时间范围划分,第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区。
由于本实施例中的集群数据库,采用两级分区体系,根据待写入的数据所对应的主键可以锁定该主键所在主键范围对应的第一分区,然后再根据时间戳从第一分区中锁定处理包含该时间戳的时间范围对应的第二分区。原则上该第二分区上所有的可用存储节点都可以用于存储该数据。
在实际应用场景中,一个第一分区中包含的第二分区所对应的时间范围是相互无重叠的,这也符合实际的存储需求。随着时间的自然推移,当前产生的数据不可能存储到过去时间范围内对应的第二分区中,只能存储到当前正在执行存储数据的第二分区中,除非该数据的时间戳超过了该数据的时间范围,才能将数据存储到下一个时间范围对应的第二分区中。
需要说明的是,上述这种第二分区和时间范围的对应关系是在写入数据之前预先设定好的,但由于实际操作中,无法估计未来每个时间范围内产生的数据的量,所以无法预先估量和设定每个第二分区的存储空间的大小和存储节点的数量。所以优选的,是在写入数据的过程中,根据每个第二分区的存储空间的使用情况,灵活设定每个第二分区的时间范围。比如,将写入到当前第二分区的第一条数据对应的时间戳确定为当前第二分区对应的时间范围的起始时间,然后持续利用该第二分区存储后续的数据;当该第二分区即将被写满时,需要在下一新第二分区写入新的数据时,再将当前最后写入到该第二分区的数据的时间戳确定为当前第二分区对应的时间范围的结束时间,同时停止对该第二分区进行写入数据的操作。
如此,根据这种在写入数据过程中确定第二分区时间范围的方式,待写入的数据总是被写到当前处于执行写入数据状态的第二分区中,并且只有该第二分区被写满时,才会写入到下一时间范围对应的第二分区,并且下一时间范围对应的第二分区会更新作为当前处于执行写入数据状态的第二分区。
S540,将数据写入到该存储节点上。
在确定数据对应在集群数据库中第二分区的所有存储节点后,可以将数据写入到任一可用(尚有写入新数据的存储空间)的存储节点上。例如可以根据负载均衡原则,或随机性原则将数据写入到任一存储节点上。
优选地,上述第二分区对应的时间范围中,以写入到该第二分区的首条数据对应的时间戳为起始时间,以写入到该第二分区的最后一条数据对应的时间戳为结束时间,以避免预先设置所带来的分区存储空间与所需存储的数据量不匹配所导致的资源浪费,或者存储空间不足。
本发明提供的数据处理方法,在进行数据写入的过程中,首先获取数据的写入请求,基于该写入请求确定数据对应的主键以及时间戳;在具有二级分区的存储系统如上述集群数据库中确定用于存储指定主键以及时间戳对应的数据的存储节点;将数据写入到该存储节点上。基于这种数据库结构和数据处理方法,可以很方便的写入和读取数据。
实施例二
如图6所示,为本发明实施例的数据处理方法流程图二,可作为图5所示方法的细化,特别是细化在当第二分区存储空间充足的情况下,如何确定用于写入数据的存储节点。如图6所示,该数据处理方法包括如下步骤:
S610,获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳;
S620,根据主键确定数据的存储节点所在的第一分区。
步骤S610~S620与上述步骤S510~S520的内容对应相同。
S630,判断当前执行存储数据的第二分区的存储空间是否充足。
在根据写入请求中包含的数据对应的主键以及时间戳确定当前用于执行存储该数据的第二分区后,需要先判断该第二分区的存储空间是否充足,即是否还有可用的存储空间可写入数据,该可用存储空间即包括是否有可用存储空间,还包括可用存储空间的大小是否符合待写入数据量的要求。
S640,如果当前执行存储数据的第二分区的存储空间充足,则选择其中任一可用的存储节点作为用于写入所述数据的存储节点。
如果当前执行存储数据的第二分区的存储空间充足,则可以任意选择该第二分区所包含的存储节点进行数据存储。在选择存储节点时可以遵循负载均衡原则,或者随机性原则进行选择。
其中,当前执行存储数据的第二分区对应设置有该第二分区对应的时间范围中的起始时间。该起始时间即为该第二分区中存储的首个数据对应的时间戳。
步骤S630~S640可作为上述步骤S530的细化。
S650,将数据写入到该存储节点上。
步骤S650与上述步骤S540的内容相同。
本发明提供的数据处理方法,在图5所示实施例的基础上,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间充足时,选择其中一个存储节点写入数据,从而提高写入数据的成功率。
实施例三
如图7所示,为本发明实施例的数据处理方法流程图三,可作为图5所示方法的细化,特别是细化在当分区存储空间不足的情况下,通过增加第二分区的存储节点对分区进行扩容,以及确定用于写入数据的存储节点。如图7所示,该数据处理方法包括如下步骤:
S710,获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳;
S720,根据主键确定数据的存储节点所在的第一分区。
步骤S710~S720与上述步骤S510~S520的内容对应相同。
S730,判断当前执行存储数据的第二分区的存储空间是否充足。
在根据写入请求中包含的数据对应的主键以及时间戳确定当前用于执行存储该数据的第二分区后,需要先判断该第二分区的存储空间是否充足,即是否还有可用的存储空间可写入数据,该可用存储空间即包括是否有可用存储空间,还包括可用存储空间的大小是否符合待写入数据量的要求。
S740,如果当前执行存储数据的第二分区的存储空间不足,则在第二分区中创建新的存储节点,并选择该新的存储节点作为用于写入数据的存储节点。
如果当前执行存储数据的第二分区的存储空间不足,即可以是存储空间被写满,也可以是存储空间尚未写满但可用空间不足以存储待写入的数据量。这种情况下需要对分区进行扩容。
参见图3a所示,本实施例的分区扩容方法,是在当前执行存储数据的第二分区中创建新的存储节点,然后选择该新的存储节点作为用于写入数据的存储节点。在新增存储节点时,可以一个一个循序增加,也可以一次性增加多个,但是为了方便后续数据查询时对不同存储节点的查询结果进行融合,一个第二分区所包含的存储节点的个数不宜过多,优选最大值为4个。
如果增加的新存储节点为一个,则可以选择该存储节点存储后续待写入的数据。如果增加的新存储节点为一个以上,则可以每次写入数据时任意选择其中一个存储节点存储后续待写入的数据。在选择存储节点时可以遵循负载均衡原则,或者随机性原则进行选择。
其中,当前执行存储数据的第二分区对应设置有该第二分区对应的时间范围中的起始时间。该起始时间即为该第二分区中存储的首个数据对应的时间戳。
步骤S730~S740可作为上述步骤S530的细化。
S750,将数据写入到该存储节点上。
步骤S750与上述步骤S540的内容相同。
本发明提供的数据处理方法,在图5所示实施例的基础上,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间不足时,通过在该第二分区中创建新存储节点的方式进行分区扩容,然后选择其中一个新增的存储节点写入数据,从而提高写入数据的成功率。
实施例四
如图8a所示,为本发明实施例的数据处理方法流程图四,可作为图5所示方法的细化,特别是细化在当分区存储空间不足的情况下,通过在第一分区中创建新的第二分区对分区进行扩容,以及确定用于写入数据的存储节点。如图8a所示,该数据处理方法包括如下步骤:
S810,获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳;
S820,根据主键确定数据的存储节点所在的第一分区。
步骤S810~S820与上述步骤S510~S520的内容对应相同。
S830,判断当前执行存储数据的第二分区的存储空间是否充足。
在根据写入请求中包含的数据对应的主键以及时间戳确定当前用于执行存储该数据的第二分区后,需要先判断该第二分区的存储空间是否充足,即是否还有可用的存储空间可写入数据,该可用存储空间即包括是否有可用存储空间,还包括可用存储空间的大小是否符合待写入数据量的要求。
S840,如果当前执行存储数据的第二分区的存储空间不足,则在第一分区中创建新的第二分区,并向该第二分区中创建新的存储节点。
如果当前执行存储数据的第二分区的存储空间不足,即可以是存储空间被写满,也可以是存储空间尚未写满但可用空间不足以存储待写入的数据量。这种情况下需要对分区进行扩容。
参见图3b所示,本实施例的分区扩容方法,是在当前执行存储数据的第一分区中创建新的第二分区,然后再在该新的第二分区中创建新的存储节点,最后选择该新的存储节点作为用于写入数据的存储节点。在新增存储节点时,可以一个一个循序增加,也可以一次性增加多个,但是为了方便后续数据查询时对不同存储节点的查询结果进行融合,一个第二分区所包含的存储节点的个数不宜过多,优选最大值为4个。新增的第二分区可以按照数据存储的进度一个一个循序增加。
S850,将新创建的第二分区作为后续执行存储数据的第二分区,从该第二分区中选择任一存储节点作为用于写入数据的存储节点。
如果增加的新第二分区中的存储节点为一个,则可以选择该存储节点存储后续待写入的数据。如果增加的新第二分区中的存储节点为一个以上,则可以每次写入数据时任意选择其中一个存储节点存储后续待写入的数据。在选择存储节点时可以遵循负载均衡原则,或者随机性原则进行选择。
步骤S830~S850可作为上述步骤S530的细化。
S860,将数据写入到该存储节点上。
步骤S860与上述步骤S540的内容相同。
在执行图8a所示的方法步骤的过程中,还可以执行如图8b所示的方法步骤,包括:
S870,将当前执行存储数据的第二分区中最后一条被写入的数据对应的时间戳设置为该第二分区对应的时间范围中的结束时间。
如图3b所示,如果当前执行存储数据的第二分区的存储空间不足,并且采用在第一分区中创建新的第二分区实现分区扩容时,可以将截至当前时间节点写入到第二分区中的最后一条数据对应的时间戳(如2018.01.28)作为当前执行写入数据的第二分区对应的时间范围的结束时间,并停止向该第二分区写入数据。
S870,将待写入的数据对应的时间戳设置为新创建的第二分区对应的时间范围中的起始时间。
如图3b所示,对于在当前第一分区中新创建的第二分区,可以将当前待写入的数据对应的时间戳设置为该新创建的第二分区所对应的时间范围的起始时间(如2018.01.29)。
本发明提供的数据处理方法,在图5所示实施例的基础上,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间不足时,通过在该第二分区所属的第一分区中创建新的第二分区的方式进行分区扩容,然后选择该新的第二分区中一个新增的存储节点写入数据,从而提高写入数据的成功率。
实施例五
如图9a所示,为本发明实施例的数据处理方法流程图五,可作为图5所示方法的细化,特别是细化在当分区存储空间不足的情况下,通过分裂第一分区对分区进行扩容,以及确定用于写入数据的存储节点。如图9a所示,该数据处理方法包括如下步骤:
S910,获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳;
S920,根据主键确定数据的存储节点所在的第一分区。
步骤S910~S920与上述步骤S510~S520的内容对应相同。
S930,判断当前执行存储数据的第二分区的存储空间是否充足。
在根据写入请求中包含的数据对应的主键以及时间戳确定当前用于执行存储该数据的第二分区后,需要先判断该第二分区的存储空间是否充足,即是否还有可用的存储空间可写入数据,该可用存储空间即包括是否有可用存储空间,还包括可用存储空间的大小是否符合待写入数据量的要求。
S940,如果当前执行存储数据的第二分区的存储空间不足,则将该第二分区所属的第一分区进行拆分形成多个新第一分区;新第一分区对应的主键范围为原主键范围的部分范围,且包含原第一分区的所有第二分区。
如果当前执行存储数据的第二分区的存储空间不足,即可以是存储空间被写满,也可以是存储空间尚未写满但可用空间不足以存储待写入的数据量。这种情况下需要对分区进行扩容。
参见图3c所示,本实施例的分区扩容方法,是将当前执行存储数据的第一分区进行拆分,形成多个(优选两个)新第一分区,每个新第一分区对应的主键范围为原主键范围的部分范围。拆分后的新第一分区完全继承了原第一分区中的全部数据。例如每个新第一分区中同样包含原第一分区中的全部第二分区。
然后,在新第一分区中确定存储数据的存储节点。
具体地,可以通过执行如下步骤确定存储节点:
S950,在新第一分区中创建新的第二分区,并在新的第二分区中创建新的存储节点;
在新第一分区中创建新的第二分区,然后再在该新的第二分区中创建新的存储节点,最后选择该新的存储节点作为用于写入数据的存储节点。在新增存储节点时,可以一个一个循序增加,也可以一次性增加多个,但是为了方便后续数据查询时对不同存储节点的查询结果进行融合,一个第二分区所包含的存储节点的个数不宜过多,优选最大值为4个。新增的第二分区可以按照数据存储的进度一个一个循序增加。
S960,将新创建的新第一分区中的新的第二分区作为该新第一分区中后续执行存储数据的第二分区,根据待写入的数据的主键从新第一分区中选择包含该主键的第一分区,并从该第一分区中新创建的第二分区中选择任一存储节点作为用于写入数据的存储节点。
原第一分区分裂后,需要根据待写入的数据的主键找到对应的主键范围的新第一分区,然后再在该新第一分区的相应时间范围的第二分区中选择用于写入数据的存储节点。如果增加的新第二分区中的存储节点为一个,则可以选择该存储节点存储后续待写入的数据。如果增加的新第二分区中的存储节点为一个以上,则可以每次写入数据时任意选择其中一个存储节点存储后续待写入的数据。在选择存储节点时可以遵循负载均衡原则,或者随机性原则进行选择。
步骤S930~S960可作为上述步骤S530的细化。
S970,将数据写入到该存储节点上。
步骤S970与上述步骤S540的内容相同。
在执行图9a所示的方法步骤的过程中,还可以执行如图9b所示的方法步骤,包括:
S980,将新第一分区中当前执行存储数据的第二分区中最后一条被写入的数据对应的时间戳设置为该第二分区对应的时间范围中的结束时间。
如图3c所示,如果当前执行存储数据的第二分区的存储空间不足,并且采用分裂第一分区实现分区扩容时,由于分裂后形成的新第一分区完全继承了原第一分区的数据,可以将截至当前时间节点写入到当前执行业存储务数据的第二分区(之前判断为存储空间不足的第二分区)中的最后一条数据对应的时间戳(如2018.01.28)作为当前执行写入数据的第二分区对应的时间范围的结束时间,并停止向该第二分区写入数据。
S990,将待写入的数据对应的时间戳设置为用于写入该数据的新的第二分区对应的时间范围中的起始时间。
如图3c所示,对于在分裂后形成的两个新第一分区中新创建的第二分区,可以将当前待写入的数据对应的时间戳设置为相应第一分区中新增的第二分区所对应的时间范围的起始时间(如2018.01.29)。
本发明提供的数据处理方法,在图5所示实施例的基础上,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间不足时,通过在分裂第一分区的方式进行分区扩容,然后选择新第一分区中新的第二分区中一个新创建的存储节点写入数据,从而提高写入数据的成功率。并且本实施例中,新第一分区包含原第一分区中全部的第二分区,因此在分裂过程中,无需进行数据迁移。
实施例六
基于上述数据处理系统的方案思想,如图10所示,其为本发明实施例示出的数据处理方法流程图六,该方法的执行主体为图4中所示的数据库平台,或者设置在数据库平台中的数据读取装置。该数据库平台中包括一集群数据库。该集群数据库包括:多个所属不同主键范围的第一分区,所述第一分区包括主键范围内所属不同时间范围的第二分区;所述第二分区包括多个实例化的存储节点,用于存储该存储节点所属第一分区对应的主键范围在当前第二分区所属时间范围内产生的数据。本实施例所示方法从数据读取的过程角度进行方案展开,如图10所示,该数据处理方法包括如下步骤:
S101,获取数据的读取请求,基于读取请求确定数据对应的主键以及时间戳;
在从如上述集群数据库读取数据的过程中,可将待读取的数据对应的主键和时间戳携带在读取请求中,数据写入装置可从读取请求中获取主键和时间戳的信息;也可以在获取到读取请求后,根据请求中的内容(待读取数据的关键信息)由数据处理装置确定待读取的数据的主键和时间戳的信息,以方便数据库平台选择指定分区位置进行数据读取。
其中,数据的主键和时间戳可以是前端客户端在获取数据时,一并从数据源中提取,该数据可以是云端设备产生的日志数据,主键可以是日志数据对应的业务ID(如用户的身份ID),时间戳为产生该日志数据对应的时间。由于本方案对于新产生的数据会马上存储到集群数据库,因此时间戳对应的具体时间接近数据库平台接收到写入请求时的时间,以及将数据写入到存储节点上的时间。如此,也可以将后两种时间确定为该数据对应的时间戳的实际时间。
S102,根据主键确定数据的存储节点所在的第一分区;
S103,根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定读取数据的存储节点。
其中,第一分区根据主键范围划分,第二分区根据时间范围划分,第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区。由于本实施例中的集群数据库,采用两级分区体系,根据待读取的数据所对应的主键可以锁定该主键所在主键范围对应的第一分区,然后再根据时间戳从第一分区中锁定处理包含该时间戳的时间范围对应的第二分区。原则上该第二分区上所有的存储节点都有可能存储该数据。
在实际应用场景中,一个第一分区中包含的各第二分区所对应的时间范围是相互无重叠的,这也符合实际的读取需求。随着时间的自然推移,任一时刻产生的数据不可能存储到该时刻过去时间范围内对应的第二分区中,只能存储到当前正在执行存储数据的第二分区中,除非该数据的时间戳超过了该数据的时间范围,才能将数据存储到下一个时间范围对应的第二分区中。
需要说明的是,上述这种第二分区和时间范围的对应关系是在预先设定好的,但由于实际操作中,无法估计未来每个时间范围内产生的数据的量,所以无法预先估量和设定每个第二分区的存储空间的大小和存储节点的数量。所以优选的,是在写入数据的过程中,根据每个第二分区的存储空间的使用情况,灵活设定每个第二分区的时间范围。比如,将写入到当前第二分区的第一条数据对应的时间戳确定为当前第二分区对应的时间范围的起始时间,然后持续利用该第二分区存储后续的数据;当该第二分区即将被写满时,需要在下一新第二分区写入新的数据时,再将当前最后写入到该第二分区的数据的时间戳确定为当前第二分区对应的时间范围的结束时间,同时停止对该第二分区进行写入数据的操作。
如此,根据这种在写入数据过程中确定第二分区时间范围的方式,待读取的数据或是存储在过去时间范围内对应的第二分区中,或是存储在当前正在执行存储数据的第二分区中(该第二分区对应的时间范围仅有确定的起始时间没有确定的结束时间)。此时,可以临时将当前执行存储数据的第二分区对应的时间范围为起始时间以后,如图3b或者图3c中的2018.01.20以后。
S104,将数据从存储节点上读取出来。
在确定待读取的数据对应在集群数据库中第二分区的所有存储节点后,可以读取这些存储节点上的已存储的数据,并从中提取出想要的数据,如配合其他查询条件,提取目标数据。
本发明提供的数据处理方法,在进行数据读取的过程中,首先获取读取的数据的读取请求,然后基于读取请求确定待读取数据对应的主键以及时间戳;在上述二级分区的集群数据库中确定用于读取该主键以及时间戳对应的数据的存储节点;将数据从该存储节点上读取出来。基于这种数据库结构和数据处理方法,可以很方便的读取数据。
实施例七
如图11所示,为本发明实施例的数据处理装置结构图一,该数据处理装置可设置在图4所示的数据平台中,用于执行如图5所示的方法步骤,其包括:
写入请求获取模块111,用于获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳;
第一分区确定模块112,用于根据主键确定数据的存储节点所在的第一分区;
第二分区确定模块113,用于根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定存储数据的存储节点;
其中,第一分区根据主键范围划分,第二分区根据时间范围划分,第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
数据写入模块114,用于将数据写入到该存储节点上。
进一步地,上述第二分区对应的时间范围中,以写入到该第二分区的首条数据对应的时间戳为起始时间,以写入到该第二分区的最后一条数据对应的时间戳为结束时间。
进一步地,如图12所示,上述装置中第二分区确定模块113可包括:
存储空间判断单元121,用于判断当前执行存储数据的第二分区的存储空间是否充足;
第一节点确定单元122,用于如果当前执行存储数据的第二分区的存储空间充足,则选择其中任一可用的存储节点作为用于写入数据的存储节点。
图12所示装置结构可用于执行如图6所示的方法步骤。
进一步地或可替代地,如图13所示,上述装置中第二分区确定模块113可包括:
存储空间判断单元121,用于判断当前执行存储数据的第二分区的存储空间是否充足;
第二节点确定单元131,用于如果当前执行存储数据的第二分区的存储空间不足,则在第二分区中创建新的存储节点,并选择该新的存储节点作为用于写入数据的存储节点。
图13所示装置结构可用于执行如图7所示的方法步骤。
进一步地或可替代地,如图14a所示,上述装置中第二分区确定模块113可包括:
存储空间判断单元121,用于判断当前执行存储数据的第二分区的存储空间是否充足;
第三节点确定单元141,用于:
如果当前执行存储数据的第二分区的存储空间不足,则在第一分区中创建新的第二分区,并在该第二分区中创建新的存储节点;
将新创建的第二分区作为后续执行存储数据的第二分区,从该第二分区中选择任一存储节点作为用于写入所述数据的存储节点。
图14a所示装置结构可用于执行如图8a所示的方法步骤。
进一步地,如图14b所示,图14a所示装置结构中还可包括
第一结束时间设置模块142,用于将当前执行存储数据的第二分区中最后一条被写入的数据对应的时间戳设置为该第二分区对应的时间范围中的结束时间;
第一起始时间设置模块143,用于将待写入的数据对应的时间戳设置为新创建的第二分区对应的时间范围中的起始时间。
图14b所示装置结构可用于执行如图8b所示的方法步骤。
进一步地或可替代地,如图15a所示,上述装置中第二分区确定模块113可包括:
存储空间判断单元121,用于判断当前执行存储数据的第二分区的存储空间是否充足;
第四节点确定单元151,用于:
如果当前执行存储数据的第二分区的存储空间不足,则将该第二分区所属的第一分区进行拆分形成多个新第一分区;新第一分区对应的主键范围为原主键范围的部分范围,且包含原第一分区的所有第二分区;
在新第一分区中确定存储数据的存储节点。
进一步地,第四节点确定单元151,还用于:
在新第一分区中创建新的第二分区,并在新的第二分区中创建新的存储节点;
将新创建的新第一分区中的新的第二分区作为该新第一分区中后续执行存储数据的第二分区,根据待写入的数据的主键从新第一分区中选择包含该主键的第一分区,并从该第一分区中新创建的第二分区中选择任一存储节点作为用于写入数据的存储节点。
图15a所示装置结构可用于执行如图9a所示的方法步骤。
进一步地,如图15b所示,图15a所示装置结构中还可包括
第二结束时间设置模块152,用于将新第一分区中当前执行存储数据的第二分区中最后一条被写入的数据对应的时间戳设置为该第二分区对应的时间范围中的结束时间;
第二起始时间设置模块153,用于将待写入的数据对应的时间戳设置为用于写入该数据的新的第二分区对应的时间范围中的起始时间。
本发明提供的数据处理装置,在进行数据写入的过程中,首先获取数据的写入请求,基于该写入请求确定数据对应的主键以及时间戳;在具有二级分区的存储系统如上述集群数据库中确定用于存储指定主键以及时间戳对应的数据的存储节点;将数据写入到该存储节点上。基于这种数据库结构和数据处理方法,可以很方便的写入和读取数据。
进一步地,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间充足时,选择其中一个存储节点写入数据,从而提高写入数据的成功率。
进一步地,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间不足时,通过在该第二分区中创建新存储节点的方式进行分区扩容,然后选择其中一个新增的存储节点写入数据,从而提高写入数据的成功率。
进一步地,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间不足时,通过在该第二分区所属的第一分区中创建新的第二分区的方式进行分区扩容,然后选择该新的第二分区中一个新增的存储节点写入数据,从而提高写入数据的成功率。
进一步地,在确定用于写入数据的存储节点之前,先判断当前执行存储数据的第二分区的存储空间是否充足,并且在存储空间不足时,通过在分裂第一分区的方式进行分区扩容,然后选择新第一分区中新的第二分区中一个新创建的存储节点写入数据,从而提高写入数据的成功率。并且本实施例中,新第一分区包含原第一分区中全部的第二分区,因此在分裂过程中,无需进行数据迁移。
实施例八
如图16所示,为本发明实施例的数据处理装置结构图六,该数据处理装置可设置在图4所示的数据平台中,用于执行如图10所示的方法步骤,其包括:
读取请求获取模块161,用于获取数据的读取请求,基于读取请求确定数据对应的主键以及时间戳;
第一分区读取模块162,用于根据主键确定数据的存储节点所在的第一分区;
第二分区读取模块163,根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定读取数据的存储节点;
其中,第一分区根据主键范围划分,第二分区根据时间范围划分,第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
数据读取模块164,用于将数据从存储节点上读取出来。
本发明提供的数据处理装置,在进行数据读取的过程中,首先获取读取的数据的读取请求,然后基于读取请求确定待读取数据对应的主键以及时间戳;在上述二级分区的集群数据库中确定用于读取该主键以及时间戳对应的数据的存储节点;将数据从该存储节点上读取出来。基于这种数据库结构和数据处理方法,可以很方便的读取数据。
实施例九
前面描述了数据处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图17所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器171和处理器172。
存储器171,用于存储程序。
除上述程序之外,存储器171还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器171可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器172,耦合至存储器171,用于执行存储器171中的程序,以用于:
获取数据的写入请求,基于写入请求确定数据对应的主键以及时间戳;
根据主键确定数据的存储节点所在的第一分区;
根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定存储数据的存储节点;
其中,第一分区根据主键范围划分,第二分区根据时间范围划分,第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
将数据写入到该存储节点上。
进一步地,上述第二分区对应的时间范围中,以写入到该第二分区的首条数据对应的时间戳为起始时间,以写入到该第二分区的最后一条数据对应的时间戳为结束时间。
进一步地,处理器172还用于:
判断当前执行存储数据的第二分区的存储空间是否充足;
如果当前执行存储数据的第二分区的存储空间充足,则选择其中任一可用的存储节点作为用于写入数据的存储节点。
进一步地或可替代地,处理器172还用于:
判断当前执行存储数据的第二分区的存储空间是否充足;
如果当前执行存储数据的第二分区的存储空间不足,则在第二分区中创建新的存储节点,并选择该新的存储节点作为用于写入数据的存储节点。
进一步地或可替代地,处理器172还用于:
判断当前执行存储数据的第二分区的存储空间是否充足;
如果当前执行存储数据的第二分区的存储空间不足,则在第一分区中创建新的第二分区,并在该第二分区中创建新的存储节点;
将新创建的第二分区作为后续执行存储数据的第二分区,从该第二分区中选择任一存储节点作为用于写入所述数据的存储节点。
进一步地,处理器172还用于:
将当前执行存储数据的第二分区中最后一条被写入的数据对应的时间戳设置为该第二分区对应的时间范围中的结束时间;
将待写入的数据对应的时间戳设置为新创建的第二分区对应的时间范围中的起始时间。
进一步地或可替代地,处理器172还用于:
判断当前执行存储数据的第二分区的存储空间是否充足;
如果当前执行存储数据的第二分区的存储空间不足,则将该第二分区所属的第一分区进行拆分形成多个新第一分区;新第一分区对应的主键范围为原主键范围的部分范围,且包含原第一分区的所有第二分区;
在新第一分区中确定存储数据的存储节点。
进一步地,处理器172还用于:
在新第一分区中创建新的第二分区,并在该新的第二分区中创建新的存储节点;
将新创建的新第一分区中的新的第二分区作为该新第一分区中后续执行存储数据的第二分区,根据待写入的数据的主键从新第一分区中选择包含该主键的第一分区,并从该第一分区中新创建的第二分区中选择任一存储节点作为用于写入数据的存储节点。
进一步地,处理器172还用于:
将新第一分区中当前执行存储数据的第二分区中最后一条被写入的数据对应的时间戳设置为该第二分区对应的所述时间范围中的结束时间;
将待写入的数据对应的时间戳设置为用于写入该数据的新的第二分区对应的时间范围中的起始时间。
上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。
进一步,如图17所示,电子设备还可以包括:通信组件173、电源组件174、音频组件175、显示器176等其它组件。图17中仅示意性给出部分组件,并不意味着电子设备只包括图17所示组件。
通信组件173被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件173经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件173还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件174,为电子设备的各种组件提供电力。电源组件174可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件175被配置为输出和/或输入音频信号。例如,音频组件175包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器171或经由通信组件173发送。在一些实施例中,音频组件175还包括一个扬声器,用于输出音频信号。
显示器176包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
实施例十
前面描述了供应链数据处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图18所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器181和处理器182。
存储器181,用于存储程序。
除上述程序之外,存储器181还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器181可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器182,耦合至存储器181,用于执行存储器181中的程序,以用于:
获取数据的读取请求,基于读取请求确定数据对应的主键以及时间戳;
根据主键确定数据的存储节点所在的第一分区;
根据时间戳确定存储节点所在的第二分区,并在第二分区中,确定读取数据的存储节点;
其中,第一分区根据主键范围划分,第二分区根据时间范围划分,第一分区包括其对应的主键范围内所属不同时间范围的一个或多个第二分区;
将数据从存储节点上读取出来。
上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。
进一步,如图18所示,电子设备还可以包括:通信组件183、电源组件184、音频组件185、显示器186等其它组件。图18中仅示意性给出部分组件,并不意味着电子设备只包括图18所示组件。
通信组件183被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件183经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件183还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件184,为电子设备的各种组件提供电力。电源组件184可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件185被配置为输出和/或输入音频信号。例如,音频组件185包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器181或经由通信组件183发送。在一些实施例中,音频组件185还包括一个扬声器,用于输出音频信号。
显示器186包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
进一步地,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有当被处理器执行时使得处理器执行实施例一至实施例五中的任一项所述的方法的程序指令。
进一步地,本发明实施例还提供了另一种计算机可读存储介质,该计算机可读存储介质存储有当被处理器执行时使得处理器执行实施例六所述的方法的程序指令。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。