登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学无止境

一点积累,与大家分享

 
 
 

日志

 
 

分布式文件存储的数据库开源项目MongoDB  

2010-11-10 17:56:55|  分类: web架构 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
面向集合存储,易存储对象类型的数据。
模式自由。
支持动态查询。
支持完全索引,包含内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性
支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
文件存储格式为BSON(一种JSON的扩展)
可通过网络访问

所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。

模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。

存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。

MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理

在Windows下安装:
1、 到http://www.mongodb.org/display/DOCS/Downloads 下载32位或者64位版本文件
2、 解压缩文件,例如我解压到E:\Workshop\No SQL\mongodb-win32-i386-1.4.2\
3、 WINDOWS会存放在C:\data\db下。可以在启动时使用--dbpath参数指定存储目录并启动。创建数据目录E:\Workshop\No SQL\mongodb-win32-i386-1.4.2\bin\data\db 如:E:\Workshop\NoSQL\mongodb-win32-i386-1.4.2\bin>"E:\Workshop\No SQL\mongodb-win32-i386-1.4.2\bin\mongod.exe" --dbpath .\data\db

启动数据库
1.jpg

现在我们就可以使用自带的shell工具来操作数据库了. (我们也可以使用各种编程语言的驱动来使用MongoDB, 自带的shell工具可以方便我们管理数据库)

2.jpg

“connecting to:” 这个会显示你正在使用的数据库的名称. 想换数据库的话可以: use mydb

3.jpg

使用.NET操作MongoDB非常简单,从github.com/samus/mongodb-csharp下载.NET的驱动,在项目中引用驱动的程序集就可以了。

要建立MongoDB的连接,你只要指定要连接到的数据库就可以。这个数据库不一定存在,如果不存在,MongoDB会先为你建立这个库。同时,在连接时你也可以具体指定要连接到的网络地址和端口。
1.string connstr = ConfigurationManager.AppSettings["simple"];
2.if (String.IsNullOrEmpty(connstr)) throw new ArgumentNullException("Connection string not found.");
3.Mongo mongo = new Mongo(connstr);
4.mongo.Connect();
配置
1.<?xml version="1.0" encoding="utf-8" ?>
2.<configuration>
3.<appSettings>
4.<add key="simple" value="<span href="http://dszhang.blog.163.com/blog/tag.php?name=Server" onclick="tagshow(event)" class="t_tag">Server</span>=localhost:27017"/>
5.</appSettings>
6.</configuration>
每个数据库都存在零个或多个集合,需要时你可以获得他们的列表:
1.Database simple = mongo["simple"];
2.List<string> collectionNames = simple.GetCollectionNames();
要获得某个特定集合,你可以指定集合的名字,并使用GetCollection()方法或者使Index:
1.IMongoCollection categories = simple.GetCollection("categories");
2.IMongoCollection categories = simple["categories"];
当你获取了这个集合对象,你就可以对数据进行增删查改之类的操作。

当你获得了一个集合对象,你就可以把文档插入到这个对象中。
1.var names = new string[] { "Bluez", "Jazz", "Classical", "Rock", "Oldies", "Heavy Metal" };
2.foreach (string name in names)
3.{
4.categories.Insert(new Document() { { "name", name } });
5.}
要查找我们上一步插入的那个文档,可以简单地使用findOne()操作来获取集合中第一个文档。这个方法返回一个单一文档.
1.var category = categories.FindOne(new Document { { "name", "Bluez" } });
2.Console.WriteLine("The id findOne" + category["_id"]);
  评论这张
 
阅读(733)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018