Struktura MongoDB dla aplikacji wiadomości

Rozmyślam myśląc o dobrej strukturze dokumentu do obsługi aplikacji wiadomości.

W zasadzie potrzebuję trzech (lub czterech) typów obiektów:

Użytkownik (nazwa użytkownika, adres e-mail, hasło itp.)Lista kontaktów (zawierająca różne kontakty lub grupy kontaktów)Rozmowa (rozmowa to zbiór wiadomości między niektórymi osobami)Wiadomość (zawiera treść wiadomości, jakiś znacznik czasu i twórcę).

Moim pomysłem było osadzenie kontaktów w dokumencie użytkownika i osadzenie wiadomości w dokumencie rozmowy:

1. Użytkownik

{
    username: 'dev.puS',
    usernameCanonical: 'dev.pus', // used for unique constraints
    email: '[email protected],
    emailCanonical: '[email protected],
    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. Rozmowa

{
    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' }
    ]
}

Co sądzisz o tym schemacie?

Myślę, że lepiej byłoby je oddzielić (tak, aby każdy dokument był własny), ponieważ każdy dokument ma inną częstotliwość aktualizacji. Ale naprawdę nie mam o tym żadnego doświadczenia, więc dobrze byłoby usłyszeć kilka rad :)

pozdrowienia

questionAnswers(3)

yourAnswerToTheQuestion