Toda vez que leio sobre programadores Oracle etc, fico confuso. Não sei exatamente o que eles fazem.
Pelo meu entendimento, 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 torna esse aplicativo esse aplicativo deve ser programado e faz com que cada aplicativo seja diferente (alguns podem ser versões aprimoradas de outros).
Nessa relação, a programação do banco de dados não está basicamente criando tabela e essas tabelas não são processadas em resposta às instruções SQL emitidas por um aplicativo que geralmente é o front end? Então, a criação de tabelas é tão importante?
Para realmente apreciar quais programadores de banco de dados você realmente precisa, deixe-me tentar explicar de outra maneira.
Para os mal informados, pode parecer que, no mundo ideal, os programadores de aplicativos não fazem muito isso - eles pegam os requisitos e processos escritos pelos analistas de negócios e os traduzem em código que os programadores oferecem.
É claro que qualquer pessoa com alguma experiência em programação saberá que não é assim que funciona - ignorando por um momento o fato de que os requisitos nunca especificam o comportamento do aplicativo até os mínimos detalhes, há várias complicações
Os programadores precisam decidir como o aplicativo deve ser estruturado
Traduzir os requisitos para algo que um computador entende muitas vezes está longe de ser trivial.
Os programadores precisam estar cientes das implicações de desempenho do
À medida que os programadores ganham experiência usando sua plataforma de escolha, eles se tornam mais proficientes, fornecendo código de qualidade superior a uma taxa mais rápida.
(É claro que essa é uma lista bastante reduzida, só estou tentando entender pontos que têm paralelos no desenvolvimento de banco de dados)
Bem, o desenvolvimento do banco de dados é praticamente o mesmo - para os mal informados, parece bem direto, mas, quando você se envolve mais, fica ciente das 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 serem triviais para serem traduzidas a partir 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 disponibilidade dos dados
E, assim como os desenvolvedores, os programadores de banco de dados se tornam mais proficientes em tudo o que fazem, à medida que se tornam mais experientes.
Assim como o desenvolvimento de aplicativos é preenchido com armadilhas ocultas (problemas de encadeamento, etc ...), o mesmo ocorre com o desenvolvimento de bancos de dados, e muitas vezes as consequências de se desentender com esses problemas são muito sérias (por exemplo, perda de dados ou tempo de inatividade potencial para todos os aplicativos que usam o banco de dados) .
Eu acho que o que faz os programadores pensarem que não há nada ("Um programador não pode fazer isso?") É que há muita sobreposição entre os papéis, e eles exigem conjuntos de habilidades semelhantes - eu tenho não há dúvida 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; no entanto, ninguém deve subestimar o valor de um especialista em banco de dados experiente.
Obrigado pela resposta (eu tinha perdido a esperança de conseguir um)! A razão pela qual perguntei isso foi: eu, como "programador de aplicativos", projetei um pequeno banco de dados no msaccess para fazer algo para o meu projeto e não parecia muito trabalhoso, mas como programador, é claro, eu acho que a coisa não é ' t "fácil". Mas ainda não tenho a perspectiva necessária para entender isso. Quero dizer, qual a diferença entre uma base de dados e outra? Como nenhum desenvolvedor de aplicativos "grava" o código de gerenciamento de arquivos, mas usa bibliotecas, não há pronto para usar modelos / bibliotecas disponíveis para o design do dbase? Ou a programação do dbase é na realidade dbase admin?
Um programador típico não faria isso também? Eu acho que trabalhei em organizações muito pequenas ainda para observar qualquer uso exclusivo de um programador de banco de dados, já que o desenvolvedor do aplicativo geralmente é quem dirige o trem, por assim dizer. Ele sabe o que quer e geralmente o projeta.
Brian
1
Na minha experiência, existem certas ações de negócios que exigem equipes de DBAs especializados. A mais recente que ouvi foi uma fusão entre a Coca-Cola e a Minute Maid. Seus bancos de dados (e eles tinham muito) tiveram que ser mesclados, e o Minute Maid's não foi projetado da mesma maneira que a Coca-Cola tinha os deles e isso, aquilo e a outra coisa. Eles planejaram e testaram essa fusão por uns bons seis meses antes de puxar a noite toda para executá-la. Ter um DBA autônomo não é necessariamente necessário em uma pequena empresa, mas em grandes equipes as equipes se tornam absolutamente necessárias para a satisfação do cliente.
Mike S
Dito isto, em pequenas empresas (<50 pessoas), ter pelo menos um (preferencialmente dois ou três) DBAs autônomos é super, super agradável de se ter no que diz respeito aos desenvolvedores de aplicativos. Isso e uma equipe de TI dedicada para consertar computadores, mas isso é outra história.
Mike S
2
@ 0A0D, e geralmente 6 anos depois, quando há um bilhão ou mais de registros nas tabelas e quando a bagunça toda é assustadoramente lenta, eles contratam um especialista em banco de dados para consertar a bagunça que nunca deveria ter sido projetada por um programador de aplicativos. Os bancos de dados são extremamente difíceis de refatorar e precisam ser projetados para o desempenho desde o início, algo que poucos programadores de aplicativos parecem entender. Eles também tendem a projetar com base no que a interface do usuário não precisa quais são as necessidades de banco de dados e assim omitir controles internos e de auditoria e integridade de dados restrições, etc.
HLGEM
12
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. As 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 sua integridade ao longo do tempo e que estejam protegidos contra alterações não autorizadas ou roubo. Eles precisam entender completamente a normalização e quando desnormalizar 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 maliciosamente.
Eles ajustam as consultas de desempenho. Alterei as consultas que levam alguns minutos para serem executadas em mil segundos. Alterei um processo que levou mais de 24 horas para ser executado em menos de 30 minutos. Eles projetam e mantêm estruturas de indexação que equilibrarão a velocidade das pastilhas e a velocidade das seleções.
Eles escrevem consultas complexas, especialmente consultas de relatórios. Pessoalmente, escrevi consultas com mais de 1000 linhas devido à complexidade do requisito. Eles ainda precisavam correr rapidamente.
Eles criam armazéns de dados e os processos ETL que os acompanham. Geralmente, eles precisam escrever processos para trazer dados de outras fontes e precisam descobrir como mapear os campos de alguns bancos de dados de 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 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, assim como entender o que será impactado pelas mudanças e como.
Eles projetam maneiras de auditar os dados por motivos regulatórios 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, por um arquivo incorreto fornecido por outras pessoas ou por uma inserção / atualização incorreta do aplicativo ou por acesso não autorizado. Eles encontram maneiras de corrigir os dados incorretos quando os programadores de aplicativos deixam um buraco para os hackers atacarem.
Muitas vezes, eles estão envolvidos em conversões de dados de um sistema para um novo sistema. Às vezes, isso envolve a transferência 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. Diferentemente das importações, o programador de banco de dados pode não ter controle sobre as estruturas de dados díspares.
Estagiei como programador de banco de dados para os dados de fabricação de uma fábrica de wafer de 24 horas no final dos anos 90. Não sei como minhas tarefas eram típicas, mas a maior parte para mim foi quando uma mudança na codificação ou no esquema de campo foi necessária, eu tive que me certificar de que a mudança fosse perfeita para a produção. Essencialmente, isso significava que eu diria a eles para atualizar seu aplicativo cliente, o que eles fariam em um momento conveniente para eles, e era esperado que ele voltasse imediatamente com as novas alterações.
Isso foi muito mais envolvido do que eu havia previsto. Os scripts de conversão e o software cliente tiveram que ser testados completamente. Freqüentemente, dois conjuntos de dados semanticamente idênticos, mas incompatíveis, precisavam ser mantidos em sincronização até que todos fossem trocados. Às vezes, era necessário fazer a troca em várias fases cuidadosamente planejadas para torná-la perfeita. Não era incomum se preparar por semanas para uma transição que acontecia essencialmente instantaneamente.
Se um programador de banco de dados estiver fazendo seu trabalho corretamente, os observadores parecerão muito fáceis. Não estou surpreso que muitas pessoas realmente não sabem o que fazem.
Isto é bastante simples. Se você ouviu falar sobre o padrão MVC, deve saber a diferença entre seus controladores e modelos. Por exemplo, se você estiver escrevendo um ERP, imagine que, no seu controlador, você diga "retrieveCashFlow" para o seu modelo e ele chame um programa armazenado no banco de dados. Este programa armazenado cuida de todas as junções, filtros, pedidos e assim por diante, e você recupera os dados processados. No seu controlador, você apenas precisa juntar as coisas.
Simplificando: os desenvolvedores de banco de dados gravam programas armazenados (procedimentos e funções) para que seu aplicativo cuide do M no MVC (ou da lógica de negócios, se você não usar o mvc).
O Oracle não é apenas um banco de dados, mas um ambiente de programação completo, incluindo designers de formulários e relatórios. Como programador Oracle, você programa aplicativos de usuário completos. A codificação do banco de dados a que você se refere geralmente é feita por administradores de banco de dados (DBAs) especializados.
Sybase eu acho que é outro com ambientes de programação semelhantes.
Outros bancos de dados podem restringir-se a "apenas" permitir a definição e execução de relatórios, enquanto outros podem não oferecer nenhum formulário ou recurso de design / execução de relatório.
"O Oracle não é apenas um banco de dados, mas um ambiente de programação completo ... Outros bancos de dados podem se restringir a" apenas "permitir a definição e execução de ..." Isso eu não sabia. Agora faz sentido.
4301 Thomas
SQL Server é o mesmo. Além dos procedimentos armazenados, os pacotes do SSIS permitem programação visual, chamando outro código existente, escrevendo programas vb.net ou c # .net e muito mais, todos agrupados em um IDE. Não usei o SSRS, mas suspeito que seja semelhante. Há uma tonelada de programação, e um programador de banco de dados precisa conhecer muitas ferramentas, linguagens e processos diferentes.
thursdaysgeek
2
Eu diria que um desenvolvedor de banco de dados é responsável por um ou mais dos seguintes
Design, isso inclui criar (ou melhor, definir relações) tabelas
Otimização, definindo os índices adequados, 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 fortemente acoplada à camada do banco de dados.
Criando funções de gatilho para responder a eventos
Produzindo especificações do 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
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. As 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 sua integridade ao longo do tempo e que estejam protegidos contra alterações não autorizadas ou roubo. Eles precisam entender completamente a normalização e quando desnormalizar 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 maliciosamente.
Eles ajustam as consultas de desempenho. Alterei as consultas que levam alguns minutos para serem executadas em mil segundos. Alterei um processo que levou mais de 24 horas para ser executado em menos de 30 minutos. Eles projetam e mantêm estruturas de indexação que equilibrarão a velocidade das pastilhas e a velocidade das seleções.
Eles escrevem consultas complexas, especialmente consultas de relatórios. Pessoalmente, escrevi consultas com mais de 1000 linhas devido à complexidade do requisito. Eles ainda precisavam correr rapidamente.
Eles criam armazéns de dados e os processos ETL que os acompanham. Geralmente, eles precisam escrever processos para trazer dados de outras fontes e precisam descobrir como mapear os campos de alguns bancos de dados de 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 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, assim como entender o que será impactado pelas mudanças e como.
Eles projetam maneiras de auditar os dados por motivos regulatórios 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, por um arquivo incorreto fornecido por outras pessoas ou por uma inserção / atualização incorreta do aplicativo ou por acesso não autorizado. Eles encontram maneiras de corrigir os dados incorretos quando os programadores de aplicativos deixam um buraco para os hackers atacarem.
Muitas vezes, eles estão envolvidos em conversões de dados de um sistema para um novo sistema. Às vezes, isso envolve a transferência 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. Diferentemente das importações, o programador de banco de dados pode não ter controle sobre as estruturas de dados díspares.
fonte
Estagiei como programador de banco de dados para os dados de fabricação de uma fábrica de wafer de 24 horas no final dos anos 90. Não sei como minhas tarefas eram típicas, mas a maior parte para mim foi quando uma mudança na codificação ou no esquema de campo foi necessária, eu tive que me certificar de que a mudança fosse perfeita para a produção. Essencialmente, isso significava que eu diria a eles para atualizar seu aplicativo cliente, o que eles fariam em um momento conveniente para eles, e era esperado que ele voltasse imediatamente com as novas alterações.
Isso foi muito mais envolvido do que eu havia previsto. Os scripts de conversão e o software cliente tiveram que ser testados completamente. Freqüentemente, dois conjuntos de dados semanticamente idênticos, mas incompatíveis, precisavam ser mantidos em sincronização até que todos fossem trocados. Às vezes, era necessário fazer a troca em várias fases cuidadosamente planejadas para torná-la perfeita. Não era incomum se preparar por semanas para uma transição que acontecia essencialmente instantaneamente.
Se um programador de banco de dados estiver fazendo seu trabalho corretamente, os observadores parecerão muito fáceis. Não estou surpreso que muitas pessoas realmente não sabem o que fazem.
fonte
Isto é bastante simples. Se você ouviu falar sobre o padrão MVC, deve saber a diferença entre seus controladores e modelos. Por exemplo, se você estiver escrevendo um ERP, imagine que, no seu controlador, você diga "retrieveCashFlow" para o seu modelo e ele chame um programa armazenado no banco de dados. Este programa armazenado cuida de todas as junções, filtros, pedidos e assim por diante, e você recupera os dados processados. No seu controlador, você apenas precisa juntar as coisas.
Se você tiver dúvidas sobre procedimentos armazenados, verifique o seguinte: por que usar procedimentos armazenados?
Simplificando: os desenvolvedores de banco de dados gravam programas armazenados (procedimentos e funções) para que seu aplicativo cuide do M no MVC (ou da lógica de negócios, se você não usar o mvc).
fonte
O Oracle não é apenas um banco de dados, mas um ambiente de programação completo, incluindo designers de formulários e relatórios. Como programador Oracle, você programa aplicativos de usuário completos. A codificação do banco de dados a que você se refere geralmente é feita por administradores de banco de dados (DBAs) especializados.
Sybase eu acho que é outro com ambientes de programação semelhantes.
Outros bancos de dados podem restringir-se a "apenas" permitir a definição e execução de relatórios, enquanto outros podem não oferecer nenhum formulário ou recurso de design / execução de relatório.
fonte
Eu diria que um desenvolvedor de banco de dados é responsável por um ou mais dos seguintes
Dependendo do RDBMS em questão, pode incluir tarefas como
Veja esta lista de responsabilidades
fonte