数据库第七章——NoSQL数据库

概述

引入的原因

  • 关系型数据库局限
    • 不能直接管理非结构化数据
    • 受单机服务器限制难以支持数据库高并发读写访问
    • 受磁盘容量限制不能满足海量数据的高效存储和处理
    • 实现分布式数据库的高扩展性、高可用性比较复杂
  • 对数据处理的要求
    • 对各类数据的管理
    • 大量用户同时访问应用要求数据库支持高并发读写访问
    • 大量数据需要数据库高效存储
    • 要求数据库有高拓展性和高可用性

大数据管理

定义:指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合

特点

  • 大量
  • 高速性
  • 多样性(区别于传统关系数据库的最重要特性)
  • 真实性
  • 低价值(单个数据单元)

挑战

  • 数据类型多样性与异构性
  • 海量数据存储访问高速性
  • 数据处理的时效性
  • 数据的安全与隐私保护
  • 大数据的能耗问题
  • 大数据管理易用性问题

存储关键技术包括:

  • 分布式数据存储(在分布式数据库的基础上更高的数据访问速度;更强的可拓展性;更高并发访问量)
  • 数据一致性和可用性
  • 负载均衡
  • 容错机制
  • 虚拟存储技术
  • 云存储技术

在可用性、一致性、高并发、高容量等方面达到平衡

NoSQL数据库

Not only SQL Database,非关系型、开源代码、具有水平扩展能力的分布式数据库

特性

  • 支持非结构化数据存储,不用预先定义模式
  • 分布式集群架构,无共享结构
  • 弹性可扩展,可动态增减数据库结点
  • 数据分区存储,各分区结点并发访问.
  • 结点之间数据异步复制,实现最终数据一致性
  • 数据处理遵循BASE特性原则

BASE特性

  • Basically Available(基本可用):允许部分出现故障
  • Soft state(软状态):允许数据库系统存在暂时的数据不一致,经过纠错处理,系统数据最终保持一致态
  • Eventual Consistency(最终一致性):系统数据在某一时刻达到最终一致性

数据库一致性

  • 强一致性:无论更新在哪一个副本,数据复制时同步的,之后所有的数据库节点都能获取最新的数据
  • 弱一致性:数据更新在数据库节点执行,但数据复制时异步的,需要经过一定的时间才能到达不同数据库节点数据一致
  • 最终一致性:用户最终能读到某操作对系统特定数据的更新

最终一致性的形式

  • 因果一致性:B是基于A的数据,A更新,B也更新
  • 读一致性:
  • 会话一致性:
  • 单调读一致性:
  • 单调写一致性:

类型及对比

分类典型数据库应用场景数据模型优点缺点
键值存储数据库Redis,Voldemort,Oracle BDB主要用于处理大量数据的高性能访问负载,也用于一些日志系统等.Key-Value键值对,通常用哈希表来实现查找速度快数据无结构化,通常只被当作字符串或者二进制串
列存储数据库HBase,Cassandra,Rjak分布式的联机事务处理系统以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,容易进行分布式扩展功能相对局限,不适合随机的更新
文档存储数据库MongoDb,CouchDBWeb应用Key-Value对应的键值对,Value为版本化文档数据结构要求不严格,表结构可变,不需要预先定义表结构查询新能不高,而且缺乏统一的查询语法
图存储数据库Neo4J,InfoGrid,Infinite Graph社交网络,推荐系统图结构利用图结构相关算法进行快速查找需要对整个图做计算才能得出需要的信息,而且这种结构不容易实现分布式的集群方案

整体框架

在这里插入图片描述

优点

  • 高可扩展性
  • 分布式计算
  • 低成本
  • 架构灵活
  • 没有复杂的关系

缺点

  • 缺乏通用性
  • 不支持SQL查询功能
  • 不支持事务特性
  • 系统安全特性欠缺

应用场景

  • 解决传统关系型数据库无法解决的数据存储及访问问题
  • 解决大数据多样性、异构性、高速性等数据存储与处理问题
  • 解决互联网海量非结构化数据管理与应用问题

与关系数据库比较

  • NoSQL数据库采用非结构化数据存储模型,关系数据库采用结构化数据存储模型
  • NoSQL数据库采用分布式部署,关系数据库采用集中式部署
  • NoSQL数据库编程遵循BASE原则,关系数据库编程遵循ACID事务原则
  • NoSQL数据库没有统一的数据操作标准,关系数据库遵循SQL数据操作标准
  • NoSQL数据库支持海量数据存储,关系数据库数据存储受限于TB级

分布式数据库

优点

(1)具有灵活的体系结构
(2)适应分布式的管理和控制机构
(3)系统的可靠性高、可用性好
(4)局部应用的响应速度快
(5) 可扩展性好,易于集成现有系统

缺点

(1)系统通信开销大
(2)系统存取结构复杂
(3)数据安全性和保密性较难处理

数据不一致产生的情况

1)数据库结点故障
2)通信网络出现故障
3)两阶段提交过程中出现问题

CAP理论

  • 一致性(Consistency):不同节点数据库保持一致
  • 可用性(Availability):数据访问请求随时可满足
  • 分区容忍性(PartitionTolerance):当出现故障结点,系统任能响应数据访问请求

CAP证明:出现故障结点下,三种属性最多只能满足两种
证明:

  • 满足C和A时,P
    • 满足C需要所有服务器节点的数据要一样,这样要求数据库在不同服务器节点进行复制同步. 结点越多,时间越多
    • 满足A,同步的时间必须足够短才行,因此系统的服务节点数不能太多
    • 节点数少了,就不能保证结点故障时仍能满足P
  • 满足C,P
    • 满足P,需要足够多的节点
    • 满足C,复制同步的时间因为P所以会比较长
    • 所以难以满足A
  • 满足A,P
    • 满足P,需要足够多的节点
    • 满足A,复制同步的时间要短(受限)
    • 因为节点多,时间不够,所以C难以满足

当网络发生故障,服务器间数据不一致.
有如下两种解决方案

  • 牺牲数据一致性,将老数据传给请求的应用
  • 牺牲可用性,阻塞等待,直到网络连接恢复

CAP模型方案选择

  • CA——放弃分区容错性:即传统的单机数据库处理方式
  • AP——放弃强一致性:大多数分布式系统的设计方式。如一些电商系统(用户规定时间内提交请求满足)
  • CP——放弃可用性:很多NoSQL系统采用的方案

列存储数据库

  • 纵向切分数据
  • 对于稀疏表,存储效率加快高
  • 一般会按行键值排序,加开了分布式检索速度
    在这里插入图片描述

与关系型数据库对比
如果要查询年龄情况,关系型数据库需要读取多个(所有)数据磁盘块,但是列存储数据库只需要读取某一块即可,时间短

HBASE数据库

全称:Hadoop Database,构建在Hadoop大数据平台上

  • 开源非关系型分布式数据库,用于存储海量非结构化与班结构化数据
  • 建立在HDFS,具有自动故障转移、自动分区、水平扩展等特性

与关系数据库比较

在这里插入图片描述

HBASE数据模型

在这里插入图片描述

  • 表:用表来组织数据,表由行列组成,列划分为若干个列族
  • 行:每个行由行键来标识
  • 列族:一个表被分组成许多“列族”,基本的访问控制单元
  • 列限定符:通过列限定符来定位列族内数据
  • 单元格:
  • 时间戳:每个单元格存放的多个数据通过时间戳来索引

根据行键、列族、列限定符和时间戳来确定一个单元格

物理存储

  • Table所有行都按照row key字典序排列
  • Table在行的方向上分割为多个区域(Region)
  • Region按大小分割,Region里的数据增加到阈值时等分为两个新的Region(表最开始只有一个Region)
  • Region是Hbase中分布式存储和负载均衡的最小单元,不同的Region分不到不同的RegionServer上
  • Region由一个或多个存储单元Store组成,每个store保存一个列簇。每个Store由一个内存单元和0至多个StoreFile组成。StoreFile以File格式保存在HDFS上
    HBASE表物理存储结构

HBASE系统组成

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值