Базы данных NoSQL могут прекрасно поддерживать реляционные модели данных. Вам остается только самостоятельно реализовать реляционное отображение в своем приложении, и эти усилия обычно не являются незначительными.
В некоторых приложениях эти дополнительные усилия будут оправданы. Возможно, у вас есть только небольшое количество таблиц, и объединения, которые вам нужны, очень просты. Или, возможно, вы провели некоторую оценку производительности между традиционной реляционной СУБД и альтернативой NoSQL и обнаружили, что опция NoSQL больше подходит для ваших потребностей по ряду причин (производительность, масштабируемость, гибкость и т. Д.).
Вы должны помнить одну вещь, однако. Типичная СУБД SQL - это, по сути, NoSQL DB с оптимизированным, хорошо построенным реляционным механизмом перед ним. Некоторые базы данных даже позволяют обходить реляционный уровень и относятся к своей системе как к чистой базе данных NoSQL .
Следовательно, в тот момент, когда вы начинаете создавать свои собственные реляционные отображения и объединения поверх БД NoSQL , вы должны спросить себя: "Не кто-то уже создал это для меня?" Ответ вполне может быть «да», и решение может заключаться в использовании традиционной СУБД SQL.
Чтобы ответить на часть «3 запроса» вашего вопроса конкретно, ответ «возможно». Конечно, вы могли бы сделать такой запрос более быстрым в NoSQL DB, чем в RDBMS, но вам нужно помнить, что здесь нужно учитывать больше вещей, чем просто скорость вашего запроса:
- Технический долг, который вы будете нести при создании функциональности, подобной объединению, которую вам не пришлось бы создавать в противном случае
- Время, которое потребуется вам для создания, тестирования и оптимизации кода запроса, что, вероятно, будет более важным, чем написание простого запроса SQL
- Любая разница в транзакционных гарантиях или других типичных функциях продукта (репликация, инструменты управления и т. Д.), Которые вы можете потерять или получить в зависимости от выбранной вами опции NoSQL
- Возможность нанимать СУБД, которые знают, как управлять вашей базой данных с оперативной точки зрения
Вы можете просмотреть этот список и сказать себе: «Ничего страшного, я запускаю простое приложение, содержащее всего несколько тысяч записей в БД, и я буду поддерживать его самостоятельно» . Если это так, нокаутируйте себя - Беркли (и другие опции NoSQL) будут работать нормально. Я много раз использовал Беркли для таких приложений. Но у вас может быть другой ответ, если вы создаете серверную часть для продукта SaaS значительного размера, который вскоре может иметь миллионы пользователей и очень сложные запросы.
К сожалению, мы не можем дать универсальный ответ. Вы должны будете сами принять решение, исходя из потребностей вашего приложения и организации.