MongoDB的sharding功能是把数据分别存到不同的节点(shard),官方说明例子是:以居民住址为依据,分别存放信息到三台主机,则可能的一种情况是:A主机储存Alaska 到 Kansas州的居民,B主机储存Kentucky 到 New York州的居民,C主机储存North Carolina 到 Wyoming州的居民。
每次储存会通过“mongos
进程”作为路由分发,把信息储存到合适的节点(shard),而且每个查询会分发到合适的主机进行查询,因此mongoDB在面对大数据量时仍能有效运行。注意的是sharding功能是针对容器的(collection),不是整个数据库(DB),而且所有数据都是有序的,排序是通过:实现shard应用时指定一个或多个Key,所有的数据都将按Key排序。mongos进程是不存在持久状态的,它的状态由config server决定,config server任何改变都会反应到所有mongos进程。
每个shard节点都需要做balancing and failover(负载均衡和故障转移)。
MongoDB的sharding包括2个或多个shards,1个或多个配置服务器(config server),任意个路由进程(mongos),整体架构如下图:
图1 mongoDB的Sharding架构
每个shard包括1或多个服务器,mongod进程负责储存数据。每个shard会包括多对replica servers。
配置数据库保存记录每个shard所应记录的数据范围的元数据。如下图:
图2 config server保存的信息
在每个Shard里保存的容器(Collection),会包含不同的Chunk(片),每个chunk是collection里一组连续的数据,chunk的信息包括:collection, minKey, maxKey,每个chunk里的Key都是minKey到maxKey的范围内。对于config server 主要保存的信息就是各个chunk的信息。每个config server都包含一整套chunk信息。
在sharded系统上的操作分两种类型,一种是targeted(指定shard的),一种是global(全局的);其实很容易理解,凡是包含key的find,insert,update操作是targeted的,不包含的find,insert,update是global的,sort操作都是全局的,详情可参考官方文档(http://www.mongodb.org/display/DOCS/Sharding+Introduction#ShardingIntroduction-OperationTypes)。
再附上官方一张各服务器的部署图:
图3 mongo sharding cluster 部署图
图3的一种优化配置是server1~7都拥有mongos进程,这样在本地也可以进行应用服务器与mongos的通信。
分享到:
相关推荐
6. **分片(Sharding)**: - 分片用于扩展MongoDB的水平可扩展性,数据分布在多个物理服务器上,通过mongos进行数据路由。 7. **监控和日志**: - MongoDB提供了一套监控工具和日志记录,帮助管理员监控数据库...
3. 自动分片(Sharding):MongoDB的自动分片功能允许将大型数据集分散到多个服务器上,确保数据分布均匀,提高查询效率。 4. 复制集(Replication):通过复制集,MongoDB可以创建数据副本,以提高容错性和高可用...
同时,其内置的分片(Sharding)功能可水平扩展数据存储,满足大数据场景的需求。 3. **复制集**:MongoDB支持复制集,通过多个副本保证数据的高可用性,当主节点故障时,副本可以自动接管服务,确保业务连续性。 ...
MongoDB是一种先进的、开源的NoSQL数据库系统,其设计目标是提供高性能、高可用性和可扩展性。...对于开发人员来说,学习和掌握MongoDB不仅有助于提升工作效率,还能为应对日益复杂的数据需求提供有力支持。
2. **分布式架构**:MongoDB支持水平扩展,通过分片(sharding)技术可以在多台机器上分布数据,以处理大规模数据集。 3. **自动复制**:MongoDB提供复制集(replica sets),可以创建数据的多个副本,以提高可用性...
- **Sharding**:支持水平扩展,通过将数据分布在多个服务器上,提高处理大量数据的能力。 - **Security增强**:支持SSL连接、身份验证和角色权限控制,增强了安全性。 在实际应用中,你可能还需要了解如何创建...
总的来说,"mongodb-src-r2.2.2.tar.gz" 是一个宝贵的资源,对于学习 MongoDB 的内部工作原理、参与开发或调试 MongoDB 有着重要作用。通过深入研究源代码,开发者可以更好地理解和利用 MongoDB 的强大功能,满足...
2. **分布式架构**:MongoDB支持分片(Sharding)和复制集(Replica Sets),可以水平扩展以处理大量数据和高可用性。 3. **高性能**:MongoDB具有内置的缓存机制和索引支持,能够快速响应查询请求。 4. **灵活...
2. **水平扩展**: MongoDB支持分片(sharding)机制,允许通过添加更多硬件来水平扩展存储和处理能力。在3.0.5版本中,这方面的功能得到了进一步优化,确保了数据在多个节点间的均匀分布。 3. **复制集**: MongoDB...
2. 分布式架构:MongoDB具备分布式数据库的特性,支持分片(sharding)、副本集(replication)等机制,能够轻松扩展到多台服务器,提供高可用性和水平扩展性。 3. 强大的查询语言:MongoDB拥有丰富的查询和聚合...
3. 自动Sharding:MongoDB的分片功能可以自动将数据分布到多个节点,根据数据大小或分布策略进行负载均衡,从而提高性能和存储能力。 4. 查询性能:MongoDB提供了一个强大的查询引擎,支持丰富的查询语法,包括字段...
MongoDB 是一个高性能、开源、无...MongoDB 的学习并不止于安装,还包括数据模型设计、查询语言(MQL)、聚合框架、索引优化等多个方面。了解这些核心概念将有助于你更好地利用 MongoDB 来构建高效、可靠的应用程序。
通过分片(sharding)技术,数据可以分布在多个节点上,从而实现负载均衡和更高的存储能力。MongoDB的分片策略可以根据数据的键值范围或哈希值进行分配,以适应不同的应用场景。 总的来说,"mongodb-win32-x86_64-...
2. **横向扩展**:通过分片(Sharding)技术,可以将数据分散在多个服务器上,实现水平扩展,处理大数据量的需求。 3. **强大的查询能力**:支持丰富的查询语法,包括基于JSON的查询、聚合框架、正则表达式和地理...
分片(Sharding)功能使得数据可以在多台机器上分布式存储。 3. **副本集**:MongoDB的副本集功能提供数据冗余和高可用性,确保在主节点故障时能无缝切换到备用节点,保证服务连续性。 4. ** WiredTiger 存储引擎*...
3.4版本进一步优化了分片(sharding)和复制集(replica sets)功能,确保高可用性和数据安全性。 3. **高性能**:MongoDB利用内存映射技术,将数据文件映射到操作系统内存,实现快速读写。同时,3.4版本增强了索引...
3. **分片(sharding)**:MongoDB的分片功能允许在多台机器上水平扩展数据存储,以应对大数据量的需求。在2.2.6版本中,分片策略优化,提高了数据分布的均匀性。 4. **查询性能**:MongoDB 2.2.6对查询优化器进行了...
1. **分片集群**:MongoDB支持分片(Sharding)技术,允许用户将数据分布在多个服务器上,从而实现水平扩展,处理海量数据。在3.6.0版本中,分片策略和管理得到了优化,提供了更高效的数据分布和查询性能。 2. **...
2. **分布式架构**:MongoDB 支持分片(Sharding)和复制集(Replication),允许数据分布在多个服务器上,提高可用性和可扩展性。5.0.2 版本可能对这些特性进行了优化,以提供更好的性能和稳定性。 3. **聚合框架*...
分片(Sharding)则是用于扩展数据库水平可扩展性的机制,通过将数据分布在多个服务器上,实现负载均衡和大数据处理能力。 9. **安全性**:MongoDB 3.6引入了X509认证、角色基础的访问控制(RBAC)和加密功能,增强...