У меня есть большая, сложная, устаревшая реляционная база данных, содержащая наши пользовательские данные. Я хочу создать приложение, которое будет сегментировать группы пользователей по различным критериям ( покажет мне всех, кто весит более 200 фунтов и носит красную рубашку ). Запросы будут состоять из предопределенных параметризованных предикатов (подумайте о пользовательском интерфейсе правил сообщений в outlook или gmail). Полностью специальные запросы будут редкими.
Построение SQL-запросов к исходным данным нецелесообразно из-за сложности устаревшей схемы.
Первой, наивной идеей может быть денормализация данных, которые будут использоваться для сегментации, в очень широкую таблицу в СУРБД:
id | hat size | shirt color | weight | ....
123 | 7 | blue | 175 |
456 | 6 | red | 205 |
Но это не слишком привлекательно, потому что данные будут редкими, и столбцы будут меняться довольно часто (еженедельно?). Изменения схемы сложны с логистической точки зрения в моей среде.
Я мог бы далее нормализовать таблицу к простой таблице ключ / значение, но в этот момент NoSQL становится интересным.
Так вот мой вопрос:
Подойдет ли ориентированная на документы база данных, такая как MongoDB или CouchDB, для этого варианта использования?
У меня нет огромных объемов данных (10 миллионов строк, 300 или около того столбцов в гипотетически денормализованной таблице). Пишет довольно редко (10000 в день). Запросы будут выполняться несколько раз в день, а время ответа должно быть в секундах.
Последние пару дней я читал о различных подходах к NoSQL, и документно-ориентированные БД кажутся мне наиболее подходящими. Не стесняйтесь предложить лучший подход.
Бонусный вопрос
_ Оправдывают ли преимущества документа db затраты на внедрение новой технологии в наших центрах обработки данных? _
Я имею в виду, что, возможно, я вполне мог бы удовлетворить требования к производительности с нашей существующей реляционной базой данных, но мне интересно погрузиться в дела NoSQL, потому что у меня есть другие приложения, где документно-ориентированная база данных действительно платит. и я хотел бы сначала промочить ноги простым приложением.