一.非关系型数据库:
1.1 介绍:
非关系型数据库(NoSQL Database)是相对于传统关系型数据库而言的一类新型数据库技术,其设计目的是解决大规模数据存储、高并发访问、灵活数据结构等场景下的问题。与关系型数据库(如 MySQL、Oracle)依赖固定表结构和 SQL 查询不同,非关系型数据库通常采用更灵活的数据模型,且不强制遵循 ACID(原子性、一致性、隔离性、持久性)事务特性的严格约束。
1.2 分类:
键值存储数据库
数据模型:以 “键 - 值” 对形式存储数据,键是唯一标识符,值可以是任意类型(字符串、JSON、二进制数据等),不支持复杂查询。 特点:查询速度极快(O (1) 复杂度),适合简单的读写操作,扩展性强。 典型应用场景:缓存、会话管理、计数器、购物车等。
文档存储数据库
数据模型:以 “文档” 为基本单位(通常是 JSON、BSON 或 XML 格式),文档内可以包含嵌套结构,支持对文档内容进行查询。 特点:数据结构灵活(无需预定义 schema),适合存储半结构化数据,支持复杂查询和索引。 典型应用场景:内容管理系统(CMS)、博客平台、电商商品信息、用户画像等。
列族存储数据库(Hbase)
数据模型:数据按 “列族”(Column Family)组织,每个列族包含多个行,每行又包含多个列(键值对),可视为 “稀疏矩阵” 结构。 特点:擅长处理海量数据,支持高写入吞吐量,适合按列族批量查询,不适合随机读写。 典型应用场景:日志存储、时间序列数据、数据分析(如用户行为分析)、分布式文件系统等。
图形数据库
数据模型:以 “节点”(实体)和 “边”(关系)组成的图形结构存储数据,专注于表达实体间的复杂关系。 特点:高效处理多对多关系,支持复杂的路径查询、关联分析,适合挖掘数据间的隐性关系。 典型应用场景:社交网络(好友关系)、推荐系统(用户 - 商品关联)、知识图谱、欺诈检测等。
二.HBASE:
2.1 基本概念:
HBase是一个构建在HDFS上的分布式列存储系统,基于Google BigTable模型开发的,典型的key/value系统。从逻辑上讲,HBase将数据按照表、行和列进行存储。与Hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
2.2 核心特点:
分布式架构
基于 Hadoop HDFS 存储数据,利用 HDFS 的高可靠性和扩展性,支持水平扩展至数千节点。
采用 Master-Slave 架构:
HMaster:负责管理集群元数据、分配 Region 到 RegionServer、负载均衡等。
RegionServer:实际处理数据读写请求的节点,管理多个 Region(数据分片)。
列式存储
数据按 “列族”(Column Family)组织,同一列族的数据物理上存储在一起,适合批量读取同一列族的数据(如日志分析)。
支持稀疏数据模型:每行可以有不同的列,且列可以动态添加。
强一致性
所有读写操作都保证强一致性(通过 WAL 预写日志和 MVCC 多版本并发控制),适合金融交易、实时计数器等场景。
高可用性
支持 RegionServer 自动故障转移(依赖 ZooKeeper 协调),无单点故障。
数据自动分片(Region)并多副本存储(默认 3 副本),确保数据可靠性。
灵活扩展性
支持动态添加节点,自动负载均衡和数据分片迁移。
适合存储海量数据(单集群可支持 PB 级数据)。
2.3 数据模型:
表(Table)
逻辑上按行存储数据,每行有唯一的行键(Row Key),按字典序排序。
列族(Column Family)
表的基本分组单位,需在创建表时定义。例如,
user
表可能有info
(存储用户基本信息)和stats
(存储用户统计数据)两个列族。
列限定符(Column Qualifier)
列族内的具体列,可动态添加。例如,
info:name
、info:age
。
时间戳(Timestamp)
每个单元格(Cell)的每个值都有时间戳,支持多版本数据(通过保留历史版本实现)。
Region
表按行键范围分片存储,每个分片称为一个 Region,由一个 RegionServer 管理。当 Region 过大时会自动分裂。
2.4 适用场景:
大数据存储
适合存储 PB 级数据(如用户行为日志、IoT 传感器数据),支持高并发读写。
实时查询
支持单键或范围查询,延迟低(毫秒级),适合实时应用(如实时推荐、在线报表)。
稀疏数据
处理大量稀疏数据(如社交网络关系、广告点击数据),节省存储空间。
分布式应用
作为分布式系统的底层存储(如 Hadoop MapReduce、Spark 的数据源)。
*典型应用案例**
Facebook 消息存储:早期 Facebook 用 HBase 存储消息数据。
百度搜索引擎:用于网页索引和搜索结果缓存。
金融交易系统:存储高频交易数据、实时风险监控。