当前位置: 首页 > news >正文

mongoDB(初识(一)基本概念 ACID、 CAP、 BASE)

mongoDB 初识(一)

目录

mongoDB 初识(一)

1、NoSQL是什么(优点/缺点)

NoSQL的优点/缺点

2、NoSQL和SQL关系型数据库的对比

数据模型:

可扩展性:

一致性:

灵活性:

性能:

3、基础概念(ACID、CAP、BASE)

关系型数据库遵循ACID规则

1、A (Atomicity) 原子性

2、C (Consistency) 一致性

3、I (Isolation) 独立性

4、D (Durability) 持久性

CAP定理(CAP theorem)

BASE(基本可用、软状态、最终一致性)

4、mongoDB是什么

MongoDB的主要特点包括:

5、mongodb的安装、配置、建表教程(推荐详细教程)


1、NoSQL是什么(优点/缺点)

NoSQL数据库使用各种数据模型,如文档导向、键值、列族或图形格式,而不是像SQL数据库那样使用表格模式。这些数据库通常设计用于可扩展性、灵活性和性能,特别是在处理大量非结构化或半结构化数据时。 流行的 NoSQL 数据库包括 MongoDB、Redis、Cassandra、Couchbase 和 Neo4j。

NoSQL的优点/缺点

优点:
  • 高可扩展性

  • 分布式计算

  • 低成本

  • 架构的灵活性,半结构化数据

  • 没有复杂的关系

缺点:
  • 没有标准化

  • 有限的查询功能(到目前为止)

  • 最终一致是不直观的程序

2、NoSQL和SQL关系型数据库的对比

数据模型:

SQL型数据库:使用表格结构,采用固定的模式(schema),数据以行和列的形式存储。 NoSQL数据库:使用各种数据模型,如文档导向、键值、列族或图形格式,不一定要求固定的模式。

可扩展性:

SQL型数据库:通常垂直扩展(增加硬件资源),在处理大规模数据时可能面临性能瓶颈。 NoSQL数据库:通常水平扩展(增加节点),能够更容易地处理大规模数据,因为它们被设计为可扩展。

一致性:

SQL型数据库:通常保证ACID(原子性、一致性、隔离性、持久性)事务特性,提供强一致性。 NoSQL数据库:根据数据库类型,一致性可以是强一致性、最终一致性或柔性一致性,根据需求进行权衡。

灵活性:

SQL型数据库:固定的表结构要求数据遵循严格的模式,难以适应数据模式的变化。 NoSQL数据库:可以灵活地处理半结构化和非结构化数据,不需要严格的模式定义,因此更适应数据模式的变化。

性能:

SQL型数据库:在复杂查询和联结操作上通常表现良好,但在大规模写入和高并发读取方面可能有限制。 NoSQL数据库:在处理大量数据和高并发操作时通常表现良好,尤其是在分布式环境下。

3、基础概念(ACID、CAP、BASE)

关系型数据库遵循ACID规则

事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:

1、A (Atomicity) 原子性

原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。

2、C (Consistency) 一致性

一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

3、I (Isolation) 独立性

所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

4、D (Durability) 持久性

持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

CAP定理(CAP theorem)

在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

一致性(Consistency) (所有节点在同一时间具有相同的数据) 可用性(Availability) (保证每个请求不管成功或者失败都有响应) 分区容错性(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作) CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。 CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。 AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

BASE(基本可用、软状态、最终一致性)

BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定义。

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:

Basically Available --基本可用 Soft-state --软状态/柔性事务。 "Soft state" 可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的 Eventually Consistency -- 最终一致性, 也是 ACID 的最终目的。

4、mongoDB是什么

MongoDB是一个基于分布式文件存储的开源数据库系统,它使用C++语言编写。作为NoSQL数据库的一种,MongoDB特别适合处理大规模的、低结构化的数据,特别是那些在传统的关联型数据库中难以高效存储和查询的数据。

MongoDB的主要特点包括:

  1. 面向文档:数据以JSON(JavaScript Object Notation)类似的格式存储,这种格式称为BSON(Binary JSON),支持内嵌文档和数组,使得表达复杂的数据结构变得直接而自然。

  2. 分布式:设计用于易于扩展,可以在多台服务器上分配数据,支持水平扩展,以应对大数据量和高并发访问的需求。

  3. 高性能:优化了磁盘和内存的使用,提供了快速的数据读写操作。

  4. 灵活的模式:不需要预先定义数据模式,可以随时添加或修改字段,适应快速变化的应用需求。

  5. 丰富的查询功能:支持复杂的查询操作,包括索引、聚合管道、地理空间查询等,其查询语言设计得与面向对象的编程语言相似,易于学习和使用。

  6. 复制与高可用:支持数据复制,可以设置自动故障转移,确保数据的高可用性和系统的稳定性。

  7. 支持事务:虽然作为非关系型数据库,MongoDB在较新版本中已经加入了对多文档事务的支持,使其能够满足一些需要强一致性的应用场景

5、mongodb的安装、配置、建表教程(推荐详细教程)

1、安装

(新版本保姆级教程) 百度安全验证icon-default.png?t=O83Ahttps://baijiahao.baidu.com/s?id=1781195432758174990&wfr=spider&for=pc(官网安装)
安装 MongoDB - MongoDB 手册 v 6 。 0icon-default.png?t=O83Ahttps://www.mongodb.com/zh-cn/docs/v6.0/installation/

2、建表 【小沐学数据库】MongoDB下载、安装和入门(Python)-CSDN博客文章浏览阅读5k次,点赞5次,收藏19次。MongoDB是一个文档数据库,旨在简化应用程序 开发和扩展。MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。在高负载的情况下,添加更多的节点,可以保证服务器性能。_mongodb下载icon-default.png?t=O83Ahttps://blog.csdn.net/hhy321/article/details/131293287

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。


http://www.mrgr.cn/news/57408.html

相关文章:

  • 【redis】初识非关系型数据库——redis
  • 【去哪儿-注册安全分析报告-缺少轨迹的滑动条】
  • 视频云存储/音视频流媒体视频平台EasyCVR视频汇聚平台在欧拉系统中启动失败是什么原因?
  • python开发“猫狗大战”游戏
  • UNIAPP弹窗跳转页面无法滚动bug
  • c语言 前置操作符实现
  • ECharts饼图-饼图34,附视频讲解与代码下载
  • C语言中#error的作用
  • STM32应用详解(7)USART接收数据的程序(查询方式)
  • 【力扣刷题实战】设计循环队列
  • 工作繁忙的同时,如何兼顾到CSDN的持续分享呢
  • Python中tkinter使用详解
  • Lucas带你机器学习实战——KNN预测未来的爆品
  • 递归算法之组合生成(Combinations)详细解读
  • 事务挂起的原因分析
  • css动画烟花秀__烟花效果
  • 基于开源AI智能名片2+1链动模式S2B2C商城小程序的顾客消费记录价值转化深度研究
  • pytorch dataloader学习
  • 动态规划算法专题(八):01 背包问题
  • 1024是什么日子
  • 头条微头条文章洗稿发布软件注意事项(四)
  • 中国最有钱的起名大师颜廷利名字的含义和历史背景是什么?
  • CF978
  • C++ 判断语句的深入解析
  • 使用亚马逊SQS实现一个队列任务,包括:向队列发送消息和从队列中读取消息
  • IBM Granite 3.0:一款开源,SOTA 企业模型