大规模数据管理系统调查(学习笔记)

介绍

  • 大数据的四个特性
    • Volume(体量)、Velocity(速度)、Variety(多样性)、Veracity(精确性)
  • 应对
    这里写图片描述
  • 介绍基本情况
    • Data model
    • System architecture
    • Consistency model
  • 基本实现原理
    • 数据模型和数据分区
    • SEDA/MapReduce架构高扩展性
    • 基于timestamps的并发控制协议
    • 强一致性模型扩展约束
    • BASE模型及引申出的BASIC模型

数据模型

这里写图片描述

系统架构

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

一致模型

ACID

  • ACID定义

    Atomicity、Consistency、Isolation、Durability

  • ACID级别

    • serializability (串行化)

      • 事务串行执行,一个接着一个
    • snapshot isolation(快照隔离)MVCC

      • 事务中的所有读取都是数据库提交的一致的快照,“The First-Committer Wins”
    • read committed(已提交读)

    • 只能读取已提交的,不能读取未提交的数据

  • 级别由强到弱

    • Serializability > snapshot isolation > read committed
  • 分布式ACID

    • synchronous replication(同步复制)

    • 与synchronous replication结合,形成one-copy serializability,同理read
      committed、snapshot isolation with synchronous replication, one-copy
      read committed and one-copy snapshot isolation

    • 两阶段提交协议(2PC)与三阶段提交协议(3PC)

    • 这里写图片描述
    • 这里写图片描述
  • BASE

    • Basically Available 所有时间都有基本反应
    • Soft-state, 不需要所有时间都是一致的
    • Eventually consistent,最终会达到一致
    • Eventual Consistency
      如果某项没有新的更新,最终会返回最近更新的数据。但是并不保证,在任何时刻,返回的状态是一致的。
    • Causal Consistency
      保证有因果关系的读写是相应的顺序
      write-read op1 → op2: reads x after op1
      read-write op1 → op2: overwrites the value of x that op1 has read
      write-write op1 → op2: and op2 overwrites the value written by op1
      需要引入依赖追踪

    • Ordering Consistency

      操作的全局顺序性
      monotonic writes 保证写操作在所有的节点上都是按照相同的顺序执行
      monotonic reads 保证读取的都是每个节点最新版本的数据
      每条记录都有一个主节点,按照执行顺序号顺序执行

    • 一致性强弱

      • ordering consistency > causal consistency > eventual consistency
  • 所有一致性强弱

    • serializability > snapshot isolation > read committed > ordering
      consistency > causal consistency > eventual consistency
  • 分类
    这里写图片描述

实现原理

  • 数据模型

    • 把数据分布到不同的节点,每份数据有多副本
    • Physical level

      行存储大多按水平分区
      列存储或者混合存储大多纵向分区,另外利用压缩带来额外好处

    • Conceptual level

      NoSQL提供schema-less以提高扩展性
      不适当的分区会导致数据倾斜
      低层次概念数据模型简化水平扩展的设计和实现,但是高层次的概念模型不一定阻碍水平扩展,只要有一个恰当的分区策略
      混合存储相较列式存储、行式存储更有弹性

  • 架构扩展

    • shared-resources infrastructure 总是受共享资源的制约

    • shared-nothing architecture可以扩展到数千节点,但是真正达到数千节点的非常少,一个原因是节点失败成为常事

    • SEDA/MapReduce

      shared-nothing infrastructure,可以很容易的扩展
      复杂操作分解成不同的阶段,同时支持pipeline和partition两种并行
      多个阶段在多台机器上执行,并且伴有数据复制以提高容错能力
      很容易的支持分区

    • 扩展性强弱

      SEDA/MapReduce >> Sharding Decentralized > Sharding Centralized >> Shared-Disk MPP > Shared-Memory SMP

  • 一致模型

    • ACID

      • two-phase locking (2PL) protocol

      • serialization graph testing (SGT)

      • timestamp-based concurrency control 比较适合大型系统

        Spanner为每个事务都分配一个提交的timestamp, timestamp使得spanner可以正确检测状态是不是最新的是否可以满足读; Paxos协议使得只要多数副本活着数据就是可用的
        由多种协议(e.g. two-phase commit, three-phase commit, Paxos, etc.) 间的通信延迟限制了扩展能力

  • BASE

假设一个数据项有三列:L、S、H,分区在三个表中,并且分布在N1,N2,N3三个节点上,初始值都是100,执行下列操作
- a(x): Wa(L = L × (1 + x%), S = S × (1 + x%), H = H × (1 + x%));
- b(y): Wb(L = L + y, S = S + y, H = H + y);
- check: Rc(L, S, H), Assert(L = S = H).
这里写图片描述

  • BASIC
    • 代表:Basic Availability, Scalability and Instant Consistency
    • Instant Consistency 读取的所有数据都是系统一致状态
  • 综合以上模型
    弱一致性模型比强一致性模型更容易扩展,但是只要实现得当,强一致性模型并不妨碍横向扩展
    基于timestamp的并发控制最适合横向扩展
    开发人员还是喜欢强一致性模型

参考

原论文:http://webdocs.cs.ualberta.ca/~lengdong/papers/JCST14.pdf
存储一致性之一般一致性(General Consistency)和因果一致性(Causal Consistency) http://www.sigma.me/2011/05/06/causal-consistency.html
两阶段提交(2PC)协议 http://blog.chinaunix.net/uid-20761674-id-75164.html
数据库理论之ACID和BASE的比较 http://www.sigma.me/2011/06/17/database-ACID-and-BASE.html
Staged Event-Driven Architecture http://simple-is-better.com/news/574
缓存融合(Cache Fusion)介绍 http://blog.csdn.net/wenzhongyan/article/details/7722166
分布式协议之两阶段提交协议(2PC)和改进三阶段提交协议(3PC) http://www.cnblogs.com/lhonglwl/p/4280598.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值