NoSQL综述及HBase基础

@[TOC](这里写目录标题

NoSQL

什么是NoSQL

  • NoSQL:not only SQL,非关系型数据库
  • NoSQL是一个通用术语
    • 指不遵循传统RDBMS模型的数据库
    • 数据是非关系的,且不使用SQL作为主要查询语言
    • 解决数据库的可伸缩性和可用性问题
    • 不针对原子性或一致性问题

为什么使用NoSQL

  • 互联网的发展,传统关系型数据库出现瓶颈
    • 高并发读写
    • 高存储量
    • 高可用性
    • 高扩展性
    • 低成本

NoSQL与关系型数据库对比

  • 主要区别如下
    NoSQL综述及HBase基础

NoSQL的特点

  • 最终一致性
  • 应用程序增加了维护一致性和处理事务等职责
  • 冗余数据存储
  • NoSQL != 大数据
    • NoSQL产品是为了帮助解决大数据存储问题
    • 大数据不仅仅包含数据存储的问题

NoSQL三大基石

  • 1、CAP

    • 数据库最多支持3个中的2个
      • Consistency(一致性)
      • Availability(可用性)
      • Partition Tolerance(分区容错性)
    • NoSQL不保证“ACID”(事务四特性)
    • 提供“最终一致性”
      NoSQL综述及HBase基础
  • 2、BASE

    • Basically Availble(基本可用)
      • 保证核心可用
    • Soft-state(软状态)
      • 状态可以有一段时间不同步
    • Eventual Consistency(最终一致性)
      • 系统经过一定时间后,数据最终能够达到一致的状态
  • 核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性

  • 3、最终一致性

    • 最终结果保持一致性,而不是时时一致
    • 如账户余额,库存量等数据需强一致性
    • 如catalog等信息不需要强一致性
      • Causal consistency(因果一致性)
      • Read-your-writes consistency(读写一致性)
      • Session consistency(会话一致性)

索引和查询

  • Indexing(索引)
    • 大多数NoSQL是按key进行索引
    • 部分NoSQL允许二级索引
    • HBase使用HDFS,append-only
      • 批处理写入Logged
      • 重新创建并排序文件
  • Query(查询)
    • 没有专门的查询语言,通常使用脚本语言查询
    • 有些开始支持SQL查询
    • 有些可以使用MapReduce代码查询

NoSQL分类

  • 主要有以下四种:
    NoSQL综述及HBase基础
  • 各种的区别:
    • 键值存储数据库(Key-Value)
      NoSQL综述及HBase基础
    • 列存储数据库(Wide Column Store)
      NoSQL综述及HBase基础
    • 文档型数据库(Document Store)NoSQL综述及HBase基础
    • 图数据库(Graph Databases)NoSQL综述及HBase基础

HBase

概述

  • HBase是一个领先的NoSQL数据库
    • 是一个面向列存储的数据库
    • 是一个分布式hash map
    • 基于Google Big Table论文
    • 使用HDFS作为存储并利用其可靠性
  • HBase特点
    • 数据访问速度快
    • 支持随机读写
    • 可扩展性

HBase发展历史

NoSQL综述及HBase基础

HBase应用场景

  • 增量数据-时间序列数据
    • 高容量,高速写入NoSQL综述及HBase基础
  • 信息交换-消息传递
    • 高容量,高速读写NoSQL综述及HBase基础
  • 内容服务-Web后端应用程序
    • 高容量,高速读写NoSQL综述及HBase基础

HBase物理架构

  • HBase采用Master/Slave架构NoSQL综述及HBase基础
    • HMaster
      • HMaster的作用
        • 是HBase集群的主节点,可以配置多个,用来实现HA
        • 管理和分配Region
        • 负责RegionServer的负载均衡
        • 发现失效的RegionServer并重新分配其上的Region
    • RegionServer
      • RegionServer负责管理维护RegionNoSQL综述及HBase基础
    • Region和TableNoSQL综述及HBase基础

HBase逻辑架构

  • Row
    • Rowkey(行键)是唯一的并已排序
    • Schema可以定义何时插入记录
    • 每个Row都可以定义自己的列,即使其他Row不使用
      • 相关列定义为列族
    • 使用唯一时间戳维护多个Row版本
      • 在不同版本中值类型可以不同
    • HBase数据全部以字节存储

HBase数据管理

  • 数据管理目录
    • 系统目录表hbase:meta
      • 存储元数据等
    • HDFS目录中的文件
    • Servers上的region实例
  • HBase数据在HDFS上
    • 可以通过HDFS进行修复File
    • 修复路径
      • RegionServer->Table->Region->RowKey->列族
        NoSQL综述及HBase基础

HBase架构特点

  • 强一致性
  • 自动扩展
    • 当Region变大会自动分割
    • 使用HDFS扩展数据并管理空间
  • 写恢复
    • 使用WAL(Write Ahead Log)
  • 与Hadoop集成

HBase Shell

  • HBase Shell是一种操作HBase的交互模式

    • 支持完整的HBase命令集NoSQL综述及HBase基础
  • 通过hbase shell进入NoSQL综述及HBase基础

  • 基本操作NoSQL综述及HBase基础

  • 将文档数据导入HBaseNoSQL综述及HBase基础