CN102541997A - 一种自动分库的数据库执行方法及系统 - Google Patents
一种自动分库的数据库执行方法及系统 Download PDFInfo
- Publication number
- CN102541997A CN102541997A CN2011103750307A CN201110375030A CN102541997A CN 102541997 A CN102541997 A CN 102541997A CN 2011103750307 A CN2011103750307 A CN 2011103750307A CN 201110375030 A CN201110375030 A CN 201110375030A CN 102541997 A CN102541997 A CN 102541997A
- Authority
- CN
- China
- Prior art keywords
- database
- storehouse
- sql
- numbering
- execution
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种自动分库的数据库执行方法及系统。上述方法包括以下步骤:分库装置根据用户编号确定所述用户编号对应的数据库编号;分库装置判断数据库编号与SQL执行对象的对照表中是否存在所述数据库编号;若对照表中存在所述数据库编号,则分库装置于获得所述数据库编号对应的SQL执行对象后,封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。
Description
技术领域
本发明属于网络通信领域,尤其涉及一种自动分库的数据库执行方法及系统。
背景技术
于现有的企业平台通信软件中,所有企业共用一个通信服务器,且通信服务器在保存各个企业用户人员的聊天记录、查询用户资料等信息时,采用的是同一个数据库。如此,会带来大量的数据库执行操作。而且,在业务逻辑繁忙时,会导致数据库执行超时,业务逻辑处理失败,从而影响用户体验。
发明内容
本发明提供一种自动分库的数据库执行方法及系统,以解决上述问题。
本发明提供一种自动分库的数据库执行方法。上述方法包括以下步骤:分库装置根据用户编号确定所述用户编号对应的数据库编号;分库装置判断数据库编号与SQL执行对象的对照表中是否存在所述数据库编号;若对照表中存在所述数据库编号,则分库装置于获得所述数据库编号对应的SQL执行对象后,封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。
本发明还提供一种自动分库的数据库执行系统,包括分库装置以及队列调度装置。分库装置连接队列调度装置。其中,分库装置用于根据用户编号确定所述用户编号对应的数据库编号,并用于判断数据库编号与SQL执行对象的对照表中是否存在所述数据库编号。若对照表中存在所述数据库编号,则分库装置于获得所述数据库编号对应的SQL执行对象后,用于封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。
相较于先前技术,根据本发明提供的自动分库的数据库执行方法及系统,分库装置根据用户编号确定其对应的数据库编号。如此,定量数目的用户可以共用一个数据库,从而将大量的数据库操作压力分解到多个数据库,提高数据库执行效率。此外,若对照表中存在所述数据库编号,则分库装置于获得所述数据库编号对应的SQL执行对象后,封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。如此,通过队列调度装置进行调度执行,有利于数据库负载均衡,从而提高数据库的稳定性和执行效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1所示为根据本发明的较佳实施例提供的自动分库的数据库执行方法的流程图;
图2所示为根据本发明的较佳实施例提供的自动分库的数据库执行系统的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1所示为根据本发明的较佳实施例提供的自动分库的数据库执行方法的流程图。如图1所示,本发明的较佳实施例提供的自动分库的数据库执行方法包括101~103。
于步骤101,分库装置根据用户编号确定所述用户编号对应的数据库编号。具体而言,分库装置根据用户编号计算得到其对应的数据库编号的方式为:将用户编号整除预设值后取整得到所述用户编号对应的数据库编号。例如,当预设值为100时,0~99的用户编号均对应数据库编号为0的数据库。换言之,每一百个用户共用一个数据库。然而,本发明并不限定于此。于实际应用中,可根据需要设定所述预设值。
于步骤102,分库装置判断数据库编号与SQL执行对象的对照表中是否存在所述数据库编号。具体而言,分库装置会存储已经存在的数据库编号与SQL执行对象的对照表。例如下表所示。其中,分库装置可更新所述对照表。
数据库编号 | SQL执行对象 |
0 | SQL执行对象0 |
1 | SQL执行对象1 |
2 | SQL执行对象2 |
于步骤103,若所述对照表中存在所述数据库编号,则分库装置于获得所述数据库编号对应的SQL执行对象后,封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。
具体而言,当分库装置确定所述对照表中存在所述数据库编号(例如,数据库编号0)时,分库装置获得其对应的SQL执行对象(例如,SQL执行对象0),并将所述SQL执行对象及待执行的SQL语句封装为待执行对象。之后,分库装置将所述待执行对象放入任务队列中由队列调度装置调度执行。其中,队列调度装置会依次从任务队列中调度待执行对象,获取待执行对象中封装的SQL语句及其对应的SQL执行对象,然后由SQL执行对象执行该SQL语句。
于本实施例中,SQL执行对象包括查询连接池以及操作连接池。查询连接池及操作连接池分别用于存储数据库连接,且分别用于执行数据库查询SQL语句以及数据库操作SQL语句。具体而言,初始化连接池后,分别设定两个信号量,用于监控上述两个连接池中的数据库连接数量。其中,信号量的值与数据库连接剩余数量相等。于每次调用数据库连接时,会检查信号量,若信号量等于0,则说明连接池中无可用连接,此时阻塞该线程,直至信号量释放为止。若信号量大于0,则说明连接池中存在可用连接,此时可取出一条连接执行相关SQL语句,并将信号量减一。此外,当数据库连接执行完SQL语句后,需将数据库连接放回至连接池中,并释放信号量。如此,可循环使用已打开的连接,从而提高数据库执行效率。
此外,于本实施例中,若对照表中不存在所述数据库编号(例如,数据库编号3),则分库装置创建所述数据库编号对应的SQL执行对象(例如,SQL执行对象3),并将所述数据库编号及其对应的SQL执行对象存储至所述对照表。于分库装置将新创建的数据库编号及其对应的SQL执行对象存储至对照表后,分库装置封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将待执行对象放入任务队列中由队列调度装置调度执行。关于队列调度装置调度执行过程同前所述,故于此不再赘述。
图2所示为根据本发明的较佳实施例提供的自动分库的数据库执行系统的示意图。如图2所示,本发明的较佳实施例提供的自动分库的数据库执行系统包括分库装置20以及队列调度装置21。分库装置20连接队列调度装置21。其中,分库装置20用于根据用户编号确定所述用户编号对应的数据库编号,并用于判断数据库编号与SQL执行对象的对照表中是否存在所述数据库编号。若所述对照表中存在所述数据库编号,则分库装置20于获得所述数据库编号对应的SQL执行对象后,用于封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置21调度执行。关于上述系统的具体操作过程同前述方法所述,故于此不再赘述。
综上所述,根据本发明较佳实施例提供的自动分库的数据库执行方法及系统,分库装置根据用户编号确定其对应的数据库编号。如此,定量数目的用户可以共用一个数据库,从而将大量的数据库操作压力分解到多个数据库,提高数据库执行效率。此外,若对照表中存在所述数据库编号,则分库装置于获得所述数据库编号对应的SQL执行对象后,封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。如此,通过队列调度装置进行调度执行,有利于数据库负载均衡,从而提高数据库的稳定性和执行效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种自动分库的数据库执行方法,其特征在于,包括以下步骤:
分库装置根据用户编号确定所述用户编号对应的数据库编号;
所述分库装置判断数据库编号与SQL执行对象的对照表中是否存在所述数据库编号;
若所述对照表中存在所述数据库编号,则所述分库装置于获得所述数据库编号对应的SQL执行对象后,封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。
2.根据权利要求1所述的自动分库的数据库执行方法,其特征在于,若所述对照表中不存在所述数据库编号,则所述分库装置创建所述数据库编号对应的SQL执行对象,并将所述数据库编号及其对应的SQL执行对象存储至所述对照表。
3.根据权利要求2所述的自动分库的数据库执行方法,其特征在于,于所述分库装置将新创建的数据库编号及其对应的SQL执行对象存储至所述对照表后,所述分库装置封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由所述队列调度装置调度执行。
4.根据权利要求1或3所述的自动分库的数据库执行方法,其特征在于,于所述队列调度装置调度所述待执行对象时,获取所述待执行对象的SQL语句及对应的SQL执行对象,并由所述SQL执行对象执行所述SQL语句。
5.根据权利要求1所述的自动分库的数据库执行方法,其特征在于,所述分库装置根据用户编号确定其对应的数据库编号的方式为:将所述用户编号整除预设值后取整得到所述用户编号对应的数据库编号。
6.根据权利要求1所述的自动分库的数据库执行方法,其特征在于,所述SQL执行对象包括查询连接池以及操作连接池,所述查询连接池以及所述操作连接池分别用于存储数据库连接。
7.一种自动分库的数据库执行系统,其特征在于,包括分库装置以及队列调度装置,所述分库装置连接所述队列调度装置,
其中,所述分库装置用于根据用户编号确定所述用户编号对应的数据库编号,并用于判断数据库编号与SQL执行对象的对照表中是否存在所述数据库编号,
若所述对照表中存在所述数据库编号,则所述分库装置于获得所述数据库编号对应的SQL执行对象后,用于封装所述SQL执行对象及待执行的SQL语句为待执行对象,并将所述待执行对象放入任务队列中由队列调度装置调度执行。
8.根据权利要求7所述的自动分库的数据库执行系统,其特征在于,所述SQL执行对象包括查询连接池以及操作连接池,所述查询连接池以及所述操作连接池分别用于存储数据库连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103750307A CN102541997A (zh) | 2011-11-23 | 2011-11-23 | 一种自动分库的数据库执行方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103750307A CN102541997A (zh) | 2011-11-23 | 2011-11-23 | 一种自动分库的数据库执行方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102541997A true CN102541997A (zh) | 2012-07-04 |
Family
ID=46348893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103750307A Pending CN102541997A (zh) | 2011-11-23 | 2011-11-23 | 一种自动分库的数据库执行方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541997A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853718A (zh) * | 2012-11-28 | 2014-06-11 | 纽海信息技术(上海)有限公司 | 分片数据库访问方法及数据库系统 |
CN106168949A (zh) * | 2016-05-03 | 2016-11-30 | 泰康保险集团股份有限公司 | 数据库拆分的方法及装置 |
CN106294421A (zh) * | 2015-05-25 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据写入、读取方法及装置 |
CN107066463A (zh) * | 2016-10-28 | 2017-08-18 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和服务器 |
CN107153648A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种防止系统崩溃的方法及装置 |
CN107229688A (zh) * | 2017-05-12 | 2017-10-03 | 上海前隆金融信息服务有限公司 | 一种数据库水平分库分表方法及系统、服务器 |
CN110825739A (zh) * | 2019-10-30 | 2020-02-21 | 京东数字科技控股有限公司 | 建表语句生成方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632800A (zh) * | 2005-01-07 | 2005-06-29 | 无敌科技(西安)有限公司 | 支持多语种接口的电子装置及方法 |
CN101799829A (zh) * | 2010-03-15 | 2010-08-11 | 江西远洋保险设备实业集团有限公司 | 密集架的计算机数据库管理控制系统 |
-
2011
- 2011-11-23 CN CN2011103750307A patent/CN102541997A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632800A (zh) * | 2005-01-07 | 2005-06-29 | 无敌科技(西安)有限公司 | 支持多语种接口的电子装置及方法 |
CN101799829A (zh) * | 2010-03-15 | 2010-08-11 | 江西远洋保险设备实业集团有限公司 | 密集架的计算机数据库管理控制系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853718A (zh) * | 2012-11-28 | 2014-06-11 | 纽海信息技术(上海)有限公司 | 分片数据库访问方法及数据库系统 |
CN103853718B (zh) * | 2012-11-28 | 2018-05-08 | 北京京东尚科信息技术有限公司 | 分片数据库访问方法及数据库系统 |
CN106294421A (zh) * | 2015-05-25 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据写入、读取方法及装置 |
CN106294421B (zh) * | 2015-05-25 | 2020-02-04 | 阿里巴巴集团控股有限公司 | 一种数据写入、读取方法及装置 |
CN107153648A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种防止系统崩溃的方法及装置 |
CN106168949A (zh) * | 2016-05-03 | 2016-11-30 | 泰康保险集团股份有限公司 | 数据库拆分的方法及装置 |
CN107066463A (zh) * | 2016-10-28 | 2017-08-18 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和服务器 |
CN107229688A (zh) * | 2017-05-12 | 2017-10-03 | 上海前隆金融信息服务有限公司 | 一种数据库水平分库分表方法及系统、服务器 |
CN110825739A (zh) * | 2019-10-30 | 2020-02-21 | 京东数字科技控股有限公司 | 建表语句生成方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541997A (zh) | 一种自动分库的数据库执行方法及系统 | |
CN105354762B (zh) | 一种电力客服业务工单识别与分配系统及方法 | |
US20060059059A1 (en) | Systems and methods for managing the execution of services | |
CN112558934B (zh) | 一种基于编排控制流程业务开通的控制子任务引擎装置 | |
US8626703B2 (en) | Enterprise resource planning (ERP) system change data capture | |
CN100573457C (zh) | 一种金融数据实现etl加工的方法和系统 | |
CN102567864B (zh) | 物料需求计划系统中的物料替代方法、装置 | |
CN101685452B (zh) | 数据仓库调度方法及调度系统 | |
CN110046287A (zh) | 一种与数据库类型无关的数据查询方法、装置及存储介质 | |
CN101710320A (zh) | 统计指标数据处理方法及装置 | |
CN105260297B (zh) | 一种测试数据管理系统及方法 | |
CN106126403A (zh) | Oracle数据库故障分析方法和装置 | |
CN111652583A (zh) | 一种企业信息化技术研发管理系统 | |
CN102663020A (zh) | 一种cdc数据分发方法和装置 | |
CN105654182A (zh) | 团队旅客自动时限管理和清座的系统及方法 | |
CN108255852B (zh) | Sql执行方法及装置 | |
CN106844320B (zh) | 一种财务报表整合方法和设备 | |
CN102243655B (zh) | 一种数据库的连接管理方法及装置 | |
CN102243653B (zh) | 一种数据库连接的管理方法及装置 | |
CN106777265B (zh) | 一种业务数据的处理方法及装置 | |
CN106156956A (zh) | 一种银行数据加工作业调度系统及其方法 | |
CN102360312B (zh) | 一种设备使用调度方法 | |
CN105630997A (zh) | 一种数据并行处理方法、装置及设备 | |
CN106528831A (zh) | 数据推送方法及系统 | |
CN107153679A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120704 |