我对HBase几乎全新。我想基于MySQL进行当前的站点跟踪并将其放到HBase中,因为MySQL根本不再进行扩展。
我完全失去了第一步......
我需要跟踪用户的不同行为,并且需要能够通过某些方面(日期,他们来自的国家,他们执行操作的产品等等)聚合它们。
我目前存储它的方式是我有一个包含所有这些方面(国家,日期,产品......)的复合PK的表,其余字段是操作的计数器。执行某个操作时,我会将其插入到按行增加操作列的表中(ON DUPLICATE KEY UPDATE ...)。
*date | *country | *product | visited | liked | put_to_basket | purchased
2011-11-11 | US | 123 | 2 | 1 | 0 | 0
2011-11-11 | GB | 123 | 23 | 10 | 5 | 4
2011-11-12 | GB | 555 | 54 | 0 | 10 | 2
我有一种感觉,这完全违背了HBase的方式,并且也没有真正的扩展(如果密钥插入变得越来越贵,而且数量越来越多)并且不是很灵活。
如何在HBase中有效跟踪用户操作属性?表格应该如何? MapReduce出现在哪里?
感谢所有建议!
答案 0 :(得分:1)
Lars George的“HBASE:权威指南”解释了一个与您想要实现的设计非常相似的设计in the introduction chapter
答案 1 :(得分:1)
这可以按照以下方式完成,
在Hbase中拥有唯一的行ID,如下所示,
rowid =日期+国家+产品--->将这些附加到单个实体中并将其作为关键。
然后将计数器作为列。所以当你得到像这样的事件时,
if(event == liked){
increment the liked column of the hbase by 1 for the corresponding key combination.
}
等其他案例。
希望这会有所帮助!!