db分库hash方法、电子设备、存储介质和对数据访问的装置制造方法及图纸

技术编号:19023423 阅读:22 留言:0更新日期:2018-09-26 19:04
本发明专利技术提供了一种数据库分库hash方法、电子设备、存储介质和对数据访问的装置,能够保证更好的数据库访问性能并提升服务质量。该数据库分库hash方法包括:对虚拟db进行hash分库;将经hash分库的虚拟db以多对一的方式映射到实际的物理db。

【技术实现步骤摘要】
db分库hash方法、电子设备、存储介质和对数据访问的装置
本专利技术涉及计算机
,尤其涉及一种数据库分库hash方法、装置、电子设备和存储介质。
技术介绍
在互联网应用中,常常需要支撑海量的用户,高并发的数据访问,单台数据库难以承载,通过hash分库将数据分布到多库,由多台服务器承载是最常用的方法。为此,提出了直接hash。直接hash是通过hash将数据划分到不同的库上,选取作为hash的字段,每次访问需要带上该字段,通过其对应的值,计算hash函数作用后的值来判定当前访问所落在的数据库上,然后直接访问该数据库并返回结果。然而,直接hash除了会产生rehash的问题之外,其扩容以及故障切换成本是非常高昂的并且其并未考虑到机器的差异性,因此其不能按机器配置合理划分数据和访问流量。针对直接hash可能产生的rehash问题而提出了一致性hash。一致性hash不仅对数据进行hash,也对数据库做hash,具体做法是构造一个hash环,将数据库hash后放到环上的某个位置,然后对数据hash后在环上找到下一个位置的数据库,即,将该数据的存取放到这个对应的数据库上。然而,一致性hash的问题在于容灾的不均衡以及也同样忽略了机器之间的差异性。
技术实现思路
有鉴于此,本专利技术提出一种数据库分库hash方法、电子设备和存储介质以及一种用于在根据数据库分库hash方法对数据库进行分库的情况下执行数据访问的装置,从而使得hash或者一致性hash方法分库更加实用,具体而言,考虑到了实际机器差异性的问题,按着机器配置高低重新映射,确保数据和访问流量的均衡,并且同时也解决了数据库经直接hash扩容切换成本过高的问题以及和一致性hash的容灾不均衡性。为实现上述目的,根据本专利技术的一个方面,提供了一种数据库分库hash方法。本专利技术实施例的一种数据库分库hash方法包括:对虚拟db(db:database数据库)进行hash分库;将经hash分库的虚拟db以多对一的方式映射到实际的物理db。可选地,所述hash分库可以借助直接hash或一致性hash来实现。为实现上述目的,根据本专利技术的另一方面,提供了一种用于在执行本专利技术的方法对数据库分库情况下执行数据访问的装置。所述装置包括:应用hash模块、虚拟db管理模块、虚拟db映射模块、物理db数据源管理模块以及db访问代理模块,其中,所述应用hash模块用于通过hash分库定位到虚拟db;所述虚拟db管理模块用于在接收到用户的db访问请求后根据虚拟db信息到所述虚拟db映射模块请求物理db数据源连接以及用于接收由所述db访问代理模块返回的执行结果并返回给客户;所述虚拟db映射模块用于判断是否存在对应的物理db数据源连接;所述物理db数据源管理模块用于在存在所述对应的物理db数据源连接的情况下将其返回给所述虚拟db管理模块;所述db访问代理模块用于接收所述虚拟db管理模块提供的所述对应的物理db数据源连接以及执行请求并且返回执行结果到所述虚拟db管理模块。可选地,hash分库可以借助直接hash或一致性hash来实现。可选地,虚拟db映射模块还用于在添加虚拟db或物理db时更新映射,所述映射由系统管理员配置。可选地,所述db访问代理模块是开源组件,例如mybatis。为实现上述目的,根据本专利技术的再一方面,提供了一种电子设备。本专利技术的一种电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本专利技术所提供的数据库分库hash方法。为实现上述目的,根据本专利技术的再一方面,提供了一种非暂态计算机可读存储介质。本专利技术的一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本专利技术所提供的数据库分库hash方法。上述的技术方案将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术的数据库分库hash方法的主要步骤示意图;图2是用于在根据图1中示出的方法对数据库进行分库的情况下执行数据访问的装置的示意图;图3是以图2中示出的装置来进行数据访问的主要流程示意图;图4是根据本专利技术实施例的电子设备的硬件结构示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。如图1所示,本专利技术实施例的一种数据库分库hash方法主要包括如下步骤:步骤S1:以现有hash方法对虚拟db进行hash分库;步骤S2:将经hash分库的虚拟db以多对一的方式映射到实际的物理db。这种对数据库分库的一般性hash方法例如直接hash和一致性hash进行了改进的方法引入了虚拟数据库的概念,首先使一般性hash方法作用于虚拟数据库,之后再对数据库进行一层从虚拟数据库到物理数据库的映射,这样在做扩容时只是改变映射而不用改变hash函数本身,因而不需要rehash。具体地说,从虚拟db到物理db的映射为多对一,极限情况下为一对一。即一开始物理db是比较少的,但是应用中hash划分依然是划分较多的虚拟的db,然后将多个虚拟db映射到一个物理db,当业务增长,物理资源难以支撑的时候,就增加物理db,这个时候将虚拟db重新映射到新的物理db。这样在应用中就不需要像传统的直接hash那样需要rehash。而在故障摘除中,对于直接hash而言,可以将故障对应的虚拟数据库映射到其它物理机器上,从而也不需要rehash。此外,对于一致性hash而言,故障摘除后所有的故障块的数据和流量都会打到相邻的下一个节点的问题通过上述的一层映射可以将故障数据库所对应的虚拟数据库映射到配置较好的服务器,或者通过二次hash映射到多个数据库。现有的hash方案没有这样一层映射,因此对待所有的数据库都是对等的,因而忽略掉了差异性。通过本专利技术方法中的再次映射,可以将hash中命中较多的块映射到较好的物理资源上,从而保证更好的数据库访问性能并提升服务质量。此外,上述映射是管理员配置的,可以根据机器的差异性将资源映射地更合理,差一点的物理db就少映射一些虚拟db,好一些的机器就多映射一些虚拟db如图2所示,本专利技术实施例的一种执行数据访问的装置10包括应用hash模块101、虚拟db管理模块102、虚拟db映射模块103、物理db数据源管理模块104以及db访问代理模块105。如图3所示,能够很清楚地看到以上述装置来进行数据访问的流程。-用户发起数据访问,通过直接hash或者一致性hash等hash定位到虚拟db;-用户通过虚拟db管理模块请求数据库访问;-虚拟db管理模块接收到用户的db访问请求后,根据对应的虚拟db信息到虚拟db映射模块请求物理db数据源连接;-虚拟db映射模块接收到虚拟db对物理数据的请求后,在虚拟db映射中查找对应的物理db信息,没有则返回null本文档来自技高网...

【技术保护点】
1.一种数据库分库hash方法,其特征在于,其包括:对虚拟db进行hash分库;将经hash分库的虚拟db以多对一的方式映射到实际的物理db。

【技术特征摘要】
1.一种数据库分库hash方法,其特征在于,其包括:对虚拟db进行hash分库;将经hash分库的虚拟db以多对一的方式映射到实际的物理db。2.根据权利要求1所述的方法,其特征在于,所述hash分库可以借助直接hash或一致性hash来实现。3.根据权利要求1所述的方法,其特征在于,所述映射是由管理员配置的。4.一种对数据访问的装置,其特征在于,所述装置包括:应用hash模块、虚拟db管理模块、虚拟db映射模块、物理db数据源管理模块以及db访问代理模块,其中,所述应用hash模块用于通过hash分库定位到虚拟db;所述虚拟db管理模块用于在接收到用户的db访问请求后根据虚拟db信息到所述虚拟db映射模块请求物理db数据源连接以及用于接收由所述db访问代理模块返回的执行结果并返回给客户;所述虚拟db映射模块用于判断是否存在对应的物理db数据源连接,其中,在判断出不存在对应的物理db数据源连接的情况下返回给用户null值或抛出异常;所述物理db数据源管理模块用于在存在所述对应的物理db数据源连接的情况下将其返回给所述...

【专利技术属性】
技术研发人员:何刚
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1