2011-08-09 9 views
5

¿Cuáles son las opciones para las migraciones/actualizaciones de esquema MongoDB?¿Existe un buen marco para las actualizaciones de "esquema" de MongoDB en Scala?

Nosotros (mis colegas y yo) tenemos una colección MongoDB algo grande (~ 100 millones de registros). Esta colección se asigna (ORM'd) a un objeto Scala lift-mongodb que ha pasado por varias iteraciones diferentes. Tenemos todo tipo de código allí que maneja campos faltantes, cambia el nombre, eliminaciones, migraciones, etc.

Tanto como todo el asunto "sin esquema" puede ser agradable y flexible, en este caso está causando gran cantidad de código desordenado a medida que nuestro objeto continúa evolucionando. Continuar por este camino de "objeto flexible" simplemente no es sostenible.

¿Cómo han implementado las migraciones/actualizaciones de esquema en MongoDB con Scala? ¿Existe un marco para esto? Sé que Foursquare usa Scala con MongoDB y Rogue (su propia DSL de consulta) ... ¿Alguien sabe cómo manejan sus migraciones?

Gracias.

+0

Lo que se está almacenando que tiene 100 millones de discos .. puramente curioso ... Me encanta ver dónde/cómo se usa la tecnología –

+0

@AdamGent: cobertura global de los datos de la acción corporativa (dividendos y fraccionamientos), volviendo por un buen tiempo. El siguiente paso podría ser el tick-history con una resolución de 1 segundo ... es decir, hay más datos y una lata de gusanos completamente diferente. –

+0

Realizamos migración de datos con scripts de JavaScript bastante sencillos (versionados) y un documento de versión de esquema en una colección reservada para activar automáticamente las migraciones apropiadas. –

Respuesta

4

Tal vez esto puede ayudar un poco, esto es cómo manejar este Guardian.co.uk:

http://qconlondon.com/dl/qcon-london-2011/slides/MatthewWall_WhyIChoseMongoDBForGuardianCoUk.pdf

actualizaciones de esquema

Esto puede ser mitigado por:

  • Adición de una "Versión" clave para cada documento
  • Actualización de la versión cada vez que la aplicación modi fi ca hacer cumento
  • utilizando la capacidad de MapReduce para migrar forzosamente documentos de versiones anteriores, si es necesario
+0

Me pregunto cómo se correlacionaría con, p. Levantar registro. –

2

I migraciones del programa de datos MongoDB con mi propio marco Scala "Subset". Permite definir campos de documentos con bastante facilidad, ajustar la serialización de datos (por ejemplo, escribir "fecha" es un formato específico, etc.) y generar consultas y modificadores de actualización en términos de los campos definidos. Este "gist" da una buena introducción

Cuestiones relacionadas