关于MongoDB数据库自动分片技术的详细介绍 (关于mongodb文档说法正确的是)

教程大全 2025-07-18 19:58:30 浏览

mongoDB数据库 自动分片技术 就是将原先数据库中集合依据一定的规则切分成若干小块,这些分片小块统一由mongos路由管理,当有请求查询或写入时,路由会依据分片shard key规则找到对应的分片操作。分片解决了写密集操作,用于分散单一写 服务器 负载。亦或者原先的存储空间不够了,这个时候可能通过分片操作将之后的数据写入其它存储空间上。可以看出,集合的分片和数据库的分表类似,并且每个分片都支持写操作。

由于分片的出现,导致数据被分布式的存储到不同的服务器上,当某一服务器出现问题时就可能导致数据丢失,其次路由mongos也会出现问题,另外存储分片的信息的配置服务器也可能会发生问题。当然我们可以利用master salve/Replica sets机制去备份每个分片、Mongos、configs 。如下官网配置图示,即使我们使用服务器交叉备份也需要大量的服务器资源,因此分片是一件***耗费资源的事情。官网的配置图示

首先路由从config中读取配置信息,发生的分片动态增加也会通过mongos写入config servres中,当client有请求时通过mongos查找到对应的分片。可以看出分片使用的replica set备份模式,而mongos/config servrs则是多个服务器配置。下面就手动实现一下分片的过程。(换环境了继续昨天未完成的,前2天在笔记本上)

1)创建configs服务器

2)创建mongos服务器并指定依赖的配置服务器 (mongos依赖于配置服务器,mongos查询的分片信息都存储在configs中)

3)创建多个分片服务器 (负责数据存储)

为shard27017分片服务器 创建test库foo集合,并且为foo集创建name索引。

4)连接mongos服务器添加shard27017分片服务器到configs服务器中。

一旦分片添加成功,在mongos服务器中执行 show dbs就可以看到分片服务器的数据库,并且可以操作分片服务器的数据,下面为分片服务器的test库foo集合设置分片以及分片shard key。

注意:需要分片的集合 的shard key必须是索引键, (我们也可以在mongos为分片foo集合创建索引)

至此自动分片就创建完成了,可以在mongos或configs服务器查询分片信息。

当一个分片服务器存储不够时,通过像3)方式继续添加分片服务器,monogs会自实现这些分片的集群工作。

当需要移除分片时运行下面的命令,同时mongos路由会将此分片服务器上的信息移到其它分片上。

简单的分析一下这个shard key,当不是写密集操作时,而仅仅是因为存储空间不够了,这个shard key我们可以选用一些无上限范围的key,如创建时间等,这样新创建的记录都会写入新的分片服务器上。

当需要使每个分片均匀分布数据时,或者写入密集时,***选用有一定范围值的key,当然这个范围不能太小,像性别,真假等,这会导致只自动产生两个分片,所以一定要选择合适的shard key才能达到理想的效果。

关于MongoDB数据库的自动分片技术就介绍到这里,希望通过本次的介绍能够带给您一些收获。

【编辑推荐】

关于db文档说法正确的是

数据集的最基本组成单位是指rdd的什么属性

RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。 RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。 RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 RDD的属性一组分片(Partition),即数据集的基本组成单位。 对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。 用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。 默认值就是程序所分配到的CPU Core的数目。 一个计算每个分区的函数。 Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。 compute函数会对迭代器进行复合,不需要保存每次计算的结果。 RDD之间的依赖关系。 RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。 在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。

请问mongodb为什么比mysql效率高,求详细,

首先是内存映射机制,数据不是持久化到存储设备中的,而是暂时存储在内存中,这就提高了在IO上效率以及操作系统对存储介质之间的性能损耗。 (毕竟内存读取最快) 其次,NoSQL并不是不使用sql,只是不使用关系。 没有关系的存在,就表示每个数据都好比是拥有一个单独的存储空间,然后一个聚集索引来指向。 搜索性能一定会提高的。 第三,语言。 使用javascript语法进行操作更加高效、直接。 这些是MongoDB针对关系型数据库的效率要高的原因。 但是不能仅仅看重效率,这种数据库的设计带来的弊端也是有的。 例如数据关系的维护会带来很多冗余数据、客户端代码需要大量针对数据库进行的IO操作、数据挖掘难以实现等等。 所以,应当针对应用系统来选择合适的数据存储介质才是优先需要考虑的。

工程造价包含什么方面的内容?

课程设置:建设造价必备知识、工程技术与定额、在工程技术与定额中又分为建筑工程,装饰装修工程、安装工程、市政工程、园林绿化工程五个专业。 考试方式:造价员考试实行全省分片考试,统一阅卷;考试采用笔试。 1、必备知识的客观题分单项选择题、多项选择题和判断题三个部分;2、实际计算应用的主观题,按所包的专业以案例分析为主,考试前应携带相关定额。 考试管理:各专业报考人员必须同时参加两个科目的考试,在一个考试年度内两科成绩同时合格方能取得造价员资格证书。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐