一种分布式数据库连接方法技术

技术编号:7786474 阅读:227 留言:0更新日期:2012-09-21 07:32
本发明专利技术公开了一种分布式数据库连接方法,在每个ORM类里面都有数据库的信息,在每一个库中还可以配置从服务器,可以解决主从读写分离,数据库连接只在Model类进行数据库操作时才进行数据库连接,不存在无用的数据库连接。采用了本发明专利技术的技术方案,可以消除冗余的数据库连接,使开发人员不需要维护数据库连接及其带来的代码复杂度;减少了PHP程序与数据库服务器的连接及其使用的内存空间,还有连接数据库服务器的网络时间和网络流量,减少数据库服务器的客户连接数,加快数据库的连接除列;减少了WEB服务器和数据库服务器的性能开销;加快服务器整体的响应时间,提高用户体验。

【技术实现步骤摘要】

本专利技术涉及数据库
,尤其涉及。
技术介绍
随着网页技术和服务端技术的发展,大部分应用都采用web方式,如web office、web os等。而LAMP架构体系是当前最流行、最快捷的WEB开发方式。LINUX开源的服务端操作系统,安全效率高。Aapache市场占用率最高的web http服务器由Apache开源基金会维护开发。mysql是目前应用最广泛的开源关系数据库,以高并发、高效率著称。而PHP则是一门面向对象、解释型的跨平台的web开发语言。上网的用户越来越多,数据库的数据也开始急剧膨胀,从原始的一台服务器,拆分成独立的mysql数据库服务器,或是做成读写分离两台服务器,再对每个数据库独立一台服务器,然后到每一个表独占一个服务器,并且还做主从读写分离,这所要使用的数据库服务器从一台到上百台逐渐增长。不管是一般的PHP程序,还是框架,都是以数据库为单位来进行数据连接,接下来以PHP官方的开源框架Zend Framework为例来讲解现有的PHP mysql的连接管理方式。Zend Framework采用的是经典的MVC三层架构模式,把每个数据表用ORM映射成一个Model类,每个Model类都会包含其所在的数据库信息,要在一个初始配置文件里面配置每个数据库的连接方式,包括数据库帐户、密码和服务器地址。然后要马上把对该数据库进行初始化连接,才能使用对应的Model类来进行数据库操作。所以整个系统的数据库都要在系统初始化时进行连接,并在PHP运行结束时进行释放。这时在WEB服务器内存中就要维护所有数据库的网络连接,所有的数据库不管有没有用到都会有一个客户连接,来等待客户端的数据库操作。 从而导致浪费占用的很多数据库连接线程,不仅要在PHP端内存维护一个数据库连接句柄,要占用操作系统的一个网络连接,并要连接到数据库服务器上去进行数据库连接的帐户密码验证,浪费了网络处理时间,增加服务器的响应时间,使用户体验变差,而且占用数据库服务器的一个连接客户端数,会导致大并发时的客户端的排队等待时间,进行数据库帐户密码验证时,浪费数据库服务器的CPU、内存,还有网络流量等。如果系统只有一个数据库,则没有问题,但是随着系统数据的增加,要么升级数据库服务器的硬件水平,要么就进行分布式拆分管理。如果是升级硬件的话,没有多久又会达到瓶颈的,而且费用昂贵,一般的企业都是无法承受的,所以一般采用廉价的普通的服务器来进行分布式管理。而这时的数据库服务器的数据就会逐浙的增多,当达到一定量的时候,即使去连接初始化每个数据库服务器,所占用的资源和时间都是无法忍受的。所以采用Zend Framework的数据库管理方式,在应对数据库数据的不断增加及数据库服务器的不断增加的情况下所耗费的资源、性能都是相当大的
技术实现思路
本专利技术的目的在于提出,能够加快数据库服务器整体的响应时间,提闻用户体验。为达此目的,本专利技术采用以下技术方案 ,其特征在于,包括以下步骤 A、客户端将所有数据库服务器信息配置在内存中,包括主从读写分离信息和连接数据库的句柄信息; B、客户端的数据库连接执行封装模块执行数据库操作时,判断所述操作是读操作还是写操作,如果是读操作,转至步骤C,如果是写操作,转至步骤F ; C、判断内存是否已经存在连接到所述数据库所在的服务器的句柄,如果存在,则转至 步骤D,如果不存在,则转至步骤E ; D、取得连接到所述数据库所在的服务器的句柄,并执行数据库操作,返回操作结果,流程结束; E、根据内存中存储的所述数据库服务器信息,建立与所述数据库服务器的连接,执行数据库操作,返回操作结果,并将连接句柄存储在内存中,流程结束; F、判断内存是否已经存在连接到所述数据库所在的服务器的句柄,如果存在,则转至步骤G,如果不存在,则转至步骤H ; G、执行数据库操作,返回操作结果,流程结束; H、判断内存中是否有所述数据库所在的服务器的主从读写分离信息,如果有,则转至步骤I,如果没有,则返回步骤C ; I、从所述数据库所在的服务器的主从读写分离信息中创建连接句柄,存储在内存中,并执行数据库操作,返回操作结果,流程结束。步骤A中,采用PHP数组将所有数据库服务器信息配置在内存中,包括主从读写分离信息和连接数据库的句柄的数组键值。步骤A中,数据库服务器信息包括账号密码信息。采用了本专利技术的技术方案,可以消除冗余的数据库连接,使开发人员不需要维护数据库连接及其带来的代码复杂度;减少了 PHP程序与数据库服务器的连接及其使用的内存空间,还有连接数据库服务器的网络时间和网络流量,减少数据库服务器的客户连接数, 加快数据库的连接除列;减少了 WEB服务器和数据库服务器的性能开销;加快服务器整体的响应时间,提闻用户体验。附图说明图I是本专利技术具体实施方式中分布式数据库连接的流程图。具体实施例方式下面结合附图并通过具体实施方式来进一步说明本专利技术的技术方案。本专利技术技术方案的主要思想是在每个ORM类里面都有数据库的信息,在每一个库中还可以配置从服务器,可以解决主从读写分离,数据库连接只在Model类进行数据库操作时才进行数据库连接,不存在无用的数据库连接。图I是本专利技术具体实施方式中分布式数据库连接的流程图。如图I所示,该流程包括以下步骤 步骤101、客户端采用PHP数组将所有数据库服务器信息配置在内存中,包括主从读写分离信息和连接数据库的句柄的数组键值,以及账号密码信息。步骤102、客户端的数据库连接执行封装模块执行数据库操作时,判断该操作是读操作还是写操作,如果是读操作,转至步骤103,如果是写操作,转至步骤106。步骤103、判断内存是否已经存在连接到数据库所在的服务器的句柄,如果存在,则转至步骤104,如果不存在,则转至步骤105。步骤104、取得连接到数据库所在的服务器的句柄,并执行数据库操作,返回操作结果,流程结束。步骤105、根据内存中存储的数据库服务器信息,建立与数据库服务器的连接,执 行数据库操作,返回操作结果,并将连接句柄存储在内存中,流程结束。步骤106、判断内存是否已经存在连接到数据库所在的服务器的句柄,如果存在,则转至步骤107,如果不存在,则转至步骤108。步骤107、执行数据库操作,返回操作结果,流程结束。步骤108、判断内存中是否有数据库所在的服务器的主从读写分离信息,如果有,则转至步骤109,如果没有,则返回步骤103。步骤109、从数据库所在的服务器的主从读写分离信息中创建连接句柄,存储在内存中,并执行数据库操作,返回操作结果,流程结束。在这种数据库连接的管理模式下,只有被使用到的数据库才会产生数据库连接,不存在冗余的数据库连接,并在PHP程序结束时自动断开所有数据库连接。以上所述,仅为本专利技术较佳的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉该技术的人在本专利技术所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖 在本专利技术的保护范围之内。因此,本专利技术的保护范围应该以权利要求的保护范围为准。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1. ー种分布式数据库连接方法,其特征在于,包括以下步骤 A、客户端将所有数据库服务器信息配置在内存中,包括主从读写分离信息和连接数据库的句柄信息; B、客户端的数据库连接执行封装模块执行数据库操作时,判断所述操作是读操作还是写操作,如果是读操作,转至步骤C,如果是写操作,转至步骤F ; C、判断内存是否已经存在连接到所述数据库所在的服务器的句柄,如果存在,则转至步骤D,如果不存在,则转至步骤E ; D、取得连接到所述数据库所在的服务器的句柄,并执行数据库操作,返回操作结果,流程结束; E、根据内存中存储的所述数据库服务器信息,建立与所述数据库服务器的连接,执行数据库操作,返回操作結果,并将连接句柄存储在内存中,流程结束; F、判断内存是否已...

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

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

1