monogo分片

b63bfd5d40377e5b6911af1532d41fb8d7a.jpg

一、概念

1)概述

可以满足MongoDB数据量大量增长的需求。

当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

2)组件

下图展示了在MongoDB中使用分片集群结构分布:

fbd5883243ff3fa94e6c7fe506d274ae918.jpg

上图中主要有如下所述三个主要组件:

  • Shard:

用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障

  • Config Server:

mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

  • Query Routers:

前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

 

 

二、实际操作

分片结构端口分布如下:

Shard Server 1:27020

Shard Server 2:27021

Shard Server 3:27022

Config Server :27100

Route Process:27017

 

 

1、启动Shard Server

● 创建shard目录

 

# mkdir -p /www/mongoDB/shard/s0
# mkdir -p /www/mongoDB/shard/s1
# mkdir -p /www/mongoDB/shard/s2
# mkdir -p /www/mongoDB/shard/log

● 启动Shard

# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork

# /usr/local/mongoDB/bin/mongod --port 27021 --dbpath=/www/mongoDB/shard/s1 --logpath=/www/mongoDB/shard/log/s1.log --logappend --fork
# /usr/local/mongoDB/bin/mongod --port 27022 --dbpath=/www/mongoDB/shard/s2 --logpath=/www/mongoDB/shard/log/s2.log --logappend --fork

2、启动Config Server

 

# mkdir -p /www/mongoDB/shard/config
# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork

注意:这里我们完全可以像启动普通mongodb服务一样启动,不需要添加—shardsvr和configsvr参数。因为这两个参数的作用就是改变启动端口的,所以我们自行指定了端口就可以。

 

3、启动Route Process

 

/usr/local/mongoDB/bin/mongos --port 27017 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500

说明:mongos启动参数中,chunkSize这一项是用来指定chunk的大小的,单位是MB,默认大小为200MB.

 

4、配置Sharding

使用MongoDB Shell登录到mongos,添加Shard节点

 

 

# /usr/local/mongoDB/bin/mongo admin --port 27017
MongoDB shell version: 2.0.7
connecting to: 127.0.0.1:40000/admin
> db.runCommand({ addshard:"localhost:27020" })
{ "shardAdded" : "shard0000", "ok" : 1 }
> db.runCommand({ addshard:"localhost:27021" })
{ "shardAdded" : "shard0001", "ok" : 1 }
> db.runCommand({ addshard:"localhost:27022" })
{ "shardAdded" : "shard0002", "ok" : 1 }

#设置分片存储的数据库

> db.runCommand({ enablesharding:"test" })
{ "ok" : 1 }

> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}})
{ "collectionsharded" : "test.log", "ok" : 1 }

5) 程序代码内无需太大更改,直接按照连接普通的mongo数据库那样,将数据库连接接入接口27017

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/weige1840/blog/2885343

MongoDB是分布式文档型数据库,具有实时、可扩展特性,C#作为.NET框架的主要语言,可通过官方驱动程序与MongoDB进行交互,以下是相关的使用及开发信息: ### 安装MongoDB驱动 在C#项目中使用MongoDB,首先要安装官方提供的MongoDB.Driver库。借助NuGet包管理器,安装过程较为简单。在Visual Studio中,右键点击项目,选择 “管理NuGet程序包”,在搜索框中输入 “MongoDB.Driver”,然后点击安装即可完成库的引入[^3]。 ### 建立与MongoDB的连接 以下是两种连接示例: #### 连接方式一 ```csharp using System; using System.Threading.Tasks; using MongoDB.Driver; using MongoDB.Bson; namespace MongoDBDemo { class Program { protected static IMongoClient _client; protected static IMongoDatabase _database; static void Main(string[] args) { // 数据库名称 string strCon = "mongodb://127.0.0.1:27017/bianchengbang"; var mongoUrl = new MongoUrlBuilder(strCon); string databaseName = mongoUrl.DatabaseName; _client = new MongoClient(mongoUrl.ToMongoUrl()); _database = _client.GetDatabase(databaseName); const string collectionName = "user"; // 集合名称 var collection = _database.GetCollection<BsonDocument>(collectionName); var filter = new BsonDocument(); var list = Task.Run(async () => await collection.Find(filter).ToListAsync()).Result; list.ForEach(p => { Console.WriteLine("姓名:" + p["name"].ToString() + ",电话:" + p["phone"].ToString()); }); Console.ReadKey(); } } } ``` #### 连接方式二 文档未给出具体代码,但连接方式一般类似,只是在连接字符串、配置等方面可能存在差异。 ### 基本操作 使用C#与MongoDB交互,还可以进行插入数据、查询数据、更新数据和删除数据等基本操作,以满足各种业务需求。通过这些基本操作,能在C#应用程序中使用MongoDB进行数据存储和检索[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值