Отношения многие ко многим в CouchDB или MongoDB - PullRequest
11 голосов
/ 31 марта 2011

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

Ответы [ 2 ]

7 голосов
/ 31 марта 2011

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

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

Один из распространенных вариантов использования отношений «многие ко многим» - реализация тегов.Есть статей о различных методах, которые можно использовать для достижения этой цели в CouchDB.Это может относиться к вашим требованиям, может и не быть, но, вероятно, стоит прочитать.

2 голосов
/ 31 марта 2011

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

Если вы можете: рассмотрите возможность перепроектирования вашего приложения с использованием встроенных документов.

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

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

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