2015-04-03 2 views
1

Я только что прочитал это снова на mongoid.org сайте (ODM Руби)Is MongoDB не подходит для реляционных данных?

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

Действительно ли это действующее заявление?

+0

Хорошо, что mongodb не является sql, его базой данных и не имеет объединений. – Abhishek

+0

Когда ваши данные являются * ничего, кроме * отношений, вы можете посмотреть в базы данных графов, такие как Neo4j, которые охватывают отношения даже больше, чем классические реляционные базы данных. – Philipp

ответ

0

MongoDB - это база данных, ориентированная на документ. Транзакции и отношения не представлены в этом решении. Это дает более масштабируемую среду, несмотря на это ограничение.

Для получения более подробной информации о данном решении вы должны перейти по номеру mongodb.org.

+0

Да, я знаю, что это такое, и вы можете строить коллекционные отношения. Но это хороший выбор, если у вас есть много лучших коллекций, которые ссылаются друг на друга? – sandelius

+0

Я думаю, что, используя Mongo, лучшие практики - это разработать новую модель для ваших данных. Для отношения между многими коллекциями вы должны предпочесть отношение DB – Tony

2

Действительно ли это действующее заявление?

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

Реляционные базы данных хорошо сочетаются с ограничениями запросов по различным таблицам: «Что есть клиенты, которые живут в городах, где мы работаем в большинстве магазинов, купленных в дни, когда солнце сияло?» База данных SQL может хорошо ответить на этот вопрос. С помощью правильных индексов вы можете быстро выполнять целые классы этих запросов. Это особенно полезно, если вы не знаете вопросов, которые будут заданы «во время компиляции», так сказать.

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

Обсуждение блокировок, транзакций, «масштаб» и т. Д. В основном ортогонально.

Если вы знаете свои вопросы заранее, MongoDB может cope with relations relatively well, и вы можете избежать большинства транзакций. Если вам нужны запросы бизнес-аналитики, вам, вероятно, будет лучше с реляционной БД.

+1

Я хотел бы подчеркнуть, что транзакции почти всегда можно избежать при правильном моделировании и в соответствии с запросами и/или агрегатами. Более того, даже упомянутые дикие запросы могут быть достигнуты с использованием различных методов, хотя и не так просто, как с SQL, по общему признанию.Но, как правильно упомянул мнемосин, за исключением тех крайних случаев, все остальное становится легче, в некоторых случаях - в значительной степени. –

Смежные вопросы