Да, несколько баз данных 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 (для несоответствия импеданса и сборки/разборки).
Отличный ответ. Большое спасибо @geraldss за объяснение. –