NoSQL数据库

1.概述
1.1 表示关系和非关系型数据库。
1.2 特点

  • 灵活的可扩展性:支持在多个节点上的水平扩展,海量的数据存储。
  • 灵活的数据模型
  • 和云计算紧密结合:充分利用底层的云计算基础设施。

1.3 传统关系型数据库

  • 具有非常完备的关系理论基础。

  • 具有事务性机制的支持。

  • 高效的查询优化机制。

  • 缺点:

    • 无法满足海量数据的管理需求;
    • 无法满足高并发的需求;
    • 无法满足高可扩展性和高可用性需求。传统的采用主从服务器来实现读写分离,采用异步或同步方式更新数据。
    • mysql集群方式的缺陷:
      • 复杂性:整个集群部署配置管理都非常复杂;
      • 延迟性:当主库压力较大时,就会带来较大的延迟。
      • 扩容问题:压力过大,需要增加机器,对整个数据分区复杂;

1.4 NoSQL数据库

  • 数据模型要求宽松;
  • 高吞吐率;

2.NoSQL与关系型数据的对比

2.1 关系型数据库

  • 数据库原理:具备完备的关系代数理论作为基础;
  • 数据规模:很难实现横向扩展,纵向扩展能力有限;
  • 查询效率:适当数据量级查询效率高,数据量增大查询效率增大;
  • 事务一致性:遵循ACID事务模型,可以保证事务强一致性;
  • 在数据完整性:具有保证完整性的完备机制;
  • 扩展性:水平扩展性差;
  • 可用性:随着数据规模增大,为保证严格的一致性,可用性降低;
  • 标准化方面:遵循SQL标准;
  • 技术支持方面:商业数据库,可以获得非常强大的技术和后续服务支持;
  • 可维护方面:需要管理员维护;

2.2 NoSQL数据库

  • 数据库原理:缺乏理论基础;
  • 数据规模:具有非常好的水平可扩展性;
  • 查询效率:为构建面向复杂查询的索引查询性能差;
  • 事务一致性:未构建面向复杂查询的索引查询性能差;
  • 数据完整性:无法保证;
  • 可扩展性:水平扩展性好;
  • 可用性:具有非常高的可用性,能在短时间内迅速返回所需结果;
  • 标准化方面:没有统一标准;
  • 技术支持方面:开源产品,处于发展初期;
  • 没有成熟的基础和实践操作规范维护较为复杂 ;

3.总结

  • 传统数据库:
    • 优点:具备完善的关系代数理论作为基础、有严格标准、支持事务一致性、可以借助索引机制实现高效查询;
    • 缺点:可扩展性差、无法支持海量数据存储、数据模型定义严格;
  • NoSQL数据库:
    • 优点:支持超大规模数据存储、 数据模型非常灵活;
    • 缺点:缺乏理论支撑、不支持事务强一致性;

4.键值数据库和列族数据库

  • NoSQL数据比较多,分为以下几类:
    • 键值数据库:键值对;
      • 数据模型:键值对
      • 设计频繁读写,拥有简单数据模型的应用,内容缓存、存储配置和用户数据信息,就可以选择该类数据库;如Redis;
      • 扩展性好,灵活;
      • 缺点:无法存储结构化信息,条件查询效率低;
      • 写操作性能高
    • 列族数据库:HBase根据列族进行垂直划分,根据行键进行水平划分;
      • hbase,适合分布式数据存储与管理,拥有动态增加字段;
      • 扩展性高;
    • 文档数据库:键值数据库,值为文档;
      • 能够将它自己包含的数据内容和类型进行自我描述;
      • 文档数据库的数据结构是JSON数据格式
      • 具有更好的并发性;
      • MongoDB,CouchDB;
      • 存储、索引并管理面向文档的数据或类似的半结构化数据;
      • 缺乏统一查询语法;
    • 图数据库:以图结构存储数据;
      • 图结构数据模型;
      • 用于处理具有高度相互关联关系的数据,如模式识别、依赖分析等;
      • 灵活性高;

在这里插入图片描述

5.NoSQL三大理论

5.1 CAP理论

  • 一致性:指如何一个读操作总能读到之前完成的一个写操作的结果;
  • 可用性:指快速获取数据,可以在确定时间内返回操作结果,不管成功还是失败;
  • 分区容忍性:指当网络区分的情况时,分离的系统也能正常运行。

5.2 上述所有特性不能同时实现,只能取其二;
在这里插入图片描述
在这里插入图片描述

5.3 BASE和最终一致性

  • 基本可用:指一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情形出现;
  • 软状态:指状态可以有一段时间不同步具有一定的滞后性。
  • 最终一致性:可以有一段时间数据不一致,但是最终达到一致。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

6. NoSQL到NewSQL数据库

6.1 传统数据库主要用于事务性的应用,NoSQL主要用于互联网应用,NewSQL主要用于分析型应用。
6.2 NewSQL同时具备了传统数据库和NoSQL数据库各自的优点。

  • SQL Azure;
  • RDS;
    在这里插入图片描述
    在这里插入图片描述

7.MongoDB文档数据库

7.1 C++语言编写,是一个基于分布式文件存储的开源数据库系统。
7.2 高负载下,添加更多节点,可以保证服务性能,MongoDB旨在为web应用提供可扩展的高性能数据存储解决方案。
7.3 文档结构类似JSON格式。
7.4 特点
在这里插入图片描述

7.5 MongoDB数据相关知识
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秘境之眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值