什么是在mongodb中构建多个数据的有效方法

时间:2012-04-20 07:01:28

标签: mongodb mongodb-php

我正在使用mongodb编写一个应用程序,用户可以在这里发送消息,这里是我要存储的字段

user_to
user_from
message
sent
ip
unread

我要问的是用户A是否将msg发送给用户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是高度可扩展的,如果我为了简单或消除重复记录并节省磁盘空间

1 个答案:

答案 0 :(得分:0)

单独的记录对于查询速度会更好,我会继续这样做。同样在您的示例中,没有太多冗余数据。如果有,你总是可以把它分解成一个新的集合。