资讯专栏INFORMATION COLUMN

数据库的分库分表

elarity / 936人阅读

摘要:如成千上万的蚂蚁完成一项搬运工作纵向扩展又叫垂直扩展,扩展一个点的能力支撑更大的请求。如利用个人的能力,如蜘蛛侠逼停火车参考分库分表的基本思想

一 概念:什么是分库分表(sharding)
1 将集中于单一节点的数据拆分并分别存储到多个数据库或表,称为分库分表
2 数据切分分为两种方式,垂直切分和水平切分
3 分库:因为表多导致数据过多使用垂直切分,垂直切分就是根据业务的耦合性,将关联度低的不同表存储在不同的数据库,按照业务分离进行独立存储
4 分表:每张表的数据非常多适合使用水平切分,即把表的数据按某种规则切分到多个数据库上
                 
二 用途:分库分表用来解决什么问题
数据库面对海量数据由于数据量过大导致的性能问题
三 用例:具体的使用用例,解决了什么典型问题
Sharding的基本思想就要把一个数据库切分成多个部分方法哦不同的数据库server上,从而缓解单一数据库的性能问题,    
中间件

当当 sharding-jdbc

蘑菇街 TSharding

sharding

TDDL Smart Client的方式 -- 淘宝

Atlas -- 360

alibaba.cobar 阿里巴巴B2B

MyCat 基于阿里开源的Cobar

Oceanus 58同城

OneProxy 支付宝首席架构师 楼方鑫

vitess 谷歌

分库分表后会遇到什么问题?

事务问题 方案一,使用分布式事务. 方案二, 由应用程序和数据库共同控制

跨节点Join的问题 方案,两次查询 第一次找出关联数据的ID,第二次根据这些ID获得关联数据

跨节点的count,order by,group by以及聚合函数问题 方案,并行在各节点上查询然后合并结果

数据迁移,容量规划,扩容问题

       来自淘宝综合业务平台团队,它利用对2的倍数取余具有向前兼容的特性(如对4取余得1的数对2取余也是1)来分配数据,避免了行级别的数据迁移,但是依然需要进行表级别的迁移,同时对扩容规模和分表数量都有限制。总得来说,这些方案都不是十分的理想,多多少少都存在一些缺点,这也从一个侧面反映出了Sharding扩容的难度 

ID问题

UUID , 结合数据库维护一个Sequence , [Twitter的分布式自增ID算法Snowflake][1]

跨分片的排序分页 方案,限制能查看的页数,一定要查看可缩小范围重新查看

分库策略 根据数值取模

分库数量 初次建议 4 - 8

路由透明

使用框架还是自主研发

扩容
  //TODO
四 其他解决方案
主从  读写分离  缓存   
五 熟悉原理,重新实现
//TODO
备注

1 , 横向扩展 也叫 水平扩展,用更多的节点支撑更大量的请求。 如成千上万的蚂蚁完成一项搬运工作
2 , 纵向扩展 又叫 垂直扩展,扩展一个点的能力支撑更大的请求。如利用1个人的能力,如蜘蛛侠逼停火车
3 , 参考 分库分表的基本思想

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75462.html

相关文章

  • 一次难得分库分表实践

    摘要:烦人的数据迁移分表规则弄好后其实只是完成了分表的第一步,真正麻烦的是数据迁移,或者说是如何做到对业务影响最小的数据迁移。 showImg(https://segmentfault.com/img/remote/1460000020003851?w=1920&h=1080); 背景 前不久发过两篇关于分表的文章: 一次分表踩坑实践的探讨 分表后需要注意的二三事 从标题可以看得出来,当...

    Harpsichord1207 评论0 收藏0
  • 分库分表" ?选型和流程要慎重,否则会失控

    摘要:但你是否知道分库分表需要哪些要素拆分过程是复杂的,提前计划,不要等真正开工,各种意外的工作接踵而至,以至失控。在实施分库分表策略时,这些个性会造成策略过大不好维护。 更多文章关注微信公众号《小姐姐味道》 https://mp.weixin.qq.com/s?__... 数据库中间件之分库分表 恭喜你,贵公司终于成长到一定规模,需要考虑高可用,甚至分库分表了。但你是否知道分库分表需要哪...

    archieyang 评论0 收藏0
  • Furion分表分库我也要happy coding

    摘要:分表分库集成易用简单高性能普适性,是一款扩展针对生态下的分表分库的扩展解决方案支持的所有版本支持的所有数据库支持自定义路由动态路由高性能分页读写分离的一款组件,如果你喜欢这组件或者这个组件对你有帮助请点击下发让更多的可以看到使用助力生态 Furion分表分库集成ShardingCore ShardingCore ShardingCore 易用、简单、高性能、普适性,是一款扩展针对efcor...

    KnewOne 评论0 收藏0
  • 金币(积分)商城架构漫谈

    摘要:开篇金币积分商城下称商城是众多内的一个产品,随着使用的用户越来越多,商城对于用户留存的提升,扮演着重要的角色做为提高用户黏性的核心产品,在拥有很好用户体验的同时,也必须存在着一个高效稳定的系统。分析上述两点,得到结论按用户进行分库分表。 开篇 金币(积分)商城(下称商城)是众多App内的一个产品,随着App使用的用户越来越多,商城对于用户留存的提升,扮演着重要的角色;做为提高用户黏性的...

    Ethan815 评论0 收藏0

发表评论

0条评论

elarity

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<