数据处理方法、装置、设备及存储介质与流程

文档序号:24984970发布日期:2021-05-07 23:02阅读:75来源:国知局
数据处理方法、装置、设备及存储介质与流程

本发明一般涉及数据处理技术领域,具体涉及一种数据处理方法、装置、设备及存储介质。



背景技术:

随着信息技术的快速发展,互联网已经广泛应用到人们的日常生活中,随之产生了越来越多的数据量。对于一些数据高度隐私的行业,在复杂的网络环境中需要保证信息和数据安全,以避免信息泄漏,因此,如何对数据进行安全存储显得非常重要。

目前,相关技术中通过构建数据库中间件,例如mycat,然后按照一定的规则对数据库表进行行分片,将数据库中的表数据存储在不同服务器的数据库上,从而实现数据的分布式存储,但是行分片是根据不同的表进行切分,当不法分子仅获取到某台服务器的数据库中的数据后,即可得到完整的信息,导致数据存储安全性较差。



技术实现要素:

鉴于现有技术中的上述缺陷或不足的至少之一,期望提供一种数据处理方法、装置、设备及存储介质。

第一方面,本发明提供了一种数据处理方法,该方法包括:

接收客户端发送的数据处理请求,所述数据处理请求中携带有待处理数据;

响应于所述数据处理请求,基于预设的行分片规则和列分片规则对所述待处理数据进行处理生成处理结果;

将所述处理结果发送至所述客户端。

第二方面,本发明提供了一种数据处理装置,该装置包括:

接收模块,用于接收客户端发送的数据处理请求,所述数据处理请求中携带有待处理数据;

处理模块,用于响应于所述数据处理请求,基于预设的行分片规则和列分片规则对所述待处理数据进行处理生成处理结果;

发送模块,用于将所述处理结果发送至所述客户端。

第三方面,本申请实施例提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述所述数据处理方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述数据处理方法。

综上所述,本申请提供的一种数据处理方法、装置、设备及存储介质,通过接收客户端发送的数据处理请求,该数据处理请求中携带有待处理数据,响应于数据处理请求,基于预设的行分片规则和列分片规则对待处理数据进行处理生成处理结果,并将处理结果发送至客户端。该方案由于通过预设的行分片规则和列分片规则对待处理数据进行处理,可以将表数据分散地存储在不同服务器的数据库中,使得当一台或某台服务器上的数据库的数据被非法获取后,仅可以得到部分数据,无法得到完整的数据,从而很大程度上增强了数据库存储数据的安全性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本发明实施例提供的数据处理方法的实施环境的架构示意图;

图2为本发明实施例提供的数据处理方法的流程示意图;

图3为本发明另一实施例提供的数据处理方法的流程示意图;

图4为本发明另一实施例提供的数据处理方法的流程示意图;

图5为本发明另一实施例提供的数据处理方法的流程示意图;

图6为本发明另一实施例提供的数据处理方法的流程示意图;

图7为本发明另一实施例提供的数据处理方法的流程示意图;

图8为本发明另一实施例提供的数据处理方法的流程示意图;

图9为本发明另一实施例提供的数据处理方法的流程示意图;

图10为本发明实施例提供的数据处理装置的流程示意图;

图11为本发明实施例提供的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

如背景技术中提到的,在互联网技术快速发展的过程中,互联网应用所拥有的客户数量越来越多,互联网应用积累的数据量也越来越大,对于一些数据高度隐私的行业,如军工行业,为了避免数据发生泄漏,保证数据库中数据的存储安全显得非常重要。

目前,现有技术中通过构建数据库中间件,如开源的分布式数据库中间件mycat或kingshard,对数据库中的表数据按行分片的分片规则,将数据库中的表数据存储到不同服务器的数据库上,从而实现数据的分布式存储,但是当不法分子仅通过获取到某台服务器的数据库中的数据后,即可得到完整的数据,如某台服务器的数据库中存储有用户的所有信息,该用户的信息可以是用户的姓名、职业、年龄,则恶意攻击者可以获取到该用户完整的信息,使得数据存储安全性较差。

基于上述缺陷,本申请提供了一种数据处理方法、装置、设备及存储介质,与现有技术相比,该方案由于采用预设的行分片规则和列分片规则对待处理数据进行处理,可以将待处理的表数据分散地存储在不同服务器的数据库中,使得当一台或某台服务器上的数据库的数据被非法获取后,仅可以得到部分数据,无法得到完整的数据,从而很大程度上增强了数据库存储数据的安全性。

可以理解,图1为本申请实施例提供的数据处理方法的实施环境结构图,该系统包括客户端10和服务器20,客户端与服务器之间可以通过网络进行交互,以接收或发送消息等,比如,客户端10用于向服务器发送数据处理请求,以及用于接收服务器发送的数据处理结果。

可选的,上述客户端10可以是硬件,也可以是软件。当客户端为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本、个人数字助理(personaldigitalassistant,pda)、膝上型便携计算机、台式计算机等电子设备。当客户端10为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。本发明实施例对电子设备的具体类型不作任何限制。

服务器20可以是提供各种服务的服务器,例如对客户端10提供数据存储支持的后台服务器,服务器用于响应于数据处理请求,基于预设的行分片规则和列分片规则对待处理数据进行处理生成处理结果,并并返回该处理结果至客户端10。

可选的,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。

可选的,该服务器20可以是由若干服务器构成的服务器集群,可以包括列族分片服务器以及对应的行服务器(图中未示出),列族分片服务器用于接收并响应于操作请求,对待处理语句进行解析,以进行创建表、删除表操作,或者将操作请求发送至对应的行服务器,从而实现表数据的增、删、改、查等操作。

客户端10与服务器20之间通过有线或无线网络建立通信连接。可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(localareanetwork,lan)、城域网(metropolitanareanetwork,man)、广域网(wideareanetwork,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。

图2为本申请实施例提供的系统架构图。如图2所示,该总体架构包括应用层、接口层、列分片逻辑层和行+列分片物理层(分布式数据库服务层)。

用户可以在应用层通过create,insert,update,delete,select等操作与数据库或者表进行交互,支持mysql协议,即可以像使用mysql数据库的方式进行用户业务。接口层处理列分片的业务,包括sql解析、sql语句重构、节点路由等。列分片逻辑层是主表按照列分片规则将列拆分成子表所在的层级。列分片逻辑层上每个子表最多分布在一台服务器上,全局表用于保存每个主表的表结构信息和列子表的分配信息。每个列分片有对应该列族的行分片业务,按照行分片规则分配到相应的服务器上。行+列分片物理层为分布式数据库层,每个服务器上的数据库为独立的数据库,每个列族分配都对应一个独立的服务器集群,该服务器集群包括多台服务器,用于该列族的行分片。

为了便于理解和说明,下面通过图3至图11详细说明本申请实施例提供的数据处理方法、装置、设备及存储介质。

图3为本申请实施例提供的数据处理方法的流程示意图,如图3所示,该方法可以应用于数据处理装置,该数据处理装置可以是上述图1所示系统的服务器20,该方法包括:

s101、接收客户端发送的数据处理请求,数据处理请求中携带有待处理数据。

具体的,数据库中以表为组织单位存储数据。上述数据处理请求可以为多种形式,包括基本的数据操作指令,例如可以是表创建请求,也可以是表删除请求,还可以是数据插入请求、数据更新请求、数据删除请求和数据查询请求。也可以为不同的应用场景下的特定指令,比如,在公司的海外项目中,需要将海外特性数据跨公网上报回公司的数据服务器,则数据库操作指令可以为数据上报指令。该数据处理请求中携带有待处理数据。

s102、响应于数据处理请求,基于预设的行分片规则和列分片规则对待处理数据进行处理生成处理结果。

s103、将处理结果发送至客户端。

可以理解,数据的切分根据切分规则的类型分为两种切分模式,一种是根据不同的表(schema)来切分到不同的数据库或主机上,称为垂直(纵向)切分,也称为行分片;另一种是根据表中数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库或主机上面,这种切分称之为水平(横向)切分,也称为列分片。

本实施例中,列分片规则可以是采用列族的思想进行分片,当创建表的时候,由用户设计好分片策略,该分片策略例如可以为将主表拆分为多少个子表,数据库表的字段名称以“列族名:字段名”进行命名,有相同列族名前缀的列会作为一个列分片。如果列没有“列族名:”的前缀,则会创建一个默认的列分片,相应的列在这个列分片中。如果都没有“列族名:”的前缀,那么最终的结果是不做列分片,数据库子表名称为“主表名-列族名”。

该列分片规则还可以对“列族名:字段名”计算哈希值然后取余处理,确定列族分片服务器,确保最大限度保证列分片充分利用设置的服务器资源。

上述行分片规则是指每个列分片在创建子表的时候,需要创建一个“row_id”字段,类型为字符串,值采用生成uuid的形式。每个行分片的同一行该值是相同的,每个行分片都对应有一个或多个服务器组成的服务器集群组,用于该列族分片的行分片;对于每个列族分片的行分片,按照“row_id”的实际值计算哈希值然后取余处理,确定该列分片对应的行服务器。

服务器在接收到上述数据处理请求后,可以基于预设的行分片规则和列分片规则对待处理数据进行处理,从而生成处理结果。

需要说明的是,当数据处理请求为表创建请求时,生成的处理结果为表创建成功或表创建失败;当数据处理请求为表删除请求时,生成的处理结果为表删除成功或表删除失败;当数据处理请求为数据插入请求时,生成的处理结果为数据插入成功或数据插入失败;当数据处理请求为数据更新请求时,生成的处理结果为数据更新成功或数据更新失败;数据处理请求为数据删除请求时,生成的处理结果为数据删除成功或数据删除失败;数据处理请求为数据查询请求时,生成的处理结果为数据查询成功或数据查询失败。

服务器在生成处理结果后,可以将处理结果发送至客户端,例如可以将处理结果发送至应用层。

本申请实施例提供的数据处理方法,通过接收客户端发送的数据处理请求,该数据处理请求中携带有待处理数据,响应于数据处理请求,基于预设的行分片规则和列分片规则对待处理数据进行处理生成处理结果,并将处理结果发送至客户端。该方案由于通过预设的行分片规则和列分片规则对待处理数据进行处理,可以将表数据分散地存储在不同服务器的数据库中,使得当一台或某台服务器上的数据库的数据被非法获取后,仅可以得到部分数据,无法得到完整的数据,从而很大程度上增强了数据库存储数据的安全性。

作为一种可实现方式,当数据处理请求为表创建请求时,图4为本申请实施例提供的数据处理方法的流程示意图。如图4所示,该方法包括:

s201、响应于表创建请求,从待处理数据中提取数据库表的列字段和数据库表中的列前缀。

s202、基于列前缀,确定所有第一列族分片。

s203、对于每个第一列族分片,构建与第一列族分片对应的子表创建语句。

s204、发送子表创建请求至每个第一列族分片服务器,以使得每个第一列族分片服务器对子表创建语句进行解析,创建子表。

s205、当所有子表创建成功时,将主表结构与子表的映射关系存储至全局表中。

本实施例中,客户端向服务器发送表创建请求,该表创建请求中携带有待处理数据,服务器的接口层在接收到表创建请求后,对该表创建请求中的待处理语句进行解析,提取所有的列字段,并基于列字段确定数据库表中的列前缀,根据该列前缀,确定所有第一列族分片,该第一列族分片可以是一个,也可以是多个。如果对待处理语句进行解析,未提取到对应的列字段,则确定对应的列族分片服务器为系统默认列族分片服务器。其中,子表名称命名为“主表名-列族名”,可以对子表名称计算哈希值然后取余处理,从而确定对应的第一列族分片服务器,每个子表使用的主键为生成的row-id。第一列族分片服务器为第一列族分片对应的服务器。

对于每个第一列族分片,构建与第一列族分片对应的子表创建语句,并对该子表创建语句进行封装处理成子表创建请求,该子表创建语句中包括待创建子表名、第一列族分片标识等,将该子表创建请求发送至列分片逻辑层中的每个第一列族分片服务器,以使得每个第一列族分片服务器在行+列分片物理层对子表创建语句进行解析,以创建待创建子表名对应的子表,当每个第一列族分片服务器创建子表成功时,然后返回至接口层的服务上,将主表结构与子表的映射关系存储至全局表中,从而完成子表创建流程,并将创建成功的处理结果返回至应用层。

需要说明的是,表中的一行一行的信息可以称为记录。主键是用于标识当前记录的字段,为非空且唯一。例如,主键为唯一标识数据库中的一个字段。数据库的主表是学生表(学号、姓名、性别、班级)其中每个学生的学号是唯一的,学号可以为一个主键。

作为一种可实现方式,当数据处理请求为表删除请求时,图5为本申请实施例提供的数据处理方法的流程示意图。如图5所示,该方法包括:

s301、响应于表删除请求,解析待处理语句,确定待删除表名。

s302、从全局表中确定待删除表名对应的所有第二列族分片。

s303、对于每个第二列族分片,构建与第二列族分片对应的子表删除语句。

s304、发送子表删除请求至每个第二列族分片服务器,以使得第二列族分片服务器对子表删除语句进行解析,删除待删除表名对应的子表。

s305、当所有子表删除成功时,将全局表中的主表结构与子表的映射记录删除。

具体的,客户端向服务器发送表删除请求,该表删除请求中携带有待处理数据,服务器通过接口层接收到表删除请求后,对待处理语句进行解析,确定待删除表名,该待删除表名为需要删除的表的表名,然后接口层将该待删除表名发送至列分片逻辑层,使得列分片逻辑层从全局表中获取该待删除表名对应的所有第二列族分片,该第二列族分片可以是一个,也可以是多个。

对于每个第二列族分片,构建与该第二列族分片对应的子表删除语句,该子表删除语句中包括待删除表名、第二列族分片标识等,然后将该子表删除语句封装处理为子表删除请求,并将子表删除请求发送至每个第二列族分片服务器,以使得第二列族分片服务器在接收到该子表删除请求后,在行+列分片物理层对子表删除语句进行解析,删除待删除表名对应的子表。其中,第二列族分片服务器为第二列族分片对应的服务器。

当各个第二列族分片服务器将对应的子表全部删除成功时,将保存在全局表中的主表结构与子表的映射记录删除,从而完成子表删除流程,并将删除成功的处理结果返回至应用层。

作为一种可实现方式,当数据处理请求为数据插入请求时,图6为本申请实施例提供的数据处理方法的流程示意图。如图6所示,该方法包括:

s401、响应于数据插入请求,解析待处理语句,提取待插入列字段和插入值。

s402、从全局表中确定待插入列字段对应的全部第三列族分片和第三列族分片服务器。

s403、对于每个第三列族分片,构建与第三列族分片对应的子表插入语句。

s404、发送子表数据插入请求至第三列族分片服务器,以使得第三列族分片服务器对子表插入语句进行解析,确定第三列族分片服务器对应的第一行服务器并将子表数据插入请求发送至第一行服务器。

s405、获取插入结果,插入结果是第一行服务器接收并响应于子表数据插入请求,插入插入值后生成的。

具体的,客户端向服务器发送数据插入请求,该数据插入请求中携带有待处理数据,服务器通过接口层接收到数据插入请求后,对待处理语句进行解析,提取待插入列字段和插入值,然后接口层将该待插入列字段和插入值发送至列分片逻辑层,使得列分片逻辑层从全局表中获取该待插入列字段对应的所有第三列族分片和第三列族分片服务器,该第三列族分片可以是一个,也可以是多个,第三列族分片服务器为第三列族分片对应的服务器。

对于每个第三列族分片,构建与第三列族分片对应的子表插入语句,该子表插入语句可以是sql语句,该sql语句例如可以包括待插入表名、第三列族分片标识、插入值等,然后发送子表数据插入请求至列分片逻辑层中的每个对应的第三列族分片服务器,使得每个第三列族分片服务器对子表插入语句进行解析,根据生成的row-id字段计算该字段的哈希值并取余,从而确定第三列族分片服务器对应的第一行服务器,以进行行分片业务逻辑处理,第一行服务器接收并响应于子表数据插入请求,在行+列分片物理层上插入对应的插入值。

当各个子表数据的插入值插入完成后,返回到接口层的服务上,如果存在某个子表数据插入失败,则进行所有子表数据插入的回退操作;如果所有子表数据的插入值插入成功,则将插入成功的插入结果返回至应用层,从而完成数据插入流程。

作为一种可实现方式,当数据处理请求为数据更新请求时,图7为本申请实施例提供的数据处理方法的流程示意图。如图7所示,该方法包括:

s501、响应于数据更新请求,解析待处理语句,提取待更新列字段和更新值。

s502、从全局表中确定待更新列字段对应的全部第四列族分片和第四列族分片服务器。

s503、对于每个第四列族分片,构建与第四列族分片对应的数据查询语句。

s504、发送子表数据更新请求至第四列族分片服务器,以使得第四列族分片服务器对数据查询语句进行解析,确定第四列族分片服务器对应的第二行服务器并将子表数据更新请求发送至第二行服务器。

s505、获取更新结果,更新结果是第二行服务器接收并响应于子表数据更新请求,更新更新值后生成的。

具体的,客户端向服务器发送数据更新请求,该数据更新请求中携带有待处理数据,服务器通过接口层接收到数据更新请求后,对待处理语句进行解析,提取待更新列字段和更新值,然后接口层将该待更新列字段和更新值发送至列分片逻辑层,使得列分片逻辑层从全局表中获取该待更新列字段对应的所有第四列族分片和第四列族分片服务器,该第四列族分片可以是一个,也可以是多个,第四列族分片服务器为第四列族分片对应的服务器。

可以对待处理语句进行解析,获取得到数据查询条件对应的行数据的rowid数组,对于每个第四列族分片,构建与第四列族分片对应的数据查询语句,该数据查询语句可以是sql语句,该sql语句例如可以包括待更新的行数据的row-id数组,where条件为更新对应的row-id数组、第四列族分片标识等。然后发送子表数据更新请求至列分片逻辑层中的每个对应的第四列族分片服务器,使得每个第四列族分片服务器对子表更新语句进行解析,确定第四列族分片服务器对应的第二行服务器,可以根据数据查询条件中的row-id字段计算该字段的哈希值并取余,从而确定对应的第二行服务器,进行行分片业务逻辑处理。第二行服务器接收并响应于子表数据更新请求,在行+列分片物理层上进行子表数据的更新,从而更新对应的更新值。

当各个子表数据的更新值更新完成后,返回到接口层的服务上,如果存在某个子表数据更新失败,则进行所有子表数据更新的回退操作;如果所有子表数据的更新值更新成功,则将更新成功的更新结果返回至应用层,从而完成数据更新流程。

作为一种可实现方式,当数据处理请求为数据删除请求时,图8为本申请实施例提供的数据处理方法的流程示意图。如图8所示,该方法包括:

s601、响应于数据删除请求,解析待处理语句,确定待删除列字段和删除值。

s602、从全局表中确定待删除列字段对应的全部第五列族分片和第五列族分片服务器。

s603、对于第五列族分片,构建与第五列族分片对应的数据删除语句。

s604、发送子表数据删除请求至第五列族分片服务器,以使得第五列族分片服务器对数据删除语句进行解析,确定第五列族分片服务器对应的第三行服务器并将子表数据删除请求发送至第三行服务器。

s604、获取删除结果,删除结果是第三行服务器接收并响应于子表数据删除请求,删除子表数据。

具体的,客户端向服务器发送数据删除请求,该数据删除请求中携带有待处理数据,服务器通过接口层接收到数据删除请求后,对待处理语句进行解析,提取待删除列字段和删除值,然后接口层将该待删除列字段和删除值发送至列分片逻辑层,使得列分片逻辑层从全局表中获取该待删除列字段对应的所有第五列族分片和第五列族分片服务器,该第五列族分片可以是一个,也可以是多个,第五列族分片服务器为第五列族分片对应的服务器。

可以对待处理语句进行解析,获取得到数据查询条件对应的行数据的rowid数组,对于每个第五列族分片,构建与第五列族分片对应的数据删除语句,该数据删除语句可以是sql语句,该sql语句例如可以包括待删除的行数据的row-id数组,where条件为删除对应的row-id数组、第五列族分片标识等。然后发送子表数据删除请求至列分片逻辑层中的每个对应的第五列族分片服务器,使得每个第五列族分片服务器对子表删除语句进行解析,确定第五列族分片服务器对应的第三行服务器,可以根据数据查询条件中的row-id字段计算该字段的哈希值并取余,从而确定对应的第三行服务器,进行行分片业务逻辑处理。第三行服务器接收并响应于子表数据删除请求,在行+列分片物理层上进行子表数据的删除,从而删除对应的子表数据。

当各个子表数据的删除值删除完成后,返回到接口层的服务上,如果存在某个子表数据删除失败,则进行所有子表数据删除的回退操作;如果所有子表中的删除值删除成功,则将删除成功的删除结果返回至应用层,从而完成数据删除流程。

作为一种可实现方式,当数据处理请求为数据查询请求时,图9为本申请实施例提供的数据处理方法的流程示意图。如图9所示,该方法包括:

s701、响应于数据查询请求,解析待处理语句,提取待查询列字段和查询值。

s702、从全局表中确定待查询列字段对应的全部第六列族分片和第六列族分片服务器。

s703、对于第六列族分片,构建与第六列族分片对应的子查询语句。

s704、发送子表数据查询请求至第六列族分片对应的服务器,以使得第六列族分片服务器对子查询语句进行解析,确定第六列族分片服务器对应的第四行服务器并将子表数据查询请求发送至第四行服务器。

s705、接收查询结果,查询结果是第四行服务器接收并响应于子表数据查询请求,进行数据查询后得到的。

具体的,客户端向服务器发送数据查询请求,该数据查询请求中携带有待处理数据,服务器通过接口层接收到数据查询请求后,对待处理语句进行解析,提取待查询列字段和查询值,然后接口层将该待查询列字段和查询值发送至列分片逻辑层,使得列分片逻辑层从全局表中获取该待查询列字段对应的所有第六列族分片和第六列族分片服务器,该第六列族分片可以是一个,也可以是多个,第六列族分片服务器为第六列族分片对应的服务器。

可以对待处理语句进行解析,获取得到数据查询条件对应的行数据的rowid数组,对于每个第六列族分片,构建与第六列族分片对应的子查询语句,该子查询语句可以是sql语句,该sql语句例如可以包括待查询的行数据的row-id数组,where条件为查询对应的row-id数组、第六列族分片标识等。然后发送子表数据查询请求至列分片逻辑层中的每个对应的第六列族分片服务器,使得每个第六列族分片服务器对子表查询语句进行解析,确定第六列族分片服务器对应的第四行服务器,可以根据数据查询条件中的row-id字段计算该字段的哈希值并取余,从而确定对应的第四行服务器,进行行分片业务逻辑处理。第四行服务器接收并响应于子表数据查询请求,在行+列分片物理层上基于查询值进行子表数据的查询,从而查询到对应的子表数据。

当各个子表数据的查询值查询完成后,返回到接口层的服务上,如果存在某个子表数据查询失败,则进行所有子表数据查询的回退操作;如果所有子表中的查询值查询成功,则组装得到查询结果,并将查询成功的查询结果返回至应用层,从而完成数据查询流程。

本实施例中通过行分片规则和列分片规则对待处理数据进行创建表、删除表、数据插入、数据更新、数据删除和数据查询等处理操作,从而在保证了数据分散存储的同时,能够对不同数据库的数据进行行列分片的处理,增加了数据的非法获取成本,大大提高了数据库处理数据的安全性。

另一方面,图10为本申请实施例提供的数据处理装置的结构示意图。如图10所示,该装置包括:

接收模块410,用于接收客户端发送的数据处理请求,数据处理请求中携带有待处理数据;

处理模块420,用于响应于数据处理请求,基于预设的行分片规则和列分片规则对待处理数据进行处理生成处理结果;

发送模块430,用于将处理结果发送至客户端。

可选的,上述处理模块420,具体用于:

响应于表创建请求,从待处理数据中提取数据库表的列字段和数据库表中的列前缀;

基于列前缀,确定所有第一列族分片;

对于每个第一列族分片,构建与第一列族分片对应的子表创建语句;

发送子表创建请求至每个第一列族分片服务器,以使得每个第一列族分片服务器对子表创建语句进行解析,创建子表;

当所有子表创建成功时,将主表结构与子表的映射关系存储至全局表中。

可选的,上述处理模块420,具体用于:

响应于表删除请求,解析待处理语句,确定待删除表名;

从全局表中确定待删除表名对应的所有第二列族分片;

对于每个第二列族分片,构建与第二列族分片对应的子表删除语句;

发送子表删除请求至每个第二列族分片服务器,以使得第二列族分片服务器对子表删除语句进行解析,删除待删除表名对应的子表;

当所有子表删除成功时,将全局表中的主表结构与子表的映射记录删除。

可选的,上述处理模块420,具体用于:

响应于数据插入请求,解析待处理语句,提取待插入列字段和插入值;

从全局表中确定待插入列字段对应的所有第三列族分片和第三列族分片服务器;

对于每个第三列族分片,构建与第三列族分片对应的子表插入语句;

发送子表数据插入请求至第三列族分片服务器,以使得第三列族分片服务器对子表插入语句进行解析,确定第三列族分片服务器对应的第一行服务器并将子表数据插入请求发送至第一行服务器;

接收插入结果,插入结果是第一行服务器接收并响应于子表数据插入请求,插入插入值后生成的。

可选的,上述处理模块420,具体用于:

响应于数据更新请求,解析待处理语句,提取待更新列字段和更新值;

从全局表中确定待更新列字段对应的所有第四列族分片和第四列族分片服务器;

对于每个第四列族分片,构建与第四列族分片对应的数据查询语句;

发送子表数据更新请求至第四列族分片服务器,以使得第四列族分片服务器对数据查询语句进行解析,确定第四列族分片服务器对应的第二行服务器并将子表数据更新请求发送至第二行服务器;

接收更新结果,更新结果是第二行服务器接收并响应于子表数据更新请求,更新子表的更新值后生成的。

可选的,上述处理模块420,具体用于:

响应于数据删除请求,解析待处理语句,确定待删除列字段和删除值;

从全局表中确定待删除列字段对应的所有第五列族分片和第五列族分片服务器;

对于第五列族分片,构建与第五列族分片对应的数据删除语句;

发送子表数据删除请求至第五列族分片服务器,以使得第五列族分片服务器对数据删除语句进行解析,确定第五列族分片服务器对应的第三行服务器并将子表数据删除请求发送至第三行服务器;

接收删除结果,删除结果是第三行服务器接收并响应于子表数据删除请求,删除子表中的删除值后生成的。

可选的,上述处理模块420,具体用于:

响应于数据查询请求,解析待处理语句,提取待查询列字段和查询值;

从全局表中确定待查询列字段对应的所有第六列族分片和第六列族分片服务器;

对于第六列族分片,构建与第六列族分片对应的子查询语句;

发送子表数据查询请求至第六列族分片对应的服务器,以使得第六列族分片服务器对子查询语句进行解析,确定第六列族分片服务器对应的第四行服务器并将子表数据查询请求发送至第四行服务器;

接收查询结果,查询结果是第四行服务器接收并响应于子表数据查询请求,基于查询值进行数据查询后得到的。

本实施例提供的数据处理装置,可以执行上述方法的实施例,其实现原理和技术效果类似,在此不再赘述。

下面参考图11,其示出了适于用来实现本申请实施例的的计算机系统600的结构示意图,该计算机系统可以应用于服务器。

如图11所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分603加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本申请公开的数据处理方法的实施例,上文参考图6描述的过程可以被实现为计算机软件程序。例如,本申请公开的主控模块的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,该计算机程序包含用于执行图3-图8的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分605从网络上被下载和安装,和/或从可拆卸介质611被安装。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种计算机系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、处理模块及发送模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,接收模块还可以被描述为“用于接收客户端发送的数据处理请求,所述数据处理请求中携带有待处理数据”。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中前述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,前述程序被一个或者一个以上的处理器用来执行描述于本申请的数据处理方法,具体执行:

接收客户端发送的数据处理请求,所述数据处理请求中携带有待处理数据;

响应于所述数据处理请求,基于预设的行分片规则和列分片规则对所述待处理数据进行处理生成处理结果;

将所述处理结果发送至所述客户端。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。

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