首页 > 其他分享 >mogodb相关信息整理

mogodb相关信息整理

时间:2023-04-25 21:01:32浏览次数:27  
标签:Mongodb Chunk 信息 Server mogodb Key 分片 整理 查询


1,什么时候需要分片?


MongoDB的分片很是火热,但是问题是,我们什么时候才真的需要使用分片呢?当你需要使用到如下的几个标志性的事件时,就意味着该考虑使用分片了!


1、你用光了当前机器的磁盘空间


2、单个的Mongod已经无法提供你要的写入性能了


3、你想把大部分数据驻留在内存中籍此来提供更好的性能


一般意义而言,我们应该从非分片安装开始,只是到了非需要不可的时候才将Mongod转变为分片集群。


2,
Mongodb中一个被分片的Collection的所有数据都存放在众多的Chunk中。一个Chunk存放分片字段的一个区间范围的数据。选择一个好的分片字段非常重要,否则就会遭遇到不能被拆分的大Chunk。
用上述的日志为例,如果选择{server:1}来作为一个分片Key的话,一个server上的所有数据都是在同一个Chunk中,很容易想到一个Server上的日志数据会超过200MB(默认Chunk大小)。如果分片Key是{server:1,time:1},那么能够将一个Server上的日志信息进行分片,直至毫秒级别,绝对不会存在不可被拆分的Chunk。
将Chunk的规模维持在一个合理的大小是非常重要的,只有这样数据才能均匀分布,并且移动Chunk的代价也不会过大。


3,
使用分片的一个主要原因之一是分散写操作。为了实现这个目标,尽可能的将写操作分散到多个Chunk就尤为重要了。
用上述的日志实例,选择{time:1}来作为分片key将导致所有的写操作都会落在最新的一个Chunk上去,这样就形成了一个热点区域。如果选择{server:1,application:1,time:1}来作为分片Key的话,那么每一个Server上的应用的日志信息将会写在不同的地方,如果有100个Server和应用对,有10台Server,那么每一台Server将会分担1/10的写操作。


4,
另外一个需要考虑的是任何一个查询操作将会由多少个分片来来提供服务。最理想的情况是,一个查询操作直接从Mongos进程路由到一个Mongodb上去,并且这个Mongodb拥有该次查询的全部数据。因此,如果你知道最为通用的查询操作的都以server作为一个查询条件的话,以Server作为一个起始的分片Key会使整个集群更加高效。
任何一个查询都能执行,不管使用什么来作为分片Key,但是,如果Mongos进程不知道是哪一个Mongodb的分片拥有要查询的数据的话,Mongos将会让所有的Mongod分片去执行查询操作,再将结果信息汇总起来返回。显而易见,这回增加服务器的响应时间,会增加网络成本,也会无谓的增加了Load。
5,
正如在别的章节中提到索引的一样,如果只有一部分的索引被读或者更新的话,通常会有更好的性能,因为“活跃”的部分在大多数时间内能驻留在内存中。本文上述的所描述的选择分片Key的方法都是为了最终数据能够均匀的分布,与此同时,每一个Mongod的索引信息也被均匀分布了。相反,使用时间戳作为分片key的起始字段会有利于将常用索引限定在较小的一部分。


6,
(1)Mongodb的不足之处


1、在集群分片中的数据分布不均匀


2、单机可靠性比较差


3、大数据量持续插入,写入性能有较大波动


4、磁盘空间占用比较大


(2)Mongodb的过人之处


1、无模式


2、查询与索引方式灵活,是最像SQL的Nosql


2、支持复制集、主备、互为主备、自动分片等特性


7,

标签:Mongodb,Chunk,信息,Server,mogodb,Key,分片,整理,查询
From: https://blog.51cto.com/u_16088628/6225174

相关文章

  • 4.25学生信息管理系统1.基本框架
    一问题描述 设计一款可以存储,查询,修改,删除信息的学生信息管理系统。二设计思路采用多文件多函数三基本框架#include"StudentMangerSystem.h"intmain(){ while(1) { Welcome();//欢迎界面 charch=_getch(); switch(ch) { case'1':InputStudent();//录入学......
  • vue2项目中调取登录接口登录以后获取个人信息以后,储存在哪里,怎么在不同的页面展示想
    在Vue2项目中,可以将个人信息存储在Vuex状态管理中或者浏览器的本地存储中,具体取决于项目的需求和规模。1.Vuex状态管理在Vuex中定义一个user模块,用于存储用户信息,可以在登录成功后将用户信息存储到该模块中。```javascript//store/user.jsconststate={userInfo:null}......
  • delphi 仿一下手机端淡入淡出的信息提示框
    先看效果:设计界面也很简单: 下面这个是个From,不是Frame.把它的边框设置为none,然后position设置在父级中央或者桌面中央,看个人喜欢吧.加个label,弯角搞一搞,其他也搞得好看一点.这里推荐SC组件.然后加个计时器.这里说一下定时器的interval属性,时间越长,越显得卡顿,上面......
  • python整理
                      ---python异步处理---1,第一类面向切面AsyncMixin:异步处理基类,包含queue和thread元组async_thread:异步method处理类,将方法加入到AsyncMixin的queue中async_class:异步class包装类,对class指定的异步method元组......
  • 智安网络 |关于《等保合规,保障信息安全》
    随着信息化发展,网络安全面临越来越多的威胁与挑战,为了确保信息安全,各国政府纷纷制定安全法规和政策。中国政府实施等保工作可以说是中国信息安全保障的一项重要措施。为进一步完善安全保障机制,促进信息化和网络安全的发展,国家互联网信息办公室出台了“网络安全等级保护(以下简称等......
  • SOA服务切分原则整理
    1,什么是服务的颗粒度?一般的说法,服务颗粒度(servicegranularity)就是指一个服务包含的功能大小。举个例子,对于电信九七系统中的营业受理来说,提交客户订单就是一个典型的粗粒度的服务,而实现这个提交订单服务的一系列内部操作,比如说创建客户资料,生成客户订单,记录......
  • 多项目并行,如何用飞项快速获取关键信息与进展?
    在企业中,多项目并行是常态。项目经理身兼数职,既要掌握多个项目的关键信息,也要关注卡点与延期风险,跟踪关键任务进度。但常常存在与多个项目负责人对接信息延迟、环节卡点不清晰、文件繁多凌乱导致效率底下的问题。今天就来说说项目经理如何使用飞项高效管理多个项目,一起来看看吧!......
  • Python语言学习讲解十九: 异常信息的详细获取
    由于近期忙着手游发布,所以这几天没有及时更新望各位学者见谅。年底了,各大公司特别是游戏行业都着手赶年底末班车,给用户一个新年的礼物。在项目中出现了一些异常日志,但是并没有记录到详细的错误信息。特别是报错在哪一个文件哪一行等信息。[python] viewplain ......
  • SpringSecurity从入门到精通:授权基本流程&设置资源所需权限&封装权限信息
    授权基本流程在SpringSecurity中,会使用默认的FilterSecurityInterceptor来进行权限校验,在FilterSecurityInterceptor中会从SecurityContextHilder获取其中的Authentication,然后获取其中的权限信息,当前用户是否拥有访问当前资源所需的权限所以我们在项目中只需要把当前登......
  • SQL Inject漏洞手工测试:基于报错的信息获取(select/delete/update/insert)
    技巧思路:在MYSQL中使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息。select/insert/update/delete都可以使用报错来获取信息。背景条件:后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端。重点:基于报错的信息获取------三个常用的用来报错的函数updatexml()......