Multi Map / Уменьшить индекс против реляционного объединения - PullRequest
2 голосов
/ 15 октября 2011

Одним из ключевых факторов, делающих базы данных NoSQL более масштабируемыми, является отсутствие операции соединения, которая является неотъемлемой частью СУБД. Но в то же время, например, RavenDb содержит функцию индексации Multi Maps / Reduce, которая похожа на соединение.

Почему объединения ограничивают масштабируемость, а индексы Multi Maps / Reduce - нет, когда они решают довольно похожие задачи?

Ответы [ 2 ]

4 голосов
/ 16 октября 2011

Здесь есть два заблуждения, которые стоит исправить.Во-первых, в той степени, в которой NOSQL вообще определяет какую-либо парадигму базы данных (а не просто является названием популярной коллекции программных продуктов), он не должен означать нереляционную.NOSQL просто означает не SQL или не просто SQL.Таким образом, база данных NOSQL вполне может быть реляционной и поддерживать соединения.

Во-вторых, объединения не ограничивают масштабируемость.Объединение в реляционных терминах является логической операцией, а не физической.Это может быть реализовано многими различными способами, включая использование Map / Reduce.

1 голос
/ 15 октября 2011

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

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

...