CN105141683B - 一种MongoDB负载均衡优化方法 - Google Patents

一种MongoDB负载均衡优化方法 Download PDF

Info

Publication number
CN105141683B
CN105141683B CN201510509279.0A CN201510509279A CN105141683B CN 105141683 B CN105141683 B CN 105141683B CN 201510509279 A CN201510509279 A CN 201510509279A CN 105141683 B CN105141683 B CN 105141683B
Authority
CN
China
Prior art keywords
data block
server
operating quantity
data
mongodb
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.)
Active
Application number
CN201510509279.0A
Other languages
English (en)
Other versions
CN105141683A (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.)
CHENGDU COMSYS INFORMATION TECHNOLOGY Co Ltd
Original Assignee
CHENGDU COMSYS INFORMATION TECHNOLOGY 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 CHENGDU COMSYS INFORMATION TECHNOLOGY Co Ltd filed Critical CHENGDU COMSYS INFORMATION TECHNOLOGY Co Ltd
Priority to CN201510509279.0A priority Critical patent/CN105141683B/zh
Publication of CN105141683A publication Critical patent/CN105141683A/zh
Application granted granted Critical
Publication of CN105141683B publication Critical patent/CN105141683B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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负载均衡优化方法
技术领域
本文属于数据库性能优化领域,具体涉及一种MongoDB负载均衡优化方法。
背景技术
随着互联网Web 2.0网站的兴起,传统的关系型数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站时已经显得力不从心,暴露了很多难以克服的问题,例如对数据库高并发读写的问题、对海量数据的高效率存储和访问的问题,以及数据库的高扩展性和高可用性的问题。
为了应对以上问题,非关系性数据库NoSQL(Not Only SQL,是一种新型的数据库方面的革命)应运而生,它通过降低关系型数据库的数据库事务一致性、写实时性读实时性,以及弱化复杂的SQL查询功能来解决Web 2.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的config server中记录数据块参数的数据结构,增加以下变量:数据块插入操作的次数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的config server中记录数据块参数的数据结构,增加以下变量:数据块插入操作的次数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 (2)

1.一种MongoDB负载均衡优化方法,其特征在于,包括以下步骤:
S1、计算每两个服务器内数据块总数的差值;
S2、判断任意两个服务器内数据块总数的差值是否大于或等于系统预先设定的最大阈值,若是则将两个服务器中包含数据块多的服务器定为数据块移动源,包含数据块少的服务器定为数据块移动目标,否则不操作;
S3、分别计算数据块移动源和数据块移动目标内的平均数据块操作量;包括以下子步骤:
S31、在MongoDB中建立CRUD性能测试集,并计算出系统的运行各个操作的性能参数;具体实现方法为:从数据库中选择插入、删除、修改以及查找测试语句各5000条,分别记录在4个语句脚本中;再建立一个定时执行shell脚本,分别记录下4个语句脚本的执行时间作为性能参数;所述的性能参数包括:插入操作性能参数TC、删除操作性能参数TD、修改操作性能参数TU和查询操作性能参数TR
S32、修改MongoDB的config server中记录数据块参数的数据结构,增加以下变量:数据块插入操作的次数operateC、数据块查询操作的次数operateR、数据块更新操作的次数operateU、数据块删除操作的次数operateD和数据块操作量变量datablockWeight,对数据块的每一次操作都在相对应的变量上进行加一操作;
S33、根据步骤S1和S2中的参数计算每个数据块操作量并保存到变量datablockWeight中,计算服务器内所有数据块操作量总和以及服务器内的平均数据块操作量;具体包括以下子步骤:
S331、设一个服务器上有n个数据块,用Ki(1≤i≤n)表示,服务器上所有数据块操作次数之和用O表示,每个数据块总的操作次数用Oi表示,则:
将步骤S32得到的参数带入上式,得到:
其中,OCi、ORi、OUi、ODi分别表示第i块数据块插入操作的次数operateC、查询操作的次数operateR、更新操作的次数operateU、删除操作的次数operateD;
S332、计算第i块数据块操作量DWi
计算服务器上所有数据块操作量:
每次负载均衡时按照上式计算出服务器中各个数据块的DWi然后存入变量datablockWeight中,DW参数供后续步骤使用;
S333、将包含数据块多的服务器称为数据块移动源,用S表示;包含数据块少的服务器称为数据块移动目标,用T表示;S与T的平均数据块操作量分别用SDW和TDW表示,则:
其中,nS和nT表示S与T中数据块的数量,SDWn和TDWn分别表示S与T服务器上所有数据块操作量;
S4、比较数据块移动源和数据块移动目标内的平均数据块操作量大小,如果数据块移动源内平均数据块操作量大于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最大的数据块移动到数据块移动目标中;如果数据块移动源内平均数据块操作量小于或等于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最小的数据块移动到数据块移动目标中;
S5、重复步骤S1~S4,直到任意两个服务器内数据块总数的差值小于系统预先设定的最小阈值时,完成负载均衡。
2.根据权利要求1所述的MongoDB负载均衡优化方法,其特征在于,所述的步骤S3还包括一个步骤:S34、在完成负载均衡后对步骤S32中增加的变量进行置零操作。
CN201510509279.0A 2015-08-19 2015-08-19 一种MongoDB负载均衡优化方法 Active CN105141683B (zh)

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 CN105141683A (zh) 2015-12-09
CN105141683B true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107948293A (zh) * 2017-11-29 2018-04-20 重庆邮电大学 一种基于MongoDB负载均衡优化系统及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104462488A (zh) * 2014-12-19 2015-03-25 北京奇虎科技有限公司 数据库的高可用解决方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104462488A (zh) * 2014-12-19 2015-03-25 北京奇虎科技有限公司 数据库的高可用解决方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于IODA 算法MongoDB负载均衡的改进;邓志飞等;《现代电信科技》;20130731;第1-2节,图2 *

Also Published As

Publication number Publication date
CN105141683A (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
CN107818115B (zh) 一种处理数据表的方法及装置
CN102541990B (zh) 利用虚拟分区的数据库重新分布方法和系统
US9418094B2 (en) Method and apparatus for performing multi-stage table updates
CN108664516A (zh) 查询优化方法及相关装置
CN105117417A (zh) 一种读优化的内存数据库Trie树索引方法
US9760604B2 (en) System and method for adaptive filtering of data requests
CN105631003A (zh) 支持海量数据分组统计的智能索引构建、查询及维护方法
CN102880671A (zh) 一种面向分布式文件系统的主动重复数据删除方法
Yu et al. Two birds, one stone: a fast, yet lightweight, indexing scheme for modern database systems
Naheman et al. Review of NoSQL databases and performance testing on HBase
US10466936B2 (en) Scalable, multi-dimensional search for optimal configuration
CN102937993B (zh) 一种用于访问关键字的方法及装置
CN104376109A (zh) 一种基于数据分布库的多维度数据分布方法
Vogt et al. Icarus: Towards a multistore database system
CN105335482B (zh) 面向海量分布式数据库的批量插入方法
US10776368B1 (en) Deriving cardinality values from approximate quantile summaries
CA3068333A1 (en) Systems and methods for intelligently grouping financial product users into cohesive cohorts
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN105141683B (zh) 一种MongoDB负载均衡优化方法
US10402385B1 (en) Database live reindex
WO2016175880A1 (en) Merging incoming data in a database
US20180113912A1 (en) Method and system for storing query result in distributed server
KR101747262B1 (ko) 동적인 알고리즘 변경을 통하여 쿼리 처리 시간을 축소시키기 위한 방법, 장치 및 컴퓨터-판독가능 매체
CN108932258A (zh) 数据索引处理方法及装置
CN101963953B (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