CN105141683A - 一种MongoDB负载均衡优化方法 - Google Patents
一种MongoDB负载均衡优化方法 Download PDFInfo
- Publication number
- CN105141683A CN105141683A CN201510509279.0A CN201510509279A CN105141683A CN 105141683 A CN105141683 A CN 105141683A CN 201510509279 A CN201510509279 A CN 201510509279A CN 105141683 A CN105141683 A CN 105141683A
- Authority
- CN
- China
- Prior art keywords
- data block
- sigma
- server
- mongodb
- servers
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种MongoDB负载均衡优化方法,包括以下步骤:S1、计算每两个服务器内数据块总数的差值;S2、判断任意两个服务器内数据块总数的差值是否大于或等于最大阈值,若是则将数据块多的服务器定为数据块移动源S,数据块少的服务器定为数据块移动目标T;S3、计算S和T的平均数据块操作量SDW和TDW;S4、若SDW>TDW,则从S中选取数据块操作量最大的数据块移动到T中,否则从S中选取数据块操作量最小的数据块移动到T中;S5、重复步骤S1~S4,直到任意两个服务器内数据块总数的差值小于最小阈值时,完成负载均衡。本发明将数据块的CRUD负载考虑进去,根据数据库的实际使用情况,依据各个数据块读写频率,动态地进行负载均衡,达到了优化数据库性能的目的。
Description
技术领域
本文属于数据库性能优化领域,具体涉及一种MongoDB负载均衡优化方法。
背景技术
随着互联网Web2.0网站的兴起,传统的关系型数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站时已经显得力不从心,暴露了很多难以克服的问题,例如对数据库高并发读写的问题、对海量数据的高效率存储和访问的问题,以及数据库的高扩展性和高可用性的问题。
为了应对以上问题,非关系性数据库NoSQL(NotOnlySQL,是一种新型的数据库方面的革命)应运而生,它通过降低关系型数据库的数据库事务一致性、写实时性读实时性,以及弱化复杂的SQL查询功能来解决Web2.0网站建设中遇到的问题。其中MongoDB就是其中一个典型的代表。MongoDB是一个开源的,基于分布式的,面向文档存储的非关系型数据库。是非关系型数据库当中功能最丰富、最像关系数据库的,它的特点是高性能、易部署、易使用,存储数据非常方便,扩展能力强。
在MongoDB中,提供一种名为Auto-Shareding,即自动分片的机制来实现数据库的水平扩展(水平扩展,是指通过加入更多的服务器运行数据,从而提供更多的存储空间或者更高的运算性能)。与其它数据库不同,水平扩展的全部的过程都会由MongoDB自动地完成,不需要人工操作,并且当各个分片(分片,是指将数据拆分成特定大小的块,然后将其分布到多个服务器中)中的数据分布不均衡时,自动完成数据的重分布,通过将数据分布到多个服务器上,这样就不再需要高性能主机来存储海量数据,承受高压负载。
目前MongoDB的Auto-Shareding机制是靠一个balancer的模块来实现数据在各个服务器上的转移以及均匀分布,它是一个在后台运行的任务,当任意两个服务器中的数据块的数量的差值达到系统设定的最高阈值时,balancer就会将数据块从数据块多的服务器移动到数据块少的服务器上,直到数量之差达到最低阈值。
但是通过研究可以知道balancer内在的算法仅仅依据各个服务器上数据块的总量来实现数据块在各个服务器上的负载均衡。这种算法可以使得数据库的移动量最小,但是选取的数据块都是块键(每个数据库的唯一标识,是个数字)最小的。并没有将实际使用情况考虑进去,因为各个数据块的使用情况大有不同,有的基本不会访问,有的查询量大,有的修改量大,使得各个服务器的负责并不能有效的均衡。
发明内容
本发明的目的在于克服现有技术中MongoDB在自动分片机制上的不足,提供一种将数据块的CRUD负载考虑进去,根据数据库的实际使用情况,依据各个数据块读写频率,动态地进行负载均衡,以达到优化数据库性能的目的的MongoDB负载均衡优化方法。
本发明的目的是通过以下技术方案来实现的:一种MongoDB负载均衡优化方法,包括以下步骤:
S1、计算每两个服务器内数据块总数的差值;
S2、判断任意两个服务器内数据块总数的差值是否大于或等于系统预先设定的最大阈值,若是则将该组两个服务器中包含数据块多的服务器定为数据块移动源,包含数据块少的服务器定为数据块移动目标,否则不操作;
S3、分别计算数据块移动源和数据块移动目标内的平均数据块操作量;
S4、比较数据块移动源和数据块移动目标内的平均数据块操作量大小,如果数据块移动源内平均数据块操作量大于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最大的数据块移动到数据块移动目标中;如果数据块移动源内平均数据块操作量小于或等于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最小的数据块移动到数据块移动目标中;
S5、重复步骤S1~S4,直到任意两个服务器内数据块总数的差值小于系统预先设定的最小阈值时,完成负载均衡。
进一步地,所述的步骤S3包括以下子步骤:
S31、在MongoDB中建立CRUD性能测试集,并计算出系统的运行各个操作的性能参数;
S32、修改MongoDB的configserver中记录数据块参数的数据结构,增加以下变量:数据块插入操作的次数operateC、数据块查询操作的次数operateR、数据块更新操作的次数operateU、数据块删除操作的次数operateD和数据块操作量变量datablockWeight,对数据块的每一次操作都在相对应的变量上进行加一操作;
S33、根据步骤S1和S2中的参数计算每个数据块操作量并保存到变量datablockWeight中,计算服务器内所有数据块操作量总和以及服务器内的平均数据块操作量。
进一步地,所述的步骤S31具体实现方法为:从数据库中选择插入、删除、修改以及查找测试语句各5000条,分别记录在4个语句脚本中;再建立一个定时执行shell脚本,分别记录下4个语句脚本的执行时间作为性能参数;所述的性能参数包括:插入操作性能参数TC、删除操作性能参数TD、修改操作性能参数TU和查询操作性能参数TR。
进一步地,所述的步骤S33具体包括以下子步骤:
S331、设一个服务器上有n个数据块,用Ki(1≤i≤n)表示,服务器上所有数据块操作次数之和用On表示,每个数据块总的操作次数用Oi表示,则:
将步骤S32得到的参数带入上式,得到:
其中,OCi、ORi、OUi、ODi分别表示第i块数据块插入操作的次数operateC、查询操作的次数operateR、更新操作的次数operateU、删除操作的次数operateD;
S332、计算第i块数据块操作量DWi:
计算服务器上所有数据块操作量:
每次负载均衡时按照上式计算出服务器中各个数据块的DWi然后存入变量datablockWeight中,DWn参数供后续步骤使用;
S333、将包含数据块多的服务器称为数据块移动源,用S表示;包含数据块少的服务器称为数据块移动目标,用T表示;S与T的平均数据块操作量分别用SDW和TDW表示,则:
其中,nS和nT表示S与T中数据块的数量,SDWn和TDWn分别表示S与T服务器上所有数据块操作量。
进一步地,所述的步骤S3还包括一个步骤:S34、在完成负载均衡后对步骤S32中增加的变量进行置零操作。
本发明的有益效果是:针对MongoDB在自动分片机制上的不足之处,提供了一种基于数据块的增删查改频率的负载均衡方法,对移动数据块的选择上,将数据块的CRUD(CRUD代表对数据库的四种操作,即增删改查)负载考虑进去,根据数据库的实际使用情况,依据各个数据块读写频率,动态地进行负载均衡,以达到优化数据库性能的目的,可以使得集群不仅仅是在数据块的数量上负载均衡,而且也实现了读写负载均衡,优化了MongoDB水平扩展的能力,能有效的提供MongoDB数据库的并发读写性能,均衡数据库的负载,减轻数据库压力,降低服务器压力。
附图说明
图1为本发明的负载均衡优化方法流程图。
具体实施方式
下面结合附图进一步说明本发明的技术方案。
如图1所示,一种MongoDB负载均衡优化方法,包括以下步骤:
S1、计算每两个服务器内数据块总数的差值;
S2、判断任意两个服务器内数据块总数的差值是否大于或等于系统预先设定的最大阈值,若是则将该组两个服务器中包含数据块多的服务器定为数据块移动源,包含数据块少的服务器定为数据块移动目标,否则不操作;
S3、分别计算数据块移动源和数据块移动目标内的平均数据块操作量;
S4、比较数据块移动源和数据块移动目标内的平均数据块操作量大小,如果数据块移动源内平均数据块操作量大于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最大的数据块移动到数据块移动目标中;如果数据块移动源内平均数据块操作量小于或等于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最小的数据块移动到数据块移动目标中;
S5、重复步骤S1~S4,直到任意两个服务器内数据块总数的差值小于系统预先设定的最小阈值时,完成负载均衡。
进一步地,所述的步骤S3包括以下子步骤:
S31、在MongoDB中建立CRUD性能测试集,并并编写执行性能测试脚本计算出系统的运行各个操作的性能参数;其具体实现方法为:从数据库中选择插入、删除、修改以及查找测试语句各5000条,分别记录在4个语句脚本中;再建立一个定时执行shell脚本,分别记录下4个语句脚本的执行时间作为性能参数;所述的性能参数包括:插入操作性能参数TC、删除操作性能参数TD、修改操作性能参数TU和查询操作性能参数TR;因为性能参数是各个脚本的执行时间,所以性能参数越大效率越差,周期性的更新性能参数,可以反映出系统不同时间段各个操作执行的性能效率,供后续步骤使用。
S32、修改MongoDB的configserver中记录数据块参数的数据结构,增加以下变量:数据块插入操作的次数operateC、数据块查询操作的次数operateR、数据块更新操作的次数operateU、数据块删除操作的次数operateD和数据块操作量变量datablockWeight,对数据块的每一次操作都在相对应的变量上进行加一操作,用于后续步骤计算使用;数据块操作量变量datablockWeight会在每当进行负载均衡时计算得出。负载均衡后会对五个变量进行置零操作,这样能够及时地、时效地反映出各个数据块操作情况。
S33、根据步骤S1和S2中的参数计算每个数据块操作量并保存到变量datablockWeight中,计算服务器内所有数据块操作量总和以及服务器内的平均数据块操作量;具体包括以下子步骤:
S331、设一个服务器上有n个数据块,用Ki(1≤i≤n)表示,服务器上所有数据块操作次数之和用On表示,每个数据块总的操作次数用Oi表示,则:
将步骤S32得到的参数带入上式,得到:
其中,OCi、ORi、OUi、ODi分别表示第i块数据块插入操作的次数operateC、查询操作的次数operateR、更新操作的次数operateU、删除操作的次数operateD;
S332、计算第i块数据块操作量DWi:
计算服务器上所有数据块操作量:
每次负载均衡时按照上式计算出服务器中各个数据块的DWi然后存入变量datablockWeight中,DWn参数供后续步骤使用;
S333、将包含数据块多的服务器称为数据块移动源,用S表示;包含数据块少的服务器称为数据块移动目标,用T表示;S与T的平均数据块操作量分别用SDW和TDW表示,则:
其中,nS和nT表示S与T中数据块的数量,SDWn和TDWn分别表示S与T服务器上所有数据块操作量。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (5)
1.一种MongoDB负载均衡优化方法,其特征在于,包括以下步骤:
S1、计算每两个服务器内数据块总数的差值;
S2、判断任意两个服务器内数据块总数的差值是否大于或等于系统预先设定的最大阈值,若是则将该组两个服务器中包含数据块多的服务器定为数据块移动源,包含数据块少的服务器定为数据块移动目标,否则不操作;
S3、分别计算数据块移动源和数据块移动目标内的平均数据块操作量;
S4、比较数据块移动源和数据块移动目标内的平均数据块操作量大小,如果数据块移动源内平均数据块操作量大于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最大的数据块移动到数据块移动目标中;如果数据块移动源内平均数据块操作量小于或等于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最小的数据块移动到数据块移动目标中;
S5、重复步骤S1~S4,直到任意两个服务器内数据块总数的差值小于系统预先设定的最小阈值时,完成负载均衡。
2.根据权利要求1所述的一种MongoDB负载均衡优化方法,其特征在于,所述的步骤S3包括以下子步骤:
S31、在MongoDB中建立CRUD性能测试集,并计算出系统的运行各个操作的性能参数;
S32、修改MongoDB的configserver中记录数据块参数的数据结构,增加以下变量:数据块插入操作的次数operateC、数据块查询操作的次数operateR、数据块更新操作的次数operateU、数据块删除操作的次数operateD和数据块操作量变量datablockWeight,对数据块的每一次操作都在相对应的变量上进行加一操作;
S33、根据步骤S1和S2中的参数计算每个数据块操作量并保存到变量datablockWeight中,计算服务器内所有数据块操作量总和以及服务器内的平均数据块操作量。
3.根据权利要求2所述的MongoDB负载均衡优化方法,其特征在于,所述的步骤S31具体实现方法为:从数据库中选择插入、删除、修改以及查找测试语句各5000条,分别记录在4个语句脚本中;再建立一个定时执行shell脚本,分别记录下4个语句脚本的执行时间作为性能参数;所述的性能参数包括:插入操作性能参数TC、删除操作性能参数TD、修改操作性能参数TU和查询操作性能参数TR。
4.根据权利要求3所述的MongoDB负载均衡优化方法,其特征在于,所述的步骤S33具体包括以下子步骤:
S331、设一个服务器上有n个数据块,用Ki(1≤i≤n)表示,服务器上所有数据块操作次数之和用On表示,每个数据块总的操作次数用Oi表示,则:
将步骤S32得到的参数带入上式,得到:
其中,OCi、ORi、OUi、ODi分别表示第i块数据块插入操作的次数operateC、查询操作的次数operateR、更新操作的次数operateU、删除操作的次数operateD;
S332、计算第i块数据块操作量DWi:
计算服务器上所有数据块操作量:
每次负载均衡时按照上式计算出服务器中各个数据块的DWi然后存入变量datablockWeight中,DWn参数供后续步骤使用;
S333、将包含数据块多的服务器称为数据块移动源,用S表示;包含数据块少的服务器称为数据块移动目标,用T表示;S与T的平均数据块操作量分别用SDW和TDW表示,则:
其中,nS和nT表示S与T中数据块的数量,SDWn和TDWn分别表示S与T服务器上所有数据块操作量。
5.根据权利要求2所述的MongoDB负载均衡优化方法,其特征在于,所述的步骤S3还包括一个步骤:S34、在完成负载均衡后对步骤S32中增加的变量进行置零操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510509279.0A CN105141683B (zh) | 2015-08-19 | 2015-08-19 | 一种MongoDB负载均衡优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510509279.0A CN105141683B (zh) | 2015-08-19 | 2015-08-19 | 一种MongoDB负载均衡优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105141683A true CN105141683A (zh) | 2015-12-09 |
CN105141683B CN105141683B (zh) | 2018-10-23 |
Family
ID=54726886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510509279.0A Active CN105141683B (zh) | 2015-08-19 | 2015-08-19 | 一种MongoDB负载均衡优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105141683B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948293A (zh) * | 2017-11-29 | 2018-04-20 | 重庆邮电大学 | 一种基于MongoDB负载均衡优化系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462488A (zh) * | 2014-12-19 | 2015-03-25 | 北京奇虎科技有限公司 | 数据库的高可用解决方法和装置 |
-
2015
- 2015-08-19 CN CN201510509279.0A patent/CN105141683B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462488A (zh) * | 2014-12-19 | 2015-03-25 | 北京奇虎科技有限公司 | 数据库的高可用解决方法和装置 |
Non-Patent Citations (1)
Title |
---|
邓志飞等: "基于IODA 算法MongoDB负载均衡的改进", 《现代电信科技》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948293A (zh) * | 2017-11-29 | 2018-04-20 | 重庆邮电大学 | 一种基于MongoDB负载均衡优化系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105141683B (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346432B2 (en) | Compaction policy | |
CN103748579B (zh) | 在映射化简框架中处理数据 | |
CN107818115B (zh) | 一种处理数据表的方法及装置 | |
US7281004B2 (en) | Method, system and program for optimizing compression of a workload processed by a database management system | |
US10204133B2 (en) | Optimizing update operations in in-memory database systems | |
CN104375824B (zh) | 数据处理方法 | |
CN103177062A (zh) | 用于高速内存在线分析处理查询和操作的加速查询操作器 | |
CN105518674B (zh) | 优化对称资源上的并行查询执行的机制 | |
US9600559B2 (en) | Data processing for database aggregation operation | |
US20150006509A1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
CN104765731A (zh) | 数据库查询优化方法和设备 | |
US20160092134A1 (en) | Scalable, multi-dimensional search for optimal configuration | |
CN102880671A (zh) | 一种面向分布式文件系统的主动重复数据删除方法 | |
US20160117414A1 (en) | In-Memory Database Search Optimization Using Graph Community Structure | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
US20150286661A1 (en) | Database capacity estimation for database sizing | |
CN105045806A (zh) | 一种面向分位数查询的概要数据动态分裂与维护方法 | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
CN105138536B (zh) | 基于有向超图的移动社交网络数据分片方法 | |
CN105141683A (zh) | 一种MongoDB负载均衡优化方法 | |
CN104883394A (zh) | 一种均衡服务器负载的方法和系统 | |
US10366067B2 (en) | Adaptive index leaf block compression | |
CN116126901A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN111198847A (zh) | 一种适用于大数据集的数据并行处理方法、装置及系统 | |
CN105589969A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |