it-swarm-es.tech

¿Hay alguna forma de detectar los cambios en la base de datos realizados por extensiones de terceros?

Trabajo en un entorno de desarrollo/puesta en escena/producción y me he encontrado con algunos desafíos para promover el código de un entorno a otro, especialmente cuando se requieren actualizaciones a Joomla y otro software de terceros.

¿Hay alguna manera de averiguar qué sentencias sql se han ejecutado en la base de datos desde una fecha determinada para que pueda aplicarlas en diferentes entornos, sin tener que actualizar cada entorno?

7
ContextSwitch

La respuesta simple es no.

La respuesta extendida es mysql puede registrar consultas, sin embargo, tiene límites, y si hay una sola diferencia entre los entornos, las consultas no funcionarán. Incluso con eso, la única forma de hacerlo es a través del servidor en sí, ya que hasta donde yo sé, no se agrega ningún registro especial a JDatabase (también si un componente no usa JDatabase, entonces el control disminuye aún más).

Con lo anterior que puede ver en un mundo perfecto, hay una manera, sin embargo, si pasa de un desarrollador a otro, actualmente tenía un sitio en vivo que estaba haciendo consultas por sí mismo y es "diferente" que el desarrollador/puesta en escena actual versión. Entonces, si un usuario se inscribió en el sitio en vivo y actualizó Joomla en dev, entonces la actualización de la tabla de usuarios agregaría la necesidad de volver a agregar manualmente a ese usuario (también podría haber cambios en la estructura de la tabla). Ahora imagine que no es un usuario, sino 10, o incluso 100, y el proceso no puede automatizarse.

Joomla tiene algunas características de actualización agradables, lo que permite una versión para la actualización de mysql en las tablas, esto garantiza que las tablas mantengan la estructura que necesitan las consultas, sin embargo, no rastrea ninguna inserción o actualización en las tablas, por lo que si actualiza en un entorno de desarrollo , la mejor manera de actualizar en producción es simplemente seguir los mismos pasos y actualizar también en su producción.

En el futuro, Joomla puede realizar un seguimiento de los cambios de la base de datos en su núcleo, lo que le permite sincronizar una versión de producción con una versión de desarrollo, sin embargo, la cantidad de trabajo para construir algo así es una locura y tendría un impacto en el rendimiento. En este momento no creo que exista, o deba haber planes para ello.

9
Jordan Ramstad

Las bases de datos tienden a ser un gran problema con todo el desarrollo de software. Mantener las cosas sincronizadas como un gran dolor para nosotros también, especialmente con los sitios de montaje y producción.

Una cosa que comencé a mirar últimamente pero que aún no he implementado es:

http://phinx.org/

Otra 'manera pobre del hombre' es exportar los esquemas de base de datos (si le preocupan los esquemas, los datos son probablemente un animal diferente) y luego ejecutar una diferencia en los esquemas para cada base de datos. Debe revelar las diferencias entre bastante fácilmente. Entonces solo tiene que hacer la consolidación de datos. Con eso, solía decir que, idealmente, solo debería preocuparse por los datos de su entorno de producción y mantenerlos sincronizados con el entorno de ensayo. Luego puedes hacer sandbox y jugar en el desarrollo según sea necesario.

4
Chad Windnagle