Pregunta

Estoy familiarizado con CouchDB y la idea de la asignación de sus resultados a la Scala de los objetos, así como encontrar alguna forma natural de iteract con él, vino inmediatamente.

Pero veo que los lenguajes Dinámicos como Ruby y Javascript hacer las cosas muy bien con el json/centrada en el documento/shchema libre de abordaje de CouchDB.

Cualquier buen aproach a hacer las cosas con Sofá en lenguajes estáticos?

¿Fue útil?

Solución

Yo entiendo que CouchDB trabaja exclusivamente con objetos JSON. Dado que JSON es sin tipo, es tentador creer que se adapta de forma más natural para lenguajes dinámicos. Sin embargo, es generalmente XML sin tipo también, y Scala tiene muy buen soporte de la biblioteca para crear y manipular XML. Para una exploración de las funciones XML de Scala, consulte: http://www.ibm.com/ developerworks / biblioteca / x-scalaxml /

Asimismo con JSON. Con el apoyo adecuado de la biblioteca, se trata de JSON puede sentir natural, incluso en lenguajes estáticos. Por una aproximación al tratamiento de los datos JSON en Scala, vea este artículo: http://technically.us/code/x/weaving-tweed-with-scala-and-json/

Con la base de datos orientada a objetos en general, a veces es conveniente definir un "modelo" (utilizando, por ejemplo, una clase en la lengua) y el uso de JSON o XML o algún otro idioma del documento sin tipo a ser una representación serializada de la clase. el apoyo adecuado de la biblioteca se puede traducir entre la forma serializada (como JSON) y las estructuras de datos en memoria, con tipos estáticos y todos los extras que vienen con él. Para un ejemplo de este enfoque, véase el Registro de elevación que ha añadido conversiones desde y hacia JSON: http: //groups.google.com/group/liftweb/msg/63bb390a820d11ba

Otros consejos

Me pregunto si usted hizo la pregunta correcta.¿Por qué estás usando Scala, y no de los lenguajes dinámicos?Probablemente a causa de algún bien que Scala ofrece usted que es importante para usted y, supongo, el código de la calidad.Entonces, ¿por qué no usar un "tipo estático" (es decir,basados en el esquema) base de datos?Una vez más, solo estoy suponiendo, pero la capacidad para responder al cambio viene a la mente.La producción de bases de datos SQL tienen una horrible tendencia de ser muy difícil de cambiar y refactorizar.

Así, su datos es de tipo débil, y su código es inflexible.Pero en algún lugar usted necesita para hacer la transición.Esto significa que en algún lugar, usted tendrá un "esquema" para sus datos, incluso aunque la base de datos no tiene ninguno.Este esquema se define por las clases que usted está buscando Sofá documentos en.Esto tiene perfecto sentido;la mayoría de los usos de Sofá que he visto tiene una clave tales como "tipo" y para cada tipo de, al menos, algunos comunes de un conjunto de teclas.Si a la mano el mapa de JSON para estos Scala clases o para usarse, por ejemplo,de lujo reflexión herramientas (más lento, pero bastante), o algunos incluso más elegante Scala característica que estoy aún de nuevo es un detalle.Comience con el fácil pero lento, y luego ver si es lo suficientemente rápido.

La gran cosa a la que se produce cuando las clases, es decir,su esquema, cambio.En lugar de ALTERAR ing tus tablas, usted puede cambiar la clase, asegúrese de que usted haga algo inteligente si por algún documento clave que usted espera es que falta (porque estaba basado en una versión anterior de la clase), y listo.Respuesta ante el cambio nunca ha sido más fácil, y aún así el código es de tipo estático como se puede conseguir.

Si esto no es suficientemente bueno para usted, y usted quiere ningún esquema, entonces que efectivamente está diciendo que usted no desea utilizar las clases para definir y manipular los datos.Que también está bien (aunque no puedo imaginar un uso), pero entonces la pregunta no es acerca de la dinámica vs lenguajes estáticos, sino acerca de si el uso de la clase OO de idiomas en todos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top