社交关系数据是互联网领域经常出现的应用,国内的新浪、微信等等,均是典型的代表。社交关系数据主要维护了用户关注和被关注信息。那么,如何使用HBase对社交关系数据进行建模和应用呢?本文将逐步探讨HBase实现社交关系数据存储的建模方法和应用技巧。
对社交关系数据的存储,通常有读和写两个方面的需求。在读数据方面,概括为以下三点:
(1)查看某用户A关注了哪些用户;
(2)查看哪些用户关注了用户A;
(3)判断用户A是否关注了用户B。
在写数据方面,概括为以下两点:
(1)用户A增加了一个新的关注者;
(2)用户A取消了对用户B的关注。
为了实现上述功能,对照HBase的数据模型,设计如下图所示的模型:
数据模型在该数据模型中,rowkey被设置为用户名称以方便查找和定位,column family为follows,其内部的每一列保存了一个关注者的信息。模型能够很好地解决读数据要求中的第一条和第三条,但第二条非常低效,需要遍历整张表查找哪些用户关注了某个特定用户,另外,为特定用户增加一个新的关注者也非常困难。
为了进一步优化以上模型,可考虑在同一张表中保存用户X关注的用户列表以及关注X的用户列表。如下图所示:
数据模型在该模型中,column familiy名称被改为“f”以减少数据存储空间和网络传输数据量,同时将前面的“宽表”改为“窄表”,即表中的rowkey由用户名称与被关注用户名称组合而成,column family中只有一列。
网友评论