第二节 为什么用MongoDB及.NET开发入门

第二节 为什么用MongoDB及.NET开发入门

本节问题:

  • 为什么要用MongoDB
  • MongoDB for .net驱动选择
  • MongoDB for VS插件介绍
  • Demo介绍   

 一、为什么要用MongoDB

     为什么要用MongoDB取代传统关系型数据库?其实不是取代,只是对传统数据库的文档型补充。不是所有的数据都需要二维关系及多表对应的存储和查询,比如:文件的海量存储,只需Key与Value形式的存储及查询,同时这种方式的存储及查询都是高效的,可查看GirdFS,GirdFS是MongoDB的大文件存储系统,比如图片、音频、视频;数据如果不需要实时分析统计(包含读写比高的),也可以使用KV形式存储及查询。MongoDB介于缓存与数据库之间,存取速度逊于缓存但远远高于传统数据库。数据库存储以键值形式,你可能会认为对数据关系的处理及分析挖掘不及传统数据库,理论上是如此,但是MongoDB加入了对LINQ的支持,相信可以弥补其不足之处。做项目要求稳,对于MongoDB只是对传统数据库的做了一个类似二级缓存的补充即构建了持久层。可以利用cache缓存及Memcached做为一级缓存,MongoDB做为持久层对海量数据的一个缓冲查询,最终才是数据库及物理文件的存储。如果你对数据的分析挖掘统计不是实时的,也可以尝试使用MongoDB直接存取数据,数据后期处理工作可通过MongoDB同步到传统数据库。MongoDB的高伸缩性也益于集群扩展,特别是主从备份模式,一台主服务器负责读写操作,其它从服务则负责读和备份,可以有效的缓解读比高的负载。MongoDB支持主从转换,很不错的容灾及故障切换功能。

      用MongoDB做海量存储,又出现另一个问题读写频率与扩展?MongoDB可以根据应用程序的需要以两种模式来运行。第一种是“单主”(single master)模式,只有一台主服务器来处理所有的写操作。读操作能从中分离出去,通过任意数量的从服务器来进行读操作,这有利于提高读的可扩展性(使用场景:Sourceforge)。对于那些写数据量很大或写频率过高,单台主服务器无法处理的应用程序,可以使用MongoDB的自动分片模式,分片相于分布式存储,有点像关系SQL中的分表操作,但这些分表都可同时写操作,这种方式可有效缓解对单台服务器的压力。该模式下写操作会自动分配到任意数量的“片”中(一般是一台或一组MongoDB服务器),它们负责这部分数据集的写和读。无论使用哪种模式,MongoDB都会采取“强一致性”方法(你可以把MongoDB看成CAP理论中的C-P系统)。高可用性是通过将数据复制到多个MongoDB节点来实现的,每个节点都能及时成为一个分片的主服务器——MongoDB会自动处理故障转移。这能让你在维持相当高的写可用性的同时,拥有强一致性特性,这对一些用例来说非常重要。而MongoDB的分片支持复制和故障切换:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。MongoDB的自动分片模块 ("mongos"). 自动分片可以用于构建一个大规模的可扩展的数据库集群,这个集群可以并入动态增加的机器。(说细可参照此官方文档)

二、MongoDB for .net驱动选择

驱动源码地址:https://github.com/mongodb/mongo-csharp-driver/downloads(第一章提到的)

第二节 为什么用MongoDB及.NET开发入门_第1张图片

项目应用:

第一款:mongodb-csharp 项目地址:http://github.com/samus/mongodb-csharp  应用很广泛,更新速度也比较快,也加入了对LINQ的支持 

第二款:simple-mongodb 项目地址:http://code.google.com/p/simple-mongodb   以JSON为核心

第三款:NoRM 项目地址:http://github.com/atheken/NoRM  加入了对强类型的支持,是对一的补充

其它的也有,就不介绍了,经过综合比较选择了方案一,也就是第一章介绍的。方案一应该广泛用于项目了,并且保持较快的更新速度,同时也加了LINQ的支持,对于项目求稳的朋友是最好的选择,所以我也选择了方案一samus驱动,下载的是(samus-mongodb-csharp-0.90.0.1.zip)下载选Tar.Zip包含源码。另外一个包只有DLL。后面的文章中将一直使用samus开发包。

三、MongoDB for VS插件介绍

插件下载地址:http://www.cnblogs.com/ILoveSilence/archive/2010/08/10/mongowidget_1.html (园子里人做的)

插件和VS的数据源功能类似,想使用的就去看这篇博文吧。

四、Demo介绍

下载samus开发包后,你会发现里面已经有了samples了,那就开始我们的入门之路了

第二节 为什么用MongoDB及.NET开发入门_第2张图片

这Demo都不写了,直接拿来分析了

留意的朋友会发现,MongoDB的连接字符串是IP+端口,与传统的数据库引擎不同,包括数据的CURD操作都是键值方式,是不是有点像Memcached。

View Code

以上为MongoDB的数据库连接及CRUD操作(Document方式),我们来测试一下,数据库实例,表,记录是否创建成功了呢?

打开上一章提到的Bin文件夹下的Mongo.exe程序 按图示输入命令查看

第二节 为什么用MongoDB及.NET开发入门_第3张图片

入门Demo就演示到这里了,有点简单,我也在是一边学习一边分享。Demo就不提供下载了,都在samus里面,只是我这边加了注释。

你可能感兴趣的:(第二节 为什么用MongoDB及.NET开发入门)