查看: 48959|回复: 42

【IT名人堂】一个神奇的网站:58同城背后的数据库设计实践

[复制链接]
认证徽章
论坛徽章:
127
茶鸡蛋
日期:2012-01-16 14:24:41鲜花蛋
日期:2012-06-06 14:48:18双黄蛋
日期:2013-01-07 21:07:482013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:082014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上加薪
日期:2014-03-18 09:57:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11
发表于 2014-12-31 10:49 | 显示全部楼层 |阅读模式

大家好,我是主持人皮皮,欢迎大家做客第116期名人堂。58同城,一个被贴上“神奇”标签的网站,究竟有多神奇?不用中介租房子、不用花钱招人才、一折吃喝玩乐、闲置物品能换钱。尤其是对58同城这样的以信息交换为主的网站而言,数据就是金矿。如此海量信息背后到底支撑的数据库是什么?无论是双11秒杀,还是12306购票,当并发访问量相当密集的时候,这些数据库系统都会采取缓存策略,那么58同城在数据库的缓存优化方面又有哪些奇招呢?在2015中国数据库技术大会上,58同城高级架构师沈剑将为大家带来“58同城数据库设计实践”的精彩演讲。本期名人堂我们提前探班,先睹为快,一起来看看大会剧透的亮点吧。



皮皮(Q1):沈老师,您好!我目睹过您在我们架构师大会上的精彩演讲,架构师与DBA都属于IT行业金字塔尖的那一群人,那么DBA与架构师究竟有什么不同呢?对于特别想从事这两个行业的朋友,有没有什么好的建议?

沈剑(A1):1)相对系统架构师,数据库架构师更偏向数据库容量设计,数据库/表结构设计,分库分表设计,分库分表后业务灵活实现的设计,数据库扩展性可用性保证,数据库调优与运维等。

2)不管是系统架构师,还是数据库架构师,对于有志于从事这两个方向的朋友,我在这里有两个小建议:一是专注,在技术上持续投入时间,保持在一个技术领域内的专注度,切忌浮躁(很多技术人做几年就转管理而放弃了技术);二是保持对业务的关注,一切抛开业务的架构设计和数据设计,都是在耍流氓。


皮皮(Q2):您参加过今年架构师大会的演讲,对明年的数据库大会有哪些期待?

沈剑(A2)无论是中国架构师大会还是中国数据库技术大会,规模宏大,都云集了业内顶级的人才。2015中国数据库技术大会上,我非常期待有机会与更多的大牛沟通交流,共同探讨数据库技术,希望数据库大会与架构师大会都越办越好!对了,还期待自己的主题观众爆满哈。


皮皮(Q3):能否分享下您即将在2015年中国数据库技术大会上的演讲主题?

沈剑(A3)我 在2015数据库大会上分享主题是“58同城数据库设计实践”,内容包括以下几个方面,绝对干货,绝对贴近大伙日常工作,绝对用的上,欢迎有兴趣的同学参加。

一、58同城数据库设计常见问题及解决方案

1)数据量太大,怎么办?

      2)数据可用性如何保证?

3)不同读写比的业务,数据库如何设计?

     4)数据库字段如何无缝扩充?数据库导表如何无缝迁移?

二、58同城各类业务场景数据库拆库解决方案

1)用户库-单key场景如何拆库?

      2)帖子库-双key场景如何拆库?
      3)好友库-“关注”与“粉丝”场景如何拆库?

4)订单库-key场景如何拆库?

三、58同城拆库后出现的问题及解决方案

      1)分库后,in查询如何实现?

2)分库后,非key查询如何实现?

      3)分库后,夸库分页如何实现?
     4)分库后,order by + offset + limit如何实现?

四、58同城数据库中间件初探


皮皮(Q4):58同城的信息海量,数据量太大的情况下,如何保证高效的查询速度?58同城用到了什么样的数据库?

沈剑(A4):1)58同城,海量数据的检索,为了保证查询性能与查询速度,做了单独了搜索系统,而不是放在数据库里的,这套系统,如果有机会的话,我可以问问58 龙哥,让他在2015架构师大会上来分享哈。当然,非检索的业务,做海量数据时,有一系列优化方案,读写比设计、拆库设计等,非一言能尽哟,欲知细节,大伙到时候来参加我的分享哈。

  2)数据库,用作数据的固化存储,58还是mysql用的最多(部分固化用了mongodb,redis一般只做缓存用),但本次分享的经验,对于所有数据库都是适用滴。


皮皮(Q5):我们知道,当并发访问量相当密集的时候,比如双11,12306购票,这些数据库系统都会采取缓存策略。请问58同城在数据库的缓存优化方面,有哪些优化?

沈剑(A5):增加查询性能一般有几种方式:建立索引,增加读库,分库分表,增加缓存。在读多些少 的业务场景中,缓存是非常有效的,能极大增加系统读性能。58在数据库缓存使用上也不例外,在读多些少的核心业务中,例如用户信息、分类信 息、帖子信息上都进行了缓存优化(58主要使用memcache和redis做缓存)。另外使用缓存要注意“数据不一致”这一点,常用的优化方案是读写串行化和缓存双淘汰机制,预知这两种方案的细节,来现场听我的分享哈。


皮皮(Q6):除了缓存优化,海量数据存储于数据分析也是非常重要的,尤其是对58同城这样的以信息交换为主的网站而言,数据就是金矿。而我们知道,数据的存储和访问是 需要成本的,因此通常也把数据分为冷数据和热数据,请你简单分析一下58同城是根据什么策略划分冷热数据的,并分别采取什么样的存储策略?

沈剑(A6):58是一个生活信息平台,发布信息、浏览信息是它的核心业务。58业务场景有这样一个特点,信息的“时效性”比较强,例如:新发布的租房信息、职位信息、旧货信息会比较热,发布时间较长的信息相对比较冷。根据这个特点,58 同城一般使用“时间”作为冷热数据划分依据,最新的热数据信息存储在缓存里以提高读取效率,较长时间的冷数据信息存放在数据库内。还是那句话,系统设计得依据业务场景来。



      非常感谢沈剑为我们带来的精彩分享,希望大家能够积极参与互动,就自己所关心的话题提问或者交流心得。截止1月30日,我们将评选获奖会员四名,赠送技术图书一本。想了解更多名人堂嘉宾访谈或者报名参加名人堂,请点击:http://www.itpub.net/star/

      获奖名单:duanzhi1984、myownstars、lastwinner、hai503 详细信息将由ITPUB运营团队 与您联系,请注意私信。

认证徽章
论坛徽章:
171
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB社区12周年站庆徽章
日期:2013-08-13 16:52:38itpub13周年纪念徽章
日期:2014-10-08 15:21:35ITPUB14周年纪念章
日期:2015-10-26 17:23:44ITPUB15周年纪念
日期:2018-02-09 14:12:58ITPUB18周年纪念章
日期:2018-09-17 10:09:49状元
日期:2015-11-19 12:58:23榜眼
日期:2015-11-19 12:58:23探花
日期:2015-11-19 12:58:23
发表于 2014-12-31 14:23 | 显示全部楼层
沈老师:
你的2015数据库大会上分享主题“58同城数据库设计实践”,非常实惠啊!

在这里问一个问题:
数据库设计中,外键是否必须? 什么场景下使用外键约束,什么场景下通过应用或者存储过程来约束?

使用道具 举报

回复
发表于 2014-12-31 15:47 | 显示全部楼层
沈老师:
你的2015数据库大会上分享主题“58同城数据库设计实践”,非常实惠啊!

在这里问一个问题:
数据库设计中,外键是否必须? 什么场景下使用外键约束,什么场景下通过应用或者存储过程来约束?

使用道具 举报

回复
招聘 : 系统分析师
论坛徽章:
483
马上有钱
日期:2014-02-19 11:55:14itpub13周年纪念徽章
日期:2014-09-29 01:14:14itpub13周年纪念徽章
日期:2014-10-08 15:15:25itpub13周年纪念徽章
日期:2014-10-08 15:15:25马上有对象
日期:2014-10-12 11:58:40马上有车
日期:2014-11-16 17:11:29慢羊羊
日期:2015-02-09 17:04:38沸羊羊
日期:2015-03-04 14:43:432015年新春福章
日期:2015-03-06 11:57:31ITPUB年度最佳版主
日期:2015-03-18 15:48:48
发表于 2014-12-31 16:39 | 显示全部楼层
沈老师,楼上是复读机,不要理他啊……

问个问题,58的缓存有没有分级别?比如一级缓存、二级缓存,分别存放高热度和中热度的数据

使用道具 举报

回复
认证徽章
论坛徽章:
12
青年奥林匹克运动会-铁人三项
日期:2014-09-22 09:51:212015年新春福章
日期:2015-03-06 11:59:472015年新春福章
日期:2015-03-04 14:55:13凯迪拉克
日期:2014-11-20 09:13:05itpub13周年纪念徽章
日期:2014-11-06 15:29:09马上加薪
日期:2014-10-28 09:44:43itpub13周年纪念徽章
日期:2014-10-09 14:40:48马上有房
日期:2014-10-09 10:14:27马上有车
日期:2014-10-09 10:14:27itpub13周年纪念徽章
日期:2014-10-08 15:15:25
发表于 2015-1-2 17:18 | 显示全部楼层
沈老师:支持!期待您分享跟多干货!
问个问题,数据库架构方面,很多成熟的大型网站的系统架构可能是随着业务功能的扩展、数据量的增加逐渐设计、开发而不断完善,58系统是否经历几个阶段,在此期间有什么要着重考虑的方面啊。

使用道具 举报

回复
认证徽章
论坛徽章:
9
优秀写手
日期:2014-01-08 06:00:12目光如炬
日期:2014-02-17 06:00:122014年新春福章
日期:2014-02-18 16:50:09马上有车
日期:2014-02-18 16:50:09目光如炬
日期:2014-03-03 06:00:12目光如炬
日期:2014-04-21 06:00:12技术图书徽章
日期:2014-06-20 16:24:20暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47
发表于 2015-1-3 19:41 | 显示全部楼层
沈老师:支持!期待您分享跟多干货!

使用道具 举报

回复
认证徽章
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2015-1-3 23:09 | 显示全部楼层
支持,牛人啊

使用道具 举报

回复
认证徽章
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
发表于 2015-1-4 09:43 | 显示全部楼层
本帖最后由 mchdba 于 2015-1-4 10:44 编辑

请问下
     4)分库后,order by + offset + limit如何实现?

你们这里面的offset都是哪些业务场景会涉及到offset呢?

使用道具 举报

回复
论坛徽章:
0
发表于 2015-1-4 10:35 | 显示全部楼层
一键root工具,推荐天天root

使用道具 举报

回复
论坛徽章:
2
2014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
发表于 2015-1-4 14:02 | 显示全部楼层
支持分享

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表