0

ユーザーが互いにメッセージを送信できるmongodbを使用してアプリケーションを作成していますここに保存したいフィールドがあります

user_to
user_from
message
sent
ip
unread

私が求めているのは、ユーザー A がユーザー B に msg を送信するかどうかです。

user_to : B,
user_from : A,
message :hello world,
sent:1334901545,
ip : XX.XX.XX.X,
unred : true

これは、データが最初に保存される形式ですが、ユーザー A がユーザー B にメッセージを送信するときに、そのデータをどのように保存する必要がありますか?? 私は2つの方法を考えましたが、どちらが最も効率的か教えてください

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 )
)

最初のタイプは構造が非常に単純で、クエリに適していて分析が非常に簡単ですが、重複データが増加し、アプリケーションが大きくなるにつれてより多くのディスク容量を消費すると思います

一方、2 番目のタイプは、重複レコードを排除し、ディスク容量が少なくなりますが、データの取得が複雑になり、読み取りが困難になり、書き込みに効率的に使用できず、他の多くの複雑さが生じます

シンプルにするか、重複レコードを排除してディスク容量を節約する必要がある場合、mongodb は非常にスケーラブルであることを考えると、どちらが正しい方法なのかを知りたいだけです。

4

1 に答える 1

0

個別のレコードは、クエリの速度が向上します。私はそれを使用します。また、あなたの例では、冗長なデータはあまりありません。ある場合は、いつでもそれを新しいコレクションに組み込むことができます。

于 2012-04-20T07:11:42.193 に答える