MySQL分库分表后路由策略设计详情
分库分表后设计到的第一个问题就是,如何选择路由key,应该如何对key进行路由。路由key应该在每个表中都存在而且唯一。路由策略应尽量保证数据能均匀进行分布。
如果是对大数据量进行归档类的业务可以选择时间作为路由key。比如按数据的创建时间作为路由key,每个月或者每个季度创建一个表。按时间作为分库分表后的路由策略可以做到数据归档,历史数据访问流量较小,流量都会打到最新的数据库表中。
也可以设计其与业务相关的路由key。这样可以保证每个数据库的资源都能很好的承担流量。
外卖订单平台分库分表后需要支持的场景,用户的角度,需要实时查看所点外卖订单的状态,跟踪订单信息。商家需要查询订单信息,通过订单分析菜品的质量,进行商业决策。
用户Consumer = C端 商家Business = B端
用户下单后订单可能会落到不同的表中,查询的时候可能需要查询多张表。
如果创建订单时随机插入到某一张表中,或者不知道插入到那张表中,查询订单的时候都需要查询所有的表才能确保查询的准确信。
如果在插入订单的时候有一定的规则,根据这个规则插入到数据库中,查询的时候也执行相应的规则到对应的表中进行查询。这样就能减少数据操作的复杂性。可以通过设计路由策略来实现,用户和商家查询数据的时候都遵循相同的路由策略。
用户端路由key根据上一小节的路由策略分析,现在需要选定一个路由key。用户端让同一个用户id的数据保存到某固定的表中,所以可以选用用户id最为路由key。
在单库的情况下,用户下单,生成一个订单,把用户id作为路由key,对user_id取hash值然后对表的数量进行取模,得到对应需要路由的表,然后写入数据。
多库多表的情况下需要先找到对应的库然后再找到对应的表。多库多表的路由策略:用户下达- 生成订单- 路由策略:根据用户id的hash值对数据库的数量进行取模找到对应的数据库- 根据用户id的hash值除以对表的数量,然后在对表的数量进行取模即可找到对应的表。
路由策略设计的要点是根据具体的业务业务场景设计,跟用户信息关联度比较大的作为路由key进行hash值取模
商家路由key单独为商家B端设计了一套表(C端和B端是独立的)。
用户的角度以user_id作为路由key,商户的角度以商家id作为路由key。商家是如何通过路由key路由数据的呢。游湖在下单的时候把队友的订单号发送到MQ里,商家可以去消费这个MQ,然后根据订单号获取订单信息,然后再把订单信息插入到商户的数据库表当中。商户的路由策略和用户的路由策略是一样的。
用户端和商户端的完整数据流程图:
到此这篇关于MySQL分库分表后路由策略设计详情的文章就介绍到这了,更多相关MySQL分库分表内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL分库分表后路由策略设计详情
相关文章
- MySQL数据库管理工具_mysql数据库管理工具有哪些
- MySQL遭遇死锁:解决之道(mysql发生死锁)
- MySQL数据库设计优化:提升性能与效率(mysql数据库设计优化)
- MySQL表结构优雅改变的实现方式(mysql表结构变更)
- 设计MySQL数据库指导网页设计(mysql数据库网页)
- 一步步学习:利用Python连接MySQL数据库(python连接mysql数据库)
- 备份MySQL定时创建表备份的实施与设计(mysql定时创建表)
- MySQL改变表名的简单方法(mysql改表名)
- MySQL集群的自增主键设计(mysql集群自增主键)
- MYSQL即时推送技术的应用(mysql推送)
- MySQL数据库:规范化设计(mysql数据库设计规范)
- MySQL:无则插入,有则更新(mysql没有就插入)
- PHP配置指南:MySQL编码设置详解(php设置mysql编码)
- MySQL注入攻击及其过滤防范(mysql注入过滤)
- MySQL电商数据库设计:优化网站性能、提升用户体验(mysql电商数据库设计)
- 深入了解MySQL的数据模型:结构、类型与关联设计(mysql的模型)
- 手把手教你使用MySQL创建数据库(mysql手动创建数据库)
- 让MySQL数据库设计更便捷——文档指南(mysql数据库设计文档)
- MySQL 中 Ang 详解让你更好地掌握数据库操作技巧(mysql中ang)
- 妙语连珠,B站让MySQL妙绝口耳(b站讲得好的mysql)
- 分析48小时解析MySQL源码,实现自己的研发梦想(48节mysql源码)
- MySQL中如何设计公司ID字段(mysql中公司id字段)
- 深入探讨MySQL的三个主键设计(mysql 三个主键)
- 使用MySQL和XML注释提升数据库设计效率(mysql xml 注释)
- 高效简洁的MySQL数据库设计 不定字段应用策略探究(mysql 不定字段)
- 西西软件园提供MySQL下载服务(mysql下载西西软件园)
- MySQL数据库的两个重要方向(mysql 两点 方向)
- 下载免费的MySQL中文破解版,快速数据管理(mysql下载中文破解版)
- 无需时间类型的 MySQL 数据库设计(mysql 不用时间类型)