Copia de security MongoDB como text en lugar de binary para control de fuente

¿Es posible hacer esto?

La razón por la que pregunto es que parecería útil realizar una copy de security como un enlace precompromiso, e include esa copy de security basada en text de alguna manera con el código comprometido, de modo que cada revisión en el control de origen (git) tenga las copys de security necesarias asociadas con eso.

Me doy count de que es posible hacer que MongoDB escupir todas sus collections como JSON, y hacer una copy de security de esa manera, pero luego esto no contendría los metadatos de DB y colección.

La preocupación central es que al realizar una bifurcación para realizar cambios en el código del lado del server, y luego revertir esa twig, es fácil para nosotros olvidar hacer las copys de security necesarias que permitirán una reversión efectiva (el código ya no coincidirá con el esquema). Se podría decir que se trata de un error del progtwigdor, pero creo que debería existir alguna automation para garantizar que tengamos una versión de la database actualizada para cada versión del código. Este es el problema con los esquemas que son amorfos durante los primeros días de un proyecto … los esquemas dynamics son la principal bendición y maldición de Mongo.

MongoDB almacena sus datos en un formatting BSON (Binary JSON) por lo que si está convirtiendo a un formatting de solo text, debe tener en count los posibles problemas de fidelidad del tipo de datos . Si desea una copy de security consistente de su database MongoDB, el formatting recomendado sería la salida binaria de mongodump . Sin embargo, no recomendaría hinchar tu git repo con copys de security de bases de datos binarias.

Normalmente, uno de los aspectos liberadores de una database con flexibilidad de esquema es no tener que preocuparse por las migraciones de esquema durante el desarrollo. Esto requiere cierta consideración sobre cómo su aplicación manejará las diferentes versiones de esquema, por lo que tener un enfoque más controlado también está bien.

Dado que su objective principal es mantener su esquema de database sincronizado con los cambios de código, un enfoque mucho mejor sería investigar las herramientas de migration de esquema. Normalmente, estos le permiten crear fragments de código de actualización / degradación con un order de aplicación definido en una database, y asegurarse de que cualquier cambio en el esquema de la database que no sea manejado por el código de su aplicación se capture en los scripts de migration.

Algunas herramientas de ejemplo:

  • mongo-migrate (NodeJS)
  • Mongeez (Java)