查看: 2539| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

[题目讨论] 关于design facebook/instg/twitter 中的detabase的shard的讨论

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
最近在深入研究设计社交网络数据库分块这一部分的内容,这类问题一般都会有三张表格,user table, user-follower table and post table. 我想讨论的是这三张表格都需要shard吗?其实id可以两个类型,userid和postid,我的想法是这两个id公用一个64位的id,其中36位给local index,10位给db type,16位给sharding index, 8位保留。然后如果要某一个用户要post一个feed的话就去找用户所在的shard,然后找到里面的post table,插入新的一行. 这样做的弊端是冷热不均衡,我们可以用monitor来进行traffic的log,对traffic大的instance进行scalaing,加入更多的slave nodes以便于提高availability. 如果表格持续变大可以进一步的shard. 这就是我的思路.

这种方法本质上把同一个用户的信息放在了一个instance 上,还有一种方法貌似可以解决这种冷热不均匀的现象,求高人指点!

评分

参与人数 2大米 +8 收起 理由
helloteacha + 3 很有用的信息!
14417335 + 5 很有用的信息!

查看全部评分


上一篇:关于Bloom Filter
下一篇:两个非常详细的课程,关于OOD面试和系统设计面试
🔗
edwardhy1990 2019-5-12 02:37:07 | 只看该作者
全局:
对于traffic大的instance 最简单的方法不应该是加cache嘛?
回复

使用道具 举报

🔗
sal12 2019-6-5 10:51:17 | 只看该作者
全局:
我觉得post table需要根据Post ID 来shard, User Table 和 User Follower Table 可以根据User ID 来shard.
回复

使用道具 举报

🔗
HanBurger 2019-7-1 05:24:32 | 只看该作者
全局:
User table 的大小相对于 post table 来说应该小好几个数量级,可以按userid shard也可以不shard,多加几个slave distribute load应该就行了。
Post table 自然还是按postid shard比较合理,需要找一个user的post就需要搜寻所有的partition然后用aggregator merge/sort
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表