Como lidar com um grande banco de dados não documentado

10

Recentemente, fui contratado como o único cara de TI de uma certa empresa X e tenho a tarefa de corrigir seus aplicativos e, na minha opinião, a melhor maneira de começar é entender o banco de dados.

O banco de dados atual é um banco de dados MySQL com 186 tabelas (observe que algumas tabelas estão vazias porque Deus sabe o porquê). E o aplicativo está se comunicando com o banco de dados por meio de uma interface de banco de dados do MS Access. (Eu me pergunto por que os desenvolvedores também fizeram isso)

A pergunta é: como começo a lidar com esse grande banco de dados não documentado? Sim, não está documentado porque os desenvolvedores do aplicativo não estão dispostos a me fornecer um ERD ou dicionário de dados ou qualquer outra informação sobre o banco de dados para facilitar minha vida. Como você sugeriria assumir esse empreendimento perigoso de entender todos os cantos e recantos do banco de dados bastante grande?

Pergunta relacionada: Como mergulhar em um banco de dados feio?

maru
fonte
5
Começando com as mesas vazias, lentamente cair uma tabela após o outro até que os programadores estão dispostos a cooperar ...
René Nyffenegger
Pense antes de comentar. O OP declarou explicitamente que ele era o ÚNICO cara. Então, quem são esses desenvolvedores? Empreiteiros externos, talvez, que foram pagos por nada mais do que o tempo necessário para construir a coisa? Por que aqueles estariam dispostos a dedicar tempo a um suporte adicional, cuja empresa X provavelmente não estava disposta a pagar? Ou talvez fossem ex-funcionários que foram demitidos por serem muito caros? Por que eles gastariam seu tempo para ajudar a empresa X com seus problemas? E quem vai se machucar ao largar mesas?
Erwin Smout
6
@ErwinSmout Acredito que o comentário de Rene deveria ser interpretado como uma piada leve. Foi assim que eu vi.
precisa

Respostas:

11

A resposta vinculada aborda o problema de baixo para cima, primeiro o banco de dados. Como suas responsabilidades abrangem os aplicativos e o banco de dados, eu estaria inclinado a atacar esse processo de cima para baixo, começando no (s) aplicativo (s).

Concentre sua atenção na compreensão dos recursos mais usados ​​do aplicativo, consultando a base de usuários. Rastreie as interações no banco de dados desses recursos por meio de ferramentas de criação de perfil / log, para que você possa identificar as principais tabelas e procedimentos.

Dessa forma, seus esforços iniciais são restritos às "coisas importantes", em vez de perder tempo documentando tabelas e consultas que raramente ou nunca são usadas. O foco também deve destacar o Princípio de Pareto em seus esforços de correção de bugs ( assim diz a Microsoft de qualquer maneira ).

Mark Storey-Smith
fonte
Obrigado pela ótima resposta. Sinceramente, não pensei nisso nem sabia que posso registrar as consultas que estão sendo executadas no servidor. Muito obrigado!
maru
1

Eu provavelmente tentaria obter o MySQL Workbench e criar um modelo EER a partir do banco de dados. Isso significa que você pode ver quais links estão disponíveis e descobrir o que os desenvolvedores podem estar pensando. Tudo depende da aplicação também de como está estruturada.

Bradley Weston
fonte
Eu tentei seguir esse caminho, mas ficou meio irritante no meio do caminho, porque havia 186 mesas e a bancada de trabalho bateu todas as mesas no centro da tela. e o mercado de telas pequenas não estava ajudando as coisas a ficarem menores. Mas a partir da aparência dele, não há como escapar de fazer as coisas da maneira mais difícil
maru
Não se preocupe em tentar fazer isso com o Workbench, porque está cheio de defeitos (bugs) - você gastará mais tempo tentando superá-los do que realizando algo útil. Em vez disso, considere usar o Microsoft Visio para fazer engenharia reversa de um banco de dados existente em um modelo, conforme explicado neste pequeno artigo: link .
KXNV-89.1FM
Um link mais apropriado: link - "Faça engenharia reversa de um banco de dados existente em um modelo de banco de dados" (com o Microsoft Visio).
KXNV-89.1FM
1

Acho que o DBLint é útil para identificar problemas com o banco de dados. Possui as seguintes propriedades agradáveis:

  1. Ele classifica as descobertas por sua importância (subjetiva), para que você não se afogue em uma enxurrada de avisos menores.
  2. As descobertas importantes são frequentemente indiscutíveis e acionáveis.
  3. Ele pontua o banco de dados com um único número, para que você possa medir seu progresso e comparar a qualidade de diferentes bancos de dados. Acho isso bastante motivacional.
  4. É fácil configurar o DBLint para usar apenas verificações baseadas em esquema. Portanto, é rápido testá-lo mesmo em bancos de dados grandes. A única reclamação que posso ter é que tenho que executar o Windows para executar o DBLint.

Para identificação rápida de pontos de acesso no banco de dados MySQL, o Neor Profile SQL é um proxy que fica entre o aplicativo e o banco de dados. A beleza disso é que é rápido de configurar.

Para a descoberta das chaves primárias e estrangeiras factuais no banco de dados, que não são, no entanto, definidas no banco de dados, você pode usar o Linkifier . Para plotagem de ERD, as estimativas podem ser exportadas para yEd , que possui muitos algoritmos de layout para o posicionamento das tabelas. O BPMN é o meu favorito para ERDs.

user824276
fonte
0

Existe uma ferramenta do oracle (My SQl workbench) para acessar o banco de dados My Sql, é uma interface que pode fornecer o ERD do banco de dados.

Adnan
fonte
Sim, eu estou familiarizado com o ambiente de trabalho, mas a função de engenharia reversa apenas despeja todas as tabelas no centro da tela ... 186 tabelas é chato de resolver. conhece uma maneira de sair disso?
maru