MongoDB是一个可扩展、开源、表结构自由、用C++语言编写且面向文档的数据库,在Web应用程序提供高效性能、高可用性且易扩展的数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库直接的产品,是非关系数据库中功能最丰富、最像关系数据库的NoSQL数据库;它支持的查询语言很是强大,其语法有点相似于面向对象的查询语言,能够实现相似关系数据里单表查询的绝大部分功能,切还支持对数据创建索引。
基本单元:
关系数据库---行
MongoDB --document(用于JSON格式相似的键值对来存储,MongoDB叫BSON对象)
MongoDB 日志功能 Journaling
对数据库的增、删、改 操做会记录在日志文件中。每100ms将内存中的数据刷到磁盘上,若是意外停机,在数据库从新启动时,MongoDB 经过Journaling日志功能恢复。
MongoDB 复制集 Replset (冗余)
一个复制集在生产环境中最少须要3台独立机器,主节点(primary),次节点(secondary),仲裁节点(只负责选出主节点)
支持 备份、自动故障转移,
MongoDB 支持自动分片 Sharding(扩展)
分片功能:实现海量数据的分布式存储
分片一般与复制集配合起来使用,实现读写分离、负载均衡,
经常使用命令:
mongod 启动数据库实例,负责数据库建立、删除等各项管理工做,运行在服务器端为客户端提供监听。
mongo 进入交互模式对数据库系统进行管理。
mongodump 建立BSON dump 文件的方法 例如:mongodump --port 27017 --db db1 --out /tmp/db1
mongoexport 将MongoDB数据实例中的数据
导出来生成JSON 或CSV文件的工具 ; 例如 mongoexport --port 27017 --db db1 --collection t1 --out /tmp/t1.json
mongoimport 将JSON或CSV文件内容
导入到MongoDB实例中的工具; 例如 mongoimport --port 27017 --db db1 --collection t1 --file /tmp/t1.json
mongos 是分片中用到的进程,全部应用程序端的查询操做都会先由它分析,而后将查询定位到具体某一个分片上,做用与mongod 相似,客户端的mongo与它链接。
mongofiles 提供了操做MongoDB分布式文件存储系统的命令行接口; 例如mongofiles --port 21707 --db mydb1 --local /tmp/123.txt put 123.txt (将/tmp/123.txt 上传到数据mydb1 中保存)
mongostat 提供了一个展现当前正在运行的mongod实例状态工具,提供的数据只与运行的mongod或mongos 的实例相关。
mongotop 提供一个分析MongoDB实例 在读写数据张的时间的跟踪方法。它提供的统计数据在美国collection 级别上。
mongorestore
mongooplog
MongoDB 适合的业务
Web应用程序
缓存系统
日志分析系统