avatar
问一个设计题# JobHunting - 待字闺中
P*d
1
今天我有朋友被问了一个设计题,发上来讨论一下,数据库有两个表,表A和表B,表B
继承表A,表A和表B有一个共同的属性X。比如表A有一个A1,他包含3个B, B1, B2,
B3。如果B1,B2,B3的属性X都是X1,那么相当于浪费了存储空间,然后应该做的操作
就是把B1,B2,B3里的X1删除,然后在A1那里MARK一个X1,因为B继承A,所以A有属性
X1,代表B1,B2,B3的X属性都是X1
然后问题是,如果UPDATE DATABASE的JOB一直在RUN,SERVICE也是一直LIVE,这个操作
可能导致什么潜在问题。用户API可以同时修改表A的属性X和表B的属性X
我朋友想到的一个ISSUE,是如果我们把B1,B2,B3的X1 PROMOTE到A1,那么如果用户
突然只想删除B1中的X1,那么要重新做一个操作,就是修改API,让这个删除先CHECK是
不是B1,B2,B3的属性是不是已经被PROMOTE到了A1中,如果PROMOTE了,那么删除操作
要改成先删除A1中的X1,然后将X1只添加到B2和B3中。因为原删除操作只删除B1中的X1
,这个操作会无效,因为删除B1中的X属性会发现里面没有值,不做任何操作,但是A1
中的X是X1,会AUTOMATICALLY APPLY到B1中
面试官说这个想法很好,问他还有什么ISSUE要注意,最后想一个完备的PROMOTE算法出
来,但是他想不出其他还要注意的地方了。最后估计FAIL了
板上大牛有什么高见么?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。