美文网首页程序员简友广场读书
HBase实现社交关系数据存储

HBase实现社交关系数据存储

作者: 皮皮杂谈 | 来源:发表于2019-04-06 17:29 被阅读13次

    社交关系数据是互联网领域经常出现的应用,国内的新浪、微信等等,均是典型的代表。社交关系数据主要维护了用户关注和被关注信息。那么,如何使用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中只有一列。

    相关文章

      网友评论

        本文标题:HBase实现社交关系数据存储

        本文链接:https://www.haomeiwen.com/subject/mlariqtx.html