o que fazem os programadores de banco de dados?

14

Toda vez que leio sobre programadores da Oracle, etc., fico confuso. Eu não sei exatamente o que eles fazem.

Pelo que entendi, os programadores de aplicativos precisam desenvolver a funcionalidade principal. As bibliotecas que eles usam podem ajudar no desenvolvimento da GUI ou na conectividade do banco de dados, mas a funcionalidade que faz com que a aplicação desse aplicativo seja programada e torne cada aplicativo diferente (bem, algumas poderiam ser versões de outras).

Nessa relação, a programação de banco de dados não está basicamente criando uma tabela e essas tabelas não são processadas em resposta a instruções SQL emitidas por um aplicativo que geralmente é o front-end? Então, a criação de tabelas é tão importante?

    
por Thomas 04.05.2011 / 09:11
fonte

6 respostas

18

Para realmente apreciar quais programadores de banco de dados você realmente precisa fazer você mesmo - deixe-me tentar explicar de outra maneira.

Para os mal informados, pode parecer que no mundo ideal os programadores de aplicações realmente não fazem tanto - eles pegam os requisitos e processos como escritos pelos analistas de negócios e os traduzem em código que os programadores fazem lances.

É claro que qualquer pessoa com alguma experiência em programação saberá que não é assim que funciona - ignorando no momento o fato de que os requisitos nunca especificam o comportamento do aplicativo até os menores detalhes, há várias complicações

  • Os programadores precisam decidir como o aplicativo deve ser estruturado
  • Traduzir os requisitos para algo que o computador entende não é nada trivial.
  • Os programadores precisam estar cientes das implicações de desempenho de
  • À medida que os programadores ganham experiência usando sua plataforma preferida, eles se tornam mais proficientes, entregando códigos de maior qualidade em um ritmo mais rápido.

(Claro que esta é uma lista muito reduzida, só estou tentando pegar em pontos que têm paralelos no desenvolvimento de banco de dados)

O bom desenvolvimento do banco de dados é praticamente o mesmo - para os mal-informados, parece bastante simples, mas quando você se envolve mais, percebe as complicações específicas do desenvolvimento do banco de dados:

  • Eles decidem como o banco de dados deve ser estruturado
  • Frequentemente, consultas mais complexas podem estar longe de ser triviais para serem traduzidas dos requisitos
  • Os desenvolvedores de banco de dados precisam se preocupar com o desempenho do banco de dados
  • Eles também precisam se preocupar em manter a integridade e a disponibilidade dos dados
  • E, assim como os desenvolvedores, os programadores de bancos de dados se tornam mais proficientes em tudo que fazem quando se tornam mais experientes.

Assim como o desenvolvimento de aplicativos é repleto de armadilhas ocultas (problemas de encadeamento, etc ...), o desenvolvimento de banco de dados também é muito grave, por exemplo, perda de dados ou tempo de inatividade para todos os aplicativos que usam o banco de dados).

Eu acho que a coisa que faz os programadores pensarem que não há nada nisso ("Não pode um programador fazer isso?") é que existe muita sobreposição entre os papéis, e eles requerem conjuntos de habilidades similares - eu Não tenho dúvidas de que qualquer pessoa que tenha a capacidade de ser um bom desenvolvedor também tem a capacidade de ser um bom programador de banco de dados, com tempo e experiência, mas ninguém deve subestimar o valor de um especialista experiente em banco de dados.

    
por 04.05.2011 / 09:25
fonte
12

Os programadores de banco de dados fazem muitas coisas. Primeiro eles projetam a estrutura do banco de dados para que ele funcione corretamente com o número de registros esperados. Estruturas de design que funcionam bem para alguns milhares de registros podem tornar um banco de dados inutilizável em alguns milhões de registros. Eles também precisam garantir que os dados mantenham a integridade ao longo do tempo e que os dados estejam protegidos contra alterações não autorizadas ou roubo. Eles têm que entender profundamente a normalização e quando desnaturalizar e por quê. Eles precisam entender o desempenho e como garantir a integridade dos dados. Eles precisam entender a segurança e como impedir que os dados sejam roubados ou alterados de maneira maliciosa.

Eles ajustam as consultas. Alterei as consultas que levam minutos para serem executadas em milésimos de segundo. Eu mudei um processo que levou mais de 24 horas para ser executado a menos de 30 minutos. Eles projetam e mantêm estruturas de indexação que irão equilibrar a velocidade das inserções com a velocidade das seleções.

Eles escrevem consultas complexas especialmente reportando consultas. Pessoalmente, escrevi consultas com mais de 1000 linhas, devido à complexidade do requisito. Eles ainda precisavam e corriam rapidamente.

Eles criam data warehouses e os processos de ETL que os acompanham para suportá-los. Muitas vezes, eles precisam escrever processos para trazer dados de outras fontes e descobrir como mapear os campos da base de dados de alguns clientes para os deles e isso nunca é uma correspondência aproximada no tipo de dados, tamanho dos dados, campos obrigatórios, valores de pesquisa etc

Eles precisam determinar como refatorar à medida que os requisitos do banco de dados mudam sem prejudicar os 100.000.000 de registros que eles já possuem e sem interromper completamente o uso do banco de dados. Bancos de dados grandes podem envolver milhares de tabelas e procs armazenados e funções definidas pelo usuário. Entender essa estrutura exige tempo e habilidade, além de entender o que será afetado pelas mudanças e como.

Eles projetam maneiras de auditar os dados por razões regulatórias e de recuperação. Eles então projetam maneiras de recuperar os dados dessas tabelas de auditoria. Eles pesquisam problemas com os dados para descobrir se o problema foi causado por um erro no processo de importação, um arquivo inválido fornecido por outros ou uma inserção / atualização incorreta do aplicativo ou por acesso não autorizado. Eles encontram maneiras de corrigir os dados ruins quando os programadores da aplicação deixam aberto um buraco para os hackers atacarem.

Geralmente, eles estão envolvidos em conversões de dados de um sistema para um novo sistema. Às vezes, isso envolve a movimentação de dados de um produto COTS para um novo que a empresa acabou de comprar. Como as importações descritas anteriormente, esses são processos complexos que podem levar meses para serem planejados e executados e que exigem testes extensivos. Ao contrário das importações, o programador do banco de dados pode não ter controle sobre as estruturas de dados diferentes.

    
por 04.05.2011 / 19:41
fonte
6

Eu estagiei como programador de banco de dados para os dados de fabricação de uma fábrica de wafers de 24 horas no final dos anos 90. Eu não sei o quão típicos meus deveres eram, mas a maior parte para mim foi quando uma mudança na codificação de campo ou esquema era necessária, eu tinha que ter certeza de que a mudança era perfeita para a produção. Essencialmente, isso significava que eu lhes diria para atualizar seu aplicativo cliente, o que eles fariam em um momento conveniente para eles, e esperava-se que voltasse imediatamente com as novas mudanças.

Isso foi muito mais envolvido do que eu esperava. Os scripts de conversão e o software do cliente tiveram que ser testados minuciosamente. Muitas vezes, dois conjuntos de dados semanticamente idênticos, mas incompatíveis, precisavam ser mantidos em sincronização até que todos fossem comutados. Às vezes, era necessário fazer a troca em várias fases cuidadosamente planejadas, a fim de torná-lo transparente. Não era incomum para se preparar por semanas para uma transição que aconteceu essencialmente instantaneamente.

Se um programador de banco de dados estiver fazendo seu trabalho corretamente, parecerá aos observadores que seu trabalho é muito fácil. Não me surpreende que muitas pessoas não saibam realmente o que fazem.

    
por 04.05.2011 / 18:23
fonte
2

Isso é bastante simples. Se você ouviu falar sobre o padrão MVC, você deve saber a diferença entre seus controladores e modelos. Por exemplo, se você está escrevendo um ERP, imagine que no seu controlador você acabou de dizer "retrieveCashFlow" para o seu modelo e seu modelo chama um programa armazenado no banco de dados. Este programa armazenado cuida de cada junção, filtragem, ordenação e assim por diante e você obtém dados processados de volta. No seu controlador, você só precisa juntar as coisas.

Se você tiver dúvidas sobre os procedimentos armazenados, confira isto: por que usar procedimentos armazenados?

Simplificando: os desenvolvedores de banco de dados escrevem programas armazenados (procedimentos e funções) para o seu aplicativo cuidar do M in MVC (ou das lógicas de negócios, se você não usa o mvc).

    
por 04.05.2011 / 09:40
fonte
2

O Oracle não é apenas um banco de dados, mas um ambiente de programação completo, incluindo formulários e designers de relatórios. Como programador da Oracle, você programa aplicativos de usuário completos. A codificação do banco de dados a que você se refere seria freqüentemente feita por Administradores de Banco de Dados (DBAs) especializados.

Sybase eu acho que é outro com um ambiente de programação similar.

Outros bancos de dados podem restringir-se a "apenas", permitindo a definição e execução de relatórios, enquanto outros ainda não podem oferecer nenhuma forma ou design de relatório / instalações de execução.

    
por 04.05.2011 / 09:43
fonte
2

Eu diria que um desenvolvedor de banco de dados é responsável por um ou mais dos seguintes itens

  • Design, isso inclui a criação (ou melhor, a definição de relações) de tabelas
  • Otimização, definindo os índices apropriados, escolhendo chaves, escolhendo os tipos de dados corretos
  • Funções, escrevendo funções úteis para usar nas consultas
  • Procedimentos, escrevendo a lógica do aplicativo que é strongmente acoplada à camada do banco de dados.
  • Criando funções de gatilho para responder a eventos
  • Produzindo especificações dos itens acima.

Dependendo do RDBMS em questão, pode incluir tarefas como

  • Criando relatórios e formulários
  • Criando fluxos para importação / exportação de dados

Dê uma olhada nesta lista de responsabilidades

    
por 04.05.2011 / 09:48
fonte