当前位置:网站首页>史上最全MongoDB之初识篇
史上最全MongoDB之初识篇
2022-07-06 21:33:00 【janyxe】
MongoDB系列文章目录
如果本文对你们的开发之路有所帮助,请帮忙点个赞,您的支持是我坚持写博客的动力
前言
本系列课程将带着大家以面试题的方式 深入分布式专题之MongoDB。这篇文章带着大家初识MongoDB
什么是MongoDB
- MongoDB是一个基于 分布式文件存储 的数据库。由C++语言编写。
- 支持的数据结构非常松散,数据格式是 BSON
- 支持动态查询
- 支持复制和故障恢复
- 支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言
BSON(binary json)与JSON的区别
- Binary JSON ,和JSON一样支持内嵌的文档对象和数组对象,因此可以存储比较复杂的数据类型
- BSON 具有更快的遍历速度
- BSON 操作更简易
- BSON 增加了额外的数据类型
MongoDB 历史版本
- 2012年05月23日,MongoDB2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强。
- 2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库。
- 2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。
- 2013年08月20日,MongoDB 2.4.6 发布。
- 2013年11月01日,MongoDB 2.4.8 发布。
- 2017年03月17日,MongoDB 3.0.1发布。
- 2018年08月06日,MongoDB 4.0.2发布,支持多文档事务。
- 2019年08月13日,MongoDB 4.2.0 发布 ,引入分布式事务。
MongoDB 与关系型数据库(RDBMS)对比
共同点
关系型数据库(RDBMS) | MongoDB |
---|---|
数据库(database) | 数据库(database) |
表(table) | 集合(collection) |
行(row) | 文档(document) |
列(column) | 字段(field) |
索引(index) | 索引(index) |
主键(primary key) | _id(字段) |
视图(view) | 视图(view) |
表链接(table join) | 聚合操作($lookup) |
不同点
- MongoDB具有半结构化特点。不需要进行字段声明,且集合中字段不需要完全相同
- MongoDB没有外键约束,表连接需要使用聚合管道技术($lookup)实现
MongoDB 名称解释
名词 | 解释 |
---|---|
数据库(database) | 可以理解为逻辑上的名称空间,一个数据库包含多个不同名称的集合 |
集合(collection) | 相当于*关系型数据库(RDBMS)*中的表 |
文档(document) | 一个文档相当于数据表中的一行,由多个不同的字段组成 |
字段(field) | 文档中的一个属性,等同于关系型数据库(RDBMS) 的 列(column) |
索引(index) | 独立的检索式数据结构,与SQL概念一致 |
_id | 每个文档中都拥有一个唯一的id字段 |
视图(view) | 虚拟的(非真实存在的)集合,与SQL中的视图类似,其通过聚合管道技术实现 |
聚合操作($lookup) | 用于实现"类似"表连接(tablejoin)的聚合操作符 |
MongoDB 相比其他数据库的优势
- 文档存储
MongoDB 采用BSON/JSON文档存储数据 - 扩展性高且高可用
MongoDB 支持数据分片,复制集提供99.999%高可用 - 易于查询
JSON 结构和对象模型接近,开发代码量低 - 安全性高
MongoDB客户端生成的查询为BSON对象,降低了SQL注入的攻击的危险
边栏推荐
- Binary, octal, hexadecimal
- Top 50 hit industry in the first half of 2022
- Probability formula
- web服务性能监控方案
- 运算放大器应用汇总1
- Gpt-3 is a peer review online when it has been submitted for its own research
- ggplot 分面的细节调整汇总
- Que savez - vous de la sérialisation et de l'anti - séquence?
- 25. (ArcGIS API for JS) ArcGIS API for JS line modification line editing (sketchviewmodel)
- Docker部署Mysql8的实现步骤
猜你喜欢
VHDL implementation of single cycle CPU design
ABAP Dynamic Inner table Group cycle
Introduction to opensea platform developed by NFT trading platform (I)
QT 项目 表格新建列名称设置 需求练习(找数组消失的数字、最大值)
海思万能平台搭建:颜色空间转换YUV2RGB
Leetcode: interview question 17.24 Maximum cumulative sum of submatrix (to be studied)
Probability formula
When QT uses qtooltip mouse to display text, the picture of the button will also be displayed and the prompt text style will be modified
【mysql】mysql中行排序
链表面试常见题
随机推荐
VHDL implementation of single cycle CPU design
运算放大器应用汇总1
idea gradle lombok 报错集锦
Summer 2022 daily question 1 (1)
链表面试常见题
【mysql】mysql中行排序
【系统管理】清理任务栏的已删除程序的图标缓存
Implementation steps of docker deploying mysql8
golang 压缩和解压zip文件
Kalman filter-1
QT 项目 表格新建列名称设置 需求练习(找数组消失的数字、最大值)
What is the experience of maintaining Wanxing open source vector database
Mobile measurement and depth link platform - Branch
再AD 的 界面顶部(菜单栏)创建常用的快捷图标
Native MySQL
NoSQL之Redis配置与优化
Some thoughts on cross end development of kbone and applet
What is Ba? How about Ba? What is the relationship between Ba and Bi?
2022年上半年HIT行业TOP50
GPT-3当一作自己研究自己,已投稿,在线蹲一个同行评议