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

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

起步数据库

当今咱们就算足以利用自带的shell工具来操作数据库了.
(我们呢可以用各种编程语言的教来利用MongoDB,
自带的shell工具得以便宜我们管理数据库)

“connecting to:” 这个会来得你方利用的数据库的名称. 想换数据库的口舌可:
use mydb

使用.NET操作MongoDB非常简单,从github.com/samus/mongodb-csharp下载.NET的叫,在路遭到援驱动的主次集就足以了。

万一树MongoDB的总是,你如果指定要连至的数据库就得。这个数据库不肯定在,如果无存在,MongoDB会先为你建之库房。同时,在连续时您为堪切切实实指定要连接到之网络地址和端口。

string connstr = ConfigurationManager.AppSettings[“simple”];

if (String.IsNullOrEmpty(connstr)) throw new
ArgumentNullException(“Connection string not found.”);

Mongo mongo = new Mongo(connstr);

mongo.Connect();

配置

<?xml version=”1.0″ encoding=”utf-8″ ?>

<configuration>

<appSettings>

<add key=”simple” value=”Server=localhost:27017″/>

</appSettings>

</configuration>

每个数据库都设有零个或多单集,需要常若可博得他们的列表:

Database simple = mongo[“simple”];

List<string> collectionNames = simple.GetCollectionNames();

设赢得有特定集合,你得指定集合的讳,并以GetCollection()方法还是一旦Index:

IMongoCollection categories = simple.GetCollection(“categories”);

IMongoCollection categories = simple[“categories”];

当您获取了此集对象,你虽可针对数据进行增删查改之类的操作。

当您收获了一个集合对象,你就是可管文档插入到此目标吃。

var names = new string[] { “Bluez”, “Jazz”, “Classical”, “Rock”,
“Oldies”, “Heavy Metal” };

foreach (string name in names)

{

categories.Insert(new Document() { { “name”, name } });

}

倘寻找我们上同一步插入的特别文档,可以简简单单地采取findOne()操作来取集合中第一单文档。这个点子返回一个十足文档.

var category = categories.FindOne(new Document { { “name”, “Bluez” } });

Console.WriteLine(“The id findOne” + category[“_id”]);

 

以平时使用方便,把mongod注册也系统服务
“D:\Workshop\Mongo\mongodb-win32-x86_64-2.0.3\bin\mongod”
–dbpath  “D:\Workshop\Mongo\mongodb-win32-x86_64-2.0.3\data” 
–logpath 
“D:\Workshop\Mongo\mongodb-win32-x86_64-2.0.3\log\mongodblog.log” 
–service  –serviceName MongoDB 

#注册为系统服务修改服务的端口 D:\mongodb\bin\mongod –-dbpath
“D:\data” –-port 10001

修改注册表,把—install 改成为—service

MongoDB : Windows
Service

mongodb小结

Going NoSQL with
MongoDB

http://cookbook.mongodb.org/

关于MongoDB在64个服务器上仍旧报 mmap failed with out of memory 错误的化解办法(附Mysql性能比测试)

通过 MongoDB 使用 NoSQL

http://msdn.microsoft.com/zh-cn/magazine/ee310029.aspx

http://msdn.microsoft.com/zh-cn/magazine/ff714592.aspx

http://msdn.microsoft.com/zh-cn/magazine/ff798277.aspx

http://www.ibm.com/developerworks/cn/opensource/os-mongodb4/index.html