一种对PHP MYSQL数据库进行分表的方法技术

技术编号:7786475 阅读:697 留言:0更新日期:2012-09-21 07:32
本发明专利技术公开了一种对PHP?MYSQL数据库进行分表的方法,对数据库每个表生成一个ORM?Model类,每个ORM?Model类记录要分表的字段信息,准备对数据库执行操作时,计算数据库的分表信息,根据所述分表信息,取得与分表所在数据库的连接,执行对数据库的操作。采用了本发明专利技术的技术方案,能够提高数据库的执行效率,缩短服务器的响应时间及用户等待操作时间,减少服务器数量及硬件资金投入。

【技术实现步骤摘要】

本专利技术涉及数据库
,尤其涉及一种对PHP MYSQL数据库进行分表的方法
技术介绍
随着软件的WEB化,越来越多的系统都采用WEB形式来实现。而LAMP则是WEB 开发中最经典、最流行的开发模式。PHP是一门解释型语言,开发速度快,跨平台,可以快速适应各种业务需求的变化。Mysql是目前应用最广泛的开源关系数据库,以高并发、高效率著称。在web2. O时代,数据急剧膨胀,以社会性网络服务(Social NetworkingServices, SNS)为例,比如用户达到百万级以后,其所带来的站内信、系统消息等与用户个人相关的数据都将达到千万级以上,甚至达到亿级数据。所以开始采用主从读写分离技术,分散服务器的压力。但是主从同步之间的各方面性能开销也很大,而且并不能减少单表的数据量,即不能降低单表查询时的压力。接下来开始采用拆表,把千万级的数据表水平拆分成几十个独立的表,这时每个独立的表数据只有几十万,查询效率将是原有千万级的几十倍,而且可以把独立的表放到独立的数据库服务器上,来分散数据库服务器压力。Mysql Proxy是Mysql官方推出的一款开源Mysql代理软件。MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断、改变并转发客户端和后端数据库之间的通信来实现其功能,这和WinGate之类的网络代理服务器的基本思想是一样的。Mysqlproxy实现Mysql的传输协议Mysql Protocol。Mysql Protocol包括认证和查询两个基本过程。 认证过程包括 1、客户端向服务器发起连接请求; 2、服务器向客户端发送握手信息; 3、客户端向服务器发送认证请求; 4、服务器向客户端发送认证结果。如果认证通过,则进入查询过程 1、客户端向服务器发起查询请求; 2、服务器向客户端返回查询结果。Mysql proxy就是介入协议的各个过程。首先MySQL Proxy以服务器的身份接受客户端请求,根据配置对这些请求进行分析处理,然后以客户端的身份转发给相应的后端数据库服务器,再接受服务器的信息,返回给客户端,所以MySQL Proxy需要同时实现客户端和服务器的协议。最后Mysql proxy根据分析结果来加载所配置的LUA脚本文件,来控制连接转发的机制,并把从服务器端返回的结果,发送给客户端。所以通过Mysql Proxy来 分表时,就要对SQL里面的值通过LUA来分析,然后再连接到对应的数据库服务器。上述Mysql Proxy的分表方式通过代理及LUA解析来实现,存在以下的缺点 在PHP程序和Mysql服务器之间还得再加一层代理层,Mysql proxy代理了真正的服务器,所以有些服务器的配置信息也得重新在Mysql Proxy重新配置一份,导致Mysql配置文件的冗余。代理层加长了数据的响应时间及网络传输,也加长用户的操作等待时间。Mysql的语法分析在Mysql proxy中分析一次又得在Mysql Server中再分析一次。LUA是解释型脚本开发语言,执行效率低。同样的硬件服务器,一台Mysql Proxy只能支持两到三台数据库服务器。如上所述,采用Mysql Proxy的分表管理方式严重增加硬件的资金投入,及其所引起的各方面的消耗,包括电能,机房等。
技术实现思路
本专利技术的目的在于提出一种对PHP MYSQL数据库进行分表的方法,能够提高数据库的执行效率,缩短服务器的响应时间及用户等待操作时间,减少服务器数量及硬件资金投入。 为达此目的,本专利技术采用以下技术方案 一种对PHP MYSQL数据库进行分表的方法,其特征在于,包括以下步骤 A、对数据库每个表生成一个ORMModel类; B、每个ORMModel类记录分表的字段信息; C、准备对数据库执行操作时,计算数据库的分表信息; D、根据所述分表信息,取得与分表所在数据库的连接; E、执行对数据库的操作。ORM Model类中包含一个属性,用来配置所述ORM Model类对应的数据库表用于进行分表的字段。ORM Model类中包含一个属性,用来设置要分表的算法。采用了本专利技术的技术方案,可以把整个数据库千万级的大表拆分成小表,使数据库的执行效率几十倍的提高;在高并发、大数据量的WEB应用系统中,可以提高用户的体验,留住更多用户;省去了中间数据库代理层,可以节约更多的硬件资金;使数据库的添加分表更容易。附图说明图I是本专利技术具体实施方式中对PHP MYSQL数据库进行分表的流程图。具体实施例方式下面结合附图并通过具体实施方式来进一步说明本专利技术的技术方案。本专利技术技术方案的主要思想把每个表都自动生成一个ORM Model类,对数据库的操作都封装在Model类里,在Model类里通过PHP的数组来对sql进行分表数据分析,只对分表进行分析,减小了 sql语法分析的复杂度及其系统资源消耗,直接连接对应的数据库服务器,没有再经过中间代理层,缩短服务器的响应时间及用户等待操作时间,减少服务器数量及硬件资金投入。图I是本专利技术具体实施方式中对PHP MYSQL数据库进行分表的流程图。如图I所示,该流程包括以下步骤步骤101、对数据库每个表生成一个ORM Model类。步骤102、每个ORM Model类记录分表的字段信息。步骤103、准备对数据库执行操作时,计算数据库的分表信息。步骤104、根据分表信息,取得与分表所在数据库的连接。步骤105、执行对数据库的操作。ORM Model类中包含一个属性_farm_field,用来配置所述ORM Model类对应的数据库表用于进行分表的字段。ORM Model类中还包含一个属性_farm_id,用来设置要分表的算法。例如用户的站内信,都有一个接收者的用户ID,receive_id,业务逻辑都是以接收 者的用户ID来取数据,则把_farm_f ield属性的值设置为“receivejd”,意思为根据字段receive_id来做分表,然后_farm_id属性的值设置为一个数字,则在取数据库连接时就会去根据receive_id的值对_farm_id进行取余,取得的余数就为该表所在的数据库名的后缀。根据数据库名就可以取得连接到该数据库服务器的句柄,然后就可以进行数据库操作。以上所述,仅为本专利技术较佳的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉该技术的人在本专利技术所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本专利技术的保护范围之内。因此,本专利技术的保护范围应该以权利要求的保护范围为准。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.ー种对PHP MYSQL数据库进行分表的方法,其特征在于,包括以下步骤 A、对数据库每个表生成ー个ORMModel类; B、每个ORMModel类记录分表的字段信息; C、准备对数据库执行操作吋,计算数据库的分表信息; D、根据所述分表信息,取得与分表所在数据库的连接; E、执行对数据库的操作。2...

【专利技术属性】
技术研发人员:陈繁荣
申请(专利权)人:天脉聚源北京传媒科技有限公司
类型:发明
国别省市:

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

1