2015-05-29 2 views
2

Я всегда предполагал, что NoSQL (Cassandra, CouchDB, Couchbase, MongoDB и т. Д.) Ориентирован на документ (NO JOIN). Типичная фраза: "Если вам нужно JOIN, использовать SQL базы данных (MySQL, PostgreSQL и т.д.)"CouchBase NOSQL объявила о поддержке JOIN. В чем их недостатки?

Но теперь, Couchbase объявил N1QL (Developer Preview 4) РЕГИСТРИРУЙТЕСЬ поддержка:

http://blog.couchbase.com/introducing-developer-preview-for-couchbase-server-4.0

Попробуйте онлайн:

http://query.pub.couchbase.com/tutorial/#42

Итак, я запутанным. Couchbase - первая база данных NOSQL с поддержкой JOIN? Есть ли недостатки в его использовании? Почему другие базы данных NOSQL (например, mongodb, couchdb, cassandra и т. Д.) Не реализовали его?

ответ

4

Да, несколько баз данных NoSQL используют модель документа JSON (например, Couchbase, MongoDB). Однако документально-ориентированный не должен означать «NO JOINs». RDBMS, такие как PostgreSQL и MySQL, ожидают, что вы разобьете свои объекты на плоские таблицы для записи и используйте JOINs для сборки ваших объектов для чтения. Это называется несоответствием импеданса.

Базы данных документов JSON могут хранить полные объекты напрямую, поэтому несоответствие импеданса отсутствует. Однако объекты часто имеют отношения к другим объектам, и вам нужно запрашивать эти отношения. Например, фильмы и актеры - это связанные объекты, и если вы хотите перечислить детали фильма вместе с тем, сколько наград, выигранных Актером, вам понадобится JOIN.

Таким образом, РСУБД, такие как PostgreSQL и MySQL, имеют несоответствие импеданса, поэтому вы должны использовать JOINs для сборки объектов и отношений. Базы данных JSON, у которых нет JOIN, не позволяют вам запрашивать отношения, поэтому вы должны реализовать эту логику в своем приложении, используя несколько запросов. Наконец, база данных документов JSON, которая также предоставляет JOINs, дает вам преимущества обоих: (1) нет несоответствия импеданса и не разборки/сборки, и (2) вы можете запрашивать отношения между объектами. Вот почему Couchbase предоставляет JOINs в N1QL.

Нет причин иметь недостаток при использовании JOINs в Couchbase. JOINs очень полезны при использовании по правильной причине (отношения), а модель данных Couchbase (JSON) позволяет избежать «плохих» JOIN (для несоответствия импеданса и сборки/разборки).

+0

Отличный ответ. Большое спасибо @geraldss за объяснение. –

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