一种基于路由算法的数据库分片方法、系统和中间件系统技术方案

技术编号:13050343 阅读:58 留言:0更新日期:2016-03-23 15:56
本发明专利技术公开了一种基于路由算法的数据库分片方法、系统和中间件系统,其中该方法包括:数据库中间件接收数据库应用层访问请求,所述数据库中间件对写入的数据分片,并根据数据路由分配到数据库集群;中间件读取分片数据。中间件系统包括:数据库应用连接模块,接收应用层的指令、传递数据;路由处理模块,通过数据路由将数据分片并分配存储位置;数据库集群连接模块,接收分配的存储位置信息并将分片数据储存在对应数据库。本发明专利技术基于数据路由的分片方法,对大量的数据进行分片,基于分片类型和分片的片名类型的数据路由参数计算,能快速访问目标分片数据。通过合理的分片方法和直接有效的数据查找机制,提高对快速扩大的数据库的处理能力和速度。

【技术实现步骤摘要】

本专利技术涉及一种基于路由算法的数据库分片方法、系统和中间件系统,属于数据库

技术介绍
在信息技术时代,数据急剧膨胀,以购物网站为例,比如用户达到百万级以后,其所带来的站内信、系统消息等与用户个人相关的数据都将达到千万级以上,甚至达到亿级数据。所以开始采用主从(Master/Salve)读写分离技术,分散服务器的压力。但是主从同步之间的各方面性能开销也很大。为了解决这个难题,数据库管理者会在单一的Master/Salve模式的基础之上进行数据库的垂直分区(分库)。所谓垂直分区指的是可以根据业务自身的不同,将原本冗余在一个数据库内的业务表拆散,将数据分别存储在不同的数据库中;但是即使设置了索引,仍然无法掩盖因为数据量过大从而导致的数据库性能下降的事实,因此这个时候数据库管理者就对数据库进行水平分区(分表),所谓水平分区指的是将一个业务表拆分成多个子表,子表之间通过某种契约关联在一起。即使采用分库分表的方法对数据库进行处理,随着数据更新速度的提高和数据更新量呈几何量增长,原本一个数据库能够完成的CRUD操作,在分库分表模式之后,显得复杂和麻烦,直接反应到数据的CRUD效率降低上面,其中CRUD为增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。
技术实现思路
针对现有技术存在的问题,提出了本专利技术的技术方案。本专利技术一方面提供一种基于路由算法的数据库分片方法,包括以下步骤:A、数据库中间件接收数据库应用层访问请求,所述访问请求包括数据读写;B、所述数据库中间件对写入的数据分片,并根据数据路由分配到数据库集群;C、所述数据库中间件根据所述数据路由读取数据库集群的分片数据。优选地数据库中间件接收数据库应用层访问请求之前,还加载预设的配置文件,配置文件包括数据库应用层与中间件连接命令表,数据中间件与数据库集群对应关系表,数据路由配置规则。优选地数据库中间件在对写入的数据分片之前,还包括设定分片的类型,其中,分片的类型包括:一库一片和库内分片。优选地所述数据库中间件对写入的数据分片之后,数据路由根据分片的类型和分片的片名类型计算并给分片数据分配片名,将分配了片名的分片数据分配到数据库集群。优选地所述分片片名类型包括:全局片名和集群内片名;其中全局片名是指所有分片数据的片名为唯一的片名;集群内片名是指数据库集群内的每一个数据库的分片数据的片名在该数据库内唯一。优选地所述数据路由根据数据路由配置规则读取数据库集群的分片数据,将分片数据集合,并将集合后的数据输出。优选地解析所述分片对应的SQL语句,并对解析后的SQL语句进行分析,以确定分配了片名的分片数据的数据路由参数;将所述分配了片名的分片数据的路由参数发送至数据路由,根据所述数据路由配置规则执行路由过程,以得到符合访问要求的数据。本专利技术的另一个方面提出了一种基于数据路由的中间件系统,包括:数据库应用层连接模块,用于接收应用层的指令、传递数据;路由处理模块,用于通过数据路由将数据分片并分配存储位置;数据库集群连接模块,用于接收中间件路由层分配的存储位置信息并将分片数据储存在对应数据库。所述一种基于路由算法的数据库分片系统,包括:数据库应用模块,用于接收应用软件输入的数据、向应用软件输出数据;数据库中间件模块,接收应用层的指令、传递数据、通过数据路由将数据分片并分配存储位置;数据库集群模块,用于存储数据。本专利技术的有益效果为:基于数据路由的分片方法,对大量的数据进行分片,基于分片类型和分片的片名类型的数据路由参数计算,能快速访问目标分片数据。通过合理的分片方法和直接有效的数据查找机制,提高对快速扩大的数据库的处理能力和速度。【附图说明】为了能够更清楚地理解本专利技术的上述目的、特征和优点,下面结合附图和【具体实施方式】对本专利技术进行进一步的详细描述,其中:图1所示为根据本专利技术第一实施例的全局片名的库内分片模式的示意图;图2所示为根据本专利技术第二实施例的集群内片名的库内分片模式的示意图;图3所示为根据本专利技术第三实施例的全局片名的一库一片模式的示意图;图4所示为根据本专利技术第四实施例的集群内片名的一库一片模式的示意图;图5所示为根据本专利技术第五实施例的中间件系统的架构图。【具体实施方式】根据本专利技术的第一实施例,为通过数据库中间件进行分片的方法,包括以下步骤:A、数据库中间件接收数据库应用层访问请求,所述访问请求包括数据读出、写入、修改、删除等要求。B、数据库中间件根据数据库应用层访问请求,对写入的数据进行分片处理,即将数据分为若干片,同时根据分片的类型和分片的片名类型,由数据路由分配一个对应的位置信息,并将分片数据分配传递到数据库集群中,进行存储。C、数据库中间件根据数据库应用层访问请求,跟据数据库应用层所要求的数据的片名信息,通过数据路由找到数据,并将分片数据从数据库集群中读出,并按照顺序合并传输到数据库应用层。其中数据库中间件接收数据库应用层访问请求之前,还加载预设的配置文件,配置文件包括数据库应用层与中间件连接命令表,数据中间件与数据库集群对应关系表,数据路由配置规则。数据库中间件对写入的数据分片之后,数据路由根据分片的类型和分片的片名类型计算并给分片数据分配片名,将分配了片名的分片数据分配到数据库集群。其中分片的类型包括:一库一片和库内分片;分片片名类型包括:全局片名和集群内片名;其中全局片名是指所有分片数据的片名为唯一的片名;集群内片名为数据库集群内的每一个数据库的分片数据的片名在该数据库内唯ο例如图1所示,库内分片模式,可以采用全局片名也可以采用集群内片名。如果是全局片名,那么假设dbSize是32,tbSize是1024,那么每一个库的片数为1024/32 = 32,而片名是按照0000-1023进行分布的,这就意味着片名是全局唯一的,不允许出现重复。根据本专利技术的第二实施例,例如图2所示在库内分片模式中采用集群内片名,那么假设dbSize是当前第1页1 2 本文档来自技高网...

【技术保护点】
一种基于路由算法的数据库分片方法,其特征在于,包括以下步骤:A、数据库中间件接收数据库应用层访问请求,所述访问请求包括数据读写;B、所述数据库中间件对写入的数据分片,并根据数据路由分配到数据库集群;C、所述数据库中间件根据所述数据路由读取数据库集群的分片数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:王学平
申请(专利权)人:深圳市万姓宗祠网络科技股份有限公司
类型:发明
国别省市:广东;44

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

1