MongoDB ----基于分布式文件存储的数据库

Posted konglingbin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB ----基于分布式文件存储的数据库相关的知识,希望对你有一定的参考价值。

参考: http://www.cnblogs.com/huangxincheng/category/355399.html

http://www.cnblogs.com/daizhj/category/260889.html

MongDB是一个高性能,开源,无模式的文档型NosQL数据库。

主要功能特性:

1.文件存储格式BSON(一种json的扩展) 
2.模式自由 
数据格式不受限了表的结构 
3.支持动态查询 
4.支持完全索引 
5.支持复制(其主从复制)和故障恢复 
6.使用高效的二进制数据存储,包括大型对象 
7.自动处理碎片,以支持云计算层次的扩展。 
8.支持Java、Ruby、Python、C++、php等多种语言 
9.内部支持javascript

MongoDB的优势

1.查询速度快 
2.高并发。可以达到2万个并发。 
3.高容量。支持10TB意思的数据量 
MongoDB使用场景 
1.网站数据 
2.缓存 
3.大尺寸、低价值的数据 
4.高伸缩的场景 
5.用于对象以及Json数据存储

MongoDB限制

1.在32位操作系统上,不支持大于2.5G的数据 
2.单个文件大小限制16M 
3.高度事务的系统 
4.传统商业智能应用

MongoDB与其他数据库区别

这里写图片描述

MongoDB安装

在这里,主要讲解的是win下安装,关于Linux下安装,随后会添加上。 
下载网址:官方网站(https://www.mongodb.org/downloads/#production) 
在这里使用的是win32

数据模型

一个MongoDB 实例可以包含一组数据库,一个DataBase 可以包含一组Collection(集合),一个集合可以包含一组Document(文档)。一个Document包含一组field(字段),每一个字段都是一个key/value pair。

key: 必须为字符串类型。

value:可以包含如下类型。

● 基本类型,例如,string,int,float,timestamp,binary 等类型。

● 一个document。

● 数组类型。

折叠编辑本段适用场景

MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS 系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,Mongo 适用于以下场景。

● 网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

● 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。

● 大尺寸、低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

● 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。

● 用于对象及JSON 数据的存储:Mongo 的BSON 数据格式非常适合文档化格式的存储及查询。

MongoDB 的使用也会有一些限制,例如,它不适合于以下几个地方。

● 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

● 传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

● 需要SQL 的问题。

 

创建数据目录

MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该放在根目录下((如: C:\\ 或者 D:\\ 等 )。

在本教程中,我们已经在 C 盘安装了 mongodb,现在让我们创建一个 data 的目录然后在 data 目录里创建 db 目录。

c:\\>cd c:\\

c:\\>mkdir data

c:\\>cd data

c:\\data>mkdir db

c:\\data>cd db

c:\\data\\db>

你也可以通过 window 的资源管理器中创建这些目录,而不一定通过命令行。

 


命令行下运行 MongoDB 服务器

为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。

C:\\mongodb\\bin\\mongod --dbpath c:\\data\\db

如果执行成功,会输出如下信息:

2015-09-25T15:54:09.212+0800 I CONTROL  Hotfix KB2731284 or later update is not
installed, will zero-out data files
2015-09-25T15:54:09.229+0800 I JOURNAL  [initandlisten] journal dir=c:\\data\\db\\j
ournal
2015-09-25T15:54:09.237+0800 I JOURNAL  [initandlisten] recover : no journal fil
es present, no recovery needed
2015-09-25T15:54:09.290+0800 I JOURNAL  [durability] Durability thread started
2015-09-25T15:54:09.294+0800 I CONTROL  [initandlisten] MongoDB starting : pid=2
488 port=27017 dbpath=c:\\data\\db 64-bit host=WIN-1VONBJOCE88
2015-09-25T15:54:09.296+0800 I CONTROL  [initandlisten] targetMinOS: Windows 7/W
indows Server 2008 R2
2015-09-25T15:54:09.298+0800 I CONTROL  [initandlisten] db version v3.0.6
……

连接MongoDB

我们可以在命令窗口中运行 mongo.exe 命令即可连接上 MongoDB,执行如下命令:

C:\\mongodb\\bin\\mongo.exe

配置 MongoDB 服务

管理员模式打开命令行窗口

创建目录,执行下面的语句来创建数据库和日志文件的目录

mkdir c:\\data\\db
mkdir c:\\data\\log

创建配置文件

创建一个配置文件。该文件必须设置 systemLog.path 参数,包括一些附加的配置选项更好。

例如,创建一个配置文件位于 C:\\mongodb\\mongod.cfg,其中指定 systemLog.path 和 storage.dbPath。具体配置内容如下:

systemLog:
    destination: file
    path: c:\\data\\log\\mongod.log
storage:
    dbPath: c:\\data\\db

安装 MongoDB服务

通过执行mongod.exe,使用--install选项来安装服务,使用--config选项来指定之前创建的配置文件。

C:\\mongodb\\bin\\mongod.exe --config "C:\\mongodb\\mongod.cfg" --install

要使用备用 dbpath,可以在配置文件(例如:C:\\mongodb\\mongod.cfg)或命令行中通过 --dbpath 选项指定。

如果需要,您可以安装 mongod.exe 或 mongos.exe 的多个实例的服务。只需要通过使用 --serviceName 和 --serviceDisplayName 指定不同的实例名。只有当存在足够的系统资源和系统的设计需要这么做。

启动MongoDB服务

net start MongoDB

关闭MongoDB服务

net stop MongoDB

移除 MongoDB 服务

C:\\mongodb\\bin\\mongod.exe --remove

命令行下运行 MongoDB 服务器 和 配置 MongoDB 服务 任选一个方式启动就可以。

任选一个操作就好


MongoDB 后台管理 Shell

如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo.exe文件,MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。

当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):

> mongo
MongoDB shell version: 3.0.6
connecting to: test
……

由于它是一个JavaScript shell,您可以运行一些简单的算术运算:

> 2 + 2
4
>

db 命令用于查看当前操作的文档(数据库):

> db
test
>

插入一些简单的记录并查找它:

> db.runoob.insert({x:10})
WriteResult({ "nInserted" : 1 })
> db.runoob.find()
{ "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 }
>

第一个命令将数字 10 插入到 runoob 集合的 x 字段中。

以上是关于MongoDB ----基于分布式文件存储的数据库的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 怎么访问副本集

MongoDB入门二

[MongoDB]Python 操作 MongoDB

MongoDB_java连接MongoDB

MongoDB - Introduction to MongoDB, MongoDB Extended JSON

java操作mongodb