遗留系统现代化实战
姚琪琳
Thoughtworks 资深咨询师
5615 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
用户故事 (1讲)
遗留系统现代化实战
15
15
1.0x
00:00/00:00
登录|注册

15 | 架构现代化:如何拆分数据?

你好,我是姚琪琳。
前面我们用四节课的篇幅,学习了架构现代化中,新老城区建设的种种模式。今天我们就来看看如何拆分数据,这个场景在建设新老城区,甚至与其他城市(外部系统)交互时都非常重要。
作为开发人员,你理想中的业务数据存储方式是什么样呢?当然是负责一个业务的数据都在一张或几张名称相关的表中,这样通过名称我们就可以一目了然,查找起来很方便。
不过很遗憾,现实有时候总是事与愿违,遗留系统中负责处理一个业务的数据,有的放在这张表,有的放在那张表,总是不在一起,名称甚至都没关系;而一张表中也有可能存放几种业务的数据。要想治理遗留系统的数据,就需要对这些数据加以拆分、重组,今天我们就来聊聊拆分、重组涉及到的各种模式。

共享数据库

如果你问我,拆分数据的第一个模式是什么?我的回答就是:不要拆分。
不拆分真的可行么?这需要先分析一下拆分的必要性。遗留系统的数据拆分是个认知负载非常高的工作,不同的数据混杂在一起,具有不同业务含义的数据也往往存放于一张表中,要想彻底拆分干净十分不容易。
如果你不需要不停机更新(大多数企业的业务系统其实都不需要)、没有严苛的可用性和弹性需求,或者数据量没有大到无法接受的程度,就没有必要拆分数据库。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了在现代化架构中的数据拆分的重要性以及各种拆分模式。首先,共享数据库模式适用于不需要不停机更新、没有严苛的可用性和弹性需求的情况。其次,数据库视图可以用于外部系统以只读方式访问数据,避免数据所有权模糊。此外,数据库包装服务可以将数据库的细节隐藏在服务依赖之后,提供更灵活的读写能力。最后,报表数据库模式适用于报表系统或服务,可以单独构建一个适合报表的数据库。文章还介绍了变更数据所有权和在应用中同步数据的方法,以及在拆分数据库和拆分服务时的顺序选择。总的来说,本文提供了一系列模式和方法,指导读者对遗留系统的前端、后端、架构和数据进行演进。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《遗留系统现代化实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • aoe
    一次只做一件事这个原则非常实用,是一个解决遗留系统的神器! 当初接到了优化赠送礼物接口的任务(四种不同的场景,功能各有千秋,就像火锅的四种不同锅底,没人关心底料的配方,好吃就行): 1. 第一次(一年前)信心满满的尝试分析所有场景,准备抽取公共部分。结果只提取了一小段,没有功能测试做保障,改不动; 2. 第二次(现在)由于业务量增加,频出问题,简单粗暴的选择了出问题最多的那个场景进行改造,虽然仍旧复杂,但看的到希望,不像第一次被众多的功能压垮 3. 今天学习了老师的文章才明白:这就是一次只做一件事的威力!

    作者回复: 感谢分享。 其实像第一次,分析出所有场景并没有问题,但落地的时候,还是先要将这些场景做拆分,按优先级一个一个来。

    2022-05-19
    4
  • chon
    老师请教一下,数据拆分有一个场景就是由于数据量大了,需要分库分表。貌似如何拆分数据这章节没提到怎么做。是不是也是和异构数据库的套路一样?如果讨论是一样的话,有没有什么和异构数据库不一样,需要特别注意的地方?

    作者回复: 分库分表是一个技术性场景,我在这个专栏里主要专注的是基于业务的拆分。分库分表的思路和异构数据库还不太一样,推荐你学习一下李玥老师的课程,有一讲是专门讲分库分表的(https://time.geekbang.org/column/article/217568),同时也可以在极客时间搜索一下,这方面的内容有很多。

    2022-05-25
  • 子夜枯灯
    报到,报道。老师拆分数据库后的事物问题,如何处理?拆分Schema,基于原有数据表上横向拆分和纵向拆分有哪些优缺点需要提前规划呢?

    作者回复: 事务问题推荐通过消息机制用最终一致性解决;拆库横向拆和纵向拆的目的是不同的,横向是拆关系,纵向是拆大小,看你需要的是什么。

    2022-05-13
  • 实习工程师
    第三步,同时写入新旧两个库,但只从新库中读数据。当我们对新库的基础设施有了信心之后,就可以把读操作也转移到新库中。这时我们仍然双写数据,因此出现任何问题都可以回退。
    2022-10-12归属地:广东
    1
  • 实习工程师
    第三步,同时写入新旧两个库,但只从新库中读数据。当我们对新库的基础设施有了信心之后,就可以把读操作也转移到新库中。这时我们仍然双写数据,因此出现任何问题都可以回退。 老师, 这里好像有点不通畅, 应该是先读旧库,对新库有信心了再切换读新库?
    2022-10-12归属地:广东
  • 雨落~紫竹
    当需求量上来后 这些都只能是技术债了
    2022-07-04
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部