分库分表

主键生成 分库分表

雪花算法
 
哈希分库分表、范围分库分表和中间表分库分表。 分库分表中间件的形态:SDK、Proxy和 Sidecar。
notion image

其他维度查询(无主键)

司有实时数仓,对 TO B实时性要求不高的查询我们都会基于数仓做成宽表,再基于es提供查询。
买家商品基于业务(商品搜索ES)
订单分库分表(也可以基于ES提供关键搜索)
卖家维度(实时数据仓库(聚合、统计),es查询)
 
对于isv非强一致性保证
es提供列表搜索查询,Mongodb提供明细数据
同步等都通MQ(RocketMQ有重试机制,最终还有死信队列)
最好都是用java写,如果多语言情况下,有些中间件sdk支持不全面还是容易有问题,比如前后端全栈js,node有些不适当或者是框架本身不完善,出现异常问题就容易重启,重启挂掉就会对已经在运行的数据出现有损的情况,就要考虑对这些数据补偿
如果多次来回调用,同一个业务补偿的数据越来越多,有时数据都是中间态的数据,很难造出来再次补偿,如果都用mq来处理也不是不行,就是改造起来费劲费时间
很多业务细节,关键的地方就在于要从开发规范上规避,一个简单的功能来回抄很多遍,做大逻辑聚合(if else300+行)5年过去根本看不了
  1. 文档规范
  1. 代码规范
notion image

容量评估

对于写瓶颈来说,分区表可以缓解问题,而读写分离几乎没有效果,比如频繁地增删改操 作。 对于硬件瓶颈来说,读写分离、分区表基本上也解决不了,比如写操作引发的网络带宽问题。
一句话总结分库分表,那就是数据库本身出现了性能问题,而且这些性能问题已经没办法通过 SQL 优化、索引优化之类的手段来解决了。
通常在分库分表之前应该优先考虑分区表和读写分离,因为这两种方案和分库分表比起来都更简单、好维护。
 
notion image

数据库综合

notion image
 
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP