Esta publicación ha sido utilizada como referencia por un compañero de trabajo, pero las dos respuestas no son lo suficientemente exactas o informativas.
development_structure.sql es un volcado de bajo nivel del esquema, que es necesario cuando comienzas a utilizar las características de la base de datos propietaria, ya sea que quieras o no, vas a usarlas en algún momento.
En cuanto a la cuestión de almacenarlo o no, hay un poco de debate. Aquí hay una publicación informativa: http://www.saturnflyer.com/blog/jim/2010/09/14/always-check-in-schema-rb/. Y mi opinión sobre esto sigue.
El objetivo de development_structure.sql es sincronizar, para cualquier compromiso determinado, la estructura de la base de datos con el código, sin tener conocimiento previo de la estructura del esquema, es decir, sin tener que depender de un estado preexistente de el esquema para obtener el nuevo.
En pocas palabras, al tener una estructura de esquema disponible, siempre que cambie la bifurcación/confirmación, la carga directamente y la olvida. Esto es principalmente válido para proyectos dinámicos y "concurridos", donde diferentes ramas tienen diferencias en la estructura del esquema subyacente.
Sin tener la estructura de esquema almacenada, necesitarás usar siempre un esquema de referencia existente en tu base de datos, y migrarlo hacia adelante o hacia atrás cada vez que cambies una bifurcación/confirmación; varios casos del mundo real pueden hacer que este proceso sea ineficiente (por ejemplo, cuando otra sucursal no tiene algunas migraciones que actualmente tiene, o algunas migraciones no se pueden deshacer).
Otro problema son las construcciones automáticas, que sufren los mismos problemas, y lo que es peor, no pueden aplicar cambios manuales.
El único inconveniente es que requiere un cierto hábito, que es almacenarlo cada vez que ejecuta una migración. Fácil de decir, pero también fácil de olvidar.
No digo que no puedas vivir sin development_structure.sql - por supuesto que puedes. Pero si lo tiene, al cambiar de rama/confirmar, solo cargue y olvide; si no lo hace, puede que tenga que realizar una serie de pasos manuales.
¿Es esto lo mismo que structure.sql en los rieles 3? Si es así, esta pregunta debe ser editada –
@boulder_ruby yes –