当前位置:   article > 正文

【大数据】分库分表如何管理不同实例中几万张分片表

【大数据】分库分表如何管理不同实例中几万张分片表

前言

ShardingSphere框架成员中的Shardingsphere-jdbc和Shardingsphere-proxy都提供了自动化管理分片表的功能auto-tables,可以统一维护大量的分片表,避免了手动编写脚本和维护分片表的繁琐工作,极大程度减少分库分表的开发和维护成本,提升效率和可靠性。

图片

图片

这里咱们先使用Shardingsphere-jdbc来实际操作一下,Shardingsphere-proxy方式后续会有单独的文章详细讲解,就不在这里展开了。

准备工作

假设我们要对t_order表进行分库分表,首先我们要做的就是确定好分片方案,这里使用两个数据库实例db0、db1,每个实例中t_order表分成1000张分片表t_order_1 ~ t_order_1000,order_id字段作为分片键,分片算法使用取模算法order_id % n,分布式主键生成策略采用snowflake。

t_order逻辑表的表结构如下:

  1. CREATE TABLE `t_order` (
  2. `order_id` BIGINT ( 20 ) NOT NULL COMMENT "订单表分布式主健ID",
  3. `order_number` VARCHAR ( 255 ) NOT NULL COMMENT "订单号",
  4. `customer_id` BIGINT ( 20 ) NOT NULL COMMENT "用户ID",
  5. `order_date` date NOT NULL COMMENT "下单时间",
  6. `total_amount` DECIMAL ( 10, 2 ) NOT NULL COMMENT "订单金额",
  7. PRIMARY KEY ( `order_id` ) USING BTREE
  8. );

有了这些基础信息,可以先来进行t_order表的分片配置了,不考虑其他因素,这里先Run起来!

分片规则配置

设定好分片规则,接着编写逻辑表t_order的分片规则的配置,我分别使用yml配置和Java编码两种方式做了实现。要注意的是两种方式不要并存,不然启动会报错。

yml配置方式

使用yml配置相对简单易用比较直观,适合对分库分表要求不太复杂的场景,完整配置如下:

  1. spring:
  2. shardingsphere:
  3. datasource:
  4. # 数据源名称,多数据源以逗号分隔 ,放在第一个的数据源为未配置分片规则表的默认数据源
  5. names: db0 , db1
  6. # 名称与上边 names 保持一致
  7. db0:
  8. ....
  9. db1:
  10. ....
  11. # 具体规则配置
  12. rules:
  13. sharding:
  14. # 分片算法定义
  15. sharding-algorithms:
  16. # 自定义分片算法名称
  17. t_order_database_algorithms:
  18. # 分片算法类型
  19. type: INLINE
  20. # 自定义参数
  21. props:
  22. algorithm-expression: db$->{order_id % 2}
  23. t_order_table_algorithms:
  24. type: INLINE
  25. props:
  26. algorithm-expression: t_order_$->{order_id % 1000}
  27. t_order_mod:
  28. type: MOD
  29. props:
  30. # 指定分片数量
  31. sharding-count: 1000
  32. # 分布式序列算法配置
  33. key-generators:
  34. t_order_snowflake:
  35. type: SNOWFLAKE
  36. # 分布式序列算法属性配置
  37. props:
  38. worker-id: 1
  39. tables:
  40. # 逻辑表名称
  41. t_order:
  42. # 数据节点ÿ
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/162489
推荐阅读
相关标签
  

闽ICP备14008679号