大数据存储进阶(hdu)第四章笔记

4.1 从关系型到NoSQL数据库

4.1.1关系型数据库

关系型数据库强调ACID特性,即原子性Atomicity)、一致性Consistency)、隔离性Isolation)、持久性Durability)。

关系型数据库的优势主要有以下几点:

 数据一致性:由于关系型数据库支持ACID特性,可以维护数据之间的一致性。

 操作方便:通用的SQL语言使得操作关系型数据库非常方便,并可支持JOIN等复杂查询。

 易于理解:关系模型相对网状、层次等其他模型来说更容易理解。

 服务稳定:最常用的关系型数据库产品Oracle、MySQL等性能卓越,服务稳定,很少出现宕机异常。

不足

 高并发下I/O压力大

 难以快速处理海量数据

 为维护索引付出的代价大

 难以横向扩展

4.1.2 NoSQL兴起的原因

mysql搭建集群,数据库分库分表也不能完全解决问题

(1)Web2.0网站系统通常不要求严格的数据库事务

(2)Web2.0并不要求严格的读写实时性

(3)Web2.0通常不包含大量复杂的SQL查询(去结构化,存储空间换取更好的查询性能)

4.1.3 NoSQL简介(not only sql)

特点

 易于扩展

 灵活的数据模型

 与云计算紧密融合

适用场景

一是待处理的数据量很大,或对数据访问的效率要求很高,从而必须将数据放在集群上。

二是想采用一种更为方便、灵活的数据交互方式来提高应用程序开发效率。

4.1.4 NoSQL的基础理论

 NoSQL的基础理论——CAP理论

 一致性Consistency ):一致性指的是系统在执行某项操作之后,分布式环境中多点的数据是一致的,或者说所有节点在同一时间的数据完全一致。

 可用性Availability):可用性是指用户在访问数据时,系统能否在正常响应时间内返回结果。简单而言就是客户端可以一直正常访问数据并得到系统的正常响应,不会出现系统操作失败或者访问超时等问题。

 分区容错性(Tolerance of Network Partition):分区容错性是指分布式系统在遇到某节点或网络分区故障的时候,分离的系统仍然能正常运作、对外提供服务。分区容错可视为在系统中采用多副本策略。

小tip:CAP理论的核心是:一个分布式系统不可能同时满足一致性、可用性和分区容错性这三个需求,最多只能同时满足其中两个。

NoSQL的基础理论——BASE理论

BASE理论是针对NoSQL数据库而言的,它是对CAP理论中一致性和可用性进行权衡的结果。其核心思想是无法做到强一致性,但每个应用都可以根据自身的特点, 采用适当方式达到最终一致性。BASE理论的三要素概述如下:

基本可用Basically Available):
        基本可用是指在分布式系统出现故障时,允许损失部分功能,从而保证核心功能或者当前最重要的功能可用。

软状态Soft State):

        “软状态”是与“硬状态”相对的一种提法。关系型数据ACID特性中的原子性要求多个节点的数据副本都是一致的,这是一种“硬状态”。而“软状态”则允许系统中存在中间状态,这个状态不影响系统的可用性,即允许不同节点的副本之间存在暂时不一致的情况。

最终一致性Eventually Consistent):
        最终一致性是指经过一段时间后,所有节点的数据都将会达到一致。

NoSQL的基础理论——最终一致性理论 

        最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以分为以下几种方式:

        因果一致性:如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将获得A写入的最新值。而与进程A无因果关系的进程C的访问,仍然遵守一般的最终一致性规则

        读己之所写”一致性:可以视为因果一致性的一个特例。当进程A自己执行一个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值

        单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值

        会话一致性:它把访问存储系统的进程放到会话(session)的上下文中,只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统保证不会延续到新的会话

        单调写一致性:系统保证来自同一个进程的写操作顺序执行。系统必须保证这种程度的一致性,否则就非常难以编程了

4.1.5 NoSQL与SQL数据库比较

 

 

4.1.6 NoSQL的四大类型

 4.2HBase

4.2.1 HBase简介

        HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。

Base与传统的关系数据库的区别主要体现在以下几个方面:

 数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串

 数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。

 存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。

 数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。

 数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。

 可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。

4.2.2 HBase数据模型

 

 4.2.3 HBase体系架构

        HBase体系结构借鉴了谷歌的BigTable,是典型的主从模型。除了底层HDFS存储外,HBase包含四个核心功能模块,它们分别是:客户端(Client)、协调服务模块(Zookeeper)、Master服务器(Master)和Region服务器(RegionServer)。

4.2.4 HBase工作原理

        在一个HBase中,存储了许多表,表中包含的行的数量非常庞大需要分布存储到多台机器上。因此,需要根据行键的值对表中的行进行分区。每个行区间构成一个分区,被称为“Region”,包含了位于某个值域区间内所有完整的行数据。

        Region虽然是分布式存储和负载均衡的最小单元,但并不是物理存储的最小单元。一个Region由一个或者多个Store组成,每个Store保存一个列族,每个Store又包含多个StoreFile。

 

Region定位

 预写日志

 

HBase写流程

 HBase读流程

​​​​​​​

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

luelueking

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

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

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

打赏作者

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

抵扣说明:

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

余额充值