数据库对比、类比

关系型数据库、NoSQL

关系型数据库

表与表之间有关系。表存储一些格式化的数据结构,每个元组字段的组成都一样,这样便于表之间的联结操作。不过也限制了其性能瓶颈。

更支持SQL,支持复杂计算

NoSQL

表与表之间没有直接关系,创建不用遵循三范式,以键值对存储,结构不固定,可以减少一些空间和时间上的开销。

NoSQL用于指定那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。

不太支持复杂计算。

一般不用做分析使用。

对比项 NoSQL 关系型数据库
大表效率
成本
事务 不支持 支持
查询方式 非结构化查询 结构化查询
存储扩展 横向扩展,分布式 纵向扩展(横向有限)
存储规范 可以冗余 规范性,避免重复
存储格式 文档、键值对 表格式的行和列
复杂SQL,多表关联 不行

行列数据库

行数据库按行存,列数据库按列存。

行数据库插入快,列数据库插入慢。

行数据库全表扫描,列数据库扫描区域很小。

对于聚合操作来说,列式数据库更快。

类别 行存储 列存储
写入 写入一次性完成,保证数据完整性 一行记录拆成单列保存,写入次数多
数据修改写入方便 不轻易做数据修改写入操作
适用于关系型数据库 适用于分析型数据库
读取 将整行数据读取,如果只需要部分列,就会产生冗余列,会有消除冗余列的操作 读取的时候只读需要的列,不存在冗余性问题
同一行数据类型一般不同,解析时需要切换多种数据类型,消耗CPU增加解析时间 针对某列数据,数据类型相同,读取时不需要频繁切换数据类型
按行压缩,当一行有多个字段,每个字段对应的数据类型可能不一致,压缩性能比较差 按列压缩,每一列对应相同的数据类型

HBase

  • HBase是列式NoSQL数据库,可以海量存储,但是不适合分析。
  • 可以作为数仓的维表使用,只需按主键查询即可。

ClickHouse

  • ClickHouse是列式关系型数据库,既有列式数据库适合聚合操作的优点,又有关系型数据库的完备SQL特性。
  • 由于其彪悍的单表性能,所以将实时数据提前关联成宽表交给其处理,可以保证数据的时效性。

参考

行列数据库对比

HBase分析

NoSQL与关系型数据库全面对比