词语大全 > 高表

高表

高表(high table),是HBase模型设计中与宽表对应的一种设计模式。

宽表:一行中包含很多列。 [1]

高表:一种新模式,每一行代表一个关系。

举个栗子来说:

现在应业务需要在HBase中要设计一张表来存储这样的关系(关注-被关注),那么使用宽表设计如下:

[2]

由于follows列族已经定义,而列限定符可以动态添加,所以“张三”想要关注新的成员的时候,就只要在列族“follows”里增加列即可,在这里使用“1”作为单元值。取消关注时,就将这一列删除。

HBase模式的简单和灵活允许你做出这种优化。

而使用高表设计则是这样的:

高表设计的优点:

使用短的的列族和列限定符,可以减少网络IO,因为KeyValue对象变小了。试想宽表设计时,如果某个人关注了1W个用户,那么在获取他的关注列表时会有网络问题的。

MD5后的rowkey,可以使数据均匀分布在region上,避免了热点问题 [3]

rowkey的长度统一,方便预测读写性能,同时更加容易扫描计算起始和停止键

总地来说,就是高表可以大大提升读数据的性能。

人有悲欢离合,月有阴晴圆缺,凡事都有其不足,高表设计带来的缺点:破坏了原子性原则。在上面的栗子中,因为应用不需要原子性,所以是可行的。但是其他使用场景可能需要这种原子性,那时宽表更合适。

词语大全 8944.net

copyright ©right 2010-2021。
词语大全内容来自网络,如有侵犯请联系客服。zhit325@126.com