淘宝的数据拆分历程

系 统刚开始的时候,因为系统刚上线,用户不多,那个时候,所有的数据都放在了同一个数据库中,这个时候因为用户少压力小,一个数据库完全可以应付的了,但是 随着运营那些哥们辛苦的呐喊和拼命的推广以后,突然有一天发现,oh,god,用户数量突然变多了起来,随之而 来的就是数据库这哥们受不了,它终于在某一天大家都和惬意的时候挂掉啦。此时,咱们搞技术的哥们,就去看看究竟是啥原因,我们查了查以后,发现原来是数据 库读取压力太大了,此时咱们都清楚是到了读写分离的时候,这个时候我们会配置一个server为master节 点,然后配几个salve节 点,这样以来通过读写分离,使得读取数据的压力分摊到了不同的salve节点上面,系统终于又恢复了正常,开 始正常运行了。但是好景还是不长,有一天我们发现master这哥们撑不住了,它负载老高了,汗 流浃背,随时都有翘掉的风险,这个时候就需要咱们垂直分区啦(也就是所谓的分库),比如将商品信息,用户信息,交易信息分别存储到不同的数据库中,同时还 可以针对商品信息的库采用master,salve模式,OK, 通过分库以后,各个按照功能拆分的数据库写压力被分担到了不同的server上面,这样数据库的压力终于有恢复 到正常状态。但是是不是这样,我们就可以高枕无忧了呢?NO,这个NO, 不是我说的,是前辈们通过经验总结出来的,随着用户量的不断增加,你会发现系统中的某些表会变的异常庞大,比如好友关系表,店铺的参数配置表等,这个时候 无论是写入还是读取这些表的数据,对数据库来说都是一个很耗费精力的事情,因此此时就需要我们进行“水平分区”了(这就是俗话说的分表,或者说sharding).

OK,上 面说了一大堆,无非就是告诉大家一个事实“数据库是系统中最不容易scale out的一层”,一个大型的互联网 应用必然会经过一个从单一DB server,到Master/salve,再到垂直分区(分 库),然后再到水平分区(分表,sharding)的过程,而在这个过程中,Master/salve 以 及垂直分区相对比较容易,对应用的影响也不是很大,但是分表会引起一些棘手的问题,比如不能跨越多个分区join查 询数据,如何平衡各个shards的 负载等等,这个时候就需要一个通用的DAL框架来屏蔽底层数据存储对应用逻辑的影响,使得底层数据的访问对应用透明化。

拿 淘宝目前的情况来说,淘宝目前也正在从昂贵的高端存储(小型机+Oracle)切换到MySQL,切 换到mysql以 后,势必会遇到垂直分区(分库)以及水平分区(Sharding)的问题,因此目前淘宝根据自 己的业务特点也开发了自己的TDDL框架,此框架主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制。

淘宝的数据库拆分(TDDL)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 淘宝海量数据库之一:来自业务的挑战

    作为一个电子商务企业,从一开始,数据库及其事务能力在淘宝就扮演着十分关键的角色,淘宝也积累了丰富的数据库的架构和规划等方面的经验,产生了众多优秀的DBA. 淘宝是一家迅速发展的公司.全球网站排名公司A ...

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

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

  9. 淘宝MySQL数据库高可用实现方案

    一.常见的高可用MySQL解决方案 高性能性需要解决的主要有两个问题,即如何实现数据共享或同步数据,另一个是如何处理failover,数据共享一般的解决方案是通过SAN(Storage Area Ne ...

最新文章

  1. php设计模式中的类型安全 指--只接受特定的对象 ---以避免发生错误
  2. 如何安装SAP JCo3
  3. 炫界 (667) -(回应骑两小)_为什么那么多人喜欢骑地平线
  4. Asp.net Ajax AlwaysVisibleControl使用方法
  5. jQuery实现的向下推送图文信息滚动效果
  6. ROS的学习(十五)验证publisher和subscriber
  7. Android SDK Tools Platform-tools Build-tools
  8. Java语言实现人脸识别
  9. C++ IE缓存管理研究
  10. adb下载安装及使用
  11. 3月28日服务器维护,4月28日服务器例行维护公告
  12. lmdb数据库的读取与转换(二) —— 数据集操作
  13. Vue+axio实现在线音乐播放器
  14. 如何缓解眼睛疲劳酸痛?
  15. Geforce Game Ready驱动程序无法继续安装
  16. 简单几步实现RTMP直播
  17. 【网络安全】域名生成算法(DGA)基础总结
  18. 通过C#生成支付宝收款码 二 (支付宝沙箱版配置)
  19. 思途旅游电商系统源码介绍
  20. 警惕appleid钓鱼陷阱

热门文章

  1. SpringCloud学习笔记(一):SpringCloudt相关面试题
  2. dN/dS与分子进化常用软件
  3. 通过Opera 浏览器直接访问 IPFS 地址的配置
  4. 项目视频讲解_传播智客OA
  5. 文思创新本月登陆纽交所 中国软件外包资本破局(转)
  6. python tushare mpf 画股票k线图
  7. oracle create inital,ORA-01658 unable to create initial extent for segment in tablespace
  8. AOI自动光学检测仪在各工序中的应用
  9. 西门子触摸屏维修6ES7613-1CA02-0AE3按键屏修理
  10. sc微服务核心_用于SC2 API的网络核心包装