企业IT架构转型之道——阿里巴巴中台战略 第五章

数据拆分实现数据库能力线性扩展

本章主要介绍淘宝的数据库和表的一些设计原则和实践经验,大部分都是业内比较通用的做法

数据库分库分表实践

  • 阿里巴巴分布式数据层平台发展和演变,现有数据层中间件TDDL(Taobao Distributed Data Layer)的优点

    1. 数据库主备和动态切换

    2. 带权重的读写分离

    3. 单线程读重试

    4. 集中式数据源信息管理和动态变更

    5. 支持mysql和oracle数据库

    6. 基于JDBC规范,很容易扩展支持实现JDBC规范的数据源

    7. 无server、client-jar形式存在,应用直连数据库

    8. 读写次数,并发度流程控制,动态变更

    9. 可分析的日志打印,日志流控,动态变更

  • 数据尽可能平均拆分,电商平台最核心的订单数据,以订单ID来分表还是以买家ID来分表?

  • 尽量减少事务边界(事务边界指单个SQL语句在后端数据库上同时执行在数量)

    事务边界的数量越大,给系统带来以下弊端

    1. 系统的锁冲突概率越高

    2. 系统越难以扩展

    3. 整体性能越低

  • 异构索引表尽量降低全表扫描频率

    上面的订单分表策略,淘宝使用订单ID分表,同时通过异构索引表解决卖家和买家维度的查询需求,同时,索引表只存储索引数据,避免数据冗余,查询到订单ID后再批量查询订单详细信息

    通过精卫平台实现异构索引表的数据同步,核心功能如下

    1. 多线程管道实现

    2. 数据的安全

    3. 友好的用户自服务接入体验

    4. 平台管控和统计

    5. 将多条件频繁查询引入搜索引擎平台

  • 简单就是美

    如果在数据平均拆分和减小事物边界原则有冲突,则尽量优先满足数据平均拆分原则

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容