MongoDB 体系结构

1. NoSQL 和 MongoDB

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

NoSQL 数据库四大家族

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

MongoDB 是一个基于分布式文件存储的数据库,由 C++ 编写,可以为 WEB 应用提供可扩展、高性能、易部署的数据存储解决方案。

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

2. MongoDB 体系结构

MongoDB 体系结构

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 一样,支持内嵌的文档对象和数组对象,但是 BSONJSON 没有的一些数据类型,如 DateBinary 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 可以嵌套。

MongoDBDocument 中可以出现的数据类型

数据类型 说明 解释说明 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 put song.mp3
上一篇:Spring Boot属性配置文件详解


下一篇:【bzoj3522/4543】[POI2014]Hotel加强版(长链剖分+dp)