, прежде чем я начну, я хотел бы извиниться за довольно общий тип моих вопросов - уверен, целая книга можно было бы написать по этой конкретной теме.
Предположим, у вас есть большая база данных документов с несколькими схемами документов. и миллионы документов для каждой из этих схем. В процессе работы приложения возникает необходимость изменить схему. (и содержание) уже сохраненных документов часто.
Такими изменениями могут быть
В моем последнем проекте, где мы использовали базу данных SQL, у нас были очень похожие проблемы что привело к значительному времени автономной работы (для продукта 24/7), когда изменения стали радикальными, поскольку базы данных SQL обычно выполняют БЛОКИРОВКУ таблицы, когда происходят изменения. Я хочу избежать такого сценария.
Другой связанный вопрос - как обрабатывать изменения схемы изнутри используемая среда языка программирования. Обычно изменения схемы происходят изменение определения класса (я буду использовать Mongoid OR-Mapper для MongoDB и Ruby). Как обращаться со старыми версиями документов, которые не больше соответствовать моему последнему определению класса.