Вокруг существует множество решений NoSQL, каждое из которых имеет свои сильные и слабые стороны, поэтому следующее следует рассматривать с недоверием.
Но, по сути, то, что делают многие базы данных NoSQL, это полагается на денормализацию и пытается оптимизировать для денормализованного случая. Например, предположим, что вы читаете сообщение в блоге вместе с его комментариями в базе данных, ориентированной на документы. Часто комментарии сохраняются вместе с самой записью. Это означает, что будет быстрее получить их все вместе, так как они хранятся в одном месте, и вам не нужно выполнять соединение.
Конечно, вы можете сделать то же самое в SQL, и денормализация является обычной практикой, когда требуется производительность. Просто многие NoSQL-решения спроектированы с самого начала и всегда используются таким образом. Затем вы получаете обычные компромиссы: например, добавление комментария в приведенном выше примере будет медленнее, потому что вы должны сохранить весь документ вместе с ним. И как только вы денормализовали, вы должны позаботиться о сохранении целостности данных в вашем приложении.
Более того, во многих решениях NoSQL невозможно выполнять произвольные объединения, а следовательно, произвольные запросы. Некоторые базы данных, такие как CouchDB, требуют, чтобы вы заранее продумали запросы, которые вам понадобятся, и подготовили их внутри БД.
В общем, все сводится к ожиданию денормализованной схемы и оптимизации операций чтения для этой ситуации, и это хорошо работает для данных, которые не являются в высокой степени реляционными и требуют гораздо больше операций чтения, чем записи.