¿Un DBA necesita saber cómo programar en un lenguaje de sistema además de SQL?

20

¿En qué medida un administrador de base de datos necesita conocer los lenguajes de programación a nivel de sistema o aplicación (por ejemplo .NET o PHP) además de "solo SQL"?

A los fines de esta pregunta, no se considera una versión específica del estándar SQL para esta respuesta (SQL ANSI 86, SQL ISO 87, SQL: 2008) ya que la pregunta se refiere a los idiomas de escritorio o servidor fuera del ámbito de SQL.

p mac
fuente

Respuestas:

25

Depende.

En una gran tienda, tal vez no porque tenga miles de servidores que cuidar y se le proporcionen sus herramientas. En una tienda pequeña, probablemente necesitará más conocimiento porque tiene un mandato más amplio.

Los lenguajes de script (PowerShell, cmd.exe, por ejemplo) siempre son útiles para supervisar, implementar, etc. A menudo he tenido algunos scripts de Perl que tuve que mantener (casi). Luego están los diversos paquetes de ETL que se espera que conozcas.

Dicho esto, la mayoría de los DBA (que sé) podrían escribir cosas básicas de CLR o conocer bien PL / SQL. Para mí, la línea divisoria es conocer los patrones más amplios o la arquitectura de .net o Java. No lo necesito como desarrollador de DB o DBA. De la misma manera que .net o PHP o Java Monkeys no entienden el diseño de la base de datos o la arquitectura o el código tan bien como yo.

Personalmente, decidí dejar de perseguir el último o mejor idioma del cliente hace años y centrarme en el trabajo de la base de datos. Eso no me convierte en un "no programador": necesitaría aprenderlo nuevamente si tuviera que hacerlo.

gbn
fuente
44
+1 para "depende" seguido de algo que todos los demás se perdieron (o tal vez pensaron que era demasiado obvio); depende del tamaño de su tienda. Mi trabajo anterior era de tres de nosotros en el departamento de TI, tuve que hacer un poco de todo, incluido el desarrollo web. Ahora, en mi lugar actual con 80 empleados de TI, son todas las bases de datos todo el tiempo.
Simon Righarts
idk, sentí que el mío no estaba dirigido a una tienda grande o pequeña ...
jcolebrand
".. Decidí dejar de perseguir el lenguaje del cliente más reciente o mejor hace años y centrarme en el trabajo de la base de datos ..." - este elogio es lo que me llamó la atención. Gran punto Me gusta ver la base de datos como la gran constante, mediante la cual traes otros idiomas a la fiesta en los diversos "puntos de acceso" a la base de datos. Si desea hacer esos puntos de acceso, depende de usted. Si te encuentras haciendo esa pregunta con frecuencia, quizás sea apropiado un cambio de enfoque.
robopim
gbn: ¿cuánto código te encuentras escribiendo a diario? ¿Es principalmente SQL?
robopim
@pimbrouwers ahora, es PowerShell y SQL, pero soy un administrador de sistemas + DBA. El último trabajo fue SQL, algunos PowerShell, algunos c #. Antes de eso, principalmente SQL y SSIS (BI DBA). Depende de que SQL siempre aparezca en lo que hago.
gbn
14

He sabido que los DBA se salieron con poca o ninguna habilidad de programación, pero todos los DBA que he considerado buenos tenían al menos habilidades de programación razonables. Uno o dos que se me ocurrieron tenían antecedentes de desarrollo sustanciales y eran desarrolladores bastante buenos por derecho propio. Hay una justa cantidad de código abierto utillaje escrito por personas que trabajan como administradores de bases en su trabajo diario y IIRC el tipo que escribió SAPO utiliza para el trabajo como DBA.

Dependiendo del rol, podría encontrarse escribiendo o ajustando consultas, escribiendo guiones para automatizar tareas o consultando sobre diseño de aplicaciones. En algunos casos, puede estar ocupándose de un montón de servidores a través de OEM o alguna otra herramienta de monitoreo.

Los entornos de desarrollo modernos 'empresariales' como .Net o Java son lo suficientemente complejos como para que un desarrollador pueda hacer una carrera solo por especializarse en ellos. Como DBA, particularmente en el espacio de desarrollo, tener un conocimiento práctico de C # o Java podría no dañar, pero probablemente no pasará mucho tiempo realmente codificando en ellos.

Probablemente obtendrá más kilometraje de las herramientas de secuencias de comandos que se utilizan en su plataforma, aunque muchos sistemas exponen API .Net, Java, COM o de servicios web. Si necesita codificar algo con estas API, necesitará al menos un conocimiento básico de algo que pueda consumir esa API. Sin embargo, las habilidades avanzadas de arquitectura de aplicaciones generalmente no son necesarias para hacerlo.

Algunos desarrolladores tendrán fuertes habilidades en bases de datos, pero el miedo irracional a las bases de datos es bastante común en los círculos de desarrollo. Muchos desarrolladores tampoco entienden realmente el paradigma de 'establecer operaciones' que subyace a SQL. Como Dev DBA, puede encontrarse lidiando con las consecuencias de esto, y tal vez tener que intervenir en el código de procedimiento almacenado para solucionar problemas de rendimiento.

El ETL y las herramientas que rodean la base de datos también pueden ser competencia del DBA. He visto bastantes roles de DBA anunciados que parecen involucrar una cantidad significativa de trabajo de desarrollo de back-end. Esto será más común en empresas más pequeñas. Un póster reciente quería integrar métricas personalizadas en Oracle Enterprise Manager, que tiene un complemento API para hacer esto. Es bastante común que aparezcan requisitos como este, y esencialmente la única forma de hacerlo es escribir un código de pegamento.

Hay muchos 'Tool Guys' trabajando en TI y pueden hacer un trabajo útil a pesar del parochalismo. Sin embargo, cuando las herramientas se agotan, a menudo la única forma de hacer algo es escribir un poco de código para hacerlo. Aquí es donde las habilidades de programación separan a los hombres de los niños.

Preocupado por TunbridgeWells
fuente
6

Yo diría que no típicamente, pero nunca está de más. SQL Server es lo suficientemente grande que no creo que una persona pueda dominar todo el producto. He sido DBA desde SQL Server 4.2, y me considero un experto en la mayoría de las áreas, pero admito que no podría escribir una consulta MDX sin google a mi alcance en cada paso del camino.

Lo que intento decir es que no puedes ser un experto en todo. Ser un DBA realmente bueno significa que debes ser excelente en T-SQL, pero probablemente no seas muy bueno en .NET, o al menos no tan efectivo como otros que pueden enfocar su tiempo en .NET.

Es bueno saber Powershell, al igual que los entresijos de SSIS. Aparte de eso, deje los otros lenguajes de desarrollo a los desarrolladores.

datagod
fuente
Creo que vale la pena señalar que SSAS es realmente una entidad separada de SQL Server y que no muchas personas se ven involucradas en la situación en la que trabajan mucho con él. He estado usando SSAS de vez en cuando desde 2001 y realmente solo lo alcancé durante algunas semanas cada año.
Preocupado
SSAS es tan parte de la familia de SQL Server como SSIS y SSRS. Como dije, SQL Server es GRANDE.
datagod
1
SSAS se incluye con SQL Server, pero es un sistema independiente. En realidad, no necesita SQL Server para usarlo; puede cargar datos de cualquier cosa a la que pueda conectarse. Creo que SSAS solo se usa en una minoría bastante pequeña de sitios de SQL Server. Intente comparar el número de listados en jobserve.com que desean habilidades de servidor sql con el número de anuncios de mdx. No es irrazonable pasar años trabajando con SQL Server y nunca tocar SSAS.
Preocupado por
SSIS se puede instalar como un sistema independiente. ¿Se ajusta eso también a tu modelo? ¿Qué crees que significa el nombre SSAS? SQL Server Analysis Services. Es parte de la suite, ya sea que la gente la use o no.
datagod
5

Según mi experiencia, aunque la mayoría de los DBA tienen algún tipo de experiencia en desarrollo, no están obligados a escribir código. Los DBA realmente buenos con los que he trabajado han tenido un amplio conocimiento de una variedad de temas, incluidos scripts de shell, sistemas operativos y conocimiento especializado de aplicaciones (por ejemplo, PeopleSoft).

Tuve un instructor de Administración de bases de datos en la escuela de posgrado que nos dio una lista de preguntas que cualquier buen DBA (Oracle) debería poder responder: (Voy a publicar algunos de los aspectos más destacados de la lista de 40 más o menos)

  • ¿Por qué Oracle no crea automáticamente índices en columnas de clave externa?
  • Al soltar una restricción, ¿cuándo usaría la cláusula KEEP INDEX?
  • ¿Cuándo usarías un IOT frente a una tabla normal?
  • ¿Es una buena idea colocar tablas e índices en espacios de tablas separados?
  • ¿Cuál es la diferencia entre los tipos de datos VARCHAR y VARCHAR2?
  • ¿Es mejor usar un disparador o una restricción para hacer cumplir una regla de negocios?
  • ¿Cuándo desea utilizar la asignación automática frente a un tamaño de segmento fijo?
  • ¿Cuándo utilizaría una tabla externa frente a una tabla de almacenamiento dinámico frente a una tabla de árbol B?
  • ¿Con qué frecuencia debe purgar la papelera de reciclaje?
  • ¿Qué estrategias recomendaría para hacer una copia de seguridad de una tabla particionada? ¿Qué tal un índice particionado?

(Oracle) DBA necesita saber estas cosas para ser efectivo. La mayoría de los desarrolladores que conozco (que codifican contra Oracle) tendrían dificultades para responder incluso uno o dos de estos correctamente.

Aaron
fuente
5

Si usted es el DBA, probablemente esté trabajando en los ámbitos del rendimiento y la seguridad (entre otros). Esto podría implicar la creación de perfiles y la asistencia para ajustar las aplicaciones cliente en las que los desarrolladores están trabajando. Por lo tanto, ciertamente no estaría de más conocer los conceptos básicos de los idiomas que usan los desarrolladores y cómo interactuar con el servidor de la base de datos. Para SQL Server, probablemente sea .NET. Para MySQL, probablemente alguna combinación de php o java.

Por ejemplo, si el servidor está presionado por subprocesos del cliente, entonces es útil poder informar a los desarrolladores que deberían estar usando instancias singleton para sus ObjectDataSources para que puedan reutilizar una única conexión de base de datos. Y también asegúrese de que estén utilizando consultas parametrizadas correctamente para limitar la inyección de SQL. Cosas como esas.

No hará ninguna programación en el sentido de desarrollar aplicaciones cliente si es estrictamente un DBA, pero debe saber cómo funcionan (en general).

db2
fuente
1
+1 Mi .net se limita principalmente a saber cómo llaman a mis bases de datos. Esa es la parte importante :-)
gbn
4

Bueno, veamos, Oracle usa PL / SQL que es realmente similar a Pascal (un lenguaje que solía usarse para producir código de aplicaciones de escritorio, pero que se ha caído en los últimos años, y los desarrolladores se han pasado a Delphi, que algunos han ido de allí a .NET), y Oracle ahora también admite Java para algunas actividades. Dado que un DBA de Oracle tiene que conocer todos los aspectos del sistema para ser bien apreciado, diría que conocer Pascal y Java sería un requisito.

TSQL tiene capacidad para escribir código administrado .NET (CLR) para algunas de las funcionalidades en Sql Server, y por lo tanto, un buen DBA probablemente necesite saber sobre esto (pero no siempre se puede usar en versiones anteriores, por lo que muchas de los DBA tienden a rehuir ese conjunto de características en mi experiencia).

Así que esos son los dos grandes, y a los que la mayoría de las personas se refieren cuando preguntan como tú preguntas. No conozco todos los otros motores para saber qué hacen y no admiten, pero sé que muchos otros tienen integración de lenguaje además de SQL.

jcolebrand
fuente
+1 pero creo que Java en Oracle del lado del servidor no suele ser muy útil (existe una extraña excepción )
Jack Douglas
@JackDouglas: la mayoría del código java o CLR del lado del servidor es útil para las tareas del sistema. Una cosa a tener en cuenta sobre el código del lado del servidor es que tiende a pagar por la licencia del servidor DB en la capacidad de la CPU utilizada para ejecutarlo.
Preocupado por
Ninguno de los dos es particularmente útil todos los días, pero cuando lo necesita, lo necesita. Y si el DBA no está al tanto de esas cosas, y al menos no puede leer el código proporcionado por los desarrolladores, está en problemas. Eso es todo lo que estaba diciendo.
jcolebrand
-1

Estoy bastante convencido de que solo las grandes tiendas con grandes aplicaciones tienen demanda de un DBA que no sea de programación, ya que las pequeñas tiendas con bases de datos simples pueden salirse con la suya con el desarrollador / DBA de todos los oficios. ¡Para que un DBA se convierta en un maestro de un producto (Oracle, SQL Server, lo que sea) tiene que haber demanda de este conocimiento! El DBA debe estar sujeto a entornos complejos y problemas para ayudarlo a ser más conocedor. Esto es básicamente una queja mía, porque soy un DBA en una tienda pequeña y no hago nada que requiera más de 2 neuronas, creo que estoy perdiendo el tiempo en este trabajo. Quiero ser desarrollador

Leshrac Evil
fuente