Ответы пользователя по тегу MongoDB
  • Какой принцип использовать для хранения данных в MongoDB?

    @kaasius
    Тут нужна разумная нормализация. Как писали выше, одна сущность - один документ. Но не забываем при этом, что излишнее дублирование информации (вроде автора) не есть хорошо. Ибо, если у автора что-то изменится, надо будет перелопачивать все документы с этим автором.

    Прелесть schemaless именно в отсутствии схемы. То есть вы можете разным сущностям придать разные атрибуты, при этом держать все в одной коллекции и индексировать все эти атрибуты. Если же структура предполагается более регулярной, если схема будет присутствовать - то стоит обратиться к хранилищам со схемой.
    Ответ написан
    6 комментариев
  • Как правильно организовать реляции в MongoDB?

    @kaasius
    Используйте лучше другую практику для получения и администрирования справочников.
    Например - чтобы получить список уникальных значений локейшена, используйте db.collection.distinct("location"). При желании можно добавить query для ограничения выбираемых документов по критерию.

    Соответственно, вы делаете из этого справочника саджест, и получаете неадминистрируемый словарь.

    Если же хочется администрируемый словарь - можно просто все айтемы словаря хранить в одном документе и в документах пользователя сохранять текстовое представление. Это конечно не очень хорошо, если нужна локализация. Но тогда надо использовать ваш вариант.
    Ответ написан
  • Каким запросом в mongodb можно получить объекты, содержащие объект с полем равным "x"?

    @kaasius
    Может и можно как-то через дот-нотацию и $elemMatch, но это какая-то неправильная архитектура. Индексы точно так работать не будут.
    Ответ написан
    Комментировать
  • Актуально ли использовать Mongo для хранения товара с аттрибутами?

    @kaasius
    В пику предыдущим ораторам, скажу, что ничего такого страшного нет в Монге, зато есть возможность очень просто хранить в одной коллекции записи c разными наборами атрибутов, которые можно индексировать и соответственно осуществлять быстрый поиск по ним. Ну и насчет потери минуты-полутора записей - это конечно ерунда.
    Ответ написан
    1 комментарий
  • MongoDB chat best way?

    @kaasius
    И да, хранение логов пользователей в самих записях инцидента в виде массива имеет пару недостатков, которые могут показаться незначительными, но на деле они фатальны.

    1. Размер записи в монге ограничен - сейчас это 16 мег.
    2. В конкурентной среде достичь атомарности при такой записи у вас не получится. Будет race.

    И да, я знаю, что вы скажете - 16 мег хватит всем, и такого интенсивного обмена, чтобы случился race, не возникнет. Я вам тогда напомню про 640 килобайт, и про закон Мерфи - если какая-нибудь неприятность может случиться - она обязательно случится.

    Резюме - не делайте так.
    Ответ написан
  • MongoDB chat best way?

    @kaasius
    Вы ошиблись c выбором БД для своих целей. Совершенно непонятно, зачем тут нужна монга, какова цель. Чат юзер-юзер замечательно работает вообще без базы данных, я могу на nginx поднять чат юзер-юзер вообще без бэкенда. Если БД нужна, чтобы просто хранить логи общения, подойдет любая БД с буффером в виде быстрой очереди (если планируете высокую нагрузку) или вообще без буферизации дополнительной.

    Ну и, да _id монге лучше дать делать самой.
    Ответ написан