我正在使用 mongodb 编写一个应用程序,用户可以在其中相互发送消息这是我要存储的字段
user_to
user_from
message
sent
ip
unread
我要问的是,如果用户 A 向用户 B 发送消息,例如:
user_to : B,
user_from : A,
message :hello world,
sent:1334901545,
ip : XX.XX.XX.X,
unred : true
这是第一次存储数据的格式,但是当用户 A 再次向用户 B 发送消息时,我应该如何存储该数据?我想到了两种方法请告诉我哪种方法最有效
user_to : B,
user_from : A,
message :hello world again,
sent:1334901745,
ip : XX.XX.XX.X,
unred : true
或者
user_to : B,
user_from : A,
messages : array(
array(message="hello world",sent="1334901545",ip: XXX.X.XX.XX,unread:true),
array(message="hello world again",sent="1334901745",ip:XX.XX.XX.X,unread:true )
)
第一种类型结构非常简单,更适合查询,也很容易分析,但我认为它会增加重复数据,并且随着应用程序的增长会消耗更大的磁盘空间
而第二种类型消除了重复记录和磁盘空间不足,但它使数据检索变得复杂难以读取不能有效地用于写入和许多其他复杂性
我只想知道考虑到 mongodb 具有高度可扩展性,我应该为简单起见还是消除重复记录并节省磁盘空间,这是正确的方法