Um DBA precisa saber como programar em uma linguagem de sistema além do SQL?

20

Até que ponto um administrador de banco de dados precisa conhecer as linguagens de programação em nível de sistema ou aplicativo (por exemplo, .NET ou PHP) além de "apenas SQL"?

Para os fins desta pergunta, nenhuma versão específica do padrão SQL é considerada para esta resposta (SQL ANSI 86, SQL ISO 87, SQL: 2008), pois a pergunta é relativa a idiomas de desktop ou servidor fora do domínio do SQL.

p mac
fonte

Respostas:

25

Depende.

Em uma grande loja, talvez não porque você tenha milhares de servidores para cuidar e suas ferramentas sejam fornecidas. Em uma pequena loja, você provavelmente precisará de mais conhecimento, porque possui uma missão mais ampla.

As linguagens de script (PowerShell, cmd.exe por exemplo) são sempre úteis para monitorar, implantar etc. Muitas vezes eu tive alguns scripts Perl que precisei manter (quase). Depois, existem os diversos pacotes ETL que você deveria saber.

Dizendo isso, a maioria dos DBAs (que eu conheço) seria capaz de escrever coisas básicas sobre CLR ou conhecer bem o PL / SQL. Para mim, a linha divisória é conhecer os padrões mais amplos ou a arquitetura do .net ou Java. Não preciso dele como desenvolvedor de banco de dados ou DBA. Da mesma maneira que .net ou PHP ou Java Monkeys não entendem o design, a arquitetura ou o código do banco de dados, assim como eu.

Pessoalmente, decidi parar de procurar o idioma mais recente ou melhor do cliente anos atrás e focar no trabalho de banco de dados. Isso não me torna um "não programador": eu precisaria aprender novamente se fosse necessário.

gbn
fonte
4
+1 para "depende", seguido por algo que todo mundo perdeu (ou talvez seja óbvio) - depende do tamanho da sua loja. Meu trabalho anterior era três de nós no departamento de TI, eu tinha que fazer um pouco de tudo, incluindo desenvolvimento web. Agora, no meu local atual, com 80 funcionários de TI, são todos os bancos de dados o tempo todo.
Simon Righarts
idk, eu me senti como o meu não foi orientada para uma loja grande ou pequeno ...
jcolebrand
"... decidi parar de perseguir a melhor ou mais recente linguagem do cliente anos atrás e me concentrar no trabalho com o banco de dados ..." - esse elogio foi o que me chamou a atenção. Ótimo ponto. Eu gosto de considerar o banco de dados como a grande constante, na qual você traz outros idiomas para a festa nos vários "pontos de acesso" ao banco de dados. Se você deseja criar esses pontos de acesso, é com você. Se você se fizer essa pergunta com frequência, talvez uma mudança de foco seja apropriada.
robopim
gbn - quanto código você encontra escrevendo diariamente? É principalmente SQL?
robopim
@pimbrouwers agora, é PowerShell e SQL, mas eu sou um administrador de sistemas + DBA. O último trabalho foi SQL, alguns PowerShell, outros c #. Antes disso, principalmente SQL e SSIS (BI DBA). Depende do SQL sempre recursos no que faço.
gbn 16/08
14

Conheço os DBAs que se safam com pouca ou nenhuma habilidade de programação, mas todos os DBAs que já considerei bons tinham pelo menos habilidades de programação razoáveis. Um ou dois em que eu consigo pensar possuíam antecedentes substanciais de desenvolvimento e eram bons desenvolvedores por direito próprio. Há uma quantidade razoável de ferramentas de código aberto escritas por pessoas que trabalham como DBAs em seu trabalho diário e no IIRC, o cara que escreveu o TOAD costumava trabalhar como DBA.

Dependendo da função, você pode estar escrevendo ou ajustando consultas, escrevendo scripts para automatizar tarefas ou consultando o design do aplicativo. Em alguns casos, você pode estar apenas cuidando de vários servidores através do OEM ou de alguma outra ferramenta de monitoramento.

Os ambientes modernos de desenvolvimento "corporativo", como .Net ou Java, são complexos o suficiente para que um desenvolvedor possa fazer carreira apenas por se especializar neles. Como um DBA, particularmente no espaço de desenvolvimento, ter um conhecimento prático de C # ou Java pode não prejudicar, mas você provavelmente não passará muito tempo codificando neles.

Você provavelmente obterá mais milhas de qualquer ferramenta de script usada em sua plataforma, embora muitos sistemas exponham .Net, Java, COM ou APIs de serviço da web. Se você precisar codificar algo nessas APIs, precisará de pelo menos um conhecimento básico de trabalho sobre algo que possa consumir essa API. No entanto, as habilidades avançadas de arquitetura de aplicativos geralmente não são necessárias para fazer isso.

Alguns desenvolvedores terão fortes habilidades de banco de dados, mas o medo irracional de bancos de dados é bastante comum nos círculos de desenvolvimento. Muitos desenvolvedores também nunca realmente se deparam com o paradigma de 'operações de conjunto' subjacente ao SQL. Como um DBA de desenvolvimento, você pode lidar com as conseqüências disso e talvez ter que intervir no código de procedimento armazenado para resolver problemas de desempenho.

O ETL e as ferramentas em torno do banco de dados também podem ser de responsabilidade do DBA. Eu já vi várias funções de DBA anunciadas que pareciam envolver uma quantidade significativa de trabalho de desenvolvimento de back-end. Isso será mais comum em empresas menores. Um pôster recente queria integrar métricas personalizadas ao Oracle Enterprise Manager, que possui uma API de plug-in para fazer isso. É bastante comum ver requisitos como esse aparecerem e, essencialmente, a única maneira de fazer isso é escrever algum código de cola.

Existem muitos "Funcionários de Ferramentas" trabalhando em TI e eles podem obter um trabalho útil, apesar do paroquialismo. No entanto, quando as ferramentas ficam sem vapor, geralmente a única maneira de fazer algo é realmente escrever um pouco de código para fazê-lo. É aqui que as habilidades de programação separam os homens dos meninos.

ConcernedOfTunbridgeWells
fonte
6

Eu diria que não normalmente, mas nunca dói. O SQL Server é grande o suficiente para que eu não ache que uma pessoa possa dominar todo o produto. Sou DBA desde o SQL Server 4.2 e me considero um especialista na maioria das áreas, mas admito que não seria capaz de escrever uma consulta MDX sem o google na ponta dos dedos a cada passo do caminho.

O que estou tentando dizer é que você não pode ser especialista em tudo. Ser um DBA realmente bom significa que você deve ser ótimo em T-SQL, mas provavelmente não é muito bom em .NET, ou pelo menos não é tão eficaz quanto outros que podem concentrar seu tempo no .NET.

É bom saber que o Powershell é o que entra e sai do SSIS. Fora isso, deixe as outras linguagens de desenvolvimento para os desenvolvedores.

datagod
fonte
Eu acho que vale a pena notar que o SSAS é realmente uma entidade separada do SQL Server e muitas pessoas nunca são colocadas na situação em que fazem uma grande quantidade de trabalho com ele. Eu uso o SSAS de vez em quando desde 2001 e só o faço por algumas semanas todos os anos.
ConcernedOfTunbridgeWells
O SSAS faz parte da família SQL Server tanto quanto o SSIS e o SSRS. Como eu disse, o SQL Server é GRANDE.
datagod
11
O SSAS é fornecido com o SQL Server, mas é um sistema autônomo. Na verdade, você não precisa do SQL Server para usá-lo - ele pode carregar dados de qualquer coisa que você possa conectar. Acho que o SSAS é usado apenas em uma minoria razoavelmente pequena de sites do SQL Server. Tente comparar o número de listagens no jobserve.com que desejam habilidades de servidor sql versus o número de publicidade para mdx. Não é irracional passar anos trabalhando com o SQL Server e nunca tocar no SSAS.
ConcernedOfTunbridgeWells
O SSIS pode ser instalado como um sistema independente. Isso se encaixa no seu modelo também? O que você acha que o nome SSAS significa? SQL Server Analysis Services. Faz parte da suíte, quer as pessoas a usem ou não.
datagod
5

Tem sido minha experiência que, embora a maioria dos DBAs tenha algum tipo de experiência em desenvolvimento, eles não precisam escrever código. Os DBAs realmente bons com os quais trabalhei tiveram amplo conhecimento de uma variedade de tópicos, incluindo scripts de shell, sistemas operacionais e conhecimento especializado em aplicativos (ex: PeopleSoft).

Eu tinha um instrutor de Administração de Banco de Dados na pós-graduação que nos deu uma lista de perguntas que qualquer bom DBA (Oracle) deveria ser capaz de responder: (vou postar alguns dos destaques da lista de aproximadamente 40)

  • Por que o Oracle não cria índices automaticamente em colunas de chave estrangeira?
  • Ao eliminar uma restrição, quando você usaria a cláusula KEEP INDEX?
  • Quando você usaria uma IOT versus uma tabela regular?
  • É uma boa ideia colocar tabelas e índices em espaços de tabela separados?
  • Qual é a diferença entre os tipos de dados VARCHAR e VARCHAR2?
  • É melhor usar um gatilho ou uma restrição para impor uma regra de negócios?
  • Quando você deseja usar a alocação automática versus um tamanho de segmento fixo?
  • Quando você usaria uma tabela externa versus uma tabela de heap e uma tabela de árvore B?
  • Com que frequência você deve limpar a lixeira?
  • Quais estratégias você recomendaria para fazer backup de uma tabela particionada? Que tal um índice particionado?

Os DBAs (Oracle) precisam saber essas coisas para serem eficazes. A maioria dos desenvolvedores que conheço (que codificam contra Oracle) teria dificuldade em responder a um ou dois deles corretamente.

Aaron
fonte
5

Se você é o DBA, provavelmente está trabalhando nas áreas de desempenho e segurança (entre outras). Isso pode envolver a criação de perfil e a assistência no ajuste de aplicativos clientes nos quais os desenvolvedores estão trabalhando. Portanto, certamente não faria mal saber o básico dos idiomas que os desenvolvedores estão usando e como fazer interface com o servidor de banco de dados. Para o SQL Server, isso provavelmente é .NET. Para o MySQL, provavelmente alguma combinação de php ou java.

Por exemplo, se o servidor for pressionado para encadeamentos de clientes, será útil informar aos desenvolvedores que eles devem usar instâncias singleton para seus ObjectDataSources para que possam reutilizar uma única conexão com o banco de dados. E também verifique se eles estão usando consultas parametrizadas corretamente para limitar a injeção de SQL. Coisas assim.

Você não fará nenhuma programação no sentido de desenvolver aplicativos clientes se for estritamente um DBA, mas deve saber como eles funcionam (em geral).

db2
fonte
11
+1 Meu .net se limita principalmente a saber como eles chamam meus bancos de dados. Essa é a parte importante :-)
gbn
4

Bem, vamos ver, a Oracle usa PL / SQL, que é realmente semelhante ao Pascal (uma linguagem que costumava ser usada para produzir código de aplicativo de desktop, mas que caiu nos últimos anos, e os desenvolvedores mudaram para o Delphi, que alguns foram de lá para .NET) e o Oracle agora também suporta Java para algumas atividades. Como um DBA Oracle precisa conhecer todos os aspectos do sistema para ser bem apreciado, eu diria que conhecer Pascal e Java seria um requisito.

O TSQL tem capacidade para escrever código gerenciado .NET (CLR) para algumas das funcionalidades do Sql Server e, portanto, um bom DBA provavelmente precisará saber sobre isso (mas nem sempre pode ser usado em versões mais antigas, muito dos DBAs tendem a evitar esse conjunto de recursos na minha experiência).

Então esses são os dois grandes, e os que a maioria das pessoas se refere quando perguntam como você está perguntando. Não conheço todos os outros mecanismos para saber o que eles fazem e não suportam, mas sei que muitos outros têm integração de linguagem além do SQL.

jcolebrand
fonte
+1 mas acho que do lado do servidor Java no Oracle geralmente não é muito útil (há o ângulo diferente exceção )
Jack Douglas
@JackDouglas - principalmente o código Java ou CLR do lado do servidor é útil para tarefas do sistema. Uma coisa a observar sobre o código do lado do servidor é que você tende a pagar pelo licenciamento do servidor DB na capacidade da CPU usada para executá-lo.
ConcernedOfTunbridgeWells
Nenhuma dessas opções é particularmente útil todos os dias, mas quando você precisa, precisa. E se o DBA não está ciente dessas coisas e não consegue ao menos ler o código fornecido pelos desenvolvedores, ele está com problemas. Era tudo o que eu estava dizendo.
jcolebrand
-1

Estou bastante convencido de que apenas grandes lojas com grandes aplicativos exigem um DBA que não seja de programação, pois pequenas lojas com bancos de dados simples podem se safar do desenvolvedor / DBA. Para que um DBA se torne o mestre de um produto (Oracle, SQL Server, qualquer que seja), é preciso haver demanda por esse conhecimento! O DBA deve estar sujeito a ambientes e problemas complexos para ajudá-lo a se tornar mais conhecedor. Isso é basicamente um discurso retórico meu, porque eu sou um DBA em uma pequena loja e não faço nada que exija mais de 2 neurônios, acho que estou perdendo meu tempo neste trabalho. Eu quero ser um desenvolvedor.

Leshrac Evil
fonte