NoSQL 之 MongoDB
MongoDB 是一个基于分布式文件存储
的数据库(支持海量数据存储),旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是所有非法关系型数据中,最像关系型数据库的一款NoSQL产品。MongoDB使用Bson(Json)表示一条记录,这就导致MongoDB的数据结构非常松散。
MongoDB常规概念
集合:MongoDB去除了传统数据库以表为单位对记录的管理模式,因为以表为单位管理,导致建立表单的时候,每一则记录都必须遵循建表的语法约束,极大降低了插入效率以及存储效率。MongoDB提倡建立一个无模式的表,不需要用户在建表的时候指定约束和字段,所以对MongoDB而言所谓表就是以一个集合数组而已[]
,没有任何语法约束,导致了集合中的元素(记录)可以无模式化存储。
文档:一个文档就表示集合中一条记录,类似于传统数据库中的一则Record。因为集合无模式,就导致了集合中的记录支持稀疏
存储.因为稀疏存储可以有效的利用磁盘空间。
[ -- collection|表
{id:1,name:"zhangsan",sex:true,info:"..."}, -- document | 记录
{id:2,name:"lisi",info:"..."},
{id:3,name:"wangwu",hobbies:["TV","GAME"]},
]
数据库:用于管理和分类集合。MongoDB中的数据库类似于MySQL中的数据库,主要用于对集合管理。
MongoDB特性
- 无模式存储 - schema less (没有表结构)
- 不支持事务(推荐使用单个文档,不推荐表连接)
- 单个Document最大存储16MB数据。
- MongoDB支持GridFS存储,可以高效的存储大文件。
- MongoDB不支持表连接,推荐单个document的查询。
- MongoDB支持丰富索引类型,优化用户的查询和搜索
MongoDB使用场景
- 网站数据存储-复制及高度伸缩性
- 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。(不多)
- 大尺寸、低价值的数据 :一些归档数据
- 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库。
MongoDB使用
- 基本安装(3.6版本)
参考:https://docs.mongodb.com/v3.6/tutorial/install-mongodb-on-red-hat/
[root@centos ~]# touch /etc/yum.repos.d/mongodb-org-3.6.repo #创建MongoDB下载源
[root@centos ~]# vi /etc/yum.repos.d/mongodb-org-3.6.repo
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=0
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
[root@centos ~]# yum install -y mongodb-org
- 启动MongoDB服务
[root@centos ~]# mkdir -p /root/data/db #创建mongodb的数据库目录
[root@centos ~]# mongod --dbpath /root/data/db --port 27017 --bind_ip 192.168.128.128
Ctrl+c 终止数据库服务,可以尝试使用一下命令让mongodb后台运行
[root@centos ~]# mkdir -p /root/data/db
[root@centos ~]# mongod --dbpath /root/data/db --port 27017 --bind_ip 192.168.128.128 --fork --syslog
about to fork child process, waiting until server is ready for connections.
forked process: 9786
child process started successfully, parent exiting
- 连接MongoDB服务
[root@centos ~]# mongo --port 27017 --host 192.168.128.128
在线访问Shell链接