1
lalalakakaka 2019-09-09 20:33:31 +08:00 1
阻抗匹配是电子电路 /射频电路的概念。这里应该是一种比喻,粗略看了一下,应该是指数据库模型与实际业务模型不匹配带来的问题。
|
2
6260628 OP @lalalakakaka 但这种情况什么时候会发生呢? 什么情况下会出现这种问题
|
3
wangkai0351 2019-09-09 20:36:10 +08:00 1
|
4
6260628 OP @wangkai0351 这篇文章我看过了,没看明白,查一下百度不难,看一下我的贴子再回复有这么难吗?
|
5
shidenggui 2019-09-09 21:07:04 +08:00 1
阻抗不匹配是指通常我们在面向对象语言中操作的对象都是以数组、集合等方式组织,层层嵌套,类似树形结构,但在关系型数据库中通常只能平铺,数据库模型和面向对象模型的不同导致没办法自然的持久化内存中的对象。
比如一个作者对象 author,如果我们想获得作者写过的小说,在面向对象的编程语言中只需要 author.books 即可,但是持久化在数据库中却需要 author books 两表通过外键关联,中间转换的开销即为阻抗不匹配。 不匹配的情况还包括两种模型支持的数据类型不同,查询语法不同,事务的支持等等,不过最主要的还是存储结构的不同。 |
6
reus 2019-09-09 21:23:00 +08:00 1
所以就应该只用关系模型来建模,不用什么面向对象。
|
7
loading 2019-09-09 21:26:26 +08:00 via Android 2
看到阻抗两个字,我头有点疼……
|
8
lalalakakaka 2019-09-09 21:32:12 +08:00 1
@6260628 不太清楚您的编程经验如何?对于任何一个和数据库打过交道的程序员,这个问题是不言自明的。平时吃过太多的数据库模型和业务模型不匹配的屎了,就文中“努力将对象挤压进关系型的持久化”这一句话,不知道多少程序员都深有同感。如果您没遇到过这种问题,可以亲手试试做些和数据库相关的业务,就知道了。
|
9
cm2gseh 2019-09-09 22:06:40 +08:00 via Android 1
比如,某项目中,
某产品的接口说明书中写着: 用户对象 R,可以操作产品, 产品对象 A 拥有 - 属性:名字,长,宽,高 - 接口:设置名字,获取名字,获取体积,获取表面积等 然而,自动化工具的接口是: 定义组件 i,定义组件 j,然后定义组件 i,j 之间的协议: - 定义发送模板, - 定义接收模板:当接收到字节 X 走分支 Y,当收到字节 Z 走分支 W,类似这样的套路 最后,要求是请对项目实现自动化测试,比如:case:用户设置、获取产品名称。 |
10
zhazi 2019-09-09 22:11:18 +08:00 via Android 1
@lalalakakaka 请教下什么叫数据库相关的业务?
|
12
6260628 OP @shidenggui 您的回答兼职太完美了,已经明白了,谢谢
|
13
6260628 OP @lalalakakaka 我应该已经脱离了初级程序员的阶段,看了上面的回复我已经明白了,这个事之前应该是知道的,但这个词不太理解啥意思
|
17
zhanao1994 2019-09-10 14:57:08 +08:00 via Android
软件领域还有阻抗概念,长见识了
|