2 回答

TA贡献1811条经验 获得超5个赞
数据量不大的时候可以考虑只保存关联字段
数据量大的话可以考虑数据适当冗余,就order而言,其实username改动的频率比较小,呈现有差异的概率比较小,对不影响关键数据把,我认为也可以不用同步,或很长一段时间定时去同步

TA贡献2011条经验 获得超2个赞
如果数据量大,访问量大,建议上elasticsearch之类的专业的搜索工具。
如果数据量不大,访问量一般般,你不用elasticsearch,那么只是用mysql。建议遵循范式设计。
如何设计?我认为分为3个表是最好的。
1、订单表
2、用户表
3、订单用户搜索关系表。
其实表3的作用跟elasticsearch作用一样的。3表其实是存储冗余数据,以空间换时间。
如何解决username改动造成的影响,username改动,表3的数据需要进行更新即可。
一个username能对应几个订单,几百个?几千个?几万个?我认为不多。最多几万个。而且username更新频率多大?一天?一个月?
这样想下来,其实username每次改动更新表3不是什么麻烦事。
其实你把冗余数据放到表1也是可以的。但我认为订单就是订单、用户就是用户。保持他们的独立性,日后你扩展就很容易了。
试想一下,假如以后你们公司做大了,老板需要你用elasticsearch来解决搜索的问题,你把冗余数据存储到了表1,等于这部分的冗余数据其实没有用处了。
但如果我把这部分的冗余数据存储到了表3,我大可直接删除表3即可。对业务丝毫无影响,也不会产生垃圾数据。
添加回答
举报