分布式文档存储独角兽MongoDB
一、MongoDB系统结构
1.1 NoSQL 和 MongoDB
NoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。其性能较高,不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵活。
NoSQL数据库四大家族 列存储 Hbase,键值(Key-Value)存储 Redis,图像存储 Neo4j,文档存储MongoDB
MongoDB 是一个基于分布式文件存储的数据库,由 C++ 编写,可以为 WEB 应用提供可扩展、高性能、易部署的数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、 最像关系数据库 的。在高负载的情况下,通过添加更多的节点,可以保证服务器性能。
1.2 MongoDB 体系结构

1.3 MongoDB 和RDBMS(关系型数据库)对比
| RDBMS | MongoDB |
|---|---|
| database(数据库) | database(数据库) |
| table (表) | collection( 集合) |
| row( 行) | document( BSON 文档) |
| column (列) | field (字段) |
| index(唯一索引、主键索引) | index (支持地理位置索引、全文索引 、哈希索引) |
| join (主外键关联) | embedded Document (嵌套文档) |
| primary key(指定1至N个列做主键) | primary key (指定_id field做为主键) |
1.4 BSON概述和应用
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和Binary Data类型。BSON可以做为网络数据交换的一种存储形式,是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想。
{key:value,key2:value2} 这是一个BSON的例子,其中key是字符串类型,后面的value值,它的类型一般是字符串,double,Array,ISODate等类型。
BSON有三个特点:轻量性、可遍历性、高效性
BSON在MongoDB中的使用
MongoDB使用了BSON这种结构来存储数据和网络数据交换。
把这种格式转化成一文档这个概念(Document),这里的一个Document也可以理解成关系数据库中的一条记录(Record),
只是这里的Document的变化更丰富一些,如Document可以嵌套。
MongoDB中Document 中 可以出现的数据类型
| 数据类型 | 说明 | 解释说明 | Document举例 |
|---|---|---|---|
| String | 字符串 | UTF-8 编码的字符串才是合法的。 | {key:“cba”} |
| Integer | 整型数值 | 根据你所采用的服务器,可分为 32 位或 64 位。 | {key:1} |
| Boolean | 布尔值 | 用于存储布尔值(真/假)。 | {key:true} |
| Double | 双精度浮点值 | 用于存储浮点值 | {key:3.14} |
| ObjectId | 对象ID | 用于创建文档的ID | {_id:new ObjectId()} |
| Array | 数组 | 用于将数组或列表或多个值存储为一个键 | {arr:[“a”,“b”]} |
| Timestamp | 时间戳 | 从开始纪元开始的毫秒数 | { ts: new Timestamp() } |
| Object | 内嵌文档 | 文档可以作为文档中某个key的value | {o:{foo:“bar”}} |
| Null | 空值 | 表示空值或者未定义的对象 | {key:null} |
| Date或者ISODate | 格林尼治时间 | 日期时间,用Unix日期格式来存储当前日期或时间。 | {birth:new Date()} |
| Code | 代码 | 可以包含JS代码 | {x:function(){}} |
| File | 文件 | 1、二进制转码(Base64)后存储 (<16M) 2、GridFS(>16M) | GridFS 用两个集合来存储一个件:fs.files与fs.chunks 真正存储需要使用mongofiles -d gridfs putsong.mp3 |
1.5 在Linux搭建和操作MongoDB
1.下载社区版 MongoDB 4.1.3
去官网下载对应的MongoDB 然后上传到Linux虚拟机
或者直接从云盘下载:MongoDB 4.1.3 云盘下载地址, 提取码: 5q74

将下载的mongodb上传到linux系统

2.将压缩包解压即可
tar -zxvf MongoDB-linux-x86_64-4.1.3.tgz

3.启动
./bin/mongod

启动失败,缺少目录

创建缺少的目录,重新启动mongodb

因为默认的启动方式是前台进程启动方式,所以另开一个操作窗口,查看后台进行

关闭mongodb,根据进程号,进行强制结束

4.指定配置文件方式的启动
./bin/mongod -f mongodb.conf
配置文件样例:
dbpath=/data/mongodb/
port=27017
bind_ip=0.0.0.0
fork=true
logpath = /data/mongodb/MongoDB.log
logappend = true
auth=false
创建配置文件,编写配置:vi mongodb.cnf

使用后端进程的启动方式,启动mongodb

MongoDB启动和参数说明
参数 说明
dbpath 数据库目录,默认/data/db
port 监听的端口,默认27017
bind_ip 监听IP地址,默认全部可以访问
fork 是否已后台启动的方式登陆
logpath 日志路径
logappend 是否追加日志
auth 是开启用户密码登陆
config 指定配置文件
mongo shell 的启动
启动mongo shell
./bin/mongo

指定主机和端口的方式启动
./bin/mongo --host=主机IP --port=端口


推出mongodb,使用快捷键ctrl+c即可
1.6 Mongodb GUI工具——NoSQLBooster(mongobooster)
Mongodb GUI工具 云盘下载地址, 提取码: 1504
NoSQLBooster是MongoDB CLI界面中非常流行的GUI工具。它正式名称为MongoBooster。NoSQLBooster是一个跨平台,它带有一堆mongodb工具来管理数据库和监控服务器。
这个Mongodb工具包括服务器监控工具,Visual Explain Plan,查询构建器,SQL查询,ES2017语法支持等等…它有免费,个人和商业版本,当然,免费版本有一些功能限制。NoSQLBooster也可用于Windows,MacOS和Linux。
创建新的连接:

关闭防火墙:

点击测试:

主操作页面:

使用可视化工具,进行重新操作:


本文深入解析MongoDB系统结构,对比关系型数据库,介绍BSON格式特性,并演示在Linux环境下搭建与操作MongoDB的过程,同时推荐GUI工具NoSQLBooster简化数据库管理。
840

被折叠的 条评论
为什么被折叠?



