CN103020193A - 处理数据库操作请求的方法和设备 - Google Patents

处理数据库操作请求的方法和设备 Download PDF

Info

Publication number
CN103020193A
CN103020193A CN2012105111285A CN201210511128A CN103020193A CN 103020193 A CN103020193 A CN 103020193A CN 2012105111285 A CN2012105111285 A CN 2012105111285A CN 201210511128 A CN201210511128 A CN 201210511128A CN 103020193 A CN103020193 A CN 103020193A
Authority
CN
China
Prior art keywords
submeter
operation requests
data
data table
table name
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012105111285A
Other languages
English (en)
Other versions
CN103020193B (zh
Inventor
朱超
陈超
桂勇哲
代兵
王超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201210511128.5A priority Critical patent/CN103020193B/zh
Publication of CN103020193A publication Critical patent/CN103020193A/zh
Application granted granted Critical
Publication of CN103020193B publication Critical patent/CN103020193B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种处理数据库操作请求的方法和设备,其中该方法包括:接收对于数据库的操作请求;解析所述操作请求,以获取所述操作请求中的第一数据表名;根据分表信息解析所述操作请求,以获取所述操作请求中与所述第一数据表名相关联的分表字段以及与该分表字段相对应的字段值,其中所述分表信息包括要进行分表的数据表的数据表名以及与该数据表名相关联的分表字段;根据所述分表信息和所获取的分表字段相对应的字段值,将所述操作请求中的第一数据表名修改为第二数据表名;以及将修改后的操作请求发送给数据库服务器。

Description

处理数据库操作请求的方法和设备
技术领域
本发明涉及数据库技术,尤其涉及一种处理数据库操作请求的方法和设备。
背景技术
在计算机时代,出现了专门用于存储、管理数据的数据库系统,而且数据库系统在网络应用上日益普及。一般来说,数据库系统中会包括一个或者多个数据库,专门用于存储某个应用的数据。在关系型数据库中,数据一般分布在多张数据表中,每张数据表存在某个方面的数据。例如在一个常用的网络应用的数据库中,有一张数据表存储用户的基本信息,有另一张数据表存储用户的登录信息等。
随着时代的发展和技术的进步,目前人类社会每天产生的数据量相当惊人,海量数据造成关系型数据库(例如诸如MySQL)的数据表容量越来越大,一张表的条目(记录)数可达几千万甚至上亿条。数据库在对数据表进行处理时,需要锁表、操作、解锁等几个阶段,一张数据表的记录数过多,会造成很多操作同时等待解锁,造成数据库处理大型数据表时显得力不从心,性能下降严重。为了提高数据库操作数据表的性能,有必要将逻辑上的一张较大的表拆分成物理上的多张较小的子表。
最常见的分表方案是在表结构里设置一个特殊的字段,以下称其为分表字段,其类型一般为整数,也可能为字符串等等。不同的记录根据分表字段值的不同,使用哈希等方式,将分表字段值与某个编号的子表关联。此方案最大的缺点是需要应用编写人员自己控制数据与具体的子表之间的对应关系,应用编写人员必须对数据库底层子表的实现方式非常了解,在编写具体的业务逻辑的同时,还要分心于逻辑表与物理子表的关系处理上,开发效率受到严重影响。其次,此方案的分表策略定得过于死板,不够灵活。如果要调整子表数量或是修改分表字段值与子表序号的对应关系,则应用编写人员必须也对代码作出相应修改,才能使应用在新的分表架构上正确运行,应用系统的维护成本很高。
发明内容
鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的分配数据库操作请求的方法和设备。
依据本发明的一个方面,提供了一种处理数据库操作请求的方法,其包括步骤:接收对于数据库的操作请求;解析该操作请求,以获取该操作请求中的第一数据表名;根据分表信息解析该操作请求,以获取该操作请求中与该第一数据表名相关联的分表字段以及与该分表字段相对应的字段值,其中该分表信息包括要进行分表的数据表的数据表名以及与该数据表名相关联的分表字段;根据该分表信息和所获取的分表字段相对应的字段值,将该操作请求中的第一数据表名修改为第二数据表名;以及将修改后的操作请求发送给数据库服务器。
可选地,根据本发明的实施例的处理数据库操作请求的方法还包括步骤:如果该操作请求中不存在第一数据表名,则将该操作请求发送给数据库服务器。
可选地,根据本发明的实施例的处理数据库操作请求的方法还包括步骤:在该根据分表信息解析操作请求的步骤中,如果该第一数据表名不在该分表信息中,则将该操作请求发送给数据库服务器;如果该第一数据表名在该分表信息中、但未从该操作请求中解析出与该第一数据表名相关联的分表字段及该分表字段相对应的字段值,则返回错误提示。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该分表信息还包括要进行分表的数据表的子表数量,该将操作请求中的第一数据表名修改为第二数据表名的步骤还包括:根据与该分表字段相对应的字段值以及该数据表的子表数量,将该第一数据表名修改为第二数据表名。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该第二数据表名对应于第一数据表分表之后生成的多个第二数据表之一,其包括第一数据表名以及第二数据表标识。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该操作请求包括数据库程序语言语句。
可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该数据库程序语言语句是结构化查询语言SQL语句,该数据库是MySQL数据库。
依据本发明的另一方面,提供了一种处理数据库操作请求的设备,包括:应用程序接口,适于从应用服务器接收对于数据库的操作请求;解析器,适于解析该操作请求,以获取该操作请求中的第一数据表名,并且根据分表信息解析该操作请求,以获取该操作请求中与该第一数据表名相关联的分表字段以及与该分表字段相对应的字段值,其中该分表信息包括要进行分表的数据表的数据表名以及与该数据表名相关联的分表字段;操作请求修改器,适于根据该分表信息和所获取的分表字段相对应的字段值,将该操作请求中的第一数据表名修改为第二数据表名;以及数据库接口,适于将修改后的操作请求发送给数据库服务器。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,如果该操作请求中不存在第一数据表名,则该数据库接口将该操作请求发送给数据库服务器。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,在该解析器根据分表信息解析操作请求时,如果该第一数据表名不在该分表信息中,则该数据库接口将该操作请求发送给数据库服务器;如果该第一数据表名在该分表信息中、但该解析器未从该操作请求中解析出与该第一数据表名相关联的分表字段及该分表字段相对应的字段值,则返回错误提示。
可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该分表信息还包括要进行分表的数据表的子表数量,该操作请求修改器根据与该分表字段相对应的字段值以及该数据表的子表数量,将该第一数据表名修改为第二数据表名。
本发明提供了上述处理数据库操作请求的方法和设备。根据本发明的实施例,根据来自数据库服务器的分表信息,解析应用服务器对于数据库的操作请求,以获取第一数据表名、与其相关联的分表字段以及字段值,并且根据该分表信息和字段值将第一数据表名修改为第二数据表名,并将修改后的操作请求发送给数据库服务器。由此,使得分表的过程对应用服务透明化,应用编写人员不再需要控制数据与具体的子表之间的对应关系,无论物理上存在多少张子表,应用编写人员所面对的是始终是逻辑上的一张表,应用编写人员不再需要关心数据库分表策略的实现细节,可以专注于编写具体的业务代码,只需在对于数据库的操作请求中包含分表字段的值即可。另外,根据本发明的实施例,通过更新分表信息,可以避免子表数量等分表信息的变化对应用代码的影响,应用只需要开发一次,不再需要由于数据库分表信息的调整而修改应用程序本身,极大地降低了维护成本。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明的实施例的处理数据库操作请求的方法的流程图;
图2是根据本发明的一个实施例的处理数据库操作请求的方法各步骤的流程图;以及
图3是根据本发明的实施例的处理数据库操作请求的设备以及系统的框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示意性地图示了根据本发明的实施例的处理数据库操作请求的方法的流程图,并且图2示意性地图示了根据本发明的一个实施例的处理数据库操作请求的方法各步骤的流程图。下面将接合图1和图2对本发明进行详细的描述。
根据本发明的实施例,数据库例如可以是MySQL数据库。在下文中,以MySQL数据库为例,对本发明的原理进行描述,然而,这只是为了示例的目的,本发明的范围并不限于此,本发明的原理同样适用于其它类型的数据库,例如IBM DB2、Oracle 10等数据库。
如图1所示,根据本发明的实施例的处理数据库操作请求的方法100适于步骤S101,其中,接收对于数据库的操作请求。该对于数据库的操作请求例如来自于一个或者多个应用服务器。
同样参见图2,首先,可以存储来自例如一个或者多个数据库服务器的分表信息。根据本发明的实施例,该分表信息可以包括要进行分表的数据表的数据表名以及与该数据表名相关联的分表字段。
接下来,在步骤S101中,从一个或者多个应用服务器接收对于数据库的操作请求,如果没有接收到,则继续等待;如果已经接收到,则进入下一步骤,即图1所示的步骤S103。
根据本发明的实施例,该操作请求可以包括数据库程序语言语句。可选地,该数据库程序语言语句可以是SQL(Structured Query Language,结构化查询语言)语句。然而,SQL语言和SQL语句仅为示例,用于帮助读者理解本发明的原理,本发明的范围并不限于此,而是同样适用于其它适当的数据库程序语言和相对应的语句。
在步骤S103中,解析该操作请求,以获取该操作请求中的第一数据表名(例如table)。此时,如果该操作请求中不存在第一数据表名(例如不存在table),则说明该操作请求不是针对某张表的操作,那么就可以将操作请求直接发送给数据库服务器。
而如果操作请求中存在第一数据表名,则执行如图1所示的步骤S105,其中,根据分表信息解析该操作请求,以获取该操作请求中与第一数据表名相关联的分表字段以及与该分表字段相对应的字段值。
例如,假设将数据表table拆分为100张子表,分别称为table_0、table_1、…、table_99,整数型字段id被设置为分表字段。此时,如果操作请求中所包括的SQL语句为SELECT*FROM table WHERE name=“zhangsan”AND id=123,则操作请求中与第一数据表名table相关联的分表字段为id,与该分表字段相对应的字段值为123。
在步骤S105中,如果第一数据表名不在分表信息中,则说明第一数据表名所代表的数据表未被拆分为多张分表,那么就可以直接将操作请求发送给数据库服务器。而如果第一数据表名在该分表信息中、但未从操作请求中解析出与第一数据表名相关联的分表字段及该分表字段相对应的字段值,则无法判断该操作请求是针对哪张子表进行操作,就可以返回错误提示,例如,向应用服务器返回“操作请求错误,未包含分表字段”的错误提示。
接下来,执行步骤S107,其中,根据分表信息和所获取的分表字段相对应的字段值,将操作请求中的第一数据表名修改为第二数据表名。
根据本发明的实施例,分表信息还可以包括要进行分表的数据表的子表数量,在步骤S107中,可以根据与分表字段相对应的字段值以及数据表的子表数量,将第一数据表名修改为第二数据表名。根据本发明的实施例,第二数据表名对应于第一数据表分表之后生成的多个第二数据表之一,其包括第一数据表名以及第二数据表标识。
例如,仍以上述SQL语句SELECT*FROM table WHERE name=“zhangsan”AND id=123为例进行描述。根据与分表字段相对应的字段值123以及数据表的子表数量100,可以采用求模方式的分表策略,即,123对100求模,得到23,则说明该SQL语句实际是要对子表table_23进行操作,第二数据表名即为table_23,包括第一数据表名table以及第二数据表标识23,从而可以将操作请求中的SQL语句修改为SELECT*FROMtable_23WHERE name=“zhangsan”AND id=123,即,从子表table_23中选择“zhangsan”字段进行操作。
之后,如图1所示,执行步骤S109,将修改后的操作请求发送给数据库服务器。例如,将包括修改后的SQL语句SELECT*FROM table_23WHERE name=“zhangsan”AND id=123的操作请求发送给数据库服务器。
根据本发明的实施例,如图2所示,方法100还可以包括以下步骤:检查分表信息是否已经更新(例如,子表数量变化,新拆分了某些表等),如果已更新,则在上述步骤S101之前,存储更新后的分表信息,并在步骤S105中,根据更新后的分表信息来解析操作请求。
下面,为了帮助读者理解本发明,结合一个具体示例来说明本发明的原理。
假设第一数据表名为person的数据表被分为10张子表,分表字段为pid,第一数据表名为student的数据表被分为100张子表,分表字段为no,则分表信息可以如下:table[1]={person,10,pid},table[2]={student,100,no}。
假设操作请求中包括的SQL语句为SELECT*FROM person WHEREpid=123。首先,解析操作请求,获取第一数据表名person,然后根据分表信息解析得到分表字段pid以及与分表字段相对应的字段值123,将123对10求模,得到结果3。于是,就可以将原SQL语句中的第一数据表名person修改为第二数据表名person_3,然后将包括修改后的SQL语句SELECT*FROM person_3WHERE pid=123的操作请求发送给数据库服务器来执行。
另外,假设操作请求中包括的SQL语句为INSERT INTO student(`no`,`name`)VALUES(246,‘zhangsan’)。首先,解析操作请求,获取第一数据表名student,然后根据分表信息解析得到分表字段no以及与分表字段相对应的字段值,将246对100取模,得到结果46。于是,就可以将原SQL语句中的第一数据表名student修改为第二数据表名student_46,然后将包括修改后的SQL语句INSERT INTO student_46(`no`,`name`)VALUES(246,‘zhangsan’)的操作请求发送给数据库服务器来执行。
本发明公开了一种处理数据库操作请求的方法。根据本发明的实施例,根据来自数据库服务器的分表信息,解析应用服务器对于数据库的操作请求,以获取第一数据表名、与其相关联的分表字段以及字段值,并且根据分表信息和字段值将第一数据表名修改为第二数据表名,并将修改后的操作请求发送给数据库服务器。由此,使得分表的过程对应用透明化,应用编写人员不再需要控制数据与具体的子表之间的对应关系,无论物理上存在多少张子表,应用编写人员所面对的是始终是逻辑上的一张表,应用编写人员不再需要关心数据库分表策略的实现细节,可以专注于编写具体的业务代码,只需在对于数据库的操作请求中包含分表字段的值即可。另外,根据本发明的实施例,通过更新分表信息,可以避免子表数量等分表信息的变化对应用的影响,应用只需要开发一次,不再需要由于数据库分表信息的调整而修改应用本身,极大地降低了维护成本。
与上述方法100相对应,本发明还提供了一种处理数据库操作请求的设备200。图3示意性地图示了根据本发明的实施例的处理数据库操作请求的设备200。参见图3,设备200主要包括应用程序接口201、解析器203、操作请求修改器205、以及数据库接口207。
根据本发明的实施例,应用接口201从应用服务器300-1到300-n接收对于数据库的操作请求。然后解析器203对应用接口201接收的操作请求进行解析,以获取操作请求中的第一数据表名,并且根据分表信息解析操作请求,以获取操作请求中与第一数据表名相关联的分表字段以及与该分表字段相对应的字段值。
分表信息包括要进行分表的数据表的数据表名以及与该数据表名相关联的分表字段。例如,假设第一数据表名为person的数据表被分为10张子表,分表字段为pid,第一数据表名为student的数据表被分为100张子表,分表字段为no,则分表信息可以如下:table[1]={person,10,pid},table[2]={student,100,no}。
操作请求修改器205根据分表信息和解析器203所获取的分表字段相对应的字段值,将操作请求中的第一数据表名修改为第二数据表名。
假设操作请求中包括的SQL语句为SELECT*FROM person WHEREpid=123。解析器203获取的第一数据表名为person,与分表字段pid相对应的字段值123。操作请求修改器205将123对10求模,得到结果3。于是,操作请求修改器205就可以将原SQL语句中的第一数据表名person修改为第二数据表名person_3。
数据库接口207将操作请求修改器205修改后的操作请求发送给数据库服务器。应用接口201可以用于执行上述处理数据库操作请求的方法100中的步骤S101,解析器203可以用于执行步骤S103和S105,操作请求修改器205可以用于执行步骤S107,数据库接口可以用于执行步骤S109。
根据本发明的实施例,操作请求可以包括数据库程序语言语句。可选地,数据库程序语言语句可以是SQL语句,数据库可以是MySQL数据库。如上所述,SQL语句和MySQL数据库仅为本发明的示例,并不意在限制本发明。
根据本发明的实施例,如果解析器203解析操作请求时、操作请求中不存在第一数据表名,则说明该操作请求不是针对某张表的操作,那么数据库接口207就可以将操作请求直接发送给数据库服务器。
而在解析器203根据分表信息解析操作请求时,如果第一数据表名不在分表信息中,则说明第一数据表名所代表的数据表未被拆分为多张分表,那么数据库接口207就可以将操作请求发送给数据库服务器。
如果第一数据表名在分表信息中、但解析器203未从操作请求中解析出与第一数据表名相关联的分表字段及该分表字段相对应的字段值,则返回错误提示,例如,向应用服务器300-1到300-n返回“操作请求错误,未包含分表字段”的错误提示。
根据本发明的实施例,分表信息还包括要进行分表的数据表的子表数量,操作请求修改器205根据与分表字段相对应的字段值以及数据表的子表数量,将第一数据表名修改为第二数据表名,第二数据表名对应于第一数据表分表之后生成的多个第二数据表之一,其包括第一数据表名以及第二数据表标识。仍以上面针对方法100描述的SQL语句为例,可以将第一数据表名table修改为第二数据表名table_23,然后将包括修改后的SQL语句SELECT*FROM table_23WHERE name=“zhangsan”AND id=123的操作请求发送给数据库服务器。
根据本发明的实施例,数据库接口207还可以检查分表信息是否已经更新(例如,子表数量变化,新拆分了某些表等),如果已更新,则存储更新后的分表信息,供解析器203用来解析操作请求。
由于上述各设备实施例与前述各方法实施例相对应,因此不再对各设备实施例进行详细描述。
根据本发明的又一方面,还提供了一种分配数据库操作请求的系统1000。参见图3,系统1000包括上述设备200;一个或者多个应用服务器300-1,…,300-n,适于向设备200发送对于数据库的操作请求;以及数据库服务器400-1,…,400-n,适于向设备200提供分表信息,并且接收设备200发送的修改后的操作请求。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的装置中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个装置中。可以把实施例中的若干模块组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者模块中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个装置实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (14)

1.一种处理数据库操作请求的方法(100),包括步骤:
接收对于数据库的操作请求(S101);
解析所述操作请求,以获取所述操作请求中的第一数据表名(S103);
根据分表信息解析所述操作请求,以获取所述操作请求中与所述第一数据表名相关联的分表字段以及与该分表字段相对应的字段值,其中所述分表信息包括要进行分表的数据表的数据表名以及与该数据表名相关联的分表字段(S105);
根据所述分表信息和所获取的分表字段相对应的字段值,将所述操作请求中的第一数据表名修改为第二数据表名(S107);以及
将修改后的操作请求发送给数据库服务器(S109)。
2.如权利要求1所述的方法,还包括步骤:
如果所述操作请求中不存在第一数据表名,则将所述操作请求发送给数据库服务器。
3.如权利要求1或2所述的方法,还包括步骤:
在所述根据分表信息解析操作请求的步骤中,
如果所述第一数据表名不在所述分表信息中,则将所述操作请求发送给数据库服务器;
如果所述第一数据表名在所述分表信息中、但未从所述操作请求中解析出与所述第一数据表名相关联的分表字段及该分表字段相对应的字段值,则返回错误提示。
4.如权利要求1至3中的任一项所述的方法,其中所述分表信息还包括要进行分表的数据表的子表数量,
所述将操作请求中的第一数据表名修改为第二数据表名的步骤还包括:
根据与所述分表字段相对应的字段值以及所述数据表的子表数量,将所述第一数据表名修改为第二数据表名。
5.如权利要求1至4中的任一项所述的方法,其中所述第二数据表名对应于第一数据表分表之后生成的多个第二数据表之一,其包括第一数据表名以及第二数据表标识。
6.如权利要求1至5中的任一项所述的方法,其中所述操作请求包括数据库程序语言语句。
7.如权利要求6所述的方法,其中所述数据库程序语言语句是结构化查询语言SQL语句,所述数据库是MySQL数据库。
8.一种处理数据库操作请求的设备(200),包括:
应用程序接口(201),适于从应用服务器接收对于数据库的操作请求;
解析器(203),适于解析所述操作请求,以获取所述操作请求中的第一数据表名,并且根据分表信息解析所述操作请求,以获取所述操作请求中与所述第一数据表名相关联的分表字段以及与该分表字段相对应的字段值,其中所述分表信息包括要进行分表的数据表的数据表名以及与该数据表名相关联的分表字段;
操作请求修改器(205),适于根据所述分表信息和所获取的分表字段相对应的字段值,将所述操作请求中的第一数据表名修改为第二数据表名;以及
数据库接口(207),适于将修改后的操作请求发送给数据库服务器。
9.如权利要求8所述的设备,其中如果所述操作请求中不存在第一数据表名,则所述数据库接口(207)将所述操作请求发送给数据库服务器。
10.如权利要求8或9所述的设备,其中在所述解析器(203)根据分表信息解析操作请求时,
如果所述第一数据表名不在所述分表信息中,则所述数据库接口(207)将所述操作请求发送给数据库服务器;
如果所述第一数据表名在所述分表信息中、但所述解析器(203)未从所述操作请求中解析出与所述第一数据表名相关联的分表字段及该分表字段相对应的字段值,则返回错误提示。
11.如权利要求8至10中的任一项所述的设备,其中所述分表信息还包括要进行分表的数据表的子表数量,所述操作请求修改器(205)根据与所述分表字段相对应的字段值以及所述数据表的子表数量,将所述第一数据表名修改为第二数据表名。
12.如权利要求8至11中的任一项所述的设备,其中所述第二数据表名对应于第一数据表分表之后生成的多个第二数据表之一,其包括第一数据表名以及第二数据表标识。
13.如权利要求8至12中的任一项所述的设备,其中所述操作请求包括数据库程序语言语句。
14.如权利要求13所述的设备,其中所述数据库程序语言语句是结构化查询语言SQL语句,所述数据库是MySQL数据库。
CN201210511128.5A 2012-12-03 2012-12-03 处理数据库操作请求的方法和设备 Active CN103020193B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210511128.5A CN103020193B (zh) 2012-12-03 2012-12-03 处理数据库操作请求的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210511128.5A CN103020193B (zh) 2012-12-03 2012-12-03 处理数据库操作请求的方法和设备

Publications (2)

Publication Number Publication Date
CN103020193A true CN103020193A (zh) 2013-04-03
CN103020193B CN103020193B (zh) 2016-08-03

Family

ID=47968797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210511128.5A Active CN103020193B (zh) 2012-12-03 2012-12-03 处理数据库操作请求的方法和设备

Country Status (1)

Country Link
CN (1) CN103020193B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440285A (zh) * 2013-08-14 2013-12-11 北京乐动卓越科技有限公司 大型手机游戏系统及其数据库更新方法
CN105224596A (zh) * 2015-08-27 2016-01-06 浪潮集团有限公司 一种访问数据的方法及装置
WO2016188280A1 (zh) * 2015-05-25 2016-12-01 阿里巴巴集团控股有限公司 数据库分表的写入方法及装置
CN106776638A (zh) * 2015-11-24 2017-05-31 大唐软件技术股份有限公司 数据库操作方法和装置
CN107220265A (zh) * 2016-03-22 2017-09-29 阿里巴巴集团控股有限公司 一种数据库语句编译和执行方法及装置
CN107657014A (zh) * 2017-09-26 2018-02-02 上海斐讯数据通信技术有限公司 一种大容量数据表的动态分表方法及系统
CN108399175A (zh) * 2017-02-07 2018-08-14 阿里巴巴集团控股有限公司 一种数据存储、查询方法及其装置
CN109144991A (zh) * 2017-06-15 2019-01-04 北京京东尚科信息技术有限公司 动态分表的方法、装置、电子设备和计算机可存储介质
CN109165039A (zh) * 2018-04-28 2019-01-08 北京数聚鑫云信息技术有限公司 一种web API的配置及执行方法、系统及介质
CN104933066B (zh) * 2014-03-19 2019-03-15 北京畅游天下网络技术有限公司 一种数据处理的方法和系统
CN109933573A (zh) * 2019-01-30 2019-06-25 北京融链科技有限公司 数据库业务更新方法、装置及系统
CN110019242A (zh) * 2017-12-29 2019-07-16 北京京东尚科信息技术有限公司 用于数据表的处理方法、装置和系统
CN111177148A (zh) * 2019-12-06 2020-05-19 南京南瑞水利水电科技有限公司 一种水电数据库自动建表分表的方法
CN112699115A (zh) * 2019-10-23 2021-04-23 拉扎斯网络科技(上海)有限公司 数据存储及查询方法、装置、电子设备及存储介质
CN113419924A (zh) * 2021-08-23 2021-09-21 北京安华金和科技有限公司 一种基于会话保持的数据库操作风险提示处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853584B2 (en) * 2006-12-05 2010-12-14 International Business Machines Corporation Multi-partition query governor in a computer database system
CN102033882A (zh) * 2009-09-25 2011-04-27 中兴通讯股份有限公司 一种性能数据的存储方法及系统
CN102402586A (zh) * 2011-10-24 2012-04-04 深圳华强电子交易网络有限公司 一种分布式数据存储方法
CN102682044A (zh) * 2011-04-14 2012-09-19 天脉聚源(北京)传媒科技有限公司 一种对php mysql数据库进行分表的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853584B2 (en) * 2006-12-05 2010-12-14 International Business Machines Corporation Multi-partition query governor in a computer database system
CN102033882A (zh) * 2009-09-25 2011-04-27 中兴通讯股份有限公司 一种性能数据的存储方法及系统
CN102682044A (zh) * 2011-04-14 2012-09-19 天脉聚源(北京)传媒科技有限公司 一种对php mysql数据库进行分表的方法
CN102402586A (zh) * 2011-10-24 2012-04-04 深圳华强电子交易网络有限公司 一种分布式数据存储方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440285B (zh) * 2013-08-14 2016-09-07 北京乐动卓越科技有限公司 大型手机游戏系统及其数据库更新方法
CN103440285A (zh) * 2013-08-14 2013-12-11 北京乐动卓越科技有限公司 大型手机游戏系统及其数据库更新方法
CN104933066B (zh) * 2014-03-19 2019-03-15 北京畅游天下网络技术有限公司 一种数据处理的方法和系统
WO2016188280A1 (zh) * 2015-05-25 2016-12-01 阿里巴巴集团控股有限公司 数据库分表的写入方法及装置
CN105224596A (zh) * 2015-08-27 2016-01-06 浪潮集团有限公司 一种访问数据的方法及装置
CN106776638A (zh) * 2015-11-24 2017-05-31 大唐软件技术股份有限公司 数据库操作方法和装置
CN107220265A (zh) * 2016-03-22 2017-09-29 阿里巴巴集团控股有限公司 一种数据库语句编译和执行方法及装置
CN108399175B (zh) * 2017-02-07 2022-04-12 阿里巴巴集团控股有限公司 一种数据存储、查询方法及其装置
CN108399175A (zh) * 2017-02-07 2018-08-14 阿里巴巴集团控股有限公司 一种数据存储、查询方法及其装置
CN109144991A (zh) * 2017-06-15 2019-01-04 北京京东尚科信息技术有限公司 动态分表的方法、装置、电子设备和计算机可存储介质
CN107657014A (zh) * 2017-09-26 2018-02-02 上海斐讯数据通信技术有限公司 一种大容量数据表的动态分表方法及系统
CN110019242A (zh) * 2017-12-29 2019-07-16 北京京东尚科信息技术有限公司 用于数据表的处理方法、装置和系统
CN109165039A (zh) * 2018-04-28 2019-01-08 北京数聚鑫云信息技术有限公司 一种web API的配置及执行方法、系统及介质
CN109933573A (zh) * 2019-01-30 2019-06-25 北京融链科技有限公司 数据库业务更新方法、装置及系统
CN112699115A (zh) * 2019-10-23 2021-04-23 拉扎斯网络科技(上海)有限公司 数据存储及查询方法、装置、电子设备及存储介质
CN111177148A (zh) * 2019-12-06 2020-05-19 南京南瑞水利水电科技有限公司 一种水电数据库自动建表分表的方法
CN113419924A (zh) * 2021-08-23 2021-09-21 北京安华金和科技有限公司 一种基于会话保持的数据库操作风险提示处理方法及装置
CN113419924B (zh) * 2021-08-23 2021-12-07 北京安华金和科技有限公司 一种基于会话保持的数据库操作风险提示处理方法及装置

Also Published As

Publication number Publication date
CN103020193B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
CN103020193A (zh) 处理数据库操作请求的方法和设备
CN108874971B (zh) 一种应用于海量标签化实体数据存储的工具和方法
CN103678494A (zh) 客户端同步服务端数据的方法及装置
CN101512526B (zh) 动态片段映射
WO2016183539A1 (en) Data partitioning and ordering
CN103020196B (zh) 处理数据库操作请求的系统
CN101183379A (zh) 用于检索数据的方法和系统
CN104123235A (zh) 访问存储在服务器上高速缓存中的数据记录的设备和方法
CN103902701A (zh) 一种数据存储系统和存储方法
CN109690522B (zh) 一种基于b+树索引的数据更新方法、装置及存储装置
CN102033948A (zh) 一种数据更新方法和装置
EP2965492B1 (en) Selection of data storage settings for an application
CN105653716A (zh) 一种基于分类-属性-值的数据库构造方法和构造系统
CN103324713A (zh) 多级服务器中的数据处理方法、装置和数据处理系统
CN105045789A (zh) 一种游戏服务器数据库缓存方法及系统
CN110866029A (zh) sql语句构建方法、装置、服务器及可读存储介质
CN114185895A (zh) 数据导入导出方法、装置、电子设备及存储介质
CN104239412B (zh) 数据存储库中应用至存储库的数据映射及相关方法、系统和计算机可读介质
CN103810099A (zh) 代码跟踪方法及其系统
JP4951139B2 (ja) データベースの管理方法
CN104573112A (zh) Oltp集群数据库中页面查询方法及数据处理节点
CN105389394A (zh) 基于多个数据库集群的数据请求处理方法及装置
CN105677427A (zh) 一种模块升级的方法及装置
CN113297180A (zh) 数据迁移方法、装置、电子设备及存储介质
CN103841168A (zh) 数据副本更新方法及元数据服务器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220727

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right