Cómo abordar una gran base de datos indocumentada

10

Recientemente fui contratado como el único chico de TI en una determinada empresa X y tengo la tarea de corregir sus aplicaciones, y en mi opinión, la mejor manera de comenzar es entender la base de datos.

Su base de datos actual es una base de datos MySQL con 186 tablas (tenga en cuenta que algunas tablas están vacías porque Dios sabe por qué). Y la aplicación se está comunicando con la base de datos a través de una interfaz de base de datos MS Access. (Me pregunto por qué los desarrolladores también hicieron eso)

La pregunta es, ¿cómo empiezo a abordar esta gran base de datos indocumentada? Sí, no está documentado porque los desarrolladores de la aplicación no están dispuestos a darme un ERD o un diccionario de datos o cualquier información sobre la base de datos para facilitarme la vida. ¿Cómo sugeriría asumir este peligroso esfuerzo de comprender cada rincón de la base de datos bastante grande?

Pregunta relacionada: ¿Cómo sumergirse en una base de datos fea?

maru
fuente
55
Comenzando con las mesas vacías, deje caer lentamente una mesa tras otra hasta que los desarrolladores estén dispuestos a cooperar ...
René Nyffenegger
Piensa antes de comentar. El OP declaró explícitamente que él era el ÚNICO chico. Entonces, ¿quiénes son esos desarrolladores? Los contratistas externos tal vez, ¿a quienes se les pagó por nada más que el tiempo que llevó construir la cosa? ¿Por qué estarían dispuestos a dedicar su tiempo a un soporte adicional, qué empresa X probablemente no ha estado dispuesta a pagar para empezar? ¿O tal vez fueron ex empleados que fueron despedidos porque eran demasiado caros? ¿Por qué los que poner en su tiempo para ayudar a la empresa X, con sus problemas? ¿Y quién se lastimará al dejar caer las mesas?
Erwin Smout
66
@ErwinSmout Creo que el comentario de Rene fue interpretado como una burla alegre. Así lo vi yo.
Mark Storey-Smith

Respuestas:

11

La respuesta vinculada aborda el problema de abajo hacia arriba, primero la base de datos. Como sus responsabilidades abarcan las aplicaciones y la base de datos, me inclinaría a atacar esto de arriba hacia abajo comenzando en las aplicaciones.

Concentre su atención en comprender las funciones más utilizadas de la aplicación mediante consultas con la base de usuarios. Rastree las interacciones de la base de datos de esas características a través de herramientas de creación de perfiles / registro para que pueda identificar las tablas y procedimientos clave.

De esta manera, sus primeros esfuerzos se limitan a las "cosas que importan", en lugar de perder el tiempo documentando tablas y consultas que pueden ser raramente o nunca utilizadas. El enfoque también debería hacer que el Principio de Pareto se destaque en sus esfuerzos de corrección de errores ( eso dice Microsoft de todos modos ).

Mark Storey-Smith
fuente
Gracias por la gran respuesta. Sinceramente, no pensé en eso ni sabía que puedo registrar las consultas que se ejecutan en el servidor. ¡Muchas gracias!
maru
1

Posiblemente intentaría obtener MySQL Workbench y luego crear un modelo EER a partir de la base de datos. Esto significa que puede ver qué enlaces a qué y descubrir qué podrían haber estado pensando los desarrolladores. Todo depende de la aplicación también de cómo está estructurado.

Bradley Weston
fuente
Traté de seguir esa ruta, pero se volvió bastante molesto a mitad de camino porque hay 186 mesas y el banco de trabajo simplemente golpeó todas las mesas en el centro del lienzo. y el espacio en pantalla pequeña no ayudaba a que las cosas se hicieran más pequeñas. Pero por lo que parece, no hay escapatoria para hacer las cosas de la manera difícil
maru
No se moleste en intentar hacer esto con Workbench porque está plagado de defectos (errores): pasará más tiempo tratando de superarlos de lo que logrará algo útil. En su lugar, considere usar Microsoft Visio para realizar ingeniería inversa de una base de datos existente en un modelo como se explica en este breve artículo: enlace .
KXNV-89.1FM
Un enlace más apropiado: enlace - "Ingeniería inversa de una base de datos existente en un modelo de base de datos" (con Microsoft Visio).
KXNV-89.1FM
1

Encuentro que DBLint es útil para la identificación de problemas con la base de datos. Tiene las siguientes propiedades agradables:

  1. Clasifica los hallazgos por su importancia (subjetiva), para que no te ahogues en una avalancha de advertencias menores.
  2. Los hallazgos importantes son con frecuencia indiscutibles y procesables.
  3. Califica la base de datos con un solo número, para que pueda medir su progreso y comparar la calidad de diferentes bases de datos. Me parece bastante motivador.
  4. Es fácil configurar DBLint para usar solo verificaciones basadas en esquemas. Por lo tanto, es rápido probarlo incluso en grandes bases de datos. La única queja que puedo tener es que tengo que ejecutar Windows para ejecutar DBLint.

Para la identificación rápida de puntos de acceso en la base de datos MySQL, Neor Profile SQL es un proxy que se encuentra entre la aplicación y la base de datos. Lo bueno de esto es que es rápido de configurar.

Para el descubrimiento de las claves primarias y externas de hecho en la base de datos, que, sin embargo, no están definidas en la base de datos, puede usar Linkifier . Para el trazado de ERD, las estimaciones se pueden exportar a yEd , que tiene muchos algoritmos de diseño para el posicionamiento de las tablas. BPMN es mi favorito para ERD.

usuario824276
fuente
0

Hay una herramienta de Oracle (My SQl Workbench) para acceder a la base de datos My Sql, es una interfaz que podría proporcionarle el ERD de la base de datos.

Adnan
fuente
sí, estoy familiarizado con el banco de trabajo, pero la función de ingeniería inversa simplemente volca todas las tablas en el centro del lienzo ... 186 tablas es molesto de resolver. ¿Sabes una salida de eso?
maru