CN109766330A - 数据分片方法、装置、电子设备及存储介质 - Google Patents
数据分片方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109766330A CN109766330A CN201811647919.4A CN201811647919A CN109766330A CN 109766330 A CN109766330 A CN 109766330A CN 201811647919 A CN201811647919 A CN 201811647919A CN 109766330 A CN109766330 A CN 109766330A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- manipulation
- strategy
- data processing
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据分片方法,属于计算机技术领域,用于解决现有技术中数据分片通用性较差的问题。本公开实施例中的数据分片方法,包括:面向切面编程技术拦截预设的数据库操作中的数据操作;将拦截到的所述数据操作映射到预设的数据处理模块;根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的。本公开实施例公开的数据分片方法,通过在应用层和底层数据分库或数据表之间基于面向切面技术对数据分片方法进行增强处理,通过配置模块导入数据分片策略,提升了数据分片方法的通用性。
Description
技术领域
本公开涉及计算机技术领域,特别是涉及一种数据分片方法、装置、电子设备及存储介质。
背景技术
大型互联网应用具有海量数据、大流量、高并发等特征,典型的“一主多从”数据库架构无法满足业务的高速发展。行之有效的方案是水平拆分数据库,建立“多主多从”的数据库架构,即数据分片。建立“多主多从”的数据库架构的过程中,对数据进行分片处理是必须的过程。数据分片处理涉及大量数据表、海量数据。现有技术中,常规的数据分片方案是:一段时间内对多台从数据服务器和主服务器实现上线双写;在上线双写验证没有数据错误后,进行历史数据迁移;在完成历史数据迁移之后,将数据读写等操作切换到从数据服务器或主服务器上的心数据库中;最后,进行冗余数据清理(例如,旧数据库回收)。现有技术中的数据分片方法采用的数据分片方式和策略对于不同的数据库分库和数据表是固定的,为了实现该数据分片方式和策略,对于每个数据库工程,需要对相应数据库操作的不同阶段的多处代码进行修改。
可见,现有技术中的数据分片方法至少存在通用性较差,开发效率低下的缺陷。
发明内容
本公开提供一种数据分片方法,有助于提升数据服务的通用性。
为了解决上述问题,第一方面,本公开实施例提供了一种数据分片方法,包括:
通过面向切面编程技术拦截预设的数据库操作中的数据操作;
将拦截到的所述数据操作映射到预设的数据处理模块;
根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的。
第二方面,本公开实施例提供了一种数据分片装置,包括:
数据操作拦截模块,用于通过面向切面编程技术拦截预设的数据库操作中的数据操作;
数据操作映射模块,用于将拦截到的所述数据操作映射到预设的数据处理模块;
数据处理执行模块,用于根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的。
第三方面,本公开实施例还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本公开实施例所述的数据分片方法。
第四方面,本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时本公开实施例公开的数据分片方法的步骤。
本公开实施例公开的数据分片方法,通过面向切面编程技术拦截预设的数据库操作中的数据操作;将拦截到的所述数据操作映射到预设的数据处理模块;根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的,解决了数据分片过程中数据分片方法通用性较差的问题。本公开实施例公开的数据分片方法,通过在应用层和底层数据分库或数据表之间基于面向切面技术对数据分片方法进行增强处理,通过配置模块导入数据分片策略,避免了当采用不同数据分片策略时需要对数据服务工程的多个阶段的多处代码进行修改,提升了数据分片方法的通用性,并提高了数据分片的效率。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例一的数据分片方法流程图;
图2是本公开实施例一的数据分片方法应用系统架构示意图;
图3是本公开实施例二的数据分片装置结构示意图之一;
图4是本公开实施例二的数据分片装置结构示意图之二。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
实施例一
本公开实施例中的一种数据分片方法,如图1所示,该方法包括:步骤110至步骤130。
步骤110,通过面向切面编程技术拦截预设的数据库操作中的数据操作。
Aspect Oriented Programming(AOP,面向切面编程),主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。具体实施时,可以通过使用一个动态代理类(Proxy),通过拦截某一对象的行为并添加我们需要的功能来实现隔离效果。本公开实施例中公开的数据分片方法以中间件或其他形式结合到现有技术中的基于数据服务的应用中。所述数据分片方法的应用架构如图2所示。
本公开将面向切面编程应用于数据服务分片方法中,实现上层基于数据服务的应用与底层数据库或数据表之间的隔离效果。例如,上层有方法分别对数据库/表里数据进行新增、修改、删除、查询等数据操作,本公开实施例中的数据分片方法通过基于面向切面编程技术,通过动态代理类拦截上述数据操作类,并在该动态代理类中对拦截的方法进行前置增强处理和/或后置增强处理,从而实现新的数据处理策略。
在本公开的一些实施例中,所述通过面向切面编程技术拦截预设的数据库操作中的数据操作的步骤,包括:通过预设的配置模块获取预先定义的切面的切入点,其中,所述切入点包括:数据读操作和数据写操作相关的数据操作,和/或,针对预设地址的数据操作;通过面向切面编程技术对所述切入点进行拦截。因此,本公开的一些实施例中,需要预先设置配置模块,如图2中的210,所述配置模块210用于获取和存储数据分片过程中各个数据处理阶段的数据处理策略,例如:拦截策略、读策略、写策略、灰度策略、数据迁移策略、数据验证策略等。数据处理策略的种类以及各种数据处理策略的具体内容根据数据分片需求确定。在本公开的一些实施例中,所述配置模块可以采用变量、表达式或数据文件等形式存储各种数据处理策略。
在本公开的一些实施例中,可以在配置模块配置需要拦截的方法,并在上述动态代理类中动态获取需要拦截的方法并进行拦截,也可以在该动态代理类中预先定义需要拦截的方法。在本公开的一些实施例中,拦截预设的数据库操作中的数据操作可以为某一类数据操作,也可以为对某一数据库或数据分库或数据表的数据操作,甚至可以为对数据库中某一段数据的数据操作。
在本公开的一些实施例中,可以通过数据操作方法类的名称对预设的数据操作进行拦截。优选的,可以通过数据操作方法类的注解对预设的数据操作进行拦截。
步骤120,将拦截到的所述数据操作映射到预设的数据处理模块。
本公开具体实施时,还需要预先设置与拦截的数据操作对应的数据处理模块,如图2中的220至250。例如,当拦截的数据操作包括数据读操作类型的方法时,则需要预先设置与数据读操作类型的方法对应的读数据处理模块220;当拦截的数据操作包括数据写操作类型(如新增操作、更新操作、删除操作)时,则需要预先设置与数据写操作类型的方法对应的写数据处理模块230。在本公开的另一些实施例中,还可以根据数据服务的需求预先设置其他数据库操作相关的数据处理模块,例如数据迁移模块240、数据校验模块250等。
在本公开的一些实施例中,所述将拦截到的所述数据操作映射到预设的数据处理模块的步骤,包括:根据拦截到的所述数据操作的数据操作类型,将拦截到的所述数据操作映射到预设的与所述数据操作类型匹配的数据处理模块;其中,所述数据操作类型包括:数据读操作、数据写操作,所述预设的数据处理模块包括:实现与所述数据读操作对应的数据处理逻辑的数据处理模块、实现与所述数据写操作对应的数据处理逻辑的数据处理模块。
例如,首先对于拦截到的所述数据操作,根据该数据操作到的方法的注解或方法名称确定所述数据操作的数据操作类型。进一步的,根据数据操作类型选择相应的数据处理模块进行前置增强处理和/或后置增强处理。
在本公开的一些实施例中,所述根据拦截到的所述数据操作的数据操作类型,将拦截到的所述数据操作映射到预设的与所述数据操作类型匹配的数据处理模块的步骤,包括:当拦截到的所述数据操作的数据操作类型为数据写操作时,将拦截到的所述数据操作映射到预设的与所述数据写操作匹配的数据处理模块。例如,当前述确定该拦截到的所述数据操作的数据操作类型为数据写操作,则将拦截到的数据操作映射到写数据处理模块,由写数据处理模块根据预设的数据处理逻辑进行前置增强处理(如设置数据写操作方法针对的数据库或数据表),之后,继续调用该数据写操作对应的方法执行数据写操作。
在本公开的一些实施例中,所述根据拦截到的所述数据操作的数据操作类型,将拦截到的所述数据操作映射到预设的与所述数据操作类型匹配的数据处理模块的步骤,包括:当拦截到的所述数据操作的数据操作类型为数据读操作时,将拦截到的所述数据操作映射到预设的与所述数据读操作匹配的数据处理模块。例如,当前述确定该拦截到的所述数据操作的数据操作类型读数据写操作,则将拦截到的数据操作映射到读数据处理模块,由读数据处理模块根据预设的数据处理逻辑进行前置增强处理(如设置数据读操作方法针对的数据库或数据表),之后,继续调用该数据读操作对应的方法执行数据读操作。
步骤130,根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作。
其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的。
在根据拦截的数据操作的数据操作类型确定了相应的数据处理模块之后,进一步由该数据处理模型根据预设的数据处理逻辑,结合配置模块中相应的数据处理策略,进行前置增强处理。在本公开的一些实施例中,配置模块预置的数据处理策略包括但不限于以下任意一种或多种:读策略、写策略、数据校验策略、数据迁移策略、灰度策略、补偿策略等。上述数据数据处理策略可以通过变量、表达式或数据文件等形式存储,也可以以其他程序可读的形式存储。
在本公开的一些实施例中,所述数据处理策略通过配置模块配置并存储,所述数据处理模块以注册通知的形式获取所述数据处理策略。例如,根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作的步骤之前,还包括:获取所述配置模块在所述数据处理策略变更后发送的变更通知;响应于所述变更通知,实时从所述配置模块获取变更后的数据处理策略并缓存在数据服务本地;其中,所述配置模块用于展示配置接口,并在用户通过所述配置接口更新所述数据处理策略时,向注册监听所述数据处理策略的所述数据服务发送的变更通知。
首先,数据服务通过配置模块配置注册在数据分片过程中各节点的数据处理模块需要监听的配置信息,数据处理策略相关信息;之后,在数据服务过程中,当所述配置模块存储的数据处理策略发生变化时(如新增了数据处理策略、修改了数据处理策略等),所述配置模块会根据前述注册信息通知注册监听该数据处理策略的数据服务,获取更新后的数据处理策略,可以实现动态配置,且配置实时生效。
在本公开的一些实施例中,所述与所述数据处理模块匹配的数据处理策略为:从所述数据服务所在终端缓存的数据处理策略中获取与所述数据处理模块匹配的数据处理策略。即,当确定的数据处理模块需要获取数据处理策略时,该数据处理模块从本地(如该数据处理模块所在终端)的缓存中获取相应的数据处理策略,不仅可以提升数据获取效率,还可以避免远程获取数据受网络因素影响而导致的不稳定问题。
在本公开的一些实施例中,所述数据处理策略包括:写策略、读策略、灰度策略、数据迁移策略和数据校验策略中的任意一种或多种,不同的数据处理策略用于指示相应数据处理步骤进行数据处理。
在数据分片的不同阶段获取的数据处理策略有所不同。具体需要获取哪种数据处理策略由不同的数据处理模块确定。
在数据分片的不同阶段截取的数据操作不同,映射到的数据处理模块也有所不同,获取的数据处理策略相应不同。不同的数据处理模块在获取到相应的数据处理策略后,进一步根据所述数据处理策略执行相应的数据处理操作。本公开的一些实施例中的数据分片方法至少包括以下五个阶段:数据库双写阶段、数据迁移阶段、数据校验阶段、读新库阶段、依赖迁移阶段和回收资源阶段,每个阶段对应相应的步骤。其中,数据库双写步骤,用于当确定目标数据源为第二数据库和第一数据库时,对所述第二数据库和第一数据库同步进行与所述数据写操作对应的数据操作;数据迁移步骤,用于根据接收到的启动数据迁移的指令获取数据迁移策略,其中,所述数据迁移策略包括加锁的数据段信息;以及,根据所述数据迁移策略执行从第一数据库到第二数据库的分段加锁数据迁移;数据校验步骤,用于在执行从第一数据库到第二数据库的数据迁移结束之后,根据获取的数据校验策略执行以下操作:以所述第一数据库中的数据为标准对所述第二数据库中的数据进行校验,以及,以所述第二数据库中的数据为标准对所述第一数据库中的数据进行校验;读新库步骤,用于对第二数据库执行与所述数据读操作对应的数据操作;依赖迁移步骤,用于对依赖所述第一数据库的系统执行从第一数据库到第二数据库的数据迁移;回收资源步骤,用于根据接收到的回收资源的指令,通过所述配置模块断开与第一数据库的访问链接。
其中,所述数据库双写步骤、读新库步骤响应于通过面向切面编程技术拦截的所述数据操作而执行;数据迁移步骤、数据校验步骤、读新库步骤、依赖迁移步骤和回收资源步骤根据通过所述配置模块获取的相应指令而执行;或者,当前一阶段的数据处理结果满足一定条件时而执行。例如,当用户通过配置模块输入启动数据迁移指令后,数据服务开始执行数据迁移步骤。再例如,数据服务再判断数据库双写步骤的执行结果全部成功后,开始执行数据迁移。数据迁移步骤、数据校验步骤、读新库步骤、依赖迁移步骤和回收资源步骤通过相应的数据处理模块执行,例如,由相应的数据处理模块从数据服务本地获取相应指令后开始执行。
在本公开的一些实施例中,在数据库双写阶段阶段,通过面向切面编程技术会拦截到的数据操作的数据操作类型为数据写操作,此时,映射到的数据处理模块为写数据处理模块,所述写数据处理模块获取的数据处理策略为写策略,所述根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作的步骤,包括:根据写策略确定目标数据源;对所述目标数据源进行与所述数据写操作对应的数据操作。
所述写策略用于指示数据写操作针对的目标数据源。在将数据由第一数据库转移到或分片至第二数据库的数据分片的不同阶段,所述写策略被配置为不同的策略内容。例如,在数据操作初期或数据分片过程中写第二数据库成功率低于预设值或数据迁移失败后,写策略被配置为写第一数据库;在数据分片过程中,写策略被配置为同步写第一数据库和第二数据库;在写第二数据库成功率满足预设条件时或数据迁移成功之后,写策略被配置为写第二数据库。配置模块中的写策略动态变化,写数据处理模块实时获取写策略,并确定目标数据源。具体实施时,根据实时获取的写策略确定的目标数据源可以为以下任意一种情况:第一数据库、第一数据库和第二数据库、第二数据库。之后,写数据处理模块根据写策略对第一数据库执行数据写操作,或者,同步对第一数据库和第二数据库执行数据写操作,或者,对第二数据库执行数据写操作。
本公开一些实施例中,为了保证第一数据库和第二数据库增量数据一致,采用同步写第一数据库和第二数据库的方法。即,如果写第一数据库失败则返回失败,仅写第二数据库失败则不影响最终返回结果,但可利用自定义补偿接口,结合补偿策略对对失败数据进行补偿处理。
在本公开的另一些实施例中,与所述写数据处理模块匹配的数据处理策略还包括:灰度策略,所述灰度策略用于指示:若确定的目标数据源为第二数据库和第一数据库,则按照所述灰度策略对所述第二数据库和第一数据库同步进行与所述数据写操作对应的数据操作。其中,灰度策略可以为按流量进行灰度、按地区进行灰度等灰度策略。例如,灰度策略可以为80%流量写第一数据库,20%流量写第二数据库。具体实施时,写数据处理模块按照所述灰度策略对所述第二数据库和第一数据库同步进行数据写操作。
在本公开的再一些实施例中,在读新库阶段阶段,拦截到的数据操作的数据操作类型为数据读操作,此时,映射到的数据处理模块为读数据处理模块,所述读数据处理模块获取的数据处理策略为读策略,所述根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作的步骤,包括:根据读策略确定目标数据源;对所述目标数据源进行与所述数据读操作对应的数据操作。
所述读策略用于指示数据读操作针对的目标数据源。在将数据由第一数据库转移到或分片至第二数据库的数据分片的不同阶段,所述读策略被配置为不同的策略内容。例如,在数据操作初期,读策略被配置为读第一数据库;在数据校验成功之后,读策略被配置为读第二数据库。配置模块中的读策略动态变化,读数据处理模块实时获取读策略,并确定目标数据源。具体实施时,根据实时获取的读策略确定的目标数据源可以为以下任意一种情况:第一数据库、第二数据库。之后,读数据处理模块根据写策略对第一数据库执行数据读操作,或者,对第二数据库执行数据读操作。
数据校验成功说明第一数据库和第二数据库中的数据已经完全一致,可把读流量切到第二数据库。在本公开的一些实施例中,与所述读数据处理模块匹配的数据处理策略还包括:灰度策略,所述灰度策略用于指示:若确定的目标数据源为第二数据库,则按照所述灰度策略对所述第二数据库进行与所述数据读操作对应的数据操作。在全量切读流量之前,本公开实施例公开的数据分片方法还包括根据所述灰度策略对第二数据库的读操作进行灰度,如果灰度结果满足预设需求,则可全量切读至第二数据库。
在数据分片过程中,当根据新数据库(即第二数据库)的读写记录确定第二数据库的稳定性已经满足切库要求,则会通过配置模块或其他入口发送启动数据迁移的指令。在本公开的又一些实施例中,所述数据处理策略还包括:数据迁移策略,所述数据迁移策略包括加锁的数据段信息,所述数据迁移策略用于指示根据所述数据迁移策略执行从第一数据库到第二数据库的分段加锁数据迁移。所述数据迁移策略包括加锁的数据段信息,所述数据分片方法还包括:根据接收到的启动数据迁移的指令,根据所述数据迁移策略执行从第一数据库到第二数据库的分段加锁数据迁移。其中,第一数据库为原有老数据库。本公开具体实施时,为了保证第一数据库和第二数据库中存储的数据的一致性,采用分段加锁的机制进行数据迁移。在数据迁移过程中通过分段加锁阻塞同一段数据写操作,但是不影响读操作。具体实施时,通过配置模块获取数据迁移策略,其中,所述数据迁移策略包括数据库分段信息,以及,各数据段的加锁信息。数据库分段的大小可以通过配置模块动态调整。
在本公开的一些实施例中,所述数据处理策略还包括:数据校验策略。所述数据分片方法还包括:在执行从第一数据库到第二数据库的数据迁移结束之后,根据所述数据校验策略执行以下操作:以所述第一数据库中的数据为标准对所述第二数据库中的数据进行校验,以及,以所述第二数据库中的数据为标准对所述第一数据库中的数据进行校验。在完成数据迁移之后,通过对第一数据库和第二数据库进行正向和逆向校验,可以进一步提升数据分片的稳定性。通过对第一数据库和第二数据库进行校验,及时发现不一致的数据,便于及时修复。
具体实施时,通过配置模块实时更新数据服务本地存储的数据校验策略。其中,数据校验策略可以包括校验的数据的速率、线程数等信息。然后,以第一数据库为标准,校验第二数据库,对于第二数据库中与第一数据库不一致的数据,采用第一数据库中相应的数据进行替换;接下来,以第二数据库为标准校验第一数据库,为防止在以第一数据库校验第二数据库的过程中,第一数据库数据加载到内存后,其他线程对第一数据库做删除操作导致第一数据库缺少数据而第二数据库多数据的情况,需要对第二数据库中的这部分数据进行删除操作。在本公开的具体实施过程中,通过配置模块可以灵活配置并修改数据校验策略,并通过注册通知机制使修改的数据校验策略实时生效,以不影响正常数据服务业务。
在本公开的一些实施例中,所述以所述第二数据库中的数据为标准对所述第一数据库中的数据进行校验之后,所述数据分片方法还包括:对依赖所述第一数据库的系统执行从第一数据库到第二数据库的数据迁移。在将第一数据库中的数据全量迁移至第二数据库中,并完成数据校验之后,对于依赖第一数据库中数据的上下游系统,如:数据传输系统、数据查询系统等,同样需要将上述系统中的依赖关系迁移至第二数据库。具体实施时,可以通过修改配置模块中的信息,实现对依赖所述第一数据库的系统从第一数据库到第二数据库的数据迁移。
在本公开的一些实施例中,所述根据所述数据迁移策略执行从第一数据库到第二数据库的数据迁移的步骤之后,还包括:根据接收到的回收资源的指令,通过所述配置模块断开与第一数据库的访问链接。在完成第一数据库到第二数据库的全量数据迁移之后,如果确认读第二数据库无误,则可通过配置模块将写策略配置为单写第二数据库,通过此方法停止写第一数据库。然后,在确认第二数据库无读写流量后则可通过配置模块修改相应数据处理策略即其他配置信息,以断开应用于第一数据库的访问链接,实现回收第一数据库的资源。
在本公开的另一些实施例中,还可以确定读第二数据库没有错误之后,再对依赖所述第一数据库的系统执行从第一数据库到第二数据库的数据迁移。
本公开实施例公开的数据分片方法,通过面向切面编程技术拦截预设的数据库操作中的数据操作;将拦截到的所述数据操作映射到预设的数据处理模块;根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的,解决了数据分片过程中数据分片方法通用性较差的问题。本公开实施例公开的数据分片方法,通过在应用层和底层数据分库或数据表之间基于面向切面技术对数据分片方法进行增强处理,通过配置模块导入数据分片策略,避免了当采用不同数据分片策略时需要对数据服务工程的多个阶段的多处代码进行修改,提升了数据分片方法的通用性,并提高了数据分片的效率。
当上层应用有多个方法分别对数据库/数据表里数据进行新增、修改、删除、查询操作时,先有技术中的数据分片方法需要对上述四个方法(即新增、修改、删除、查询操作方法)分别做修改,确定其访问第二数据库还是第二数据库。而通过本公开提供的数据分片方法,只需要对不同的数据操作的数据处理策略进行配置,指定访问的数据库,并通过面向切面编程技术拦截上层应用对上述方法的调用,然后,通过执行前置增强代码实现预设的数据处理逻辑,获取访问的数据信息,并进一步完成上述数据操作,不需要针对每一个数据操作进行修改,适用于数据分片的不同阶段的各种数据操作,具有很强的通用性。
另外,本公开实施例中公开的数据分片方法中,可以将拦截代码、数据处理模块以jar(一种文件格式)包或SDK等标准类库嵌入基于数据服务的应用中,并单独设置配置模块,以将该数据分片方法嵌入到现有技术中的数据服务工程中。所述配置模块为所述数据服务的配置中心,用于配置切入点、数据处理策略等。通过将数据处理方法封装为SDK标准类库,可以被任一数据服务工程引用,仅需做配置修改即可,进一步实现了不同工程之间的通用性。
实施例二
本实施例公开的一种数据分片装置,如图3所示,所述装置包括:
数据操作拦截模块310,用于通过面向切面编程技术拦截预设的数据库操作中的数据操作;
数据操作映射模块320,用于将拦截到的所述数据操作映射到预设的数据处理模块;
数据处理执行模块330,用于根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的。
在本公开的一些实施例中,所述数据操作拦截模块310,进一步用于:通过预设的配置模块获取预先定义的切面的切入点,其中,所述切入点包括:数据读操作和数据写操作相关的数据操作,和/或,针对预设地址的数据操作;
通过面向切面编程技术对所述切入点进行拦截。
在本公开的一些实施例中,所述数据操作映射模块320,进一步用于:
根据拦截到的所述数据操作的数据操作类型,将拦截到的所述数据操作映射到预设的与所述数据操作类型匹配的数据处理模块;其中,所述数据操作类型包括:数据读操作、数据写操作,所述预设的数据处理模块包括:实现与所述数据读操作对应的数据处理逻辑的数据处理模块、实现与所述数据写操作对应的数据处理逻辑的数据处理模块。
在本公开的一些实施例中,所述数据处理策略包括:写策略、读策略、灰度策略、数据迁移策略和数据校验策略中的任意一种或多种,其中,
所述写策略用于指示数据写操作针对的目标数据源;
所述读策略用于指示数据读操作针对的目标数据源;
所述灰度策略用于指示:若确定的目标数据源为第二数据库和第一数据库,则按照所述灰度策略对所述第二数据库和第一数据库同步进行与所述数据写操作对应的数据操作;以及,若确定的目标数据源为第二数据库,则按照所述灰度策略对所述第二数据库进行与所述数据读操作对应的数据操作;
所述数据迁移策略包括加锁的数据段信息,所述数据迁移策略用于指示根据所述数据迁移策略执行从第一数据库到第二数据库的分段加锁数据迁移;
所述数据校验策略用于指示:以所述第一数据库中的数据为标准对所述第二数据库中的数据进行校验,以及,以所述第二数据库中的数据为标准对所述第一数据库中的数据进行校验。
在本公开的一些实施例中,如图4所示,所述装置还包括:
配置更新模块340,用于获取所述配置模块在所述数据处理策略变更后发送的变更通知;以及,
响应于所述变更通知,实时从所述配置模块获取变更后的数据处理策略并缓存在数据服务本地;
其中,所述配置模块用于展示配置接口,并在用户通过所述配置接口更新所述数据处理策略时,向注册监听所述数据处理策略的所述数据服务发送的变更通知。
在数据分片的不同阶段获取的数据处理策略有所不同。具体需要获取哪种数据处理策略由不同的数据处理模块确定。
在数据分片的不同阶段截取的数据操作不同,映射到的数据处理模块也有所不同,获取的数据处理策略相应不同。不同的数据处理模块在获取到相应的数据处理策略后,进一步根据所述数据处理策略执行相应的数据处理操作。本公开的一些实施例中的数据分片方法至少包括以下五个阶段:数据库双写阶段、数据迁移阶段、数据校验阶段、读新库阶段、依赖迁移阶段和回收资源阶段,每个阶段对应相应的步骤。
在本公开的一些实施例中,数据分片的不同阶段对应的步骤的作用如下:
数据库双写步骤,用于当确定目标数据源为第二数据库和第一数据库时,对所述第二数据库和第一数据库同步进行与所述数据写操作对应的数据操作;
数据迁移步骤,用于根据接收到的启动数据迁移的指令获取数据迁移策略,其中,所述数据迁移策略包括加锁的数据段信息;以及,根据所述数据迁移策略执行从第一数据库到第二数据库的分段加锁数据迁移;
数据校验步骤,用于在执行从第一数据库到第二数据库的数据迁移结束之后,根据获取的数据校验策略执行以下操作:以所述第一数据库中的数据为标准对所述第二数据库中的数据进行校验,以及,以所述第二数据库中的数据为标准对所述第一数据库中的数据进行校验;
读新库步骤,用于对第二数据库执行与所述数据读操作对应的数据操作;
依赖迁移步骤,用于对依赖所述第一数据库的系统执行从第一数据库到第二数据库的数据迁移;
回收资源步骤,用于根据接收到的回收资源的指令,通过所述配置模块断开与第一数据库的访问链接。
其中,所述数据库双写步骤、读新库步骤响应于通过面向切面编程技术拦截的所述数据操作而执行。
本公开实施例提供的数据分片装置,用于实现本公开实施例一中所述的数据分片方法的各步骤,装置的各模块的具体实施方式参见相应步骤,此处不再赘述。
本公开实施例公开的数据分片装置,通过面向切面编程技术拦截预设的数据库操作中的数据操作;将拦截到的所述数据操作映射到预设的数据处理模块;根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的,解决了数据分片过程中数据分片通用性较差的问题。本公开实施例公开的数据分片装置,通过在应用层和底层数据分库或数据表之间基于面向切面技术对数据分片过程进行增强处理,通过配置模块导入数据分片策略,避免了当采用不同数据分片策略时需要对数据服务工程的多个阶段的多处代码进行修改,提升了数据分片方法的通用性,并提高了数据分片的效率。
相应的,本公开还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本公开实施例一所述的数据分片方法。所述电子设备可以为PC机、移动终端、个人数字助理、平板电脑等。
本公开还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开实施例一所述的数据分片方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本公开提供的一种数据分片方法及装置进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
Claims (10)
1.一种数据分片方法,其特征在于,包括:
通过面向切面编程技术拦截预设的数据库操作中的数据操作;
将拦截到的所述数据操作映射到预设的数据处理模块;
根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的。
2.根据权利要求1所述的方法,其特征在于,所述通过面向切面编程技术拦截预设的数据库操作中的数据操作的步骤,包括:
通过预设的配置模块获取预先定义的切面的切入点,其中,所述切入点包括:数据读操作和数据写操作相关的数据操作,和/或,针对预设地址的数据操作;
通过面向切面编程技术对所述切入点进行拦截。
3.根据权利要求1所述的方法,其特征在于,所述将拦截到的所述数据操作映射到预设的数据处理模块的步骤,包括:
根据拦截到的所述数据操作的数据操作类型,将拦截到的所述数据操作映射到预设的与所述数据操作类型匹配的数据处理模块;其中,所述数据操作类型包括:数据读操作、数据写操作,所述预设的数据处理模块包括:实现与所述数据读操作对应的数据处理逻辑的数据处理模块、实现与所述数据写操作对应的数据处理逻辑的数据处理模块。
4.根据权利要求3所述的方法,其特征在于,所述数据处理策略包括:写策略、读策略、灰度策略、数据迁移策略和数据校验策略中的任意一种或多种,其中,
所述写策略用于指示数据写操作针对的目标数据源;
所述读策略用于指示数据读操作针对的目标数据源;
所述灰度策略用于指示:若确定的目标数据源为第二数据库和第一数据库,则按照所述灰度策略对所述第二数据库和第一数据库同步进行与所述数据写操作对应的数据操作;以及,若确定的目标数据源为第二数据库,则按照所述灰度策略对所述第二数据库进行与所述数据读操作对应的数据操作;
所述数据迁移策略包括加锁的数据段信息,所述数据迁移策略用于指示根据所述数据迁移策略执行从第一数据库到第二数据库的分段加锁数据迁移;
所述数据校验策略用于指示:以所述第一数据库中的数据为标准对所述第二数据库中的数据进行校验,以及,以所述第二数据库中的数据为标准对所述第一数据库中的数据进行校验。
5.根据权利要求1至4任一项所述的方法,其特征在于,还包括:
获取所述配置模块在所述数据处理策略变更后发送的变更通知;
响应于所述变更通知,实时从所述配置模块获取变更后的数据处理策略并缓存在数据服务本地;
其中,所述配置模块用于展示配置接口,并在用户通过所述配置接口更新所述数据处理策略时,向注册监听所述数据处理策略的所述数据服务发送的变更通知。
6.根据权利要求1所述的方法,其特征在于,所述方法包括:
数据库双写步骤,用于当确定目标数据源为第二数据库和第一数据库时,对所述第二数据库和第一数据库同步进行与所述数据写操作对应的数据操作;
数据迁移步骤,用于根据接收到的启动数据迁移的指令获取数据迁移策略,其中,所述数据迁移策略包括加锁的数据段信息;以及,根据所述数据迁移策略执行从第一数据库到第二数据库的分段加锁数据迁移;
数据校验步骤,用于在执行从第一数据库到第二数据库的数据迁移结束之后,根据获取的数据校验策略执行以下操作:以所述第一数据库中的数据为标准对所述第二数据库中的数据进行校验,以及,以所述第二数据库中的数据为标准对所述第一数据库中的数据进行校验;
读新库步骤,用于对第二数据库执行与所述数据读操作对应的数据操作;
依赖迁移步骤,用于对依赖所述第一数据库的系统执行从第一数据库到第二数据库的数据迁移;
回收资源步骤,用于根据接收到的回收资源的指令,通过所述配置模块断开与第一数据库的访问链接。
7.根据权利要求6所述的方法,其特征在于,所述数据库双写步骤、读新库步骤响应于通过面向切面编程技术拦截的所述数据操作而执行。
8.一种数据分片装置,其特征在于,包括:
数据操作拦截模块,用于通过面向切面编程技术拦截预设的数据库操作中的数据操作;
数据操作映射模块,用于将拦截到的所述数据操作映射到预设的数据处理模块;
数据处理执行模块,用于根据与所述数据处理模块匹配的数据处理策略确定目标数据源,并对所述目标数据源进行与拦截到的所述数据操作对应的数据操作,其中,所述数据处理策略为由数据服务预先从配置模块获取进行本地缓存的。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任意一项所述的数据分片方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至7任意一项所述的数据分片方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811647919.4A CN109766330B (zh) | 2018-12-29 | 2018-12-29 | 数据分片方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811647919.4A CN109766330B (zh) | 2018-12-29 | 2018-12-29 | 数据分片方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766330A true CN109766330A (zh) | 2019-05-17 |
CN109766330B CN109766330B (zh) | 2020-02-14 |
Family
ID=66452381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811647919.4A Active CN109766330B (zh) | 2018-12-29 | 2018-12-29 | 数据分片方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766330B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688662A (zh) * | 2019-09-16 | 2020-01-14 | 威富通科技有限公司 | 一种敏感数据脱敏及逆脱敏方法、电子设备 |
CN112487097A (zh) * | 2020-12-11 | 2021-03-12 | 杭州安恒信息技术股份有限公司 | 一种分布式领域数据同步的方法、系统及设备 |
CN113032468A (zh) * | 2019-12-09 | 2021-06-25 | 浙江大搜车软件技术有限公司 | 数据写入方法、装置和计算机可读存储介质 |
CN113467692A (zh) * | 2021-06-30 | 2021-10-01 | 北京百度网讯科技有限公司 | 信息拦截方法、装置、设备、介质及程序产品 |
CN113992754A (zh) * | 2021-10-25 | 2022-01-28 | 北京恒安嘉新安全技术有限公司 | 深度报文检测设备的策略更新方法、装置、设备和介质 |
CN114840393A (zh) * | 2022-06-29 | 2022-08-02 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
EP4061032A4 (en) * | 2019-12-10 | 2023-01-18 | Huawei Technologies Co., Ltd. | DATA PROCESSING METHOD, DEVICE AND SYSTEM |
CN115878666A (zh) * | 2022-10-31 | 2023-03-31 | 四川川大智胜系统集成有限公司 | 一种缓存依赖关系的管理方法、系统、电子设备及介质 |
RU2824187C1 (ru) * | 2019-12-10 | 2024-08-06 | Хуавэй Текнолоджиз Ко., Лтд. | Способ обработки данных, устройство и система |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060156418A1 (en) * | 2005-01-10 | 2006-07-13 | Ibm Corporation | Method and apparatus for preventing unauthorized access to data |
CN105631028A (zh) * | 2015-12-30 | 2016-06-01 | 中国农业银行股份有限公司 | 一种数据库集群功能实现方法和系统 |
CN106503007A (zh) * | 2015-09-08 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
CN107943870A (zh) * | 2017-11-10 | 2018-04-20 | 顺丰科技有限公司 | 用于提高分布式数据库中间件稳定性的方法及其设备 |
CN108897806A (zh) * | 2018-06-15 | 2018-11-27 | 东软集团股份有限公司 | 数据一致性比对方法、装置、存储介质及电子设备 |
-
2018
- 2018-12-29 CN CN201811647919.4A patent/CN109766330B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060156418A1 (en) * | 2005-01-10 | 2006-07-13 | Ibm Corporation | Method and apparatus for preventing unauthorized access to data |
CN106503007A (zh) * | 2015-09-08 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
CN105631028A (zh) * | 2015-12-30 | 2016-06-01 | 中国农业银行股份有限公司 | 一种数据库集群功能实现方法和系统 |
CN107943870A (zh) * | 2017-11-10 | 2018-04-20 | 顺丰科技有限公司 | 用于提高分布式数据库中间件稳定性的方法及其设备 |
CN108897806A (zh) * | 2018-06-15 | 2018-11-27 | 东软集团股份有限公司 | 数据一致性比对方法、装置、存储介质及电子设备 |
Non-Patent Citations (2)
Title |
---|
薛皓: "《基于分布式数据库中间件的混合类型数据管理研究》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
赵濛: "《基于日志和Gpfdist的缺陷自动定位系统的设计与实现》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688662A (zh) * | 2019-09-16 | 2020-01-14 | 威富通科技有限公司 | 一种敏感数据脱敏及逆脱敏方法、电子设备 |
CN113032468A (zh) * | 2019-12-09 | 2021-06-25 | 浙江大搜车软件技术有限公司 | 数据写入方法、装置和计算机可读存储介质 |
RU2824187C1 (ru) * | 2019-12-10 | 2024-08-06 | Хуавэй Текнолоджиз Ко., Лтд. | Способ обработки данных, устройство и система |
EP4061032A4 (en) * | 2019-12-10 | 2023-01-18 | Huawei Technologies Co., Ltd. | DATA PROCESSING METHOD, DEVICE AND SYSTEM |
CN112487097A (zh) * | 2020-12-11 | 2021-03-12 | 杭州安恒信息技术股份有限公司 | 一种分布式领域数据同步的方法、系统及设备 |
CN113467692A (zh) * | 2021-06-30 | 2021-10-01 | 北京百度网讯科技有限公司 | 信息拦截方法、装置、设备、介质及程序产品 |
CN113467692B (zh) * | 2021-06-30 | 2024-01-12 | 北京百度网讯科技有限公司 | 信息拦截方法、装置、设备、介质及程序产品 |
CN113992754B (zh) * | 2021-10-25 | 2023-12-22 | 北京恒安嘉新安全技术有限公司 | 深度报文检测设备的策略更新方法、装置、设备和介质 |
CN113992754A (zh) * | 2021-10-25 | 2022-01-28 | 北京恒安嘉新安全技术有限公司 | 深度报文检测设备的策略更新方法、装置、设备和介质 |
CN114840393B (zh) * | 2022-06-29 | 2022-09-30 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
CN114840393A (zh) * | 2022-06-29 | 2022-08-02 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
CN115878666B (zh) * | 2022-10-31 | 2023-09-12 | 四川川大智胜系统集成有限公司 | 一种缓存依赖关系的管理方法、系统、电子设备及介质 |
CN115878666A (zh) * | 2022-10-31 | 2023-03-31 | 四川川大智胜系统集成有限公司 | 一种缓存依赖关系的管理方法、系统、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109766330B (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766330A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
US10558642B2 (en) | Mechanism for deprecating object oriented data | |
CN108932282B (zh) | 一种数据库迁移方法、装置和存储介质 | |
WO2018014650A1 (zh) | 分布式数据库数据同步方法、相关装置及系统 | |
CN108804306B (zh) | 用于自动测试系统的方法和系统 | |
US8949831B2 (en) | Dynamic virtual machine domain configuration and virtual machine relocation management | |
CN103842969B (zh) | 信息处理系统 | |
US7895156B2 (en) | Method, system, and computer program product for implementing a model exchange framework generating a synchronization record in response to a model exchange request using fusion technology | |
US10116735B2 (en) | Service migration across cluster boundaries | |
JP2023546249A (ja) | トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
CN107885612A (zh) | 数据处理方法和系统及装置 | |
CN103942281B (zh) | 一种对持久化存储的对象进行操作的方法及装置 | |
WO2012045245A1 (zh) | 一种保持数据一致性的方法及系统 | |
CN110019469A (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
WO2012051845A1 (zh) | 一种数据迁移的方法及系统 | |
US20070106683A1 (en) | Distributed database | |
US11307922B2 (en) | Application crash analysis techniques when memory dump and debug symbols are not co-located | |
CN110113188A (zh) | 跨子域通信运维方法、总运维服务器和介质 | |
CN108011846A (zh) | 网络功能虚拟化架构中管理业务的方法及装置 | |
CN109977170A (zh) | 一种政务内外网数据同步的方法及系统 | |
CN106557347A (zh) | 软件更新方法及装置 | |
CN108897868A (zh) | 基于触发器的缓存同步方法及装置、计算设备及存储介质 | |
CN106021566A (zh) | 一种提高单台数据库并发处理能力的方法、装置及系统 | |
CN109672755A (zh) | 一种基于区块链的域名记录更新方法及系统 | |
CN106990974A (zh) | 一种app应用更新方法、装置及电子设备 |
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 |