我被分配了一项任务,我不知道如何处理它:
我必须构建一个支持多个设备的消息系统,它应该尽可能高效。 用户最多可以拥有10个设备,当用户收到消息时,这些设备都需要接收消息。
我有两个想法:
Table Messages:
- ID (PK)
- SenderID
- ReceiverID
- Data
Table PendingTransmissions:
- MessageID (FK (PK of above table))
- DeviceID (FK)
这里的问题是,每次发送消息时,每个设备都会创建一个条目并导致很大的开销。
Table Messages:
- ID (PK)
- SenderID
- ReceiverID
- Data
- ReceivedDevice1
- ReceivedDevice2
- ReceivedDevice3
- ReceivedDevice4
- ReceivedDevice5
- ReceivedDevice6
- ReceivedDevice7
- ReceivedDevice8
- ReceivedDevice9
- ReceivedDevice10
这里的问题显然是设备的冗余,但开销会更低。
什么是更好的解决方案,还是我完全错过了什么?
提前致谢!
答案 0 :(得分:3)
第一种方法是完全有效的,它应该是要走的路。第二种方法的可维护性是一种恐怖,并且在稍后添加一些代码时,代码将无法读取(我必须维护多个DB,这是以这种方式设计的)。
答案 1 :(得分:3)
我建议反对第二种方法(至少)有两个原因:
在第一种方法中,如果您担心PendingTransmissions
变得太大,您可以像这样照顾它:
isDelivered
和deliveredTimestamp
。然后,您可以定期存档所有已交付且比1个月更早的行。