zoukankan      html  css  js  c++  java
  • 厦门大学林子雨开设的《大数据技术原理与应用》第五章NoSQL数据库笔记

    传统的关系型数据库性能上的缺陷:

    • 无法满足海量数据的管理需求
    • 无法满足高并发的需求
    • 无法满足高可扩展性和高可用性的需求

    主从实现读写负载服务器分离(MySQL集群)

    分库:复杂,延迟,扩容问题(增加新机器,对整个数据集重新分区),重新负载均衡

    Web2.0通常是不要求严格数据库事务

    Web2.0不要求严格的读写实时性

    Web2.0不包含复杂的SQL查询

    关系型数据库:很难实现横向扩展,纵向扩展也很难,大数据量大效率下降,ACID事务,数据完整性,强大的技术和商业支持,管理员维护
    NoSQL:扩展容易,复杂查询能力差,没有完整性,数据模型非常灵活,水平扩展好,具有非常好的可用性,能够在短时间内迅速返回所需的结果,未形成统一的标准,无基础维护较复杂


    NoSQL四大类型:

    • 键值数据库:就是一堆的键值对(频繁读写,内容缓存,扩展性好,灵活性好,大量的写操作性能高,不能回滚) Redis,DynamoDB,云中的Simple DB
    • 列族数据库:行键水平划分,列族垂直划分 Hbase(Master slave 一主多从结构) BigTable (查找速度快,可扩展性强,容易进行分布式扩展,复杂性低,不适用ACID事务)
    • 文档数据库:可看作键值数据库,值是文档而非标量 MongoDB
    • 图数据库:以图结构方式存储相关信息 Neo4j


    NoSQL数据库的三大理论基石:

    • CAP
    • BASE
    • 最终一致性

    1、CAP理论:(只能三者取其二,不可能都实现)

    • C 一致性(任何一个读操作总能读到之前完成的写操作的结果)
    • A 可用性(快速获取数据,可以确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应)
    • P 分区容忍性(当出现网络分区的情况时(系统中一部分节点无法和其他节点进行通信),分离的系统也能正常运行)

      放弃P,选择CA 一般的关系型数据库
      放弃A,选择CP NoSQL数据库
      放弃C,选择AP Dynamo,Cassandra,Voldemort数据库


    2、BASE:ACID是关系数据库中的事务的四个性质,在NoSQL数据库中BASE(碱)和ACID(酸)是对应关系

    • 基本可用:节点出错,仍然可用
    • 软状态:可以有一段时间不同步,具有一定的滞后性

    3、最终一致性(弱一致性的特例):强一致性(总能读到最新的数据)和弱一致性,主要区别在于高并发的数据访问操作下,后续操作是否能够获取最新的数据,最后总能读到正确的数据

    如何实现各种类型的一致性:
    N 数据冗余的份数
    W 更新数据时需要保证写完成的节点数
    R 读取数据的时候需要读取的节点数

    W+R>N : 写节点和读节点重叠,一主一备同步复制的关系型数据库,当N=2,W=2,R=1,则不管读的是主库还是备库的数据,都是一致。至少要 W + R = N + 1

    W+R<=N : 对于一主一备异步复制的关系型数据库,N =2 ,W = 1,R = 1 ,则如果读的是备份的数据库,就可能无法读取主库已经更新过的数据。

    对于HBase,HBase是借助底层的HDFS来实现其数据冗余备份,HDFS采用强一致性保证,在数据未完全同步到N个节点前,写操作不会成功返回也就是说当W=N,而读操作只需要读到一个值即可也就说R=1.


    NewSQL数据库(关系型)-- SQL Azure(底层仍然是SQL server一些的基础) ,Amazon RDS
    NewSQL 分析型应用(非常好的水平可扩展性,强一致性,事务一致性,支持SQL查询,支持海量的数据存储)
    NoSQL 互联网应用

  • 相关阅读:
    UVA-1595 Symmetry
    UVA-10763 Foreign Exchange
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
  • 原文地址:https://www.cnblogs.com/zxgCoding/p/12906461.html
Copyright © 2011-2022 走看看