hbase、hive、clickhouse对比

概念

架构

  • hbase

    • master存储元数据、regionServer实际控制表数据,存储单位是Region,底层数据存储使用HDFS
  • hive

    • 通过driver将sql分解成mapreduce任务
    • 元数据需要单独存储到一个关系型数据库,一般是mysql
    • 实际数据存储可以是外表,也可以是内表
  • clickhouse

    • 单体架构分层类似mysql,集群状态下是多主,通过zookeeper通信
    • 数据存储看引擎,最重要的引擎是mergeTree家族
    • 部分引擎是不会存储数据的,比如kafka引擎。还有部分引擎其实是计算引擎,只会存储计算结果,不会保留原始数据,是适合作为物化表的引擎,比如aggregateMergeTree

数据库类型

  • hbase

    • 本质是一款列数据库,oltp类型
    • 依赖hadoop生态
  • hive

    • 本质是将sql转化成mapreduce作业,依赖于hadoop的计算能力。存储可以是hdfs,也可以是hbase等其他构建在hdfs上的数据库
    • 依赖hadoop生态
  • clickhouse

    • 不依赖hadoop生态
    • 理念是一切都是表
    • 本质是一个olap系统的列式数据库,主要做即时查询

特性

join

  • hbase

    • 没有join、group等复杂能力
  • hive

    • 尽量不要做join操作,因为没有唯一键
    • join时适合左小右大,因为hive是缓存前面的所有表,然后扫描最右边一张表。
  • clickhouse

    • join时适合左大右小,因为ch会把右边的表加载到内存中。
  • mysql

    • 原则上不需要我们自己考虑左右表的摆放,mysql自己会计算。
    • 命中索引时适合左小右大,因为无论左右怎么放,此时的查询次数都是一样的。左小右大可以减少右边表的连接次数。
    • 未命中索引时,适合左大右小,因为此时mysql会把右边的表加载到内存中

事务和锁

  • hbase

    • 只支持单行事务
  • hive

    • 不支持事务
    • 只能锁表,不支持行级锁
  • clickhouse

    • 不支持事务

你可能感兴趣的:(hbase,hive,hadoop)