Хранение данных частоты слов - PullRequest
0 голосов
/ 24 октября 2011

Я пытаюсь сохранить данные о частоте слов, используя Mongo.Каждое слово должно быть связано с пользователем, чтобы я мог рассчитать, как часто человек использует каждое слово.В настоящее время моя коллекция слов выглядит следующим образом:

{'Hello':3, 'user_id':1}

, которая, очевидно, работает только на основе «один к одному» и не годится.

Я пытаюсь решить, как лучше сделатьэто отношения «один ко многим» между пользователем и словами.Буду ли я хранить отношение пользователя в моей коллекции слов следующим образом:

{'word':"Hello", 'users':[{'id':1, 'count':4},{'id':2, 'count':10}]}

Или вместо этого я добавлю количество слов в коллекцию пользователей?

{'id':1, 'username':'SomeUser', 'words':[{'Hello':4}]}

Очевидный недостаток для второгоПодход заключается в том, что одни и те же слова будут использоваться разными пользователями, поэтому наличие единого набора слов поможет уменьшить размер данных.

Может кто-нибудь посоветовать мне, что мне следует делать здесь?Есть ли способ, который я, возможно, упустил из виду в документации?

1 Ответ

1 голос
/ 24 октября 2011

Очевидным недостатком второго подхода является то, что одни и те же слова будут использоваться разными пользователями, поэтому наличие единого набора слов поможет уменьшить размер данных.

НетТакова природа использования документа БД.Размер данных на самом деле не имеет значения в решениях, отличных от SQL, важно то, насколько легко и как быстро вы можете получить доступ к вашим данным.

Ваш первый подход - типичная реляционная модель учебника.Нет смысла использовать это в монго (хотя вы можете смоделировать это в монго).Вместо этого второй подход дает вам

  • Fatser читает / пишет, так как каждое слово хранится внутри пользователя.Вам не нужно выполнять несколько запросов для этого
...