Структура MongoDB для приложения для сообщений

Я ломаю голову, думая о хорошей структуре документа для обработки приложения сообщений.

В основном мне нужны три (или четыре) типа объектов:

  1. Пользователь (имя пользователя, адрес электронной почты, пароль и т. д.)
  2. Список контактов (содержащий различные контакты или группы контактов)
  3. Разговор ( разговор представляет собой набор сообщений между некоторыми людьми)
  4. Сообщение (содержит тело сообщения, временную метку и имя создателя.)

Моя идея состояла в том, чтобы встроить контакты в пользовательский документ и встроить сообщения в Документ беседы:

1. Пользователь

{
    username: 'dev.puS',
    usernameCanonical: 'dev.pus', // used for unique constraints
    email: 'developement.pus@gmail.com,
    emailCanonical: 'developement.pus@gmail.com,
    salt: 'some hash',
    password: 'hash with salt',
    logs: { last_login: 12.06.2008, last_password_reset: 04.03.2007 },
    state: { online: true, available: false },
    contacts: [ user_id1, user_id2, user_id3 ]
}

2. Беседа

{
    members: [ user_id1, user_id2 ],
    messages: [
        { author: user_2, body: 'Hi what's up' },
        { author: user_1, body: 'Nothing out here :(' },
        { author: user_2, body: 'Whanna ask some question on stackoverflow' },
        { author: user_1, body: 'Okay, lets go' }
    ]
}

Что вы думаете об этой схеме?

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

С уважением

26
задан dev.pus 27 June 2012 в 14:20
поделиться