1 MongoDB简介
一、MongoDB简介
1、MongoDB简介
MongoDB 是一个可扩展 、 开源 、 表结构自由 、 用 C ++ 语言编写且面向文档的数据库 ,旨在为 Web 应用程序提供高性能 、 高可用性且易扩展的数据存储解决方案 。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品 , 是非关系数据库当中功能最丰富 、 最像关系数据库的 NoSQL 数据库 ; 它支持的查询语言非常强大 , 其语法有点类似于面向对象的查询语言 , 可以实现类似关系数据里单表查询的绝大部分功能 , 而且
还支持对数据建立索引 。
MongoDB 不是在实验室里面凭空想象出来的产品 , 它是 l 〇 gen 公司的工程师根据实际的需求而设计的 , 主要基于以下几点考虑 , 需要一种新的数据库技术来满足数据存储层的水平扩展 , 而且要容易开发 , 能够存储海 ft 的数据 ; 一种非关系的结构是使数据库能支持水平扩展的最好方案 ; 文档数据模型 ( BSON ) 容易编码和管理 , 将内部相关的数据放在一起能够提高数据库的操作性能 。
MongoDB 服务端可运行在 Linux 、 Windows 或 OS X 平台 , 支持 32 位和 64 位应用 ,默认监听端口为 27017 。 MongoDB 的内存管理依赖于操作系统的自动内存管理机制 ,而且通过 Map 对数据文件进行内存映射 , 因此推荐 MongoDB 运行在 64 位平台上 ,否则在 32 位模式受虚拟内存地址大小的限制 , 而且运行时支持的最大文件尺寸也只能为2 GB 。 当然对于测试和开发环境我们可以在 32 位模式下进行 , 生产环境上最好是部署在 64 位上
![](https://img2018.cnblogs.com/blog/533377/201903/533377-20190314095440085-1151583919.jpg)
2、Mongodb的特点:
- 高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
- 面向集合存储,易存储对象类型的数据。
- 模式自由。
- 支持动态查询。
- 支持完全索引,包含内部对象。
- 支持查询。
- 支持复制和故障恢复。
- 使用高效的二进制数据存储,包括大型对象(如视频等)。
- 自动处理碎片,以支持云计算层次的扩展性
- 支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程序, 社区中也提供了对Erlang及.NET等平台的驱动程序。
- 文件存储格式为BSON(一种JSON的扩展)
- 可通过网络访问
3、mongodb适合地场景
适用场合
1)网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
2)缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源 过载。
3)大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
4)高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。
5)用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。
不适用场合
1)高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
2)传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
4、目前谁在使用mongodb?
![](https://img2018.cnblogs.com/blog/533377/201903/533377-20190314095440851-1613028608.jpg)
二、MongoDB与关系数据库概念
Database == Database
Collection == Table
Document == Row
三、Mongodb几个重要的进程介绍
1、mongod 进程
Mongod.exe 为启动此数据库实例进程对应的可执行文件 , 是整个 MongoDB 中最核心
的内容 , 负责数据库的创建 、 删除等各项管理工作 , 运行在服务器端为客户端提供监听 ,
相当于 MySQL 数据库中的 mysqld 进程 。
启动数据库实例会用到以下命令 。
>mongod --config E: \MongoDB-win32-i386-2.6. 3\test_single_instance\123 .conf
配置文件 123. C 〇 nf 内容如下所示 。
dbpath = E:\MongoDB-win32-i386-2.6.3\test_single_instance\data
logpath = E: \MongoDB-win32-i386-2.6. 3\test_single_instance\logs\123 . log
journal = true
port = 50000
auth = true
参数说明:
- dbpath 为数据库文件存储路径 ;
- logpath 为数据库实例启动 、 运行 、 错误曰志文件 ;
- journal启动数据库实例的日志功能 , 数据库岩机后重启时依赖它恢复 ;
- port 数据库实例的服务监听端口 ;
- auth 启动数据库实例的权限控制功能 。 其他可选参数可以通过 mongo d - hd p 查看
2、mongo 进程
mongo 是一个与 mongod 进程进行交互的 JavaScript Shell 进程 , 它提供了一些交互的接口函数用于系统管理员对数据库系统进行管理 , 如下面命令所示 。
>mongo --port 50000 -username xxx-password xxx-authenticationDatabase admin
参数说明:
- port 为 mongod 进程监听的端口
- username 为连接数据库的用户名 ,
- password 为连接数据库的密码 ,
- authenticationDatabase 为要连接的数据库 。
上述命令连接成功后 , 进程就会提供给用户一个丨 avaScript Shell 环境 , 通过一些函数接口来管理数据库 , 其他参数可通过 mongo--help 选项查看
3、其他进程
3.1 mongodump
提供了一种从 mongod 实例上创建 BSON dump 文件的方法
mongodump --port 50000 — db eshop — out e:\bak
参数说明:
- -- port 表示 mongod 实例监听端口
- -- db 表示数据库名称
- -- out 表示备份文件保存目录
更多可选参数可通过 mongodump - help 查看 。
3.2 mongorestore
能够利用这些 dump 文件重建数据库 , 常用命令格式如下 。
3.3 mongoexport
是一个将 MongoDB 数据库实例中的数据导出来生产 JSON 或 CSV 文件的工具 , 常用命令格式如下 。
mongoexport --port 50000 - db eshop — collection goods — out e :\ goods.json
3.4 mongoimport
是一个将丨 SON 或 CSV 文件内容导入到 MongoDB 实例中的工具 , 常
用命令格式如下 。
mongoimport --port 50000 — db eshop --collection goods --file e :\ goods.json
3.5 mongos
是一个在分片中用到的进程 。 所有应用程序端的查询操作都会先由它分析 , 然后将查询定位到具体某一个分片上 , 它的作用与 mcmgod 类似 , 客户端的 mongo
与它连接 。
3.6 mongofiles
提供了一个操作 MongoDB 分布式文件存储系统的命令行接口 , 常用命令如下 。
mongofiles--port 400〇 9 _-db mydocs--local D :\ 算法导论学习资料 .pdf put algorithm —introduction.pdf
它表示将本地文件 D :\ 算法导论学习资料 . pdf 上传到数据库 mydoc 中保存 。
3.7 mongostat
提供了一个展示当前正在运行的 mongod 实例的状态工具 , 相当于UNIX / Linux 上的文件系统工具 vmstat , 但是它提供的数据只与运行着的 mongod 或 mongos
的实例相关 。
3.8 mongotop
提供了一个分析 MongoDB 实例花在读写数据上的时间的跟踪方法 。 它提供的统计数据在每一个 collection (表 ) 级别上
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">