新浪微博、腾讯微博:mysql数据库主表设计猜想

新浪微博、腾讯微博:mysql数据库主表设计猜想

ID:22845753

大小:150.74 KB

页数:8页

时间:2018-11-01

上传者:U-991
新浪微博、腾讯微博:mysql数据库主表设计猜想_第1页
新浪微博、腾讯微博:mysql数据库主表设计猜想_第2页
新浪微博、腾讯微博:mysql数据库主表设计猜想_第3页
新浪微博、腾讯微博:mysql数据库主表设计猜想_第4页
新浪微博、腾讯微博:mysql数据库主表设计猜想_第5页
资源描述:

《新浪微博、腾讯微博:mysql数据库主表设计猜想》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

新浪微博、腾讯微博:mysql数据库主表设计猜想发布吋间:2011-08-03Youarchere:Home/SchemaDesign/新浪微博、腾讯微博:mysql数据库主表设计猜想新浪微博、腾讯微博:mysql数据库主表设计猜想八月3,2011byEugene•LeaveaComment用户信息表(t_user_info)字段名称字节数1类型描述Usericl4uint32用户编号(主键)Username20Char[20]名称Msg_count4uint32发布消息数量,可以作为t_msg_info水平切分新表的autoincrementFanscount4uint32粉丝数量Followcount4Uint32关注对象数量备注:以User_id取模分表用户之间关系表(t_uscr_rclation),必须有关注与被关注的关系字段名称字节数|类型描述Userid4uint32用户编号(联合主键)Follow」d4uint32被关注者编号(联合主键)Type1Uint8关系类型(0,粉丝;1,关注)备注:关系是单向的,以Userjd取模分表用户消息索引表(t_uer_msg_index)字段名称字节数1类型描述Userid4uint32用户编号(联合主键)Author_id4uint32消息发布者编号(可能是被关注者,也可能是自己)(联合主键)Msgid4uint32消息编号(由消息发布者的msgcount 新浪微博、腾讯微博:mysql数据库主表设计猜想发布吋间:2011-08-03Youarchere:Home/SchemaDesign/新浪微博、腾讯微博:mysql数据库主表设计猜想新浪微博、腾讯微博:mysql数据库主表设计猜想八月3,2011byEugene•LeaveaComment用户信息表(t_user_info)字段名称字节数1类型描述Usericl4uint32用户编号(主键)Username20Char[20]名称Msg_count4uint32发布消息数量,可以作为t_msg_info水平切分新表的autoincrementFanscount4uint32粉丝数量Followcount4Uint32关注对象数量备注:以User_id取模分表用户之间关系表(t_uscr_rclation),必须有关注与被关注的关系字段名称字节数|类型描述Userid4uint32用户编号(联合主键)Follow」d4uint32被关注者编号(联合主键)Type1Uint8关系类型(0,粉丝;1,关注)备注:关系是单向的,以Userjd取模分表用户消息索引表(t_uer_msg_index)字段名称字节数1类型描述Userid4uint32用户编号(联合主键)Author_id4uint32消息发布者编号(可能是被关注者,也可能是自己)(联合主键)Msgid4uint32消息编号(由消息发布者的msgcount 自增)(联合主键)Timet4Uint32发布时间(必须是消息元数据产生时间)备注:此表就是当我们点击“我的首页”吋拉取的消息列表,只是索引,Time_t对这些消息进行排序消息与消息关系表(t_msg_msg_rclation)字段名称字节数1类型描述Reference_id4uint32引用消息用户编号(联合主键)Referencemsgid4uint32引用消息编号(联合主键)Referencedid4uint32消息发布者编号Referencedmsgid4uint32被引用消息编号Type1Uint8操作类型(1,评论;2,转发)Timet4Uint32发布时间Pageindex4Uint32转发或者评论页码备注:以Reference_id取模分表。腾讯微博比新浪微博好的一点是一个消息的所有评论和转发都是被闹定页码,这样在点击看评论的时候搜索效率更高,因为多了一个wherePage_index的定位条件,当然带来的问题就是可能看到有些页的评论排版并不是满页,这就是因为标识为这个Page_index的评论有删除操作。消息元数据表(t_msg_info)字段名称字节数类型描述Userid4uint32发消息用户编号(联合主键)Msgid4uint32消息编号(联合主键)Content140Char[140]消息内容Type1Uint8消息类型(0,原创;1,评论;2,转发)Commented_count4Uint32评论过数量(只增不减,删除评论不影响此值,可以作为评论多页显示的页码)Commcntcount4Uint32保留的评论数量Transferredcount4Uint32转发过数量(只增不减,删除转发不影响此值,可以作为转发多页显示的页码)Transfercount4Uint32保留的转发数量Timet4Uint32发布时间 备注:消息元数据中,content像可能存在图片,这部分可以在分布式文件系统中存储。在2011年数据库大会上听杨海潮的演讲,对于nosql也有涉及,本人能力有限,对这部分的职责还不清楚,希望高人指点。非常推崇杨海潮ppt中的归档做法,因为微博是有时间轴线的,对于一定时间之前的记录可以分层次归档,这样在前端的最新的数据表的压力就会减轻很多。业务逻辑:1.A关注B1)在tuserrelationA中添加AB12)在t_userre1ation_B中添加BA02.原创发消息1)在t_msg_info_A屮添加这条元消息,type为02)更新tuserinfoA中Msgcount3)在t_uer_msg_index_A中插入A发的这条消息的索引(A的编号和消息编号)4)在tuserrelationA中找到所有关注A的人,比如B,C,D,E,F等等,并发在这些用户的t_uer_msg_index中插入A的这条信息索引,比如名人微傅可以并发多个进程来实现对粉丝的消息同步3.A转发B的消息msg_b1)在t_msg_info_A屮添加这条元消息msg_a,type为22)更新t_uscr_info_A屮Msg_count3)在t_ucr_msg_indcx_A中插入A发的这条消息的索引(A的编号和消息编号)4)在tmsginfoB中更新msgb的Transferredcount和Transfercount5)在t_msg_msg_relation中播加User_a,msg_a与User_b,msg_b的转发关系,page_index为Transferred_count%page_count4.A评论B的消息msg_b1)在t_msg_info_A屮添加这条元消息msg_a,type为12)更新t_uscr_info_A屮Msg_count3)在t_uer_msg_index_A中插入A发的这条消息的索引(A的编号和消息编号)4)在tmsginfoB中更新msgb的Commentedcount和Cominentcount5)在tmsgmsgrelation中添加Usera,msga与Userb,msgb的评论关系,page_index为Commented_count%page_count5.A删除消息msg_a1)删除t_msg_info屮的元数据msg_a 2)删除t_uer_msg_index_A中的User_a,msg_a行记录3)备注:如果A的msg_a被别人评论i者引用,那么在对方查看评论或者转发的时候会提示“原消息&被作者删除”1.人删除转发消息01叩_31)删除t_msg_info_A中的元数据msg_a2)删除t_uer_msg_indexA中的User_a,msg_a行记录3)在tmsgmsgrelationA表中找到msga的源消息,即B的msgb4)删除t_msg_msg_relation_A中user_a,msg_a和userb,msg_b的转发关系5)更新t_msg_info_B屮msg_b记录的Transfer_count,减12.A删除评论消息msg_a1)删除t_msg_info_A中的元数据msg_a2)删除tuermsgindexA中的Usera,msga行记录3)在t_msg_msg_relation_A表中找到msg_a的源消息,即B的msg_b4)删除t_msg_msg_re1ation_A中user_a,msg_a和user_b,msg_b的评论关系5)更新t_msg_info_B屮msg_b记录的Commecnt_count,减13.A拉取全部消息1)从t_uer_msg_index_A中拉取Author_id,Msg_id,Time_t索引,并以Timet排序2)过页码和每页count控制返回结果数量,这样避免了serverio压力冲击5月25日更新:1)条件允许的话,所有的index表可以放到内存中,全部cache,而元数据直接ssd,这样读速度会提高很多,当然也要做好热备2)t_user_relation表最好做合并存储5月27闩更新:1)在第二步原创发消息耍通知给粉丝,这时如果是明星,那么推送的数量可能数百万,新浪采取的做法是对这数百万粉丝进行区别对待,按照活跃度划分为几个层级,每个层级有一个推送时效限定,这样可以做到最想看到这个信息的 人能够最及时的看到明星动态2)用硬件来提升速度,将所有index表放在memory上,元数据放在ssd上,数据可以现在这两层上做处理,并定时持久化到mysql中3)提供批量处理接口,比如拉取最新更新索引4)在一定限度上容忍不一样,但要实现最终一致性6月1□更新:本文用的是push模式,关于微博的pull模式,请参见http://www.mysqlops.com/2011/06/21/weibo-sns-feed-push-pull.html6月30日更新:在新浪微傅中,评论和转发都与原创消息是一样的独立记录,只不过多了一条消息关系记录,在展现的时候除了要展现自己添加的转发内容或评论内容之外,还需要将最原始的那条0标消息取出来。原文作者:cleanfield本文转自:http://blog.csdn.net/cleanfield/article/details/6339428原创文章,转载请注明:文章地址新浪微博、腾讯微博:mysql数据库主表设汁猪想FiledunderSchemaDesign•TaggedwithMySQL,pull,push,微博,数据库,新浪,消息,腾讯,设计0lAboutEugene心态:数据库领域专心吃草,耕地和挤奶的牛!格言:Don’talwayscomplain,rememberthis:Nopains,Nogains!毅力:坚持梦想的方向终身不改变,永生为此奋斗!SpeakYourMindTelluswhatyou’rethinking…andoh,ifyouwantapictoshowwithyourcomment,gogetagravatar!•推荐文章游戏行业系统工程师工作手册•最多阅读咎用于内部培训的PPT内容:MySQL开发规范与实用技术交流(3,244 Views)MySQL中创建及优化索引组织结构的思路(1,722Views)新浪微博、腾讯微博:mysql数据库主表设计猜想(1,311Views)数据切片思路随聊(954Views)MySQL数据库用自增W快速查找未建索引的日期数据(503Views)MySQL数据库入门常识(409Views)•近期文章opuppet手册之创建可视化报告oMySQL数据库应用优化实践o基于协程的M络开发框架的设计与实现oeBay基于Hadoop平台的用户邮件数据分析o对MySQLDBA的一些思考•推荐阅读o盛大在线招MySQLDBAo数据分析工程师_上海omysql数据库上层加锁逻辑续o对称多处理器技术介绍opuppetsvn更新发布测试1=1opuppet手册之创建puppet可视化报告|MySQLOPS数据库与运维自动化技术分享发表在《puppet手册之发送puppet报告》oMySQL数据库应用优化实践|MySQLOPS数据库与运维自动化技术分亨发表在《MySQL数据库服务器端核心参数详解和推荐配置之一》osky发表在《puppet运维自动化Zcron管理》ott发表在《对MySQLDBA的一些思考》oliu.cy发表在《puppet运维自动化之cron管理》•友情链接网站OITPLB论坛MySQL版块链接地址OMySQL分支_MariaDB目万网站OMySQL分支_SkySQL官方网站OMySQL官方下载链接地址OOracle’sMySQLBlogOourlinux來忐O叶金荣BLOGO吴炳锡BLOGO运维专家网论坛O•标签青年怪客alibabaclusterDBAfacebookgoogleInnoDBitpubjavaLinuxmmorpgmyisainMySQLNoSQLOracleperlPHPredisreplicationSHELLSNSSolarisSQLSQLServertaobao上互联网优化分布式创业北试复制存储引擎工程师手册数据库架构淘宝游戏电子商务管理腾讯自动化没计运维阿里巴巴•功能 O注册o登录o文章RSSo评论RSSoWordPress.org本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭