淘先锋技术网

首页 1 2 3 4 5 6 7

当我们说hbase是宽表时,本质上是在说

odps里的宽表,单纯说的是字段数多, hbase里的宽表有哪些外延ne?

为何业务这么喜欢“宽表” - 知乎

一起聊聊数仓大宽表,雪花,星型 - 知乎

阿里云的hbase (表格存储):

宽表模型的构成以及与关系模型的区别_表格存储-阿里云帮助中心

1. schema_free的概念. 

   和mysql, hive 都不一样, 可以动态的插入列名和value.

   这样可用于中台/平台的存储.

    但是这样子以后, 想进行汇聚的时候又比较麻烦了, group by 哪列, 你是不知道的.
 

rowKey总量
rowKey11

                                表1

   表1 在mysql和hbase中都可以存在, 只不过一个是schema提前设计好,每个字段,类型是什么,提前设计好.  一个是动态插入的,存的是byte

2. 新增列类型 - 维度列

   不变

3. 新增列类型 - 指标列

   另外一方面, 限于rowKey的约束, 如果想对这个rowKey新增一个指标去记录, 就必须指明指标类型,例如 近3天上线时间. 关系型的思维方式是 增加一个指标type列, 然后设置枚举值, 相当于新建一个表

rowKey统计类型
rowKey1总量1
rowKey1近3天上线时间2分钟

                                                表2

近3天上线时间.  但是宽表思维不是, 直接新增一列,列名就是枚举值"近3天上线时间"

rowKey总量近3天上线时间
rowKey112分钟

                                                               表3

     表2 的问题在于, 两行有同一个rowKey , 这个在hbase里是不允许的 . 
     hbase 无法默认生成一个id ( 这点和 es有本质的区别 ). 所以存储在hbase里的数据 同一个row 不能有 type的概念,  一旦有了type,就需要拼接到rowKey中去. 表3自然而然就产生了. 这种类型的表在mysql和hbase都能存在.

3. 分化 - 列数不定长, 不可收敛

        作为中台, 统计类型是不可控的, 需要有扩展能力, hbase应用而生.

        作为低代码平台, 字段的扩展也是不可控的, 需要动态扩展, 还需要有索引能力, es就应用而生,动态字段和索引

       理论上mysql也可以,动态的查询schema,然后通过api实时的分析,动态新增字段. 应用层完成这些功能.

4. 统计    

    进行汇聚统计的时候, 也比较麻烦, 需要导入到odps中, 进行 列转行