`

淘宝的数据拆分历程

    博客分类:
  • SQL
 
阅读更多
摘自:
http://blog.csdn.net/imcxin/article/details/7298757
淘宝的数据拆分历程

系统刚开始的时候,用户数量不多,所有的数据都放在了同一个数据库中,此时因为用户少压力小,一个数据库完全可以应付的了。但是随着用户数量不断增加,数据库压力也与日俱增,它终于在某一天大家都和惬意的时候挂掉啦。此时是到了读写分离的时候,这个时候我们会配置一个server为master节点,然后配几个salve节点,这样以来通过读写分离,使得读取数据的压力分摊到了不同的salve节点上面,系统终于又恢复了正常,开始正常运行了。但是好景还是不长,有一天我们发现master撑不住了,负载很高,随时都有挂掉的风险,这个时候就需要进行垂直拆分啦(也就是所谓的分库),比如将商品信息、用户信息、交易信息分别存储到不同的数据库中,同时还可以针对商品信息的库采用master/salve模式,OK, 通过分库以后,各个按照功能拆分的数据库写压力被分担到了不同的server上面,这样数据库的压力终于有恢复到正常状态。但是不是这样,我们就可以高枕无忧了呢?NO,通过前辈们的经验总结显示,随着用户量的不断增加,你会发现系统中的某些数据表会变的异常庞大,比如好友关系表,店铺的参数配置表等,此时无论论是写入还是读取这些表的数据,对数据库来说都是一个很耗费精力的事情,因此此时就需要我们进行“水平拆分”了(这就是俗话说的分表,或者说sharding)。
上面的阐述,无非就是告诉大家一个事实“数据库是系统中最不容易scale out的一层”,一个大型的互联网应用必然会经过一个从单一DB server, 到Master/salve, 再到垂直分区(分库),然后再到水平分区(分表即sharding)的过程,而在这个过程中,Master/salve 以及垂直分区相对比较容易,对应用的影响也不是很大,但是分表会引起一些棘手的问题,比如不能跨越多个分区join查询数据,如何平衡各个shards的负载等等,这个时候就需要一个通用的DAL框架来屏蔽底层数据存储对应用逻辑的影响,使得底层数据的访问对应用透明化。
拿淘宝目前的情况来说,淘宝目前也正在从昂贵的高端存储(小型机+ORACLE)切换到MYSQL, 切换到MYSQL以后,势必会遇到垂直分区(分库)以及水平分区(Sharding)的问题,因此目前淘宝根据自己的业务特点也开发了自己的TDDL框架,此框架主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制问题。
分享到:
评论

相关推荐

    产品的架构演化过程及部分互联网公司架构分析

    产品的架构演化过程及部分互联网公司架构分析。 客户层:支持PC浏览器和手机APP。差别是手机APP可以直接访问...大数据处理层:通过Mapreduce进行离线数据分析或Storm实时数据分析,并将处理后的数据存入关系型数据库。

    大型网站架构改进历程:存储的瓶颈(四)

    在讲数据库水平拆分时候,我列出了水平拆分数据库需要...回答这个疑问我们首先要想想进行读写分离操作的表真的是因为数据量大吗?答案其实是否定的。,举个例子,有一张表每天会增加1万条数据,也就是说我们的系统每

    大型网站架构改进历程:存储的瓶颈(三)

    当表被水平拆分后,原数据表成为了一个逻辑的概念,而这个逻辑表的业务含义需要多张物理表协同完成,因此数据库的表被水平拆分后,那么我们对这张表的操作已经超出了数据库本身提供给我们现有的手段,换句话说我们...

    ggplot2:数据分析与图形艺术

    实际上ggplot2很大程度上被重写了,例如开始使用R自带的S3泛型函数设计,以及将过去ggplot2的功能继续模块化为一些独立的包,一个典型的例子就是标度部分的功能被抽象到scales包中,从数据映射到颜色、大小等外观...

    企业实战 -大型网站架构概述

    大型网站架构概述网站架构的发展历程初始阶段的网站应用和数据分离使用缓存改善网站性能缓存技术:使用应用服务器集群改善并发处理能力数据库读写分离使用反向代理和CDN加速网站响应使用分布式文件系统和分布式数据库...

    网站架构技术

    大型网站架构演化发展历程 初始阶段 应用服务和数据服务分离 使用缓存改善网站性能 缓存类型 本地缓存 分布式缓存 缓存产品 redis 业界主流 memcached 解决问题 数据库...

    Oracle优化日记:一个金牌DBA的故事 白鳝.扫描版

    一个金牌DBA的故事》是一本介绍Oracle数据库优化方法的书,以一个实际的大型优化项目为原型,用日记的形式记录了一个优化小组的DBA 如何从纷繁的头绪中找到突破口,进而完成了一个看似不可能完成的任务的历程。...

    Visual C# 2005程序设计自学手册 随书源码第一部分(共三部)

     本书适用于C#初、中级用户,也可作为大、中专院校师生和培训班的教材,对于程序开发爱好者,本书也有非常好的参考价值。 第1篇 起步篇 第1章 认识Visual C# 3 1.1 Visual C# 概述 4 1.1.1 Visual C#发展历程...

    Visual C++实践与提高-COM和COM+篇『PDF』

    因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的...

Global site tag (gtag.js) - Google Analytics