[发明专利]一种访问数据库的方法和装置有效
申请号: | 201210380786.5 | 申请日: | 2012-10-09 |
公开(公告)号: | CN103714097B | 公开(公告)日: | 2017-08-08 |
发明(设计)人: | 曹刚;周兴江;王文治 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京润泽恒知识产权代理有限公司11319 | 代理人: | 苏培华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 访问 数据库 方法 装置 | ||
技术领域
本申请涉及数据库技术领域,特别是涉及一种访问数据库的方法和装置。
背景技术
目前随着社会的发展,应用系统中大量的数据需要存储起来,对存储的数据,根据不同用户的需求应用一定的数据访问方法进行处理,所述数据库是适应这种需求的一种技术,简单的说,数据库是数据以一种能够持久保存,并且可以被操作的方式来保存的数据集合。
当需要存储的数据量到达一定程度(如:上亿级别),使用单台数据库进行数据的存储管理,会出现容量瓶颈、性能瓶颈等问题,影响到应用系统处理能力提升,从而影响业务更加快速的发展;同时,单台数据库也是整个应用系统中的单点,一旦出现故障,会直接影响到业务的可用性。
分库分表是数据库存储、管理海量数据的一种方法,分库是指将海量数据由一个数据库存储管理拆分为多个数据库存储管理;分表是指将海量数据由一个数据表存储管理拆分为多个数据表存储管理。
采用分库分表可以很好的解决上述单库存在的问题,现有技术中分库分表的方法如下:
通过一个参数,例如使用用户ID来确定分库分表规则,以用户ID的倒数第二位确定数据库编号,以最后一位确定数据库中的数据表编号。例如:分库分表规则为用户ID倒数第二位为1、3、5、7、9进A库,0、2、4、6、8进B库,最后一位0-9分别对应库中不同的表,这样对于用户ID为123456789时,将数据写入B库第9个表。
使用现有技术中分库分表方法,当已有的数据库规模不能满足日益增长的数据量,需要通过新增数据库的方式来满足需求时,分库分表规则也需要进行变更。对于目前大多数应用系统来说,由于使用了固定的参数进行分库分表,需要同步地将旧数据库中对应数据迁移到新增的数据库中才能正常使用。
例如:分库分表规则为用户ID倒数第二位,1、3、5、7、9进A库;0、2、4、6、8进B库;当新增一个C库来管理数据时,需要将分库分表规则改为1、3、5进A库,0、2、4进B库,6、7、8、9进C库。在分库分表规则修改后,必须将原有A库、B库中用户ID倒数第二位为6、7、8、9的数据全部迁移到C库,否则使用新的分库分表规则将会导致旧数据库中某些数据无法读取;而所述数据迁移无疑增加了数据库维护的难度,且消耗了大量的CPU资源或内存资源。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够提高数据库维护的便利性,以及,能够节省数据库系统的物理资源。
发明内容
本申请所要解决的技术问题是提供一种访问数据库的方法和装置,能够提高数据库维护的便利性,以及,能够节省数据库系统的物理资源。
为了解决上述问题,本申请公开了一种访问数据库的方法,包括:
预置分库分表标识的生成规则;
接收数据库写访问请求;所述数据库写访问请求中携带有待写入数据;
依据所述数据库写访问请求,动态获取当前可用的数据库及该数据库下的数据表信息,并得到相应的库索引和表索引;
依据所述分库分表标识的生成规则,对所述库索引和表索引连同静态位进行拼装,得到与所述数据库写访问请求相应的分库分表标识;
依据所述分库分表标识的生成规则,对与所述数据库写访问请求相应的分库分表标识中的库索引和表索引进行路由;
将所述待写入数据写入至与路由结果相应的数据库下的数据表中。
优选的,所述依据所述数据库写访问请求,动态获取当前可用的数据库及该数据库下的数据表信息的步骤,包括:
在接收到所述数据库写访问请求时,从应用系统连接的多个数据库中随机获取一个当前可用的数据库,以及,从该数据库下的多个数据表中随机获取一个数据表。
优选的,通过如下步骤检测数据库是否可用:
在接收到所述数据库写访问请求时,通过与数据库通讯检测数据库是否可用;或者,
在接收到所述数据库写访问请求时,依据数据库的可用标志判断数据库是否可用;其中,所述可用标志由数据库管理员依据数据库的状态确定,故障数据库对应的可用标志为不可用,正常运行数据库对应的可用标志为可用。
优选的,所述静态位至少包括如下位中的一种或多种:日期、序号和ID。
优选的,所述依据所述分库分表标识的生成规则,对所述库索引和表索引连同静态位进行拼装的步骤,包括:
依据所述分库分表标识的生成规则中定义的静态位、库索引和表索引在分库分表标识中的位置,对所述库索引和表索引连同静态位进行拼装,得到与所述数据库写访问请求相应的分库分表标识。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210380786.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:高抗汽蚀核主泵叶轮的水力设计方法及高抗汽蚀核主泵叶轮
- 下一篇:一种轮滑挂钩