关于数据库sharding带来的聚合问题
?
?
?
应用将核心表数据的变化提交到核心数据库后,需要发送一个数据变化事件到数据集成模块,然后由数据集成模块来处理事件数据的整合以及定时ftp文件发送。
?
这样做的好处就是独立一个模块来处理对外的数据接口,不需要对数据库的归档和迁移脚本作任何处理,以及良好的扩展性,在需要的时候可以增加平台数据更新管道更新平台数据库数据来替换核心到平台归档过程。
?
这种做法同样也有缺点,就是需要对原有应用代码进行侵入来发送数据变更事件。
?
其实我个人觉得数据库已经这样架构了,再想做什么改进已经很困难了,前段时间一直在研究Command/Query Separation(CQS),其实我觉得我们当前的应用很适合用CQS来架构。水平shard保持不变,通过事件来更新平台数据库,不过可能并不是严格的数据库读写分离。