Me pregunto si hizo la pregunta correcta. ¿Por qué estás usando Scala, y no idiomas dinámicos? Probablemente debido a algunas bondades que Scala le proporciona que es importante para usted y, supongo, la calidad de su código. Entonces, ¿por qué no está utilizando una base de datos "estáticamente estátizada" (es decir, basada en esquemas)? Una vez más estoy asumiendo, pero la capacidad de responder al cambio me viene a la mente. Las bases de datos SQL de producción tienen una tendencia horrible de ser muy difíciles de cambiar y refactorizar.
Por lo tanto, sus datos tipos débiles, y su código es fuertemente tipado. Pero en algún lugar necesitarás hacer la transición. Esto significa que en algún lugar, tendrá un "esquema" para sus datos, aunque la base de datos no tenga ninguno. Este esquema está definido por las clases a las que está asignando los documentos de Couch. Esto tiene perfecto sentido; La mayoría de los usos de Couch que he visto tienen una clave como "tipo" y para cada tipo al menos un conjunto común de claves. Ya sea para asignar manualmente el JSON a estas clases de Scala o para usar, p. sofisticadas herramientas de reflexión (más lentas pero bonitas), o alguna característica Scala aún más elegante en la que soy nuevo es un detalle. Comience con el fácil pero lento, y luego vea si es lo suficientemente rápido.
Lo importante ocurre cuando tus clases, es decir, tu esquema, cambian. En lugar de ALTERAR tus tablas, puedes simplemente cambiar la clase, asegurarte de que haces algo inteligente si para un documento falta una clave que esperas (porque estaba basada en una versión anterior de la clase), y listo. Responder al cambio nunca ha sido tan fácil, y aún así su código está tan tipado estáticamente como puede obtenerse.
Si esto no es lo suficientemente bueno para usted, y desea que ningún esquema en absoluto, entonces usted está efectivamente diciendo que usted no desea utilizar las clases para definir y manipular sus datos. Eso está bien también (aunque no puedo imaginar un uso), pero luego la pregunta no es acerca de los lenguajes dinámico frente a los estáticos, sino acerca de si usar o no los lenguajes basados en clases.
Puede ver esta pregunta como: ¿Los idiomas dinámicos son los más adecuados para CouchDB? – paulosuzart