作为一个电子商务企业,从一开始,数据库及其事务能力在淘宝就扮演着十分关键的角色,淘宝也积累了丰富的数据库的架构和规划等方面的经验,产生了众多优秀的DBA。

淘宝是一家迅速发展的公司。全球网站排名公司Alexa提供的数据显示,2010年4月27日,Amazon、Ebay的用户占全球互联网用户的百分比分别为3.47%和2.68%,而淘宝的用户占全球互联网用户的百分比则达到了4.1%,淘宝网日独立访问量从此超过了Amazon和Ebay。

淘宝的数据规模及其访问量对关系数据库提出了很大挑战:数十亿条的记录、数TB的数据、数千TPS、数万QPS让传统的关系数据库不堪重负,单纯的硬件升级已经无法使得问题得到解决,分库分表也并不总是凑效。下面来看一个实际的例子。

淘宝收藏夹是淘宝线上应用之一,淘宝用户在其中保存自己感兴趣的宝贝(即商品,此外用户也可以收藏感兴趣的店铺)以便下次快速访问、对比和购买等,用户可以展示和编辑(添加/删除等)自己的收藏。

淘宝收藏夹数据库包含了收藏info表(一条一条的收藏信息)和收藏item表(被收藏的宝贝和店铺)等:

  • 收藏info表保存收藏信息条目,数十亿条
  • 收藏item表保存收藏的宝贝和店铺的详细信息,数亿条
  • 热门宝贝可能被多达数十万买家收藏
  • 每个用户可以收藏千个宝贝
  • 宝贝的价格、收藏人气等信息随时变化

如果用户选择按宝贝价格排序后展示,那么数据库需要从收藏item表中读取收藏的宝贝的价格等最新信息,然后进行排序处理。如果用户的收藏条目比较多(例如1000条),那么查询对应的item的时间会较长:假设如果平均每条item查询时间是5ms,则1000条的查询时间可能达到5s,若果真如此,则用户体验会很差。

如果把收藏的宝贝的详细信息实时冗余到收藏info表,则上述查询收藏item表的操作就不再需要了。但是,由于许多热门商品可能有几千到几十万人收藏,这些热门商品的价格等信息的变动可能导致收藏info表的大量修改,并压垮数据库。

OceanBase是淘宝自主研发的海量数据库,并且已经开源( http://oceanbase.taobao.org/ )。在应用团队和OceanBase团队的共同努力下,上述问题得到了很好地解决:平均响应时间几十毫秒,最长响应时间一百多毫秒。与先前使用的关系数据库相比,系统QPS和TPS提升了几倍,服务器数量反而减少了。

Author:正祥

淘宝海量数据库之一:来自业务的挑战相关推荐

  1. 淘宝海量数据库之二:一致性选择

    众所周知,一致性是数据最关键的属性之一.2000年,Eric Brewer教授在ACM分布式计算年会上指出了著名的CAP理论: Brewer, E. A. 2000. Towards robust d ...

  2. 【行业参考】大数据背景下的淘宝核心数据库建设与OceanBase技术探讨

    声明: 本文为转载(信息来源:三星应用社区-CSDN),文章标题为本博自拟,与来源无关.本文仅作参考,如有版权问题,请与博主联系删除.请勿转载本文,因转载导致的版权纠纷,与本博无关. 时至今日,&qu ...

  3. 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。

    淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 文章目录 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 本文导读 1.分库分表 2.数据冗余 3.异步复制 4.读 ...

  4. 淘宝的数据库拆分(TDDL)

    淘宝的数据拆分历程 系 统刚开始的时候,因为系统刚上线,用户不多,那个时候,所有的数据都放在了同一个数据库中,这个时候因为用户少压力小,一个数据库完全可以应付的了,但是 随着运营那些哥们辛苦的呐喊和拼 ...

  5. 大型系统架构设计-阿里淘宝天猫双十一数据库核心技术介绍

    目录 零.双十一是什么? 一.2013 双十一数据库指导思想 1.知己知彼,百战不殆 (1)如何做到知己 (2)如何做到知彼 2.平时多流汗,战时少流血 (1)真实环境压测之缓存穿透 (2)MetaQ ...

  6. 阿里淘宝海量级数据技术架构

    架构图 按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层(如图1所示),分别是数据源.计算层.存储层.查询层和产品层.位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户.店铺.商品和交易 ...

  7. 淘宝分布式数据库是如何实现高可用的

     一. 淘宝双十一狂欢节的背后 每年的双十一购物节,即是电商们和"剁手族"们的狂欢节,也是各电商和各银行背后IT人的考验时刻.每年的这个晚上,从运行中心到研发中心,大家都严阵以 ...

  8. 淘宝的数据库,主键是如何设计的?

    MySQL数据库架构设计的基本功就是对于表结构的设计. 如对于字段类型的选择:表的存储设计,压缩还是非压缩,如何选用压缩算法:表的访问设计,SQL还是NoSQL. 这些问题看似非常简单并容易回答,然而 ...

  9. 淘宝商品数据库设计的一些经验

    前言 这几个月都在做一个通过淘宝API线下管理淘宝店的系统,学习了很多东西,这里想对淘宝商品表设计用自己的想法表现出来,如果你觉得很扯淡,可以写下自己的看法.OK,切入正题. 淘宝的商品这块的复杂程度 ...

最新文章

  1. C++ STL: lower_bound 和 upper_bound
  2. Swift反射API及其用法
  3. DRF 商城项目 - 用户操作(收藏, 留言, 收货地址)
  4. hdu 1573(中国剩余定理非互质情况)
  5. tomcat错误: javax.management.MalformedObjectNameException: Invalid character ':' in value part of prop
  6. 基础、语法都不是最重要的,学Python最重要的是什么?编程思路!
  7. 如何选择高性能的数据分析工具,你需要看看数据架构的进化史!
  8. java dom4j 写xml文件_Java实现——Dom4j读写XML文件
  9. maven项目转eclipse工程的命令:eclipse.bat
  10. JAVA里static 变量在程序执行结束后是否被消毁
  11. 神经网络drop out
  12. OpenCV自带的CamShift算法解读
  13. 利用Xposed秒抢微信红包
  14. Ubuntu下挂载Windows分区
  15. 苹果手机编辑word_苹果手机自带了三个PDF功能!每一个都这么好用!你知道几个呢?...
  16. 北大英语系计算机系,北京大学
  17. php数据存储mysql_php mysqli 存储数据库
  18. html浏览器标题闪动,一个网页标题title的闪动提示效果实现思路
  19. 短学期微机接口课程设计
  20. 公司庆典活动策划方案怎么写?需要把握6个方面

热门文章

  1. Quartus Prime 中IP核中NCO核(DDS的配置)过程(保姆级教程)
  2. 如何从程序员走向技术管理岗位?
  3. PostGIS--线路合并方法比较
  4. 腾讯:只许我抄天下人,不许天下人抄我!
  5. SpringMvc 与 Struts2 区别总结
  6. 【YOLT】《You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery》
  7. 在ASP.NET项目中使用XPO的最佳准则
  8. Java 输出语句
  9. 20221229英语学习
  10. win10 golang配置