Mongodb 基础知识:什么是文档数据库?
mongoDB 是一个“基于文档的数据库,旨在简化开发和扩展”。
这里很明显,mongoDB 的一些优点是 “简化开发和扩展”。那么它如何简化开发和扩展呢?这是我们稍后要认真研究的事情。
接着又提到了一个关键词,“文档数据库”,好吧,这里没听说过的朋友一头雾水,那我们就往下看吧
什么是文档数据库?

然后官方解释道:“MongoDB中的一条记录就是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象,字段值可以包含其他文档。”桌子和文件桌”。
这句话其实说得很清楚。它保存的是一个文档,所以相对于Mysql这样的关系型数据库,首先想到的是moon:“不用写DDL语句,保留表字段之间的关系”,不过可以保存在文档中你要。
后来,店员提到了文档数据库的“优点”:1:。即对象)对应于许多编程语言中的内置数据类型。
也就是说,文档中的“你自己定义数据类型”可以对应不同编程语言中不同的内置数据类型
- 2. 嵌入文档和表格,减少了对文档和表格的需求。昂贵的连接
最简单的表达方式就是类似于Mysql中的Join语句,但join语句较少
- 3。动态模式支持流畅的多态性。
这句话里的月亮是这样理解的。由于文档内容是定制的,因此有多种格式。例如,以下格式反映了其多态性
普通电话,具有打电话发短信的功能
{
"type": "basic_phone",
"message":1,
"call":1
}
iphone,具有打电话发短信的功能,并且还能玩游戏
{
"type": "iphone",
"message":1,
"call":1,
"game":1
}
集合/视图/按需实例视图

MongoDB将文档存储在集合中。集合类似于关系数据库中的表。
这个说法很容易理解,我就不解释了 Views 是基于表/集合进行动态查询的对象层。它可以是虚拟的或物理的(物化视图)。
主要特性

稍后我们会介绍mongoDB的一些主要特性
- 高性能
- 1。对嵌入式数据模型的支持减少了数据库系统中的 I/O 操作。
「什么是嵌入式数据模型」?MongoDB 提供高性能的数据持久性。特别是,对嵌入式数据模型的支持减少了数据库系统中的I/O操作(不需要涉及表查询)。索引支持更快的查询,并且可以包含嵌入文档和表中的键。
“为什么嵌入式模型可以减少数据库系统中的 I/O 操作?”
- 丰富的查询语言
MongoDB支持通用的查询语言,支持读写操作(CRUD)以及:数据合并文本搜索和地理空间查询。
“其实数据库有两个核心功能,存储+查询”。不同的数据库几乎都是围绕这两点来设计的,所以查询方式也非常重要。 MongoDB不「不支持SQL语句查询」,但是对于已经熟悉sql语句查询的人来说,官方给了我们一个非常简单的方法来了解什么是sql查询和mongo的比较询问
如上图 https://docs.mongodb.com/v4.2/reference/sql-comparison/
SELECT * FROM people = db.people.find
------------------------------------
SELECT user_id, status FROM people
=
db.people.find(
{ },
{ user_id: 1, status: 1, _id: 0 }
)
------------------------------------
SELECT user_id, status FROM people WHERE status = "A"
=
db.people.find(
{ status: "A" },
{ user_id: 1, status: 1, _id: 0 }
)
不对吗?这很容易理解。 ta 冗余”。
副本集是一组维护相同数据集合的 mongod 实例,提供冗余和更好的数据可用性。
- 水平扩展
MongoDB 提供水平可扩展性作为其一部分_核心_分布功能:在数据、机器集群之间。从 3.4 版本开始,MongoDB 支持在分片键上创建数据范围。在平衡集群中,MongoDB 控制范围覆盖的数量,并且只写入范围分片。
- 支持多个存储引擎 Tiger 存储引擎(包括支持静态加密)
- 内存存储引擎
- MongoDB 支持多种存储引擎:
此外,MongoDB 还提供可插拔存储引擎 API,允许第三方开发存储MongoDB 引擎。
这其实是“类似于mysql存储引擎的可插拔结构”这种更容易理解的架构图也是我们理解其数据最重要的方式之一”
我们可以看到,mongoDB架构有三个核心组件
- 数据分片(Shards)
- Shard用于存储实际的集群数据,可以是单个Mongod实例,也可以是副本集,在生产环境中,一个Shard就是通常是一组副本,可以防止某条数据出现个别故障点。
- 在分布式集合中,每个分片存储集合的部分数据(按分区键分割)。如果集合没有分片,则集合数据存储在数据库中。在主分片上。
- 配置服务器
- 存储集群元数据(metadata),包括每个分片的路由规则和块数据(分片数据块)。
- 查询路由器
- Mongos 是接入 Sharded Cluster,本身并不存储数据。Mongos 启动时,会从 Config Server 下载元数据,开始提供服务,并将用户请求正确路由到对应的 shard。
- 一个分发集群可以部署多个Mongos来分担客户端请求的压力。
其实到这里就快完成了,但是为了“加深”我们的“印象”和我的DB,我又在看mongoDB了。 ql 有什么区别?》
MongoDB 和 Mysql 有什么区别
数据库 | MongoDB | MySQL | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
数据库模型R'关系型❀存储方式 bson 格式 | 不同的机器内存存储方式不同,热点数据存储在物理内存中,这样就可以实现快速读写 | 不同的引擎有各自的特点 | ||||||||
事件 | 只支持单文档事件功能,一致性弱 | 支持事件函数 | 订单一个大空间 | join操作 | mongodb没有Joins | mysql支持加入,但是对于新技术,信息就足够了以上信息足以开始最重要的还是总结”,当你读到这些信息时,给你什么印象呢? 当你读到这篇关于mongoDB的文章时,你一定知道它是?自动容错和数据冗余(数据通过备份分布在不同的分片上)使其具有高可用性“ ![]() “支持一份文档的事物” . . . . . . . . . . . . . . . . . . |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。