【海量数据下分库分表最优方案】

随着移动互联网的发展,海量数据处理成为挑战。文章探讨了应对海量用户数据的策略,包括分区、分库分表、NoSQL/NewSQL等。提到了阿里巴巴的TDDL、DRDS、cobar,以及开源项目如sharding-jdbc(现为sharding-sphere)、MyCAT、Atlas和zebra等中间件解决方案。文中还对比了CLIENT模式和PROXY模式,并讨论了基于单一和多个sharding column的分库分表策略,以及冗余全量表与冗余关系表在速度、存储成本和维护代价上的差异。
摘要由CSDN通过智能技术生成

移动互联网时代,海量的用户每天产生海量的数量,比如:

  •  
    • 用户表
    • 订单表
    • 交易流水表
以支付宝用户为例,8亿;微信用户更是10亿。订单表更夸张,比如美团外卖,每天都是几千万的订单。淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因为这时它的BTREE索引树高在3~5之间。
既然一张表无法搞定,那么就想办法将数据放到多个地方,目前比较普遍的方案有3个:
  • 分区;
  • 分库分表;
  • NoSQL/NewSQL;
既然一张表无法搞定,那么就想办法将数据放到多个地方,目前比较普遍的方案有3个:
  • 分区;
  • 分库分表;
  • NoSQL/NewSQL;
说明:只分库,或者只分表,或者分库分表融合方案都统一认为是分库分表方案,因为分库,或者分表只是一种特殊的分库分表而已。NoSQL比较具有代表性的是MongoDB,es。NewSQL比较具有代表性的是TiDB。
Why Not NoSQL/NewSQL?
首先,为什么不选择第三种方案NoSQL/NewSQL,我认为主要是RDBMS有以下几个优点:
- RDBMS生态完善;
- RDBMS绝对稳定;
- RDBMS的事务特性;
NoSQL/NewSQL作为新生儿,在我们把可靠性当做首要考察对象时,它是无法与RDBMS相提并论的。RDBMS发展几十年,只要有软件的地方,它都是核心存储的首选。
目前绝大部分公司的核心数据都是:以RDBMS存储为主,NoSQL/NewSQL存储为辅!互联网公司又以MySQL为主,国企&银行等不差钱的企业以Oracle/DB2为主!NoSQL/NewSQL宣传的无论多牛逼,就现在各大公司对它的定位,都是RDBMS的补充,而不是取而代之!
Why Not 分区?
我们再看分区表方案。了解这个方案之前,先了解它的原理:
[AppleScript] 纯文本查看 复制代码
?
1
分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值