以订单数据为例子,可以在一定维度的处理下将订单数据分别存在冷库和热库。 以状态和时间等字段可以定时将数据从热库取出插入冷库中,并将热裤中的冷数据删除。
实现思路:
一致性:同时修改多个数据库,保证数据的一致性:给待搬的数据增加标识,通过标识找出待搬的数据,保存数据在冷数据库中的时候,添加判断保持幂等性,从热数据中删除对应的数据。
数据量:数据量大,一次性处理不完,怎么批处理。每次搬50条数据, 按增加的数据标识查询热数据库中的前50条数据,插入冷数据库中,删除热数据库中对应的数据后,循环查询热数据库中的前50条数据,插入冷数据库中,删除人数据库中的数据。。。
并发性:数据量到分到多个地方并行处理,怎么办。数据量大,每天定时处理的数据单线层处理来不及。启动多线程, 某个线程宣布某个数据在操作,通过获取锁的原子性,一致性。如果线程异常退出,没有释放锁,导致其他想成无法处理数据,可以设置超时时间(评估处理数据的合理时间)
如何使用冷热数据:
历史数据迁移问题:
所有历史数据都增加标识。迁移时候会自动执行历史数据。
备注:学习笔记。教程来源哔站:架构02.查询分离:表数据量大查询缓慢如何优化?_哔哩哔哩_bilibili