@Scorpiored88

Как лучше для производительности mongo db?

Всем доброго времени суток!
Подскажите пожалуйста Как лучше для производительности mongo db если много небольших документов в коллекции, или немного документов, но с большим количеством данных в каждом?

Вариант 1. Много маленьких документов. В таком случае каждый месяц будет создаватся новый документ для каждого пользователя (если если мечты сбудутся, то надеюсь на 5 000 - 6 000 пользователей всего. Пока что 3 пользователя)

{
    userID: '12345',
    month: '12.2023',
    days: [
        {
            day: '01',
            isLucky: false,
            isChecked: false
        },
        {
            day: '02',
            isLucky: false,
            isChecked: true
        },
        {
            day: '03',
            isLucky: true,
            isChecked: false
        },
        {
            day: '04',
            isLucky: false,
            isChecked: true
        },
        {
            day: '05',
            isLucky: true,
            isChecked: false
        },
        .........
        {
            day: '30',
            isLucky: true,
            isChecked: false
        },
     
    ]
}

Тоесть каждий месяц по 30-31 день

Вариант 2. Нетак много документов, но каждый месяц документ будет изменен и будет добавлятся новий месяц 30 -31 день. Тоже количество пользователей:

{
    userID: '12345',
    months: [
        {
            '09.2023': [
                {
                    day: '01',
                    isLucky: false,
                    isChecked: false
                },
                {
                    day: '02',
                    isLucky: false,
                    isChecked: false
                },
                ....
                  {
                    day: '30',
                    isLucky: false,
                    isChecked: false
                },
                
            ]
        },
        {
            '11.2023': [
                {
                    day: '01',
                    isLucky: false,
                    isChecked: false
                },
                {
                    day: '02',
                    isLucky: false,
                    isChecked: false
                },
                ....
                  {
                    day: '30',
                    isLucky: false,
                    isChecked: false
                },
            ]
        },
        {
            '12.2023': [
                {
                    day: '01',
                    isLucky: false,
                    isChecked: false
                },
                {
                    day: '02',
                    isLucky: false,
                    isChecked: false
                },
                ....
                  {
                    day: '30',
                    isLucky: false,
                    isChecked: false
                },
            ]
        }
    ]
}
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Mongo и многие документ-подобные системы обычно оптимизируются не так как реляционки а как агрегаты.
Тоесть ты подготовавливаешь для пользователя полностью самодостаточный документ который за 1 операцию
извлекается и больше никаких joins не нужно.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы