Краткая история: программист переписал бэкенд с mysql+django на rethinkdb+nodejs, а быстрее не стало (хотя и решило другие проблемы). Я начал разбираться и обнаружил внутри... всё те же таблицы, join-ы и ORM. А всё потому что один документ не может ссылаться на другой. Максимум что можно сделать это использовать join между таблицами по уникальному id. В результате сбор данных превращается в феерической длины запросы и тормозааа.
У меня два вопроса: 1) а почему на уровне БД нельзя сделать что-то вроде ссылочного типа данных? Указатель какой-нибудь, как в объектных базах данных (они ещё живы?). Я предвижу сложности, но, имхо, это must have.
2) Мы готовим nosql как-то неправильно или в принципе от таблиц никуда не убежать? Я обсуждал проблему с другими разработчиками, они сказали в том или ином виде достаточно часто приходится городить «sql для бедных». Что думаете?
Разделение на таблицы позволило значительно облегчить трансформацию базы при добавлении/изменения функционала. Что ожидаемо, но оказалось гораздо важнее для программистов чем я думал.