Будет ли это хороший дизайн или нет, будет зависеть от ваших запросов. В общем, вы хотите избежать использования объединений в Mongo (они все еще возможны, но если вы делаете кучу объединений, вы используете это неправильно и действительно должны использовать реляционную БД :-)
Например, если большинство ваших запросов находятся в коллекции server_log и используются только поля в этой коллекции, тогда все будет в порядке. OTOH, если ваши запросы server_log всегда должны извлекать данные из коллекции сервера (например, имя и поля userId), тогда, возможно, стоит выборочно денормализовать эти данные. Это причудливый способ сказать, вы можете скопировать поля имени и пользователя в свои документы server_log, чтобы ваши запросы могли не совпасть с тем, чтобы присоединиться к серверной коллекции. Конечно, каждый раз, когда вы денормализуете, вы добавляете сложность в свое приложение, которое теперь должно гарантировать, что данные согласованы между несколькими коллекциями (например, при изменении имени сервера вы также должны убедиться, что вы также изменили его в server_logs) ,
Возможно, вы захотите составить список запросов, которые вы ожидаете выполнить, и посмотреть, могут ли они быть выполнены с минимальным объединением с вашей текущей схемой. Если нет, посмотрите, поможет ли небольшая денормализация. Если вы дойдете до такой степени, что вам нужно сделать кучу объединений или много ручного управления денормализованными данными, чтобы удовлетворить ваши запросы, вам может потребоваться переосмыслить вашу схему или даже ваш выбор БД.
Привет, я не много сделал с MongoDB, но я думаю, что ограничение на 16 МБ - на документ, а не на сбор. Для сохранения файлов журнала вы можете очистить эту коллекцию и использовать резервные копии db за 90 дней – iestync
Почему эта коллекция server1 и server2? – rummykhan
, вероятно, Server1 и Server2 должны быть встроены в коллекцию пользователей – Deano