Допустим, у меня есть унаследованное приложение, которое по разным причинам решило, что предыдущие разработчики должны иметь произвольно гибкую схему, и они снова изобрели модель Entity-Attribute-Value. Они на самом деле пытались создать хранилище документов, для которого такие инструменты, как Mongo или Couch, теперь лучше подходили бы в современном мире, но не были доступны или не известны предыдущим командам.
Чтобы оставаться конкурентоспособными, скажем, нам нужно создать более мощные методы для запроса и анализа информации в нашей системе. Судя по большому количеству и разнообразию атрибутов, кажется, что карта / уменьшение лучше подходит для нашего набора проблем, чем постепенная реорганизация системы в более реляционную схему.
Исходная база данных содержит миллионы документов, но только небольшое количество различных типов документов. Есть некоторые общие черты между различными типами документов.
Какова эффективная стратегия для перехода от массивной реализации EAV, скажем, в MySql, к ориентированному на документы хранилищу, например, Mongo или Couch?
Я, конечно, могу представить подход, чтобы атаковать это, но я действительно хотел бы увидеть учебник или историю войны, чтобы узнать у кого-то, кто уже напал на этот тип проблемы.
Какие были стратегии для такого преобразования, которые хорошо работали? Какие уроки вы выучили? Какие подводные камни мне следует избегать? Как вы справились с устаревшими приложениями, которые по-прежнему ожидают возможности взаимодействия с существующей базой данных?