ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

(1.1)Mongodb简介

2022-04-06 15:31:22  阅读:175  来源: 互联网

标签:1.1 Mongodb 数据库 SQL Json 文档 简介 MongoDB 分片


【1】MongoDB简介

(1.1)什么是MongoDB

MongoDB是一个文档数据库(以Json 为数据模型),由 C++语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案;

MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是 BSON(一种类似于 JSON 的二进制形式的存储格式,简称binary Json,比起JSON多了一些元数据),和 JSON 一样支持内嵌的文档对象和数组对象,因此可以存储比较复杂的数据类型。

MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

原则上 Oracle 和 Mysql 能做的事情,MongoDB都能做(包括 ACID 事务)。

 

4.2之后,支持了跨分片多文档事务(分布式事务);

  如:一个事务写了3个文档,分别想到3个不同分片 A B C,如何保证全部正常或者全部失败;

(1.2)MongoDB与关系型数据库的概念对比

  

 

 

数据库(database):最外层的概念,可以理解为逻辑上的名称空间,一个数据库包含多个不同名称的集合;

集合(collection):相当于 SQL 中的表,一个集合可以存放多个不同的文档;

文档(document):一个文档相当于数据表中的一行,由多个不同的字段组成;

字段(field):文档中的一个属性,等同于关系型数据库中的列(column)

索引(index):独立的检索式数据结构,与SQL 的概念一致。

_id:每个文档中都有一个唯一的 _id 字段,相当于SQL 中的主键(primary key)

视图(view):可以看做一种虚拟的集合,与 SQL 中的视图类似。从MongoDB 3.4版本开始提供了视图功能,其可以通过聚合管道技术实现;

聚合操作($lookup):MongoDB 用于实现 “类似” 表连接(table join) 的聚合操作符

内容对比:

  

 

 

尽管这些概念大多与 SQL 标准定义类似,但 MongoDb 与传统 RDBMS 仍然存在不少差异,包括如下:

半结构化:

  在一个集合中,文档所拥有的字段并不是需要是相同的,而且也不需要对所用的字段进行生命。因此,MongoDB 具有很明显的半结构化特点

  除了松散的表结构,文档还可以支持多级的嵌套、数组等灵活的数据类型,非常契合面向对象的变成模型。

弱关系:

  MongoDB 没有外键的约束,也没有很强大的表连接能力。类似的功能需要使用聚合管道技术来弥补;

【2】MongoDB技术优势

MongoDB基于灵活的 Json 文档模型,非常适合敏捷式的快速开发。

与此同时具有与生俱来的高可用、高水平扩展能力;使得它在处理海量数据、高并发的情况时具有一定优势;

  • Json 结构的对象模型接近,开发代码量低
  • Json的动态模型意味着更容易响应新的业务需求
  • 复制集提供99.999%高可用
  • 分片架构支持海量数据和无缝扩容

(2.1)解决关系型数据库的复杂关联(简单直观)

如下图,复杂的关系型表 =》 变成了 Json 文档组织

  

 

 

(2.2)文档模型包含了各种类型(快速的开发)

如下图,比如有多个邮件、有多个 interests 兴趣爱好,可以用数组组成;

如果是关系型数据库,可能需要可能多表构建,然后多个兴趣爱好时需要多行存储;

  

 

 

(2.3)无感的在线加字段(灵活解决业务变化)

如果我们要加字段,加数据对于关系型数据库来说,大表加字段简直是一种灾难;

但如果用 Mongodb,如下图,我们直接可以在线无任何业务影响的加个社交字段;这里还可以用一个 version 字段来做好版本管理;

  

 

 

(2.4)集群-原生高可用

  • Replica Set - 2 to 50 个成员
  • 自动选举、恢复
  • 多中心容灾能力
  • 滚动服务 - 最小化服务终端

如下图

  

 

 

这里还可以延迟复制,比如延迟10分钟;以便解决误删、误操作等问题;

(2.5)集群-横向扩展节点能力

如下图,在应用访问过来后,由MongoOS(每个节点都有)根据元数据 config 信息,来找到请求对应要访问哪个分片;

如果是加一个节点,一个命令就可以了很方便;

  

 

【3】MongoDB 应用场景

(3.1)基本应用场景

  

 

(3.2)什么时候考虑用 MongoDB

如下列,有一点就可以考虑使用;

  

 

标签:1.1,Mongodb,数据库,SQL,Json,文档,简介,MongoDB,分片
来源: https://www.cnblogs.com/gered/p/16106631.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有