MongoDB体系结构

1、NoSQL 和 MongoDB

        NoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。其性能较高,不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵活。

NoSQL数据库四大家族:

  • 列存储 Hbase,
  • 键值(Key-Value)存储 Redis
  • 图像存储 Neo4j
  • 文档存储MongoDB

        MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、最像关系数据库的。在高负载的情况下,通过添加更多的节点,可以保证服务器性能。

2、MongoDB 体系结构

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做为主键)

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有三个特点:轻量性、可遍历性、高效性

5、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 内嵌文档 文档可以作为文档中某个keyvalue o:{foo:“bar”}}
Null 空值 表示空值或者未定义的对象 {key:null}
Date或者ISODate 格林尼治时间 日期时间,用Unix日期格式来存储当前日期或时间。 {birth:new Date()}
Code 代码 可以包含JS代码 {x:function(){}}
File 文件

1、二进制转码(Base64)存储 (<16M)

2GridFS(>16M)

GridFS 用两个集合来存储一个文件:fs.filesfs.chunks 真正存储需要使用mongofiles -d gridfs put song.mp3

6、MongoDB在Linux的安装

(1)下载社区版 MongoDB 4.1.3

        去官网下载对应的MongoDB 然后上传到Linux虚拟机

(2)将压缩包解压即可

        tar -zxvf MongoDB-linux-x86_64-4.1.3.tgz

(3)启动

./bin/mongod

注意:启动之前我们先要创建一个目录,用于MongoDB存储一些数据信息,否则会启动失败

mkdir -p /data/db

(4)指定配置文件方式的启动

./bin/mongod -f mongo.conf

mongo.conf这个文件是需要我们自己创建的,进入MongoDB目录,使用vim mongo.conf创建配置文件,在里面添加下面这些信息
配置文件样例:
dbpath=/data/mongo/
port=27017
bind_ip=0.0.0.0
fork=true
logpath =
/data/mongo/MongoDB.log (mongo这个目录也需要我们自己创建)
logappend = true
auth=false

7、MongoDB启动和参数说明

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

8、mongo shell 的启动

启动mongo shell
        ./bin/mongo


指定主机和端口的方式启动
        ./bin/mongo --host=主机IP --port=端口(注意host与port属性两者可以单独使用)

注意:这些启动mongo server或者shell的命令都是进入解压后的MongoDB目录,然后才能执行这些命令,千万不要搞错了。

9、Mongodb GUI工具

MongoDB Compass Community

        MongoDB Compass Community由MongoDB开发人员开发,这意味着更高的可靠性和兼容性。它为MongoDB提供GUI mongodb工具,以探索数据库交互,具有完整的CRUD功能并提供可视方式。借助内置模式可视化,用户可以分析文档并显示丰富的结构。为了监控服务器的负载,它提供了数据库操作的实时统计信息。就像MongoDB一样,Compass也有两个版本,一个是Enterprise(付费),社区可以免费使用。适用于Linux,Mac或Windows。

NoSQLBooster(mongobooster)

        NoSQLBooster是MongoDB CLI界面中非常流行的GUI工具。它正式名称为MongoBooster。NoSQLBooster是一个跨平台,它带有一堆mongodb工具来管理数据库和监控服务器。这个Mongodb工具包括服务器监控工具,Visual Explain Plan,查询构建器,SQL查询,ES2017语法支持等等......它有免费,个人和商业版本,当然,免费版本有一些功能限制。NoSQLBooster也可用于Windows,MacOS和Linux。

        上面这些都是连接MongoDB的客户端工具,这里只是列举了一些,还有很多,比如Navicat是非常强大的数据库管理工具,十分推荐使用。不过用它连接会有一个小问题就是,当我们成功连接MongoDB数据库后,我们发现在页面端空空如也,没有一张表。这是因为Navicat把它隐藏了,这个时候我们打开查看按钮->点击显示隐藏的项目,这个时候,就会有它自带的表出现了。

MongoDB体系结构_第2张图片

你可能感兴趣的:(NoSQL,mongodb,数据库,nosql)