字数 9734,阅读大约需 49 分钟
第25讲:"智慧邻里"的"地基"(数据工程)
【老孙开篇寄语】
同学们,欢迎来到“工程篇”的第五站。
在过去的几讲中,我们,为“智慧邻里”这座“软件城市”,规划了“功能分区”(用例图),设计了“交通干道”(活动图),搭建了“建筑骨架”(类图),并彩排了“市民的活动”(顺序图)。
今天,我们要来关注,这座城市,最“底层、最核心、最不可或-缺”的基础设施——供水系统。
在软件世界里,“水”,就是“数据(Data)”。
数据,是现代IT系统的“血液”和“石油”。我们之前,所做的一切“功能”和“流程”,其本质,都是在“处理”和“流转”数据。一个没有“数据”的系统,就像一座“没有市民的空城”,毫无价值。
数据工程(Data Engineering),就是一门,关于“如何,为一座城市,设计、建造、和维护一套‘高效、安全、纯净’的供水系统”的科学。
在这一讲中,我们将扮演“数据总工程师”的角色。
- • 我们将从“哲学”的层面,去探讨“数据、信息、知识、智慧”之间的“升华之路”,理解我们,做数据工程的“终极目的”。
- • 我们将穿越“历史”,去亲历一场“数据库的战争”,理解“SQL”与“NoSQL”这两大“门派”,各自的“武功”和“适用场景”。
- • 我们将深入“实践”,去系统地,学习“数据建模”的“三重境界”,并亲手,为“智慧邻里”项目,绘制出它的“数据蓝图”——E-R图。
- • 最后,我们将挑战,整个数据库理论中,最“烧脑”,但也最“精髓”的部分——数据库范式(Normalization),去学会,如何,设计出“没有冗余、不会出错”的“完美”数据结构。
这是一堂“奠定根基”的课。学好它,你将掌握,构建一个“健壮、可靠、可扩展”的软件系统的“底层密码”。
第一章:上节回顾与热身
1.1 上节核心回顾
在铺设“数据管道”之前,我们先快速回顾一下,上一讲,我们作为“建筑结构师”,所掌握的两大“微观设计工具”:
- 1. 工具一:类图——绘制“静态的解剖图”
- • 我们深刻地认识到,类图,是系统的“静态户籍库”。它,通过“类”和“六大关系”,清晰地,描绘了系统的“组成结构”和“基因图谱”。
- • 高项认知: 一个“健康”的系统,其类图,必然“疏朗有致”,充满了“弱关联”。而一个“腐烂”的系统,其类图,一定是“蛛网密布”的。看懂类图的“耦合度”,是项目经理,识别“技术债”的“X光眼”。
- 2. 工具二:顺序图——描绘“动态的心电图”
- • 我们学习了,如何,用“顺序图”,特别是,利用“生命线、消息、和高级片段”,来像“电影分镜”一样,清晰地,描绘一个“功能”背后的“对象交互”过程。
- • 高项认知: 类图,回答了“有什么”;顺序图,回答了“怎么动”。只有,将“静态结构”与“动态行为”,结合起来,我们,才能,完整地,理解一个“设计”。
1.2 上节课后作业精讲
上一讲的第三个作业,是一个“极具实战价值”的“真实两难”问题。它,要求你,戴上“项目经理”的帽子,去“仲裁”一场,关于“技术设计”的“路线之争”。
场景复盘:
在“在线报修”功能的设计评审会上,两位核心程序员,小张和小王,对“工单(RepairOrder)”的处理流程,提出了两种不同的设计方案,并为此,争论不休。
- • 小张(方案A - 简单设计): 他主张,就在
RepairOrder表里,增加一个status字段(比如,1-待处理, 2-处理中, 3-已完成)。 - • 理由: “快! 今天,就能写完!符合‘敏捷开发、快速迭代’的原则!”