• 《大数据技术原理与应用》暑假学习计划_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文档不需要设相同字段并且相同字段不需要相同数据类型

  • 相关阅读:
    7617:输出前k大的数
    2991:2011
    7620:区间合并
    1688 求逆序对
    Magento How To Display Product Custom Option On list.phtml
    大二实习使用的技术汇总(中)
    codility上的问题 (22)
    poj 3321
    使用ViewPager实现左右“无限”滑动的万年历
    数论练习专题
  • 原文地址:https://www.cnblogs.com/fuheishi/p/11405590.html
Copyright © 2020-2023  润新知