Доброго. Нужно экспертное мнение/совет. Создаю систему на php фреймверке с

использование 2х DB. Первая БД PostgreSQL а вторая mongoDB. Монго будет использоваться для "мусорных" данных. Назначения данных - большое количество однотипных данных по типу ip адресов с доменными именами + разные другие поля в зависимости от предпочтений пользователя которые будут именоваться как Листы. Есть несколько идей по этой реализации:
1) Для каждого пользователя создавать свою базу в монго именуя ее как id пользователя. Для каждого "Листа" - будет создаваться отдельная таблица(коллекция).
2) Для всех пользователей будет создана одна база но для каждого по отдельности будет создана коллекция по id пользователя в которую будут записываться "листы" вперемешку с разными идентификаторами.
3) Для всех пользователей будет создана одна база и одна коллекция куда будут записываться "Листы" с разными идентификаторами и полями - при этом дополнительные поля будут вписываться в отдельное поле как json.

Какой из выше перечисленных вариантов предпочтительней, какие есть +/- ?

Нужно учитывать что каждый пользователь может загрузить от 1 000 до 20 000 записей. Система рассчитана на аудиторию от 100 до 2000 человек.

Я склоняюсь ко 1 и 2 варианту но меня уверяют что 3 вариант оптимальный и на скорость работы системы не повлияет

2 ответов

4 просмотра

Самый простой это вариант 3. Для динамических атрибутов наиболее эффективно использовать Value-Attribute паттерн https://t.me/mongodb_ru/87488

Maksym-Repetskyi Автор вопроса
yopp 💉💉
Самый простой это вариант 3. Для динамических атри...

Спасибо за ответ. Погуглю по поводу паттерна

Похожие вопросы

Обсуждают сегодня

Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
привет, а расскажите как бэкапите свой vault raft cluster CE? я немного почитал и понял, что нужно как-то выполнять vault operator raft snapshot save backup.snapshot подсовыва...
[DBST] Dmitry Knyazev
5
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Всем привет! Напишите пожалуйста, кто мог бы оффлайн преподавать некоторые курсы по Odoo в Алматы в одном из ВУЗов? Мы сейчас вместе с Odoo запускаем университетскую программу...
Adil Dauletkhan
2
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
Добрый день, подскажите как правильно сделать filter в backend-e. Есть модель (товар) у который связь belongsToMany (компания), компаний > 4k, поэтому выборку типа ->all(); н...
Max Dubovsky
7
А как заставить поиск искать? Есть такая формочка <select class="form-control custom-select" name="brand_id" data-handler="onGetBrands"></select>
Денис Александрович
5
Карта сайта