У меня есть база данных MSSQL, которую я рассматриваю портированием на CouchDB или MongoDB. У меня есть отношение "многие ко многим" в SQL db, которое содержит сотни тысяч строк в таблице xref, что соответствует десяткам тысяч строк в таблицах с каждой стороны отношения. Смогут ли CouchDB и/или MongoDB обрабатывать эти данные и каков наилучший способ форматирования соответствующих документов для выполнения запросов? Большое спасибо.
Отношение "многие ко многим" в CouchDB или MongoDB
Ответ 1
Для CouchDB я настоятельно рекомендую прочитать эту статью об отношениях сущностей.
Одна вещь, которую я хотел бы отметить в CouchDB, - это быть осторожным с попыткой "нормализовать" нереляционную модель данных. Хранилище на основе документов предлагает вам большую гибкость, и редко самая лучшая идея - абстрагировать все на столько "типов документов", о которых вы можете думать. Много раз лучше оставлять большую часть ваших данных в одном документе, если у вас нет четких случаев, когда существуют отдельные сущности.
Один общий пример использования отношений "многие ко многим" - это реализация тегов. Существуют статьи о различных методах, которые вы можете использовать для выполнения этого в CouchDB. Он может применяться к вашим требованиям, он может и не быть, но, вероятно, стоит прочитать.
Ответ 2
Так как модель коллекций MongoDB похожа на таблицы, вы можете, конечно, поддерживать отношение m: n внутри выделенной коллекции сопоставления (с использованием _id соответствующих документов ссылочных документов из других коллекций).
Если вы можете: пересмотреть свое приложение с помощью встроенных документов.
http://www.mongodb.org/display/DOCS/Schema+Design
В общем: попытайтесь отключить свои воспоминания на РСУБД при работе с MongoDB. Слепое копирование дизайна базы данных из СУБД в MongoDB не является ни полезным, ни рекомендательным, и не будет работать в целом.