С точки зрения использования базы данных, последнее десятилетие было эпохой ORM с сотнями, борющимися за сохранение наших графов объектов в простой старомодной RMDBS. Сейчас мы, похоже, являемся свидетелями наступления эры документно-ориентированных баз данных. Эти базы данных высоко оптимизированы для документов без схемы, но также очень привлекательны из-за возможности масштабирования и параллельного запроса кластера.
Документно-ориентированные базы данных также обладают рядом преимуществ по сравнению с СУБД для сохранения моделей данных в объектно-ориентированных проектах. Поскольку таблицы не содержат схем, можно хранить объекты, принадлежащие разным классам, в иерархии наследования параллельно. Кроме того, по мере изменения модели предметной области, поскольку код может справляться с возвратом объектов из старой версии классов предметной области, можно избежать переноса всей базы данных при каждом изменении.
С другой стороны, преимущества производительности баз данных, ориентированных на документы, в основном проявляются при хранении более глубоких документов. В объектно-ориентированных терминах классы, которые состоят из других классов, например, сообщения в блоге и его комментариев. В большинстве примеров, которые я могу придумать, хотя, например, в блоге, выигрыш в доступе на чтение будет компенсирован штрафом за необходимость писать весь «пост» в блоге каждый раз, когда появляется новый комментарий. добавлен.
Мне кажется, что документно-ориентированные базы данных могут принести существенные преимущества объектно-ориентированным системам, если проявить крайнюю осторожность, чтобы упорядочить объекты в глубоких графах, оптимизированных для способа чтения и записи данных, но это означает знание использовать случаи впереди. В реальном мире мы часто не знаем, пока у нас не появится живая реализация, которую мы можем профилировать.
Так что, в случае реляционных и документно-ориентированных баз данных характерны колебания и обходные пути? Мне интересны мнения и советы людей, в частности, если кто-нибудь создал какие-либо важные приложения на базе данных, ориентированной на документы.