Code前端首页关于Code前端联系我们

Mongodb 基础知识:什么是文档数据库?

terry 2年前 (2023-09-26) 阅读数 45 #数据库

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基础知识:什么是文档型数据库?

MongoDB将文档存储在集合中。集合类似于关系数据库中的表。

这个说法很容易理解,我就不解释了 Views 是基于表/集合进行动态查询的对象层。它可以是虚拟的或物理的(物化视图)。

  • 按顺序查看。从版本 4.2 开始,MongoDB 在聚合管道中添加了 $merge 步骤。此步骤可以将管道的结果与现有集合合并,而不是完全替换现有集合。此功能允许用户创建按需物化视图,每次管道运行时都会更新结果集合的内容。
  • 主要特性

    mongodb基础知识:什么是文档型数据库?

    稍后我们会介绍mongoDB的一些主要特性

    • 高性能
      • 1。对嵌入式数据模型的支持减少了数据库系统中的 I/O 操作。

    「什么是嵌入式数据模型」?MongoDB 提供高性能的数据持久性。特别是,对嵌入式数据模型的支持减少了数据库系统中的I/O操作(不需要涉及表查询)。索引支持更快的查询,并且可以包含嵌入文档和表中的键。

    “为什么嵌入式模型可以减少数据库系统中的 I/O 操作?”

    • 丰富的查询语言

    MongoDB支持通用的查询语言,支持读写操作(CRUD)以及:数据合并文本搜索和地理空间查询。

    “其实数据库有两个核心功能,存储+查询”。不同的数据库几乎都是围绕这两点来设计的,所以查询方式也非常重要。 MongoDB不「不支持SQL语句查询」,但是对于已经熟悉sql语句查询的人来说,官方给了我们一个非常简单的方法来了解什么是sql查询和mongo的比较询问mongodb基础知识:什么是文档型数据库?

    如上图 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基础知识:什么是文档型数据库?

    我们可以看到,mongoDB架构有三个核心组件

    • 数据分片(Shards)
      • Shard用于存储实际的集群数据,可以是单个Mongod实例,也可以是副本集,在生产环境中,一个Shard就是通常是一组副本,可以防止某条数据出现个别故障点。
      • 在分布式集合中,每个分片存储集合的部分数据(按分区键分割)。如果集合没有分片,则集合数据存储在数据库中。在主分片上。
    • 配置服务器
      • 存储集群元数据(metadata),包括每个分片的路由规则和块数据(分片数据块)。
    • 查询路由器
      • Mongos 是接入 Sharded Cluster,本身并不存储数据。Mongos 启动时,会从 Config Server 下载元数据,开始提供服务,并将用户请求正确路由到对应的 shard。
      • 一个分发集群可以部署多个Mongos来分担客户端请求的压力。

    其实到这里就快完成了,但是为了“加深”我们的“印象”和我的DB,我又在看mongoDB了。 ql 有什么区别?》

    MongoDB 和 Mysql 有什么区别

    数据库MongoDBMySQL
    数据库模型R'关系型❀存储方式 bson 格式 不同的机器内存存储方式不同,热点数据存储在物理内存中,这样就可以实现快速读写 不同的引擎有各自的特点
    事件 只支持单文档事件功能,一致性弱支持事件函数订单一个大空间join操作mongodb没有Joinsmysql支持加入,但是对于新技术,信息就足够了以上信息足以开始​最重要的还是总结”,当你读到这些信息时,给你什么印象呢?

    当你读到这篇关于mongoDB的文章时,你一定知道它是?自动容错和数据冗余(数据通过备份分布在不同的分片上)使其具有高可用性“

  • 对 mongoDB 的请求需要一层”路由来将请求连接到特定的数据共享”mongodb基础知识:什么是文档型数据库?

    “支持一份文档的事物”

    . . . . . . . . . . . . . . . . . .
  • 版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    热门