Отношение "многие ко многим" в CouchDB или MongoDB

У меня есть база данных MSSQL, которую я рассматриваю портированием на CouchDB или MongoDB. У меня есть отношение "многие ко многим" в SQL db, которое содержит сотни тысяч строк в таблице xref, что соответствует десяткам тысяч строк в таблицах с каждой стороны отношения. Смогут ли CouchDB и/или MongoDB обрабатывать эти данные и каков наилучший способ форматирования соответствующих документов для выполнения запросов? Большое спасибо.

Ответ 1

Для CouchDB я настоятельно рекомендую прочитать эту статью об отношениях сущностей.

Одна вещь, которую я хотел бы отметить в CouchDB, - это быть осторожным с попыткой "нормализовать" нереляционную модель данных. Хранилище на основе документов предлагает вам большую гибкость, и редко самая лучшая идея - абстрагировать все на столько "типов документов", о которых вы можете думать. Много раз лучше оставлять большую часть ваших данных в одном документе, если у вас нет четких случаев, когда существуют отдельные сущности.

Один общий пример использования отношений "многие ко многим" - это реализация тегов. Существуют статьи о различных методах, которые вы можете использовать для выполнения этого в CouchDB. Он может применяться к вашим требованиям, он может и не быть, но, вероятно, стоит прочитать.

Ответ 2

Так как модель коллекций MongoDB похожа на таблицы, вы можете, конечно, поддерживать отношение m: n внутри выделенной коллекции сопоставления (с использованием _id соответствующих документов ссылочных документов из других коллекций).

Если вы можете: пересмотреть свое приложение с помощью встроенных документов.

http://www.mongodb.org/display/DOCS/Schema+Design

В общем: попытайтесь отключить свои воспоминания на РСУБД при работе с MongoDB. Слепое копирование дизайна базы данных из СУБД в MongoDB не является ни полезным, ни рекомендательным, и не будет работать в целом.