CN108829805A - 一种基于MongoDB的分片存储方法 - Google Patents
一种基于MongoDB的分片存储方法 Download PDFInfo
- Publication number
- CN108829805A CN108829805A CN201810577339.6A CN201810577339A CN108829805A CN 108829805 A CN108829805 A CN 108829805A CN 201810577339 A CN201810577339 A CN 201810577339A CN 108829805 A CN108829805 A CN 108829805A
- Authority
- CN
- China
- Prior art keywords
- server
- configuration
- fragment storage
- mongos
- fragment
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明一种基于MongoDB的分片存储方法,包括应用节点、多个路由节点、分片存储服务器集群和配置节点;该应用节点中的一窗受理云平台应用系统仅通过连接mongos路由服务器读写数据,mongos路由服务器从配置节点的配置服务器加载配置文件,从而实现对分片存储服务器副本集进行读写,将配置服务器、分片存储服务器、mongos路由服务器搭建成副本集,且配置节点所有的配置服务器都保存有整个存储机制的配置文件,通过MongoDB搭建分片存储集群,能够解决应用系统的数据量大、并发量大、响应速度、数据安全等方面的问题。
Description
技术领域
本发明涉及一种基于高稳定性、高并发MongoDB的分片存储方法。
背景技术
目前我国各地的行政服务中心还停留在“每个部门分别到行政大厅设置一个业务办理窗口”的初级阶段,这种方式存在着行政服务中心窗口数量多、办事流程长、信息不共享等问题。为了解决现有问题,浙江政府提出了“最多跑一次”的改革。“一个窗口受理”,指将行政服务中心前台变为受理窗口,受理后的分类、转交、办理等流程在后台完成;能办结的当场办结,不能当场办结的等办结后证照快递送达。这项改革是“最多跑一次”改革的基础之一。
将各个进驻行政服务中心的事项全部集成在“一窗受理平台”,这种常常会出现并发量大的平台将面临着处理事项的速度问题,以及数据的安全稳定性问题(机器故障导致的数据丢失、系统访问不到数据问题)。
发明内容
本发明的目的在于提供一种基于MongoDB的分片存储方法,用于提供一种大数据量、高效、高稳定性、高并发、安全可靠的数据库存储机制,以解决大并发量平台的速度问题、数据的安全稳定性问题,可在一窗受理云平台上,支持大并发量、安全可靠的事项处理,即数据库读取或写入。
本发明一种基于MongoDB的分片存储方法,包括应用节点、多个路由节点、分片存储服务器集群和配置节点;
其中该应用节点包括一窗受理云平台应用系统和MongoDB驱动,该路由节点是mongos路由服务器,该分片存储服务器集群包括多个安装有MongoDB的分片存储服务器,该配置节点包括多个分别预置有整个存储机制的配置文件的配置服务器;存储于分片存储服务器集群的元数据,包含了分片存储服务器集群数据集到各分片存储服务器的映射关系,查询路由就是通过这些元数据到特定的分片存储服务器上执行指定的数据操作;该mongos路由服务器是一窗受理云平台应用系统的连接入口,是所有来自一窗受理云平台应用系统的数据请求的分发中心,负责把对应的数据请求转发到对应的分片存储服务器上;配置节点维护配置文件,当配置文件内容发生变更时,配置节点会通知mongos路由服务器更新至最新状态;
搭建配置服务器副本集,搭建分片存储服务器副本集,配置mongos路由服务器副本集,在分片存储服务器副本集配置好以后,将mongos路由服务器和片存储服务器集群中所有的分片存储服务器关联起来,启用分片存储,通过片键使分片存储生效;
该一窗受理云平台应用系统通过MongoDB驱动访问mongos路由服务器读取或写入数据;mongos路由服务器启动时,则从配置节点加载预置于配置服务器的关于整个存储机制的配置文件,并根据配置文件将来自一窗受理云平台应用系统的数据请求转发到对应的分片存储服务器上;应用系统对数据库写入数据时,通过配置的片键智能地平均分配到多个分片存储服务器中。
所述的配置服务器配置副本集的步骤如下所示:
创建分片存储服务器集群根目录mongodbShard,在根目录mongodbShard下创建分片存储服务器集群的配置目录conf,在配置目录conf添加并编辑配置文件,然后用./mongod-f/mongodbShard/conf/config.conf命令分别启动配置节点中的配置服务器。
所述的分片存储服务器配置副本集的步骤如下所示:
分别在配置目录conf下创建并编辑分片存储配置文件shard.config,然后用./mongod-f/mongodbShard/conf/shard1.conf命令分别启动各分片存储服务器的副本集。
所述的mongos路由服务器配置副本集的步骤如下所示:
分别在配置目录conf下创建并编辑路由配置文件mongos.config,然后用./mongos-f/mongodbShard/conf/mongos.conf命令启动mongos路由服务器。
本发明的一窗受理云平台应用系统仅通过连接mongos路由服务器读写数据,mongos路由服务器从配置节点的配置服务器加载配置文件,从而实现对分片存储服务器副本集进行读写,将配置服务器、分片存储服务器、mongos路由服务器搭建成副本集,且配置节点所有的配置服务器都保存有整个存储机制的配置文件,基于上述存储机制,对数据的安全性、完整性、稳定性、可靠性等方面提供了保证,可以提高数据库的性能,应用系统对数据库写入数据时,通过配置的片键智能地平均分配到三个分片存储服务器中,实现分片存储,提高了性能。
附图说明
图1为本发明的应用系统调用MongoDB分片集群过程示意图。
以下结合附图和实施例对本发明作进一步详述。
具体实施方式
如图1所示,本发明一种基于MongoDB的分片存储方法,包括应用节点、多个路由节点、分片存储服务器集群和配置节点;
其中应用节点包括一窗受理云平台应用系统和MongoDB驱动,该路由节点是mongos路由服务器,该分片存储服务器集群包括多个安装有MongoDB的分片存储服务器,该配置节点包括多个分别预置有整个存储机制的配置文件的配置服务器;
该一窗受理云平台应用系统通过MongoDB驱动访问mongos路由服务器读取或写入数据;mongos路由服务器启动时,则从配置节点加载预置于配置服务器的配置文件,并根据配置文件将来自一窗受理云平台应用系统的数据请求转发到对应的分片存储服务器上,配置节点维护配置文件,当配置文件内容发生变更时,配置节点会通知mongos路由服务器更新至最新状态,具体包括如下步骤:
步骤1、搭建配置服务器副本集
存储于分片存储服务器集群的元数据,包含了分片存储服务器集群数据集到各分片存储服务器的映射关系,查询路由就是通过这些元数据到特定的分片存储服务器上执行指定的数据操作;
创建分片存储服务器集群根目录mongodbShard,在根目录mongodbShard下创建分片存储服务器集群的配置目录conf,在配置目录conf添加并编辑config.conf文件(配置文件),然后用./mongod-f/mongodbShard/conf/config.conf命令分别启动配置节点中的配置服务器;每台配置服务器都操作以上的配置步骤;
以下为配置文件内容:
##配置文件内容
pidfilepath=/mongodbShard/config/log/configsrv.pid
dbpath=/mongodbShard/config/data
logpath=/mongodbShard/config/log/congigsrv.log
logappend=true
bind_ip=0.0.0.0
port=21000
fork=true
configsvr=true
#副本集名称
replSet=configs
#设置最大连接数
maxConns=20000
启动配置服务器后,登录任意一台配置服务器,执行初始化配置服务器副本集的操作,如下所示:
步骤2、搭建分片存储服务器副本集
配置第一个分片存储服务器的副本集,该分片存储服务器是实际存储数据的服务器,完成第一个分片存储服务器的副本集配置后,继续依次配置其他分片存储服务器副本集,所述的分片存储配置如下:
分别在配置目录conf下创建并编辑分片存储配置文件shard.config,然后用./mongod-f/mongodbShard/conf/shard1.conf命令分别启动各分片存储服务器的副本集;
该分片存储配置文件shard1.conf的内容如下:
#配置文件内容
pidfilepath=/mongodbShard/shard1/log/shard1.pid
dbpath=/mongodbShard/shard1/data
logpath=/mongodbShard/shard1/log/shard1.log
logappend=true
bind_ip=0.0.0.0
port=27001
fork=true
#打开web监控
httpinterface=true
rest=true
#副本集名称
replSet=shard1
shardsvr=true
#设置最大连接数
maxConns=20000
启动第一个分片存储服务器副本集后,登录任意一台分片存储服务器,执行以下分片存储服务器副本集的初始化操作:
步骤3、配置路由服务器副本集
该mongos路由服务器是一窗受理云平台应用系统的连接入口,是所有来自一窗受理云平台应用系统的数据请求的分发中心,负责把对应的数据请求转发到对应的分片存储服务器上;分别在配置目录conf下创建并编辑路由配置文件mongos.config,然后用./mongos-f/mongodbShard/conf/mongos.conf命令启动mongos路由服务器;
该路由配置文件mongos.conf的内容如下:
#内容
pidfilepath=/mongodbShard/mongos/log/mongos.pid
logpath=/mongodbShard/mongos/log/mongos.log
logappend=true
bind_ip=0.0.0.0
port=20000
fork=true
#监听的配置服务器,只能有1个或者3个configs为配置服务器的副本集名字
configdb=configs/A机器地址:21000,B机器地址:21000,C机器地址:21000
#设置最大连接数
maxConns=20000
步骤4、启用分片存储,并指定数据库和集合分片生效。
执行以下命令将mongos路由服务器和片存储服务器集群中所有的分片存储服务器关联起来,启用分片存储;
./mongo--port 20000
#使用admin数据库
use admin
#串联路由服务器与分配副本集
sh.addShard(″shard1/A机器地址:27001,B机器地址:27001,C机器地址:27001″)
sh.addShard(″shard2/A机器地址:27002,B机器地址:27002,C机器地址:27002″)
sh.addShard(″shard3/A机器地址:27003,B机器地址:27003,C机器地址:27003″)
#查看集群状态
sh.status();
上面的分片存储服务器副本集配置好以后,还必须指定分片存储服务器副本集里的数据库和需要分片的集合以及片键使分片存储生效。以下是一个例子,供参考:
./mongo--port 20000
mongos>use admin;
#指定testdb库分片生效
mongos>db.runCommand({enablesharding:″testdb″});//测试
{″ok″:1}
#指定数据库里需要分片的集合和片键,片键为id且唯一
mongos>db.runCommand({shardcollection:″testdb.table1″,key:{id:1},unique:true});//测试
{″collectionsharded″:″testdb.table1″,″ok″:1}
本发明的一窗受理云平台应用系统仅通过连接mongos路由服务器读写数据,mongos路由服务器从配置节点的配置服务器加载配置文件,从而实现对分片存储服务器副本集进行读写,将mongos路由服务器搭建成副本集,因为如果只有一台mongos路由服务器,万一机器死机了,那么应用系统就读取不到数据,这样保证了系统的安全稳定性。
本发明的配置节点所有的配置服务器都保存有整个存储机制的配置文件,如果只有一个的话,机器死机了,那么mongos路由服务器就读取不到配置文件,也就导致整个应用系统崩溃,所以配置节点配置服务器也要搭建成副本集的形式。
本发明搭建多个分片存储副本集,并且将分片存储副本集搭建在不同物理机器上。首先多个分片存储副本集是为了把数据分开存储,以降低数据数量级(如1000W的数据分十个分片那么每个分片约只存储100W的数据),从而提高性能;其次将每个分片存储副本集在不同机器上搭建副本集,这样可以保证数据的安全性。如上面的搭建,每个分片副本集都搭建在A、B、C三台物理机器上,而不是将分片副本集单独搭在一个物理机器上,这样的好处是比如有1000W的数据经过分片后,在三个分片副本集上分别存储着不同的约333W条数据,同时分片副本集里面的每个副本都有着相同的333W条数据,这样就保证每台机器上都有一份完整的数据,不至于因为一台机器彻底毁坏之后造成数据丢失,从而保证了系统数据的完整性、安全性。
基于以上的搭建机制,对数据的安全性、完整性、稳定性、可靠性等方面提供了保证,并且基于此机制可以提高数据库的性能,应用系统对数据库的各种操作由路由服务器进行智能调度。应用系统对数据库写入数据时,通过配置的片键智能地平均分配到三个分片存储服务器中(比如100万条数据,三个分片存储服务器,每条只存在其中一个分片存储服务器,100万条数据平均分配到三个分片存储服务器),相当于将写入数据库的压力分散到三台机器上,从而提高性能;然后从数据库读取数据的时候,由于每个分片存储器都是副本集,而且这个副本集是分散在三台机器上,所以读取压力也分散到三台机器上,提高了性能。
本发明的重点在于:通过MongoDB搭建一个高稳定性、高并发的分片存储集群机制,通过使用分片存储集群来保证大并发量的数据库操作,以及通过该机制可以最大限度的保证数据的安全可靠性,在一窗受理云平台中通过使用该机制,解决了平台的数据量大、并发量大、响应速度、数据安全等方面的问题。
以上所述,仅是本发明实施例而已,并非对本发明的机制范围作任何限制,故凡是依据本发明的机制实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (4)
1.一种基于MongoDB的分片存储方法,其特征在于:包括应用节点、多个路由节点、分片存储服务器集群和配置节点;
其中该应用节点包括一窗受理云平台应用系统和MongoDB驱动,该路由节点是mongos路由服务器,该分片存储服务器集群包括多个安装有MongoDB的分片存储服务器,该配置节点包括多个分别预置有整个存储机制的配置文件的配置服务器;存储于分片存储服务器集群的元数据,包含了分片存储服务器集群数据集到各分片存储服务器的映射关系,查询路由就是通过这些元数据到特定的分片存储服务器上执行指定的数据操作;该mongos路由服务器是一窗受理云平台应用系统的连接入口,是所有来自一窗受理云平台应用系统的数据请求的分发中心,负责把对应的数据请求转发到对应的分片存储服务器上;配置节点维护配置文件,当配置文件内容发生变更时,配置节点会通知mongos路由服务器更新至最新状态;
搭建配置服务器副本集,搭建分片存储服务器副本集,配置mongos路由服务器副本集,在分片存储服务器副本集配置好以后,将mongos路由服务器和片存储服务器集群中所有的分片存储服务器关联起来,启用分片存储,通过片键使分片存储生效;
该一窗受理云平台应用系统通过MongoDB驱动访问mongos路由服务器读取或写入数据;mongos路由服务器启动时,则从配置节点加载预置于配置服务器的关于整个存储机制的配置文件,并根据配置文件将来自一窗受理云平台应用系统的数据请求转发到对应的分片存储服务器上;应用系统对数据库写入数据时,通过配置的片键智能地平均分配到多个分片存储服务器中。
2.根据权利要求1所述的一种基于MongoDB的分片存储方法,其特征在于所述的配置服务器配置副本集的步骤如下所示:
创建分片存储服务器集群根目录mongodbShard,在根目录mongodbShard下创建分片存储服务器集群的配置目录conf,在配置目录conf添加并编辑配置文件,然后用./mongod-f/mongodbShard/conf/config.conf命令分别启动配置节点中的配置服务器。
3.根据权利要求1所述的一种基于MongoDB的分片存储方法,其特征在于所述的分片存储服务器配置副本集的步骤如下所示:
分别在配置目录conf下创建并编辑分片存储配置文件shard.config,然后用./mongod-f/mongodbShard/conf/shardl.conf命令分别启动各分片存储服务器的副本集。
4.根据权利要求1所述的一种基于MongoDB的分片存储方法,其特征在于所述的mongos路由服务器配置副本集的步骤如下所示:
分别在配置目录conf下创建并编辑路由配置文件mongos.config,然后用./mongos-f/mongodbShard/conf/mongos.conf命令启动mongos路由服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810577339.6A CN108829805A (zh) | 2018-06-06 | 2018-06-06 | 一种基于MongoDB的分片存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810577339.6A CN108829805A (zh) | 2018-06-06 | 2018-06-06 | 一种基于MongoDB的分片存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108829805A true CN108829805A (zh) | 2018-11-16 |
Family
ID=64144279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810577339.6A Pending CN108829805A (zh) | 2018-06-06 | 2018-06-06 | 一种基于MongoDB的分片存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108829805A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716698A (zh) * | 2019-09-30 | 2020-01-21 | 新华三大数据技术有限公司 | 数据分片副本部署方法及装置 |
CN110727738A (zh) * | 2019-12-19 | 2020-01-24 | 北京江融信科技有限公司 | 基于数据分片的全局路由系统、电子设备及存储介质 |
CN111614733A (zh) * | 2020-04-29 | 2020-09-01 | 厦门市美亚柏科信息股份有限公司 | 一种分布式多分片集群的部署方法、装置及存储介质 |
CN111708763A (zh) * | 2020-06-18 | 2020-09-25 | 北京金山云网络技术有限公司 | 分片集群的数据迁移方法、装置和分片集群系统 |
CN111711531A (zh) * | 2020-04-30 | 2020-09-25 | 福建天泉教育科技有限公司 | 集群数据管理方法、存储介质 |
CN111831663A (zh) * | 2020-07-28 | 2020-10-27 | 北京首汽智行科技有限公司 | 一种基于Mongodb数据库分片技术的数据查询方法 |
CN114385079A (zh) * | 2021-12-21 | 2022-04-22 | 联通智网科技股份有限公司 | 数据写入方法、数据读取方法和数据读写系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
CN104731907A (zh) * | 2015-03-24 | 2015-06-24 | 浪潮集团有限公司 | 基于nosql的数据存储方法 |
CN105701178A (zh) * | 2016-01-05 | 2016-06-22 | 北京汇商融通信息技术有限公司 | 分布式图片存储系统 |
CN105956041A (zh) * | 2016-04-26 | 2016-09-21 | 江苏物联网研究发展中心 | 基于Spring Data for MongoDB集群的数据模型处理方法 |
US20170286516A1 (en) * | 2010-12-23 | 2017-10-05 | Eliot Horowitz | Systems and methods for managing distributed database deployments |
-
2018
- 2018-06-06 CN CN201810577339.6A patent/CN108829805A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170286516A1 (en) * | 2010-12-23 | 2017-10-05 | Eliot Horowitz | Systems and methods for managing distributed database deployments |
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
CN104731907A (zh) * | 2015-03-24 | 2015-06-24 | 浪潮集团有限公司 | 基于nosql的数据存储方法 |
CN105701178A (zh) * | 2016-01-05 | 2016-06-22 | 北京汇商融通信息技术有限公司 | 分布式图片存储系统 |
CN105956041A (zh) * | 2016-04-26 | 2016-09-21 | 江苏物联网研究发展中心 | 基于Spring Data for MongoDB集群的数据模型处理方法 |
Non-Patent Citations (1)
Title |
---|
刘一梦: "基于MongoDB的云数据管理技术的研究与应用", 《G:\审查工作\工作目录\604-2018105773396-一种基于MONGODB的分片存储方法》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716698A (zh) * | 2019-09-30 | 2020-01-21 | 新华三大数据技术有限公司 | 数据分片副本部署方法及装置 |
CN110727738A (zh) * | 2019-12-19 | 2020-01-24 | 北京江融信科技有限公司 | 基于数据分片的全局路由系统、电子设备及存储介质 |
CN110727738B (zh) * | 2019-12-19 | 2020-08-07 | 北京江融信科技有限公司 | 基于数据分片的全局路由系统、电子设备及存储介质 |
CN111614733A (zh) * | 2020-04-29 | 2020-09-01 | 厦门市美亚柏科信息股份有限公司 | 一种分布式多分片集群的部署方法、装置及存储介质 |
CN111614733B (zh) * | 2020-04-29 | 2022-08-02 | 厦门市美亚柏科信息股份有限公司 | 一种分布式多分片集群的部署方法、装置及存储介质 |
CN111711531A (zh) * | 2020-04-30 | 2020-09-25 | 福建天泉教育科技有限公司 | 集群数据管理方法、存储介质 |
CN111708763A (zh) * | 2020-06-18 | 2020-09-25 | 北京金山云网络技术有限公司 | 分片集群的数据迁移方法、装置和分片集群系统 |
CN111708763B (zh) * | 2020-06-18 | 2023-12-01 | 北京金山云网络技术有限公司 | 分片集群的数据迁移方法、装置和分片集群系统 |
CN111831663A (zh) * | 2020-07-28 | 2020-10-27 | 北京首汽智行科技有限公司 | 一种基于Mongodb数据库分片技术的数据查询方法 |
CN114385079A (zh) * | 2021-12-21 | 2022-04-22 | 联通智网科技股份有限公司 | 数据写入方法、数据读取方法和数据读写系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829805A (zh) | 一种基于MongoDB的分片存储方法 | |
US20210073189A1 (en) | Systems and methods of database tenant migration | |
US9864876B2 (en) | Live editing and publishing of documents within a content management system using a hybrid draft authorization workflow | |
US7536383B2 (en) | Method and apparatus for searching metadata | |
US10831747B2 (en) | Multi stage aggregation using digest order after a first stage of aggregation | |
CN110765489A (zh) | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 | |
CN103455526A (zh) | 一种etl数据处理方法、装置及系统 | |
DE112013002542T5 (de) | Cloud-basierte Anwendungsressourcendateien | |
WO2015140728A1 (en) | Accelerated access to objects in an object store implemented utilizing a file storage system | |
CN102567522B (zh) | 一种智能卡文件系统的管理方法及设备 | |
US11281633B2 (en) | System and method for information storage using blockchain databases combined with pointer databases | |
US10621084B2 (en) | Efficient garbage collection in the presence of block dependencies | |
US20200301944A1 (en) | Method and apparatus for storing off-chain data | |
US11093143B2 (en) | Methods and systems for managing key-value solid state drives (KV SSDS) | |
CN109814896A (zh) | 服务器升级方法、装置、计算机系统及可读存储系统 | |
US11741144B2 (en) | Direct storage loading for adding data to a database | |
US11182378B2 (en) | System and method for committing and rolling back database requests | |
EP3814930A1 (en) | System and method for bulk removal of records in a database | |
CN109739828A (zh) | 一种数据处理方法、设备及计算机可读存储介质 | |
CN111090882B (zh) | 一种redis数据库的操作控制方法、装置及设备 | |
US11290532B2 (en) | Tape reconstruction from object storage | |
US7836079B2 (en) | Virtual universal naming convention name space over local file system | |
CN115544548A (zh) | 互联网金融风控进件系统接口字段校验与管理系统及方法 | |
CN109697029A (zh) | 一种远程计算机数据管理系统及其方法 | |
US11287982B2 (en) | Associating data management policies to portions of data using connection information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181116 |
|
WD01 | Invention patent application deemed withdrawn after publication |