Nosql многие ко многим - PullRequest
       27

Nosql многие ко многим

7 голосов
/ 06 января 2011

Каков принятый шаблон для обработки отношений «многие ко многим» в проекте базы данных документов?

Ответы [ 2 ]

3 голосов
/ 07 января 2011

То, как вы хотите смоделировать многие ко многим, будет зависеть от того, какие запросы вы хотите задавать, как вы хотите обновить данные и т. Д. Скажем, у нас есть foos, связанные с барами от многих ко многимfashion.

Вы можете смоделировать foo как

{
   'bars': ['bar1', 'bar2', 'bar3']
}

и смоделировать бар как

{
   'foos': ['foo_x', 'foo_y', 'foo_z']
}

Или вы можете смоделировать график или отношения между foo и bar какСами отдельные документы

{
    from: 'foo1',
    to: 'bar1'
}

{
   from: 'foo1',
   to: 'bar2'
}

{  
   from: 'foo2',
   to: 'bar3
}

{
  from 'foo3',
  to: 'bar3'
}

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

2 голосов
/ 06 января 2011

Предполагая, что мы говорим о случаях, когда отношения действительно необходимы, а не те, которые существуют только потому, что SQL обрабатывает отношения лучше, чем сложные объекты, конструкция аналогична стандартной для SQL - отношения два ко многим.

Ключевым отличием является то, что у вас есть многозначные поля, поэтому вместо третьего документа / таблицы, записывающего отдельные соединения в виде пары идентификаторов, у вас есть список идентификаторов в каждом документе.

Если вы сталкиваетесь со случаями, когда этот список становится слишком длинным, вы, вероятно, смотрите на что-то, что было бы лучше обработано индексированием поиска, чем отношением.

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