【MongoDB】在window系统下搭建MongoDB的分片系统(一)

这篇主要讲述分片集群的主要原理

坦白说,刚看到这个分片系统(Sharding)有点蒙,感觉有点太高大上了。看美国作家Kyle Banker《Mongodb in action》没有明白。又查询资料,首先对与分片的做个说明。从其他书本上看的,说分片这是一种将海量数据水平扩展的数据库集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地够将一个分布式MongoDB集群。

一、角色说明

要构建一个MongoDB分片集群,需要三个角色:

  • shard server  即存储实际数据得分片,每个shard 可以是一个Mongod实例,也可以是一组mongod实例构成得Replica Set(也就是以前博客里说明的复制集)。为了实现每个shard内部的auto-failover,MongoDB官方建议每个shard 为一组Replica set。
  • Config Server  为了将一个特定的collection存储在多个shard中,需要为该collection指定一个shard key,例如{age:1},shard key可以决定该条记录属于哪个chunk。(chunk将在后面做详细介绍)Config Servers就是用来存储所有shard节点的配置信息,每个chunk的shard key范围,chunk在各shard的分布情况 、该集群中所有DB和collection的sharding
    配置信息
  • Route Process 这个一个前端路由,客户端由此接入,然后询问config servers需要到哪个shard上查询或把保存记录,在连接相应的shard进行操作,最后讲结果返回客户端。客户端只需要将原本发给mongod的查询或更新请求原封不动地发给rounting processl.而不必关心所操作的记录存储在哪个shard上,

二、框架结构

如果用一台物理机搭建分片集群:结构图如下:

每个服务器的端口不一样

三、框架说明

由于该分片集群比较抽象,我从其他数据上看到些说明,在这里做一个补充;

A:分片是把数据库分别在多个服务器上

B:查询一个用户实际涉及两次查询,第一次访问配置数据库以获得用用户的分片位置,第二次查询直接访问包含用户数据的分片

C:主要解决说明扩容问题以及负载均衡问题

D:手动管理分片的著名框架为: Twitter的Gizzard (详见:http://mng.bz/4qvd)

E :对现在系统的分片决定因素: 磁盘活动,系统负载以及最重要的工作集大小与可用内存的比例

F:chunk块的概念:它是位于一个分片中的一段连续的分片键范围。它们是种逻辑意义上的东西而不是物理意义上的。

G: 分片键: MongoDB的分片是基于范围的。也就是说分片的集合中每个文档都必须落在指定键的某个值范围。分片键就是让每个文档能在这些范围中找到自己的位置

H:拆分和迁移

这两个是完全不同的概念,拆分思想是当分片块数据达到一定大小时候把其分为两块。拆分后的两块都有相同数量的文档。拆分仅仅是个逻辑操作,不会影响分片集合中里文档的物理顺序。

迁移是由名为“balancer”均衡器软件进行管理的,它的任务是确保数据在各个节点中保持均匀分布。通过跟踪各分片块的数量,就能实现该功能。通常来说,当集群中拥有块最多的分片与拥有块最少的分片的块数差大于8时,均衡器就会发生一次均衡处理。

I:建议框架图

时间: 2024-10-22 23:12:51

【MongoDB】在window系统下搭建MongoDB的分片系统(一)的相关文章

在XP系统下搭建maven环境出的问题 Unable to locate the Javac Compiler in: C:\Program Files\Java\jre6\..\lib\tools.jar

Build errors for spider; org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project spider: Compilation failureUnable to locate the Javac Co

Linux下搭建PXE服务器安装Linux系统

PXE服务器安装与配置 花了一个星期主要研究这个,查阅了国内外相关的资料,发现这方面的东西还是比较少的,至少还没有完备的一个体系,这次测试过程发布出来 希望能帮助到一些人,有什么不懂得可以提出来,大家一起讨论. 原理: PXE是在没有软驱.硬盘.CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导. DHCP服务器:用来动态分配IP地址(同时分配子网掩码.网关.TFTP服务器地址.启动文件名.DNS服务器.时间服务器等等). TFTP服务器:用来提供启动文件的下载

虚拟机安装的三台Ubuntu系统下搭建Hadoop

在Linux 上安装Hadoop 教程 在虚拟机中安装的Ubuntu系统下搭建Hadoop集群时首先要解决的问题是将宿主机的文件拷贝到虚拟机上.采用的简单方法是宿主机使用Serv-U建立一个FTP然后在虚拟机上登录将文件拷出来. 要先熟悉Linux的基本概念和操作,如:cd.ls.tar.cat.ssh.scp.cp.rm.sudo.su.apt-get等操作. 一.实践环境: Ubuntu10.04+jdk1.6+hadoop-0.20.1 机器名 IP 作用 Master 192.168.1

如何在Mac OS系统下搭建Java开发环境图解

似乎有很久都没有写博客了,有工作的一些原因,也有个人的一些原因,今天刚好下雨,也没有地方可去,于是就窝在家里倒腾了下,本篇文章主要是简单介绍一下如何在Mac OS系统下搭建java的开发环境,做java开发工作,当然首先是得有一个java环境,所以接下来主要是简单介绍一下Mac环境下java环境变量的一些配置工作. 鄙人的电脑配置: 打开终端,查看10.9.5版本的系统用的是什么shell命令: 大家可以看到,控制台输出地bash,说明系统用的是Bourbe shell,是默认的Unix She

在Windows系统下搭建ELK日志分析平台

再记录一下elk的搭建,个人觉得挺麻烦的,建议还是在linux系统下搭建,性能会好一些,但我是在windows下搭建的,还是记录一下吧,像我这种记性差的人还是得靠烂笔头 简介: ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,他可以对你的日志进行收集.过

Ubuntu系统下搭建Python开发环境

之前演示了在Windows中安装Pycharm,很简单.下面介绍一下如何在Ubuntu中安装Pycharm 1.更新Python至3.5.1,执行以下命令: sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5 执行完成后,在shell中输入python3.5,出现如下对话框说明Python3.5更新成功. 2.安装JDK8,在终端中输入如下命令: sudo

Win7系统下搭建NFS服务器

Win7系统下搭建NFS服务器 采用Linux系统的服务器管理员都知道linux系统中能用NFS网络文件系统这套程序实现linux和unix系统之间的文件共享.那么能否在windows系统中采用NFS功能实现文件共享,让Linux系统来访问呢?答案是可以实现.但是必须在windows系统中安装一个实现NFS功能的第3方软件haneWin.本文在win7旗舰版系统中安装和配置NFS软件.然后在win7.Linux的客户端挂载我电脑共享的文件夹就可以实现了. 第1步,安装haneWin软件.下载地址

Linux系统下安装MongoDB 指南

1.首先连接到Linux系统. 2.到MongoDB官网下载合适的MongoDB安装压缩包. 下载页面:. 这里我下载的是Linux 64-bit legacy 下载地址:https://www.qixoo.qixoo.com.fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.7.tgz # wget 注:若无法正常下载文件,可以先下载到本机,再由本机上传到Linux服务器. 输入rz命令选择本机下载文件上传到服务器当前目录进行如下操作. 参考官

linux下搭建mongodb副本集

1.搭建三台mongodb服务器 cd /usr/local mkdir mongodb tar -zxvf mongodb-linux-x86_64-2.6.7.tgz cd mongodb-linux-x86_64-2.6.7 mv * /usr/local/mongodb cd /usr/local/mongodb mkdir data touch logs cd bin ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/loca