`
不爱不见
  • 浏览: 284982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MongoDB 高级篇:分片

阅读更多


可伸缩性是MongoDB的一个重要特征。虽然大多数数据库都支持手动分片,MongoDB支持自动分片。这篇文章提供了MongoDB自动分片的方法,15分钟,在MongoDB中创建分片。

数据分割以及在不同机器存储数据的过程称之为分片。通过在多台机器上分割数据,使得数据库系统能存储更多的数据,和处理更多的负载,在此过程中不需要更多更强大的机器。

有两种类型的分片,手动和自动分片。

在手动分片中,应用软件的代码管理不同服务器上的数据,并且在适当的服务器上查询并返回数据。手动分片可以使用虚拟数据库软件包完成。

MongoDB自动分片中,数据库服务器集群或shards处理数据的分割和数据自动重新负载。
自动分片

MongoDB分片的基本概念是分割集群成更小的块,或是文档。这些分档可以分布于很多的shards,这样每个shard负载总数据集得子集。
举个例子,思考一下。当你从集合选择一个key安装分片时,并使用key分割数据。这个key称为shard key。
假设你有一个联系人的集合。如果我们选择“姓”作为shard key,那么一个分片可以存储“姓”以A-F开头的,下一个分片可以存储“姓”以G-P开头的,最后一个分片存储“姓”以Q-Z开头的。当你添加和删除分片时,MongoDB会重新做数据的负载,这样每个分片会获取一定量的流量和实际量的数据。
所以你决定什么开始分片呢?考虑一下几个因素:

1. 你目前的机器的磁盘什么时候用完
2. 你希望比单一的mongod处理速度更快
3. 你希望在内存中保留更多的数据以改善性能
安装分片

分片需要包括不同的组件:
1. shard
分片存放数据集合的子集。分片可以是单一的mongod服务器(生产环境/测试环境),也可以是集合的复制(生产环境)
2. mongos
这是发送请求的过程。它发送数据请求,并且聚合服务器响应。它不会存储任何数据或是配置信息,虽然它从配置服务器做信息cache。
3. config server
配置服务器存储集群的配置信息。比如,数据位于哪个分片上,使用mongos决定请求的发送。
启动服务器

首先我们需要启动配置服务器和mongos。我们需要启动配置服务器,因为mongos使用配置服务器获取它的配置信息。

    $ mkdir –p ~/dbs/config $ ./mongod –dbpath ~/dbs/config –port 20000

现在我们启动mongos进程。发送服务器甚至不需要数据目录,但需要知道配置服务器的位置。

    $ ./mongs –port 30000 –configdb localhost:20000

由mongos管理分片。
添加新分片

动正常的mongod实例(或是复制)

    $ mkdir –p ~/dbs/shard1 $ ./mongod –dbpath ~/dbs/shard1 –port 10000

现在连接到已启动的mongos进程,添加分片到集群
首先,打开shell连接到mongos进程:

    $ ./mongo localhost:30000/admin

现在使用addshard数据库命令添加这个分片

    >db.runCommand({addshard: “localhost:10000”, allowLocal:true}) { “added”:”localhost:10000”, “ok”:true }

如果你运行分片在localhost才需要“allowLocal”这个键,让MongoDB知道你是在生产环境中,而且正在做什么。
数据分片

为了允许MongoDB分布数据,你必须开启数据和集合上分片。比如,启用数据库acme的分片功能:

    >db.runCommand({“enablesharding”:”acme”})

一旦已经在数据库acme上启用,通过运行shardcollection命令对集合分片:

    >db.runCommand({“shardcollection”:”acme.products”,”key”,:{“_id”:1}})

集合根据”_id”键实现了分片。当有数据被添加到acme上时,它会自动地根据”_id”值分布在分片上。

转自: http://simple-is-better.com/news/626
分享到:
评论

相关推荐

    前端 Vue+Node+MongoDB高级全栈开发

    2. **水平扩展**:MongoDB 支持分片,即数据分布到多台机器上,以提高性能和存储容量。 3. **自动故障恢复**:MongoDB 的副本集功能提供了自动故障恢复机制,确保数据的安全性和高可用性。 4. **强大的查询语言**:...

    Mongodb视频-燕十八 mongodb视频教程全集21讲+mongodb高级实战开发视频教程

    #### 第二部分:MongoDB高级实战开发 **第8讲:高级查询** - 正则表达式匹配、文本搜索等高级查询技巧。 - `$lookup`操作符实现多集合联合查询的方法。 - 使用聚合框架进行复杂查询示例。 **第9讲:性能调优** - ...

    mongodb数据库的学习与总结

    本篇文章将深入探讨MongoDB的核心概念、主要特点、安装配置、数据模型、查询操作以及高级特性。 1. MongoDB核心概念: - 文档(Document):MongoDB中的数据以键值对的形式存储,这种形式被称为文档,类似于JSON...

    NodeJS-Mongodb-learners:MongoDB大学实例

    除了基本操作,你还可以探索更高级的功能,如数据分片、备份恢复、安全性和性能优化等。在Node.js-Mongodb-learners-master这个项目中,可能包含了这些主题的示例代码,通过实践这些示例,你可以更好地理解和掌握...

    MongoDB in Action

    - **MongoDB概述**:MongoDB是一款开源的、基于分布式文件存储的文档型数据库系统,它支持动态查询和自动分片等功能。 - **文档型数据库模型**:这种模型允许数据以类似于JSON的对象形式存储,提供了极大的灵活性。 ...

    mongoDB-CURD操作-----JAVA

    了解这些基础后,你可以进一步探索更多高级特性,如索引、副本集、分片等,以便在实际项目中更高效地利用MongoDB。记住,实践是学习的最佳途径,动手尝试这些示例,结合MongoDB_Demo中的代码,你会更快掌握MongoDB与...

    免费的mongoDB

    该指南可能深入讲解了MongoDB的核心特性,包括复制集、分片集群、数据备份与恢复策略、安全性和权限管理等。复制集是MongoDB高可用性的关键,它允许多个副本同步数据,以确保服务的连续性。而分片集群则支持水平扩展...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    12.2 MongoDB中的自动分片 12.3 片键 12.3.1 将已有的集合分片 12.3.2 递增片键还是随机片键 12.3.3 片键对操作的影响 12.4 建立分片 12.4.1 启动Config Server配置服务器 12.4.2 启动mongos...

    nodejs+ mongoDb全套视频

    高级篇则深入探讨MongoDB的性能监控、备份与恢复、安全策略以及OpsManager的使用。 项目实战部分是学习过程中不可或缺的实践环节,它将带你运用所学知识去解决实际问题。通过构建Web应用、API服务、实时数据处理等...

    MongoDB In Action

    探讨了 MongoDB 分片集群的设计理念,分片的基本原理、分片集群的构建步骤及其在大数据处理中的应用。 - **第 10 章:部署与管理**。详细讲述了 MongoDB 在实际生产环境中的部署策略,包括性能调优、备份恢复方案等...

    MongoDB_in_Action

    - **复制与分片章节**:讲解MongoDB的复制机制与分片策略,以及如何实现高可用性和扩展性。 #### 三、Java与MongoDB集成 - **标签信息**:“java mongo”表明本书还关注Java开发者如何使用MongoDB。 - **Java驱动...

    MongoDB权威指南(第2版)

    - 分片介绍:学习MongoDB的分片技术,理解如何通过水平扩展来处理大数据量。 - 分片配置:配置和管理分片集群,包括分片键的选择、路由策略和均衡器的工作原理。 6. **安全与备份** - 安全性:学习MongoDB的安全...

    mongodb.zip

    对于大型应用,MongoDB支持分片(sharding)和复制集(replica sets),确保数据的高可用性和水平扩展性。Java驱动程序提供了与这些高级功能交互的API。 10. **性能优化**: 通过设置连接池、使用索引、批量操作...

    MongoDB安装教程(只在自己的机器测试通过)

    MongoDB是一款流行且功能强大的分布式文档数据库,常用于构建现代应用程序。...同时,学习和理解MongoDB的数据模型、查询语法以及复制集、分片等高级特性,将有助于你更好地利用这个强大的数据库系统。

    MongoDB_MongoDB_

    - **分片**:对于大数据量的存储,可以启用分片(Sharding)来分散负载并提升性能。 11. **安全性和认证** MongoDB支持用户认证和角色管理,你可以通过MongoDB的用户管理功能为数据库设置访问控制。在.NET Core中...

    MongoDB原生高可用及分布式能力解析.pptx

    MongoDB 的分布式能力主要体现在**副本集**和**分片集群**上。 **2.1 副本集 - writeConcern/readConcern** - **writeConcern**:定义了写操作必须被多少个节点确认才能视为成功,保证数据的持久化程度。 - **...

    深入学习MongoDB及MongoDB权威指南(第2版)

    此外,它还可能涵盖了复制集和分片的概念,这些是构建高可用性和可扩展性的关键特性。 《MongoDB权威指南(第2版)》则更深入地探讨了MongoDB的高级主题,如数据备份与恢复策略、监控和性能调优。此书可能会介绍...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    12.2 MongoDB中的自动分片 12.3 片键 12.3.1 将已有的集合分片 12.3.2 递增片键还是随机片键 12.3.3 片键对操作的影响 12.4 建立分片 12.4.1 启动Config Server配置服务器 12.4.2 启动mongos...

Global site tag (gtag.js) - Google Analytics