《大数据技术原理与应用》暑假学习计划_06

《大数据技术原理与应用》暑假学习计划_06 - NoSQL简述

NoSQL概述

没有接触NoSQL时一直不太明白NoSQL的含义,一直以为NoSQL只是一中新型数据库的名称。但直到前几天学习之后我才确实了解到了NoSQL其真正的魅力。

NoSQL → Not noly SQL

NoSQL数据库真正兴起的原因在于传统关系型数据库无法满足Web2.0的需求,而且关系模型的局限,以及Web2.0关系型数据库的许多特性没有发挥。

NoSQL数据库具有灵活可扩展性可以在多个节点水平扩展,而且具有灵活的数据模型,以及与底层云计算紧密结合。

传统关系型数据库

  • 传统关系型数据库的优点
    1. 具有非常完备的关系理论基础
    2. 具有事务性机制的支持
    3. 高效的的查询优化机制
  • 传统关系型数据库的缺点
    1. 无法满足海量数据管理需求
    2. 无法满足高并发的需求
    3. 无法满足高可扩展性和高可用性需求

传统MySQL集群缺陷

  • 复杂性:集群部署管理配置复杂
  • 延时性:主库压力大时,会带来较大时延
  • 扩容问题:整个集群压力过大时,增加机器时需对数据集再次分区,比较复杂

Web2.0通常不需要严格数据库事务,也不需要严格读写实时性,不包含复杂SQL查询,多表连接操作对Web2.0时代完全是鸡肋。

关系型数据库与NoSQL数据库对比

  • 数据库原理
    • 关系型数据库:具有完备的关系代数理论作为基础
    • NoSQL数据库:NoSQL数据库缺乏理论基础
  • 数据规模
    • 关系型数据库:很难实现横向扩展,纵向扩展十分有限,无法支持海量数据存储
    • NoSQL数据库:具有非常好的水平扩展性
  • 数据库模式
    • 关系型数据库:要定义严格数据库模式,严格遵守事先定义的数据库模式
    • NoSQL数据库:数据模式灵活
  • 查询效率
    • 关系型数据库:适当数据量级查询效率较高
    • NoSQL数据库:未构建面向复杂查询的索引,查询性能较差
  • 事务一致性
    • 关系型数据库:遵循ACID事务模型保证事务一致性
    • NoSQL数据库:未构建面向复杂查询的索引,不支持事务强一致性,只保证最终一致性
  • 数据完整性
    • 关系型数据库:具有保证完整性的完备机制
    • NoSQL数据库:不能实现完整性约束
  • 可扩展性
    • 关系型数据库:扩展性较差
    • NoSQL数据库:水平扩展性非常好
  • 可用性
    • 关系型数据库:规模增大时为保证一致性可用性相对削弱
    • NoSQL数据库:可用性较好
  • 标准化
    • 关系型数据库:遵循SQL标准,标准化较完善
    • NoSQL数据库:未形成通用行业标准
  • 技术支持
    • 关系型数据库:大部分为商业数据库,可获得较强大的技术支持和完备的后续服务
    • NoSQl数据库:开源产品,仍属于发展阶段
  • 可维护
    • 关系型数据库:管理员维护
    • NoSQL数据库:没有成熟的基础和实践操作规范维护较复杂
  • 应用场景
    • 关系型数据库:电信银行等关键业务系统
    • NoSQL数据库:互联网企业及一些传统非关键业务

NoSQL数据库四大类型

键值数据库:

数据模型:一堆键值对(键可以是任意类型的数据)

优点:扩展性好,灵活性好,大量读写性能好,是理想的缓冲层解决方案。底层数据库 → 缓冲层 → 浏览器

缺点:无法存储结构化信息,条件查询效率较低,不支持值查找

列族数据库:

数据模型:列族

类似HBase根据列族进行垂直划分,根据行键进行水平划分。

优点:查找速度快,容易进行分布式扩展,复杂性较低。

缺点:无事务一致性。

NoSQL理论基础

CAP理论

consistency 一致性:所有节点在同一时间必须有一致数据

availabily 可用性

partitiontderance 分区容忍性

CA:将所有事务相关内容放在同一台机器上,避免网络分区(传统关系型数据库)

CP:使用网络分区,等数据以之后再存取数据,短时间内无法取到数据,失去可用性

AP:可及时获得数据,但数据可能存在不一致

BASE “碱”

基本可用:允许部分分区失败

软状态:一段时间内数据可能不同步,有滞后

最终一致性:可能有一段时间不同步。根据更新数据后各进程访问到数据时间和方式不同可以区分为

  • 因果一致性
  • “读己之所写“一致性
  • 单调读一致性
  • 会话一致性
  • 单调写一致性

假设有一个分布式系统,为实现其可靠性,要对数据进行冗余存储

N → 数据冗余份数

W → 更新数据时需要保证写完成的节点数

R → 读取数据时需读取的节点数

  • W+R>N → 强一致性
  • W+R<=N → 弱一致性(最终一致性时弱一致性的特例)

NewSQL

oldSQL:一种架构支持多类应用

NewSQL:多架构支持多类应用(同时具备oldSQL与NewSQL的优点)

大数据时代:

  • NewSQL分析
  • oldSQL事务
  • NoSQL互联网

文档数据库MongDB

文档数据库MongDB:基于分布式文件系统的开源数据库

  • 提供了面向文档存储,操作简单
  • 可以设置任何属性的索引,实现更快的排序
  • 具有较好的水平可扩展性
  • 支持丰富查询表达式,可查询文档内嵌对象及数组
  • 可替换已完成文档某个指定数据字段

集合  → MongDB文档组,类似于表。无固定结构,可对集合插入不同格式和类型的数据

文档数据库中文档就是一个键值对,MongDB文档不需要设相同字段并且相同字段不需要相同数据类型

原文地址:https://www.cnblogs.com/fuheishi/p/11405590.html