MongoDB 体系结构
2021/6/29 2:23:12
本文主要是介绍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 体系结构
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 | 内嵌文档 | 文档可以作为文档中某个 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 |
这篇关于MongoDB 体系结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站