MongoDBでデータを表現する際に問題があります。私は日付と単語の組み合わせが一意であるこのスキーマ設計を使用していました。MongoDB Update/Upsert質問 - スキーマ関連
{'date':2-1-2011,
'word':word1'
users = [user1, user2, user3, user4]}
{'date':1-1-2011,
'word':word2'
users = [user1, user2]}
固定日数は約200です。潜在的に100k +各日付の単語; 100k人以上のユーザー。
私はそうのようなアルゴリズムを使用してレコードを挿入:while records exist:
message, user, date = pop a record off a list
words = set(tokenise(message))
for word in words:
collection1.insert({'date':date, 'word':word}, {'user':user})
collection2.insert('something similar')
collection3.insert('something similar again')
collection4.insert('something similar again')
しかし、このスキーマは非常に大規模なコレクションをもたらし、ひどいパフォーマンスはひどいものでした。私は4つのコレクションのそれぞれに異なる情報を挿入しているので、データベース上の操作は非常に多くなります。
このような形式でデータを表現することを検討しています。単語とユーザーの配列はセットです。
{'date':'26-6-2011',
'words': [
'word1': ['user1', 'user2'],
'word2': ['user1']
'word1': ['user1', 'user2', 'user3']]}
これの背後にあるアイデアは、データベース操作の数を減らすことでした。アルゴリズムの各ループでは、コレクションごとに1つの更新だけを実行します。しかし、私はアルゴリズムの各ループで新しい単語、ユーザー、またはその両方を挿入する必要があるかもしれないので、これに対して更新/アップサンプリングを実行する方法がわかりません。
この文書を更新する方法をお勧めする人もあれば誰かが別のスキーマを提案する人もいますか?
ありがとうございます。
に挿入したいコレクションを指定します。どのような方法であなたのパフォーマンスはひどいものでした?パフォーマンスやクエリを書く? – rompetroll
@deadsven、書き込みと更新のパフォーマンス。クエリは高速ですが、書き込みと更新はパフォーマンスが悪いです。 –