博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年12月26日

摘要: 在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存就吃不消了,针对这样的场景我们该如何应对。一:分片 mongodb采用将集合进行拆分,然后将拆分的数据均摊到几个片上的一种解决方案。下面我对这张图解释一下: 人脸: 代表客户端,客户端肯定说,你数据库分片不分片跟我没关系,我叫你干啥就干啥,没什么好商量的。 mongos: 首先我们要了解”片键“的概念,也就是说拆分集合的依据是什么?按照什么键值进行拆分集合.... 好了,mongos就是一个路由服务器,它会根据管理员设置的“片键”... 阅读全文

posted @ 2012-12-26 21:31 75077027 阅读(710) 评论(0) 推荐(1) 编辑

摘要: 这一篇我们以管理员的视角来看mongodb,作为一名管理员,我们经常接触到的主要有4个方面:1. 安装部署2. 状态监控3. 安全认证4. 备份和恢复,下面我们就一点一点的讲解。一:安装部署 我之前的文章都是采用console程序来承载,不过在生产环境中这并不是最佳实践,谁也不愿意在机器重启后满地找牙似找mongodb,在mongodb里面提供了一个叫做“服务寄宿”的模式,我想如果大家对wcf比较熟悉的话很容易听懂。好了,我们实践一下,这里我开一下D盘里面的mongodb。这里要注意的有两点: <1> logpath: 当我们使用服务寄宿的时候,用眼睛都能想明白肯定不会用conso 阅读全文

posted @ 2012-12-26 21:31 75077027 阅读(392) 评论(0) 推荐(0) 编辑

摘要: 从这一篇开始我们主要讨论mongodb的部署技术。 我们知道sql server能够做到读写分离,双机热备份和集群部署,当然mongodb也能做到,实际应用中我们不希望数据库采用单点部署,如果碰到数据库宕机或者被毁灭性破坏那是多么的糟糕。一:主从复制1: 首先看看模型图2: 从上面的图形中我们可以分析出这种架构有如下的好处: <1> 数据备份。 <2> 数据恢复。 <3> 读写分离。3:下面我们就一一实践 实际应用中我们肯定是多服务器部署,限于自己懒的装虚拟机,就在一台机器上实践了。第一步:我们把mongodb文件夹放在D盘和E盘,模拟放在多服务器上。第二步 阅读全文

posted @ 2012-12-26 21:30 75077027 阅读(777) 评论(0) 推荐(0) 编辑

摘要: 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵。 从算法上来说有5种经典的查找,具体的可以参见我的算法速成系列,这其中就包括我们今天所说的“索引查找”,如果大家对sqlserver比较了解的话,相信索引查找能给我们带来什么样的性能提升吧。 我们首先插入10w数据,上图说话:一:性能分析函数(explain)好了,数据已经插入成功,既然我们要做分析,肯定要有分析的工具,幸好mongodb中给我们提供了一个关键字叫. 阅读全文

posted @ 2012-12-26 21:29 75077027 阅读(705) 评论(0) 推荐(0) 编辑

摘要: 今天跟大家分享一下mongodb中比较好玩的知识,主要包括:聚合,游标。一: 聚合 常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce。<1> count count是最简单,最容易,也是最常用的聚合工具,它的使用跟我们C#里面的count使用简直一模一样。<2> distinct 这个操作相信大家也是非常熟悉的,指定了谁,谁就不能重复,直接上图。<3> group 在mongodb里面做group操作有点小复杂,不过大家对sql server里面的group比较熟悉的话还是一眼能看的明白的,其实gro 阅读全文

posted @ 2012-12-26 21:28 75077027 阅读(943) 评论(0) 推荐(0) 编辑

摘要: 一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我们知道JSON里面Value可能是“字符串”,可能是“数组”,又有可能是内嵌的一个JSON对象,相同的方式也适合于BSON。 常见的插入操作也就两种形式存在:“单条插入”和“批量插入”。 ① 单条插入 先前也说了,mongo命令打开的是一个javascript shell。所以js的语法在这里面都行得通,看起来是不是很牛X。 ② 批量插入 这玩意跟“单条插入”的差异相信大家应该知道,由于mongodb中没有提供给shell的“批量... 阅读全文

posted @ 2012-12-26 21:24 75077027 阅读(1548) 评论(0) 推荐(0) 编辑

摘要: 好了,有了前面的准备工作,我们可以开始在C#中使用MongoDB了。不过,由于本示例项目的代码也不少,因此本文将只展示与MongoDB交互的相关代码,更完整的代码请自行查阅示例项目。接下来,本文演示通过C#完成【客户资料】的一些基本的数据操作,还是先来定义一个客户资料的类型吧。public sealed class Customer{ [MongoId] public string CustomerID { get; set; } public string CustomerName { get; set; } public string ContactName { g... 阅读全文

posted @ 2012-12-26 21:04 75077027 阅读(15939) 评论(1) 推荐(2) 编辑

摘要: 下载地址: https://github.com/samus/mongodb-csharp我下载到的压缩包是:samus-mongodb-csharp-0.90.0.1-93-g6397a0f.zip 。这个压缩包本身也包含了一个Sample,有兴趣的可以看看它。我们在C#访问MongoDB所需的驱动就是项目MongoDB了。编译这个项目就能得到了,文件名:MongoDB.dll 阅读全文

posted @ 2012-12-26 21:03 75077027 阅读(2780) 评论(0) 推荐(1) 编辑

摘要: MongoDBMysql查询全部movies.find(new Document())SELECT * FROM movies条件查询movies.Find(new Document { { "title", "Hello Esr" } });SELECT * FROM movies WHERE title= 'foobar'查询数量movies.Find(new Document { { "title", "测试2" } }).Documents.Count();SELECT COUNT(*) F 阅读全文

posted @ 2012-12-26 20:56 75077027 阅读(1188) 评论(0) 推荐(1) 编辑

摘要: 用图书的示例来说明一下mongodb命令的使用。添加插入一个图书文档:db.books.insert({name:’深入学习MongoDB’});然后,可以看一下是否插入成功了:db.books.find();打印的结果类似这样:{ “_id” : ObjectId(“4f8e8a8e7a919fd8a1a37e2d”), “name” : “深入学习MongoDB” }好了,现在不想要这条记录了,删除掉:db.books.remove();再次使用find(),就不会打印内容了。这里要注意,remove()将删除集合中所有文档。如何删除指定条件的文档,后面再说。修改再次创建一个图书文档:db 阅读全文

posted @ 2012-12-26 20:51 75077027 阅读(697) 评论(0) 推荐(0) 编辑