Интересно, если вы задали правильный вопрос. Почему вы используете Scala, а не динамические языки? Возможно, из-за того, что Scala предоставляет вам что-то важное, что важно для вас и, я полагаю, для качества вашего кода. Тогда почему же вы не используете «статически типизированную» (т.е. основанную на схеме) базу данных? Еще раз, я просто предполагаю, но способность реагировать на изменения приходит на ум. Производственные базы данных SQL имеют ужасную тенденцию к тому, что их очень трудно изменить и реорганизовать.
Итак, ваши данные слабо напечатаны, а ваш код строго напечатан. Но где-то вам нужно сделать переход. Это означает, что где-то у вас будет «схема» для ваших данных, даже если в базе данных ее нет. Эта схема определяется классами, на которые вы отображаете документы Couch. Это имеет смысл; У большинства применений Couch, которые я видел, есть ключ, такой как «тип», и для каждого типа по крайней мере какой-то общий набор ключей. Нужно ли вручную сопоставлять JSON с этими классами Scala или использовать, например, причудливые инструменты отражения (медленнее, но симпатичнее) или еще более необычная функция Scala, с которой я еще не знаком, - это деталь. Начните с простого, но медленного, затем посмотрите, достаточно ли он быстр.
Большая вещь возникает, когда ваши классы, то есть ваша схема, изменяют . Вместо того, чтобы ALTER'ить свои таблицы, вы можете просто изменить класс, убедиться, что вы делаете что-то умное, если для какого-то документа отсутствует ожидаемый вами ключ (потому что он основан на более старой версии класса), и все готово. Реагировать на изменения никогда не было проще, и все же ваш код набирается максимально статически.
Если это недостаточно для вас, и вам вообще не нужна схема, тогда вы фактически говорите, что не хотите использовать классы для определения и манипулирования вашими данными. Это тоже хорошо (хотя я не могу представить себе использование), но тогда вопрос не в динамических и статических языках, а в том, стоит ли вообще использовать ОО-языки на основе классов.