MongoDB Таблицы Схема Дизайн -Лучшая практика. Использовать основные документы (как в основных таблицах rdbms) или нет - PullRequest
2 голосов
/ 18 октября 2011

Справочная информация: Я использую MongoDB для разработки прототипов в своем проекте, где я использую несколько основных таблиц для хранения определений и использую эти ключи в таблицах данных.мои несколько главных таблиц

Class Master_Feed_Provider { int key;
string feed_provider_name 
string address }

Class Master_File_Types {int id;
string type }

Моя таблица данных

Class Data_Feeds {int id, 
int file_type_key , int feed_provider_key ,
DateTime time }

** здесь я использую feed_provider_key для связи деталей из master_feed_provider

Так что здесь мои сомненияmongoDb поддерживает этот вид дизайна, но должен ли я пойти на этот дизайн, или я должен просто хранить полную информацию о feed_provider и file_types в моих записях таблицы data_feed вместо только ключей и информации выборки с помощью объединений?

Сохранение полногодетали в моих таблицах данных (вместо единственного ключа) увеличат размер данных.Сохранение ключей и использование объединений для связи деталей приведут к дополнительным операциям в БД.Так какой путь лучше здесь?

Ответы [ 3 ]

1 голос
/ 18 октября 2011

Прежде всего: есть нет" Это правильный способ сделать это в монго" в отличие от СУРБД Каждое принятое решение должно основываться на здравом смысле. Это ссылка с описанием возможных проектных решений: ссылка . Как он говорит, есть 2 варианта: masterfeeds:

1)

masterfeeds:

{ _id: idValue,
    name: nameValue,
    masterFileTypes:[typeId1, typeId2, typeId3]}

masterFileTypes:
  { _id: idValue,
    Type: typeValue,
    masterFeeds:[mfId1, mfId2, mfId3]}

2)

masterfeeds:
      { _id: idValue,
        name: nameValue,
        masterFileTypes: [typeId1, typeId2, typeId3]}

masterFileTypes:
  { _id: idValue,
    Type: typeValue}
1 голос
/ 18 октября 2011

Вам следует изучить использование ObjectId значений для ваших ключей.

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

Вместо этого вы обычно хотите несколько денормализовать данные и, возможно, сохранить копию полей, которые вам нужны, чтобы вы могли удовлетворить запрос в меньшем количестве-trips.

См. MongoDB: Должны ли вы по-прежнему предоставлять идентификаторы, ссылающиеся на другие коллекции или просто включающие коллекции?

0 голосов
/ 29 ноября 2012

Это в основном сводится к тому, вставлять ли (вложенный документ) или ссылку (другой документ коллекции)?

Взгляните на , как структурировать отношения «многие ко многим» в мангусте? для плюсов и минусов каждого подхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...