数据处理方法及设备与流程

文档序号:18192967发布日期:2019-07-17 05:40阅读:99来源:国知局
本申请涉及计算机领域,尤其涉及一种数据处理方法及设备。
背景技术
::nosql是非关系型数据库中的一种。nosql数据存储通指在通过key-value(主键-属性列)来实现的分布式存储服务。因为nosql采用key-value的存储关系,所以与传统关系型sql(结构化查询语言,structuredquerylanguage)数据存储方式有较大的不同。非关系型数据存储比较显著的例子有google的bigtable、开源的hbase以及阿里云的tablestore(ots)等等,其中,tablestore(ots)是阿里云的一个非关系型数据存储服务。这种存储的每个记录单元通过一个key来唯一指定,可以通过key来迅速定位并访问一条记录。对数据的操作,包括插入、覆盖和更新等均可以在记录级别完成。nosql非关系型数据库在数据模型和技术实现上与传统关系型数据库,以及通常的分布式数据库都有较大的区别。虽然其数据模型也是以表为中心的,表有行和列的概念,但是与传统关系型数据库不一样,nosql非关系型数据库的表是稀疏的,每一行可以有不同的列,可以动态增加或者减少数据列,建表时不需要为表定义严格的schema(数据库对象的集合)。由于其在行级别上的实时更新和可覆盖性写入等特性,为在线数据更新等应用场景提供了便利。但是因为nosql非关系型数据库本身作为存储服务,缺乏计算能力。对于nosql非关系型数据的处理,尤其是批量的大规模处理,缺乏好的解决方案。现有的对于这种nosql非关系型数据的计算处理,原先只能通过用户自己根据nosql非关系型数据的sdk(软件开发工具包)编写单机程序进行分析。这样的单机分析,除了无法处理大规模的数据之外,而且在进行数据分析的时候,需要自行通过java、c++等通用的编程语言实现等价的sql逻辑(算子的语义),不仅纷繁复杂,而且缺乏可扩展性。技术实现要素:本申请的一个目的是提供一种数据处理方法及设备,能够解决现有的非关系型数据库自身计算能力不足的问题。根据本申请的一个方面,提供了一种数据处理方法,该方法包括:获取访问非关系型数据库的sql查询请求;根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,以对所述sql数据进行计算处理。进一步的,上述方法中,所述非关系型数据库与sql查询请求的关联关系包括:sql查询请求对应访问的非关系型数据库存储的地址;非关系型数据库中sql查询请求对应访问的表的名称;所述表中访问的列,所述列对应非关系型数据的主键或属性列;所述访问的列的读逻辑;所述访问的列与sql数据格式中的列的映射关系。进一步的,上述方法中,根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,包括:根据sql查询请求对应访问的非关系型数据库存储的地址和非关系型数据库中sql查询请求对应访问的表的名称,找到所述非关系型数据库中对应的表;根据所述访问的列及访问的列的读逻辑,从所述表中的对应列中读取非关系型数据;根据所述访问的列与sql数据格式中的列的映射关系,将所述读取到的非关系型数据转换为sql数据。进一步的,上述方法中,根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,包括:确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围;每个计算节点根据所述访问的主键的数值范围、非关系型数据库的非关系型数据格式与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的所述主键的数值范围的非关系型数据,并将获取到的非关系型数据转换为sql数据。进一步的,上述方法中,确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围,包括:根据在所述访问的表中每个存储节点内主键的数值范围,得到每个计算节点在所述访问的表中访问的主键的数值范围。进一步的,上述方法中,确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围,包括:将所述访问的表中的每个存储节点主键的数值范围进行切分,得到每个计算节点在所述访问的表中访问的主键的数值范围。进一步的,上述方法中,确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围,包括:通过调用非关系型数据库的根据非关系型数据的大小切分非关系型主键的数值范围的api和每个计算节点的数据处理能力,得到每个计算节点在所述访问的表中访问的主键的数值范围。进一步的,上述方法中,得到每个计算节点在所述访问的表中访问的主键的数值范围之后,还包括:每个计算节点根据所述sql查询请求的语义所述包含的主键的数值范围,从所述得到的访问的表中访问的主键的数值范围选取对应部分的主键的数值范围,作为该计算节点的修正后的访问的主键的数值范围。进一步的,上述方法中,从所述得到的访问的表中访问的主键的数值范围选取对应部分的主键的数值范围,作为该计算节点的修正后的访问的主键的数值范围之后,包括:每个计算节点根据所述sql查询请求的语义所包含的属性列,从所述该计算节点的修正后的访问的主键的数值范围内选取对应的属性列,作为该计算节点的修正后的访问的主键的数值范围内的属性列。根据本申请的另一方面,还提供了一种数据处理设备,该设备包括:获取装置,用于获取访问非关系型数据库的sql查询请求;转换装置,用于根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,以对所述sql数据进行计算处理。进一步的,上述设备中,所述非关系型数据库与sql查询请求的关联关系包括:sql查询请求对应访问的非关系型数据库存储的地址;非关系型数据库中sql查询请求对应访问的表的名称;所述表中访问的列,所述列对应非关系型数据的主键或属性列;所述访问的列的读逻辑;所述访问的列与sql数据格式中的列的映射关系。进一步的,上述设备中,所述转换装置,用于根据sql查询请求对应访问的非关系型数据库存储的地址和非关系型数据库中sql查询请求对应访问的表的名称,找到所述非关系型数据库中对应的表;根据所述访问的列及访问的列的读逻辑,从所述表中的对应列中读取非关系型数据;根据所述访问的列与sql数据格式中的列的映射关系,将所述读取到的非关系型数据转换为sql数据。进一步的,上述设备中,所述转换装置,用于确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围;每个计算节点根据所述访问的主键的数值范围、非关系型数据库的非关系型数据格式与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的所述主键的数值范围的非关系型数据,并将获取到的非关系型数据转换为sql数据。进一步的,上述设备中,所述转换装置,用于根据在所述访问的表中每个存储节点内主键的数值范围,得到每个计算节点在所述访问的表中访问的主键的数值范围。进一步的,上述设备中,所述转换装置,用于将所述访问的表中的每个存储节点主键的数值范围进行切分,得到每个计算节点在所述访问的表中访问的主键的数值范围。进一步的,上述设备中,所述转换装置,用于通过调用非关系型数据库的根据非关系型数据的大小切分非关系型主键的数值范围的api和每个计算节点的数据处理能力,得到每个计算节点在所述访问的表中访问的主键的数值范围。进一步的,上述设备中,所述转换装置,还用于供每个计算节点根据所述sql查询请求的语义所述包含的主键的数值范围,从所述得到的访问的表中访问的主键的数值范围选取对应部分的主键的数值范围,作为该计算节点的修正后的访问的主键的数值范围。进一步的,上述设备中,所述转换装置,还用于供每个计算节点根据所述sql查询请求的语义所包含的属性列,从所述该计算节点的修正后的访问的主键的数值范围内选取对应的属性列,作为该计算节点的修正后的访问的主键的数值范围内的属性列。根据本申请的另一面,还提供一种基于计算的设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:获取访问非关系型数据库的sql查询请求;根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,以对所述sql数据进行计算处理。根据本申请的另一面,还提一种计算机可读存储介质,其上存储有计算机可执行指令,其中,该计算机可执行指令被处理器执行时使得该处理器:获取访问非关系型数据库的sql查询请求;根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,以对所述sql数据进行计算处理。与现有技术相比,本申请通过sql来对接非关系型key-value(主键-属性列)数据的方法,用户在保留了自行更新数据,进行级别的数据写入与覆盖等非关系型数据操作优势之外,可以利用非关系型数据在表概念上与sql数据库上的相似性,以及sql的强表达能力,快速实现对海量非关系型数据进行分析计算。附图说明通过阅读参照以下附图所作的对非限制性实施列所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出根据本申请一实施例的数据处理方法的流程图;图2示出本申请另一实施例的数据处理方法的流程图;图3示出本申请再一实施例的数据处理方法的流程图;图4示出本申请一实施例的最小化sql计算引擎远程读取nosql数据量的原理图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本申请作进一步详细描述。在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示列。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的列子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。本申请提供一种数据处理方法,该方法包括:步骤s01,获取访问非关系型数据库的sql查询请求;步骤so2,根据所述非关系型数据库的非关系型数据格式与sql查询请求的关联关系,从所述非关系型数据库数据库获取所述sql查询请求对应的非关系型数据库数据,并将获取到的非关系型数据库数据转换为sql数据,以对所述sql数据进行计算处理。在此,本实施例将sql查询请求对接非关系型数据库数据库,用户在保留了自行通过非关系型数据库数据库更新数据之外,可以利用sql查询请求的强表达能力,快速实现对海量非关系型数据库数据进行分析计算。如图1所示,本申请提供一种数据处理方法,该方法包括:步骤s11,获取访问非关系型数据库的sql查询请求;步骤s12,根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据。具体的,所述非关系型数据格式可以从对应的非关系型数据库获取,所述sql数据格式可以从对应的sql数据库获取,由于非关系型数据在表概念上与sql数据库表的相近性,可以通过在sql数据上使用外表(externaltable)实现非关系型数据格式与sql查询请求的关联关系,即可以通过创建一个外表,来建立外部的非关系型数据与sql操作的关联,进而打通分布式sql计算平台与非关系型存储服务之间的数据链路,实现在非关系型存储基础上无缝对接各种sql计算语义。在从非关系型数据库的存储服务获取数据后,sql计算引擎将负责把获取的数据转换成sql数据,最后无缝地实现与其他sql算子的对接,参与剩下的其他在操作树中的sql算子的运算。在此,本实施例非关系型数据库本身作为存储服务,虽然插入、覆盖和更新块,但缺乏计算能力,sql查询请求能够处理大规模得数据,但现有技术里sql查询请求不能直接从非关系型数据库中获取数据后进行数据处理,因为sql查询请求只能从sql数据库中获取数据后进行数据处理,本实施例为了同时发挥非关系型数据库的存储高效的优势,和sql查询请求对数据处理块优势,利用非关系型数据在表概念上与sql数据库上的相似性,将sql查询请求对接非关系型数据库,用户在保留了自行通过非关系型数据库更新数据,进行行级别的数据写入与覆盖等非关系型数据操作优势之外,可以利用sql查询请求的强表达能力,快速实现对海量非关系型数据进行分析计算。本申请的数据处理方法一实施例中,所述非关系型数据库与sql查询请求的关联关系包括:sql查询请求对应访问的非关系型数据库存储的地址;非关系型数据库中sql查询请求对应访问的表的名称;所述访问的表中的访问的列,其中,所述访问的列对应非关系型数据的主键或属性列;所述访问的列的读逻辑;所述访问的列与sql数据格式中的列的映射关系。具体的,所述非关系型数据库与sql查询请求的关联关系可以预先建立的,访问非关系型数据库中同一个的表的查询请求可以通用同一个关联关系。可以通过创建外表的方式所述非关系型数据库与sql查询请求的关联关系。在创建外表的过程中,非关系型数据存储一些独有的特性(比如主键key,非关系型的表的名称等)被引入sql计算系统。在外表创建好后,这些相关信息就可以为sql计算引擎所用,从而做到通过类似操作普通sql表的方式来访问其关联的非关系型数据,并进行计算处理。在创建外表之后,进行select等经典sql操作,就会在分布式计算平台上,触发对外表所关联的非关系型数据的处理。如图2所示,接上一实施例,本申请的数据处理方法一实施例中,步骤s12,根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,包括:步骤s21,根据sql查询请求对应访问的非关系型数据库存储的地址和非关系型数据库中sql查询请求对应访问的表的名称,找到所述非关系型数据库中对应的表;步骤s22,根据所述访问的列及访问的列的读逻辑,从所述表中的对应列中读取非关系型数据;步骤s23,根据所述访问的列与sql数据格式中的列的映射关系,将所述读取到的非关系型数据转换为sql数据。如图3所示,本申请的数据处理方法一实施例中,步骤s12,根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,包括:步骤s31,确定响应所述sql查询请求的多个计算节点中的每个计算节点,在所述访问的表中访问的主键的数值范围(keyrange);步骤s32,每个计算节点根据所述访问的主键的数值范围、非关系型数据库的非关系型数据格式与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的所述主键的数值范围的非关系型数据,并将获取到的非关系型数据转换为sql数据。在此,分布式sql计算框架可以对外表所关联的非关系型存储进行分析,从而判断对非关系型存储数据进行计算需要几个计算节点,以提高并行处理能力。访问非关系型数据常见的方式除了按照key(主键)进行单记录访问,还有按照一定的主键的数值范围(keyrange)进行访问,以便通过一次访问可以读取更多的需要的数据。本实施例通过多个计算节点读取其对应主键的数值范围的非关系型数据,实现分布式sql,通过分布式sql来对接非关系型key-value(主键-属性列)数据,可以利用分布式sql的强大批处理能力来对非关系型数据并发进行分析计算,实现在一个分布式的sql计算引擎上对于非关系型的key-value进行批量的计算和处理,快速实现分布式的对海量非关系型数据进行分析计算。接下来,通过如下各实施例对每个计算节点访问的非关系型数据的范围(range)如何确定作进一步介绍。本申请的数据处理方法一实施例中,步骤s31,确定响应所述sql查询请求的多个计算节点中的每个计算节点,在所述访问的表中访问的主键的数值范围,包括:根据在所述访问的表中每个存储节点内主键的数值范围(keyrange),得到每个计算节点在所述访问的表中访问的主键的数值范围。在此,对于单个存储节点存储数据量不大的情况下,可以直接根据非关系型数据的存储服务背后的存储节点的数目来确定计算节点的数目,这样的计算节点设置方式比较简单,例如,若存储节点的数量为5个,则可以对应设置5个计算节点来实现数据并行处理。在使用本实施例的keyrange切割方法获取非关系型数据的切割之后,sql的计算服务可以给每个计算节点分配需要处理的特定数据的keyrange。本申请的数据处理方法一实施例中,步骤s31,确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围,包括:将所述访问的表中的每个存储节点主键的数值范围(keyrange)进行切分,得到每个计算节点在所述访问的表中访问的主键的数值范围。在此,上一实施例的直接根据非关系型数据的存储服务背后的存储节点的数目来确定计算节点的数目的方案,对非关系型的接口要求较低,但是因为存储服务的存储节点因为没有计算需求,所以单个存储节点可能会存储较多的数据,而分布式sql引擎中的单个计算节点如果要读取并处理同样多的数据,可能需要耗时较久。一个可以改进的点是分布式sql计算服务可以对于一个非关系型存储节点的数据进行range切分,将所述访问的表中的每个存储节点主键的数值范围(range)进行切分,例如可以是均分,用多个计算节点来并发处理一个非关系型存储节点上的数据,有效的提高并发度,并提升计算效率。在使用本实施例的keyrange切割方法获取非关系型数据的切割之后,sql的计算服务可以给每个计算节点分配需要处理的特定数据的keyrange。本申请的数据处理方法一实施例中,步骤s31,确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围,包括:通过调用非关系型数据库的根据非关系型数据的大小切分非关系型主键的数值范围的api(applicationprogramminginterface,应用程序编程接口)和每个计算节点的数据处理能力,得到每个计算节点在所述访问的表中访问的主键的数值范围。在此,在非关系型存储服务提供根据数据大小做数据range切割api接口的前提下,分布式sql计算服务可以主动调用该api,从而获取根据一定大小切割出来的range,这样能获得比较均匀的切分,而且sql的计算服务可以根据计算节点的数据处理能力,来合理选择每个切割的大小。在使用本实施例的keyrange切割方法获取非关系型数据的切割之后,sql的计算服务可以给每个计算节点分配需要处理的特定数据的keyrange。本申请的数据处理方法一实施例中,上述三个实施例的得到每个计算节点在所述访问的表中访问的主键的数值范围之后,还包括:每个计算节点根据所述sql查询请求的语义所述包含的主键的数值范围,从所述得到的访问的表中访问的主键的数值范围选取对应部分的主键的数值范围,作为该计算节点的修正后的访问的主键的数值范围。在此,每个计算节点上获取到其需要处理的数据处理keyrange之后,还可以根据具体用到的sql查询请求的语义,再对keyrange进行缩小,来计算要进行的用户通过sql式指定的运算中,需要读取远程非关系型数据库上的最小范围的数据的keyrange是什么,即每个计算节点的修正后的访问的主键的数值范围(keyrange)是的什么,最后才发出修正后的keyrange的读的请求去非关系型数据库读取数据,从而实现分布式与远程非关系型存储之间网络流量的更小化,以及计算的高效化。比如,如果给定如下一个简单sqlselect运算,select*fromnosql-external-tablewherex<randx>l那么对range的多次细分可以用如图4表示经过3个步骤:步骤s41,创建外表的时候可以选择一个外表所对应非关系型数据表的一个keyrange,作为初始keyrange,所述初始keyrange可以是从所述非关系型数据表的完整keyrange中选取的部分keyrange;步骤s42,根据计算的并发度,计算平台可以选择计算的并发度,并且对每个并行计算节点分配其需要处理的所述初始keyrange中的子keyrange,所述子keyrange可以是从所述初始keyrange中选取部分keyrange;步骤s43,每个计算节点可以再根据sql查询请求的语义,如sql计算算子(比如如果有sqlfiltering操作),进一步从子keyrange中缩小需要读取的数据范围,即得到修正后的keyrange。本实施例中,keyrange进一步缩小后,对应前述步骤s32,包括:每个计算节点根据修正后的访问的主键的数值范围、非关系型数据库的非关系型数据格式与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的所述主键的数值范围的非关系型数据,并将获取到的非关系型数据转换为sql数据。本申请的数据处理方法一实施例中,接上一实施例,从所述得到的访问的表中访问的主键的数值范围选取对应部分的主键的数值范围,作为该计算节点的修正后的访问的主键的数值范围之后,包括:每个计算节点根据所述sql查询请求的语义所包含的属性列,从所述该计算节点的修正后的访问的主键的数值范围内选取对应的属性列,作为该计算节点的修正后的访问的主键的数值范围内的属性列。在此,对于需要获取的属性列,本实施例中用户也可以根据所述sql查询请求的语义所包含的属性列,如select操作里面的具体属性,来进一步对修正后的keyrange进行列剪裁,保证在读取最小的keyrange的同时,也读取keyrange里面最少数目的属性列,从而尽可能减少sql计算节点与远程非关系型存储服务间的网络通信。本实施例中,在进一步缩小keyrange中进步缩小属性列后,对应前述步骤s32,包括:每个计算节点根据修正后的访问的主键的数值范围内的属性列、非关系型数据库的非关系型数据格式与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的所述主键的数值范围的非关系型数据,并将获取到的非关系型数据转换为sql数据。根据本申请的另一方面,还提供了一种数据处理设备,该设备包括:获取装置,用于获取访问非关系型数据库的sql查询请求;转换装置,用于根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,以对所述sql数据进行计算处理。具体的,所述非关系型数据格式可以从对应的非关系型数据库获取,所述sql数据格式可以从对应的sql数据库获取,由于非关系型数据在表概念上与sql数据库表的相近性,可以通过在sql数据上使用外表(externaltable)实现非关系型数据格式与sql查询请求的关联关系,即可以通过创建一个外表,来建立外部的非关系型数据与sql操作的关联,进而打通分布式sql计算平台与非关系型存储服务之间的数据链路,实现在非关系型存储基础上无缝对接各种sql计算语义。在从非关系型数据库的存储服务获取数据后,sql计算引擎将负责把获取的数据转换成sql格式化记录,最后无缝地实现与其他sql算子的对接,参与剩下的其他在操作树中的sql算子的运算。在此,本实施例通过sql来对接非关系型key-value(主键-属性列)数据的方法,用户在保留了自行更新数据,进行级别的数据写入与覆盖等非关系型数据操作优势之外,可以利用非关系型数据在表概念上与sql数据库上的相似性,以及sql的强表达能力,快速实现对海量非关系型数据进行分析计算。本申请的数据处理设备一实施例中,所述非关系型数据库与sql查询请求的关联关系包括:sql查询请求对应访问的非关系型数据库存储的地址;非关系型数据库中sql查询请求对应访问的表的名称;所述表中访问的列,所述列对应非关系型数据的主键或属性列;所述访问的列的读逻辑;所述访问的列与sql数据格式中的列的映射关系。可以通过创建外表的方式所述非关系型数据库与sql查询请求的关联关系。创建外表的过程中,非关系型数据存储一些独有的特性(比如主键key,非关系型的表的名称等)被引入sql计算系统。在外表创建好后,这些相关信息就可以为sql计算引擎所用,从而做到通过类似操作普通sql表的方式来访问其关联的非关系型数据,并进行计算处理。在创建外表之后,进行select等经典sql操作,就会在分布式计算平台上,触发对外表所关联的非关系型数据的处理。本申请的数据处理设备一实施例中,所述转换装置,用于根据sql查询请求对应访问的非关系型数据库存储的地址和非关系型数据库中sql查询请求对应访问的表的名称,找到所述非关系型数据库中对应的表;根据所述访问的列及访问的列的读逻辑,从所述表中的对应列中读取非关系型数据;根据所述访问的列与sql数据格式中的列的映射关系,将所述读取到的非关系型数据转换为sql数据。本申请的数据处理设备一实施例中,所述转换装置,用于确定响应所述sql查询请求的多个计算节点中的每个在所述访问的表中访问的主键的数值范围;每个计算节点根据所述访问的主键的数值范围、非关系型数据库的非关系型数据格式与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的所述主键的数值范围的非关系型数据,并将获取到的非关系型数据转换为sql数据。在此,分布式sql计算框架可以对外表所关联的非关系型存储进行分析,从而判断对非关系型存储数据进行计算需要几个计算节点,以提高并行处理能力。访问非关系型数据常见的方式除了按照key(主键)进行单记录访问,还有按照一定的主键的数值范围(keyrange)进行访问,以便通过一次访问可以读取更多的需要的数据。本实施例通过多个计算节点读取其对应主键的数值范围的非关系型数据,实现分布式sql,通过分布式sql来对接非关系型key-value(主键-属性列)数据,可以利用分布式sql的强大批处理能力来对非关系型数据并发进行分析计算,实现在一个分布式的sql计算引擎上对于非关系型的key-value进行批量的计算和处理,快速实现分布式的对海量非关系型数据进行分析计算。接下来,通过如下各实施例对每个计算节点访问的非关系型数据的范围(range)如何确定作进一步介绍。本申请的数据处理设备一实施例中,所述转换装置,用于根据在所述访问的表中每个存储节点内主键的数值范围,得到对应的每个计算节点在所述访问的表中访问的主键的数值范围。在此,对于单个存储节点存储数据量不大的情况下,可以直接根据非关系型数据的存储服务背后的存储节点的数目来确定计算节点的数目,这样的计算节点设置方式比较简单,例如,若存储节点的数量为5个,则可以对应设置5个计算节点来实现数据并行处理。在使用本实施例的keyrange切割方法获取非关系型数据的切割之后,sql的计算服务可以给每个计算节点分配需要处理的特定数据的keyrange。本申请的数据处理设备一实施例中,所述转换装置,用于将所述访问的表中的每个存储节点主键的数值范围进行切分,得到每个计算节点在所述访问的表中访问的主键的数值范围。在此,上一实施例的直接根据非关系型数据的存储服务背后的存储节点的数目来确定计算节点的数目的方案,对非关系型的接口要求较低,但是因为存储服务的存储节点因为没有计算需求,所以单个存储节点可能会存储较多的数据,而分布式sql引擎中的单个计算节点如果要读取并处理同样多的数据,可能需要耗时较久。一个可以改进的点是分布式sql计算服务可以对于一个非关系型存储节点的数据进行range切分,将所述访问的表中的每个存储节点主键的数值范围(range)进行切分,例如可以是均分,用多个计算节点来并发处理一个非关系型存储节点上的数据,有效的提高并发度,并提升计算效率。在使用本实施例的keyrange切割方法获取非关系型数据的切割之后,sql的计算服务可以给每个计算节点分配需要处理的特定数据的keyrange。本申请的数据处理设备一实施例中,所述转换装置,用于通过调用非关系型数据库的根据非关系型数据的大小切分非关系型主键的数值范围的api和每个计算节点的数据处理能力,得到每个计算节点在所述访问的表中访问的主键的数值范围。在此,在非关系型存储服务提供根据数据大小做数据range切割api接口的前提下,分布式sql计算服务可以主动调用该api,从而获取根据一定大小切割出来的range,这样能获得比较均匀的切分,而且sql的计算服务可以根据计算节点的数据处理能力,来合理选择每个切割的大小。在使用本实施例的keyrange切割方法获取非关系型数据的切割之后,sql的计算服务可以给每个计算节点分配需要处理的特定数据的keyrange。本申请的数据处理设备一实施例中,本申请的数据处理方法一实施例中,上述三个实施例的得到每个计算节点在所述访问的表中访问的主键的数值范围之后,所述转换装置,还用于供每个计算节点根据所述sql查询请求的语义所述包含的主键的数值范围,从所述得到的访问的表中访问的主键的数值范围选取对应部分的主键的数值范围,作为该计算节点的修正后的访问的主键的数值范围。在此,每个计算节点上获取到其需要处理的数据处理keyrange之后,还可以根据具体用到的sql查询请求的语义,再对keyrange进行缩小,来计算要进行的用户通过sql式指定的运算中,需要读取远程非关系型数据库上的最小范围的数据的keyrange是什么,即每个计算节点的修正后的访问的主键的数值范围(keyrange)是的什么,最后才发出修正后的keyrange的读的请求去非关系型数据库读取数据,从而实现分布式与远程非关系型存储之间网络流量的更小化,以及计算的高效化。比如,如果给定如下一个简单sqlselect运算,select*fromnosql-external-tablewherex<randx>l那么对range的多次细分可以用如图4表示经过3个步骤:步骤s41,创建外表的时候可以选择一个外表所对应非关系型数据表的一个keyrange,作为初始keyrange,所述初始keyrange可以是从所述非关系型数据表的完整keyrange中选取的部分keyrange;步骤s42,根据计算的并发度,计算平台可以选择计算的并发度,并且对每个并行计算节点分配其需要处理的所述初始keyrange中的子keyrange,所述子keyrange可以是从所述初始keyrange中选取部分keyrange;步骤s43,每个计算节点可以再根据sql查询请求的语义,如sql计算算子(比如如果有sqlfiltering操作),进一步从子keyrange中缩小需要读取的数据范围,即得到修正后的keyrange。本申请的数据处理设备一实施例中,接上一实施例,从所述得到的访问的表中访问的主键的数值范围选取对应部分的主键的数值范围,作为该计算节点的修正后的访问的主键的数值范围之后,所述转换装置,还用于供每个计算节点根据所述sql查询请求的语义所包含的属性列,从所述该计算节点的修正后的访问的主键的数值范围内选取对应的属性列,作为该计算节点的修正后的访问的主键的数值范围内的属性列。在此,对于需要获取的属性列,本实施例中用户也可以根据所述sql查询请求的语义所包含的属性列,如select操作里面的具体属性,来进一步对修正后的keyrange进行列剪裁,保证在读取最小的keyrange的同时,也读取keyrange里面最少数目的属性列,从而尽可能减少sql计算节点与远程非关系型存储服务间的网络通信。根据本申请的另一面,还提供一种基于计算的设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:获取访问非关系型数据库的sql查询请求;根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,以对所述sql数据进行计算处理。根据本申请的另一面,还提一种计算机可读存储介质,其上存储有计算机可执行指令,其中,该计算机可执行指令被处理器执行时使得该处理器:获取访问非关系型数据库的sql查询请求;根据所述非关系型数据库与sql查询请求的关联关系,从所述非关系型数据库获取所述sql查询请求对应的非关系型数据,并将获取到的非关系型数据转换为sql数据,以对所述sql数据进行计算处理。综上所述,本申请通过sql来对接非关系型key-value(主键-属性列)数据的方法,用户在保留了自行更新数据,进行级别的数据写入与覆盖等非关系型数据操作优势之外,可以利用非关系型数据在表概念上与sql数据库上的相似性,以及sql的强表达能力,快速实现对海量非关系型数据进行分析计算。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,列如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施列中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,列如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,列如,作为与处理器配合从而执行各个步骤或功能的电路。另外,本申请的一部分可被应用为计算机程序产品,列如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施列包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施列的方法和/或技术方案。对于本领域技术人员而言,显然本申请不限于上述示范性实施列的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施列看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1