¿qué hacen los programadores de bases de datos?

14

Cada vez que leo sobre los programadores de Oracle, etc., me confundo. No sé qué es exactamente lo que hacen.

A mi entender, los programadores de aplicaciones necesitan desarrollar la funcionalidad principal. Las bibliotecas que utilizan pueden ayudar en el desarrollo de GUI o en la conectividad de base de datos, pero la funcionalidad que hace que esa aplicación deba programarse y que haga que cada aplicación sea diferente (algunas podrían ser versiones modificadas de otras).

En esta relación, ¿la base de datos no crea la tabla básicamente y no se procesan estas tablas en respuesta a las sentencias de SQL emitidas por una aplicación que generalmente es la interfaz? Entonces, ¿la creación de tablas es tan importante?

    
pregunta Thomas 04.05.2011 - 09:11

6 respuestas

18

Para apreciar realmente qué programadores de bases de datos tienes que intentarlo tú mismo, déjame intentar explicarlo de otra manera.

Para los mal informados, podría parecer que en el mundo ideal, los programadores de aplicaciones no hacen mucho, toman los requisitos y procesos escritos por los analistas de negocios y los traducen en código Eso hace la oferta de los programadores.

Por supuesto, cualquier persona con experiencia en programación sabrá que no es así como funciona; ignorando por el momento el hecho de que los requisitos nunca especifican el comportamiento de la aplicación hasta los detalles más finos, hay una serie de complicaciones

  • Los programadores deben decidir cómo se debe estructurar la aplicación
  • La traducción de los requisitos en algo que una computadora entiende a menudo está lejos de ser trivial.
  • Los programadores deben ser conscientes de las implicaciones de rendimiento de
  • A medida que los programadores adquieren experiencia con la plataforma de su elección, se vuelven más competentes y ofrecen códigos de mayor calidad a un ritmo más rápido.

(Por supuesto, esta es una lista muy reducida, solo estoy tratando de captar puntos que tienen paralelos en el desarrollo de bases de datos)

Bueno, el desarrollo de la base de datos es muy similar: para los mal informados, parece bastante sencillo, pero una vez que te involucras más, te das cuenta de las complicaciones específicas del desarrollo de la base de datos:

  • Ellos deciden cómo se debe estructurar la base de datos
  • A menudo, las consultas más complejas pueden estar lejos de ser triviales para traducirlas de los requisitos
  • Los desarrolladores de bases de datos deben preocuparse por el rendimiento de la base de datos
  • También deben preocuparse por mantener la integridad y disponibilidad de los datos
  • Y al igual que los desarrolladores, los programadores de bases de datos se vuelven más competentes en todo lo que hacen a medida que adquieren más experiencia.

Al igual que el desarrollo de aplicaciones está lleno de escollos ocultos (problemas de subprocesos, etc.), también lo es el desarrollo de la base de datos, y con frecuencia las consecuencias de no estar al tanto de estos problemas son muy graves (por ejemplo, pérdida de datos o tiempo de inactividad potencial para todas las aplicaciones que utilizan la base de datos).

Creo que lo que hace que los programadores piensen que no hay nada ("¿No puede hacer esto un programador?") es que hay una gran cantidad de superposición entre los roles, y requieren conjuntos de habilidades similares. No tengo dudas de que cualquier persona que tenga la capacidad de ser un buen desarrollador también tiene la capacidad de ser un buen programador de bases de datos, dado el tiempo y la experiencia, sin embargo, nadie debe subestimar el valor de un experto en bases de datos con experiencia.

    
respondido por el Justin 04.05.2011 - 09:25
12

Los programadores de bases de datos hacen muchas cosas. Primero, diseñan la estructura de la base de datos para que funcione correctamente con el número de registros esperados. Las estructuras de diseño que funcionan bien para unos pocos miles de registros pueden hacer que una base de datos sea inutilizable en unos pocos millones de registros. También deben asegurarse de que los datos mantendrán su integridad a lo largo del tiempo y que los datos están protegidos contra cambios o robos no autorizados. Tienen que entender completamente la normalización y cuándo desnormalizar y por qué. Tienen que entender el rendimiento y cómo garantizar la integridad de los datos. Tienen que entender la seguridad y cómo evitar que los datos sean robados o modificados maliciosamente.

Realizan consultas de sintonía. He cambiado las consultas que tardan minutos en ejecutarse a milésimas de segundo. He cambiado un proceso que tardó más de 24 horas en ejecutarse a menos de 30 minutos. Diseñan y mantienen estructuras de indexación que equilibrarán la velocidad de las inserciones con la velocidad de las selecciones.

Escriben consultas complejas especialmente las consultas de informes. Personalmente, he escrito consultas que tienen más de 1000 líneas debido a la complejidad del requisito. Todavía tenían que hacerlo y corrieron rápidamente.

Crean almacenes de datos y los procesos ETL que los acompañan para darles soporte. A menudo necesitan escribir procesos para traer datos de otras fuentes y deben averiguar cómo asignar los campos de la base de datos de algunos clientes a la suya, y estos nunca son una coincidencia estrecha en el tipo de datos, tamaño de datos, campos requeridos, valores de búsqueda, etc.

Tienen que determinar cómo refactorizar a medida que cambian los requisitos de la base de datos sin dañar los 100,000,000 registros que ya tienen y sin detener el uso de la base de datos. Las grandes bases de datos pueden incluir miles de tablas y procesos almacenados y funciones definidas por el usuario. Comprender una estructura de este tipo requiere tiempo y habilidad, así como comprender qué se verá afectado por los cambios y cómo.

Diseñan formas de auditar los datos por razones regulatorias y de recuperación. Luego, diseñan formas de recuperar los datos de esas tablas de auditoría. Ellos investigan los problemas con los datos para encontrar si el problema se debió a un error en el proceso de importación, a un archivo defectuoso provisto por otros o a una inserción / actualización incorrecta de la aplicación, o al acceso no autorizado. Encuentran maneras de corregir los datos erróneos cuando los programadores de la aplicación dejan un agujero para que los piratas informáticos ataquen.

A menudo participan en conversiones de datos de un sistema a un sistema nuevo. A veces, esto implica mover datos de un producto COTS a uno nuevo que la compañía acaba de comprar. Al igual que las importaciones descritas anteriormente, estos son procesos complejos que pueden tardar meses en planificarse y ejecutarse y que requieren pruebas exhaustivas. A diferencia de las importaciones, el programador de la base de datos puede no tener control sobre las estructuras de datos dispares.

    
respondido por el HLGEM 04.05.2011 - 19:41
6

Me interné como programador de base de datos para los datos de fabricación de una fábrica de obleas de 24 horas a finales de los 90. No sé qué tan típicas eran mis tareas, pero la parte más importante para mí era que cuando era necesario un cambio en la codificación de campo o en un esquema, tenía que asegurarme de que el cambio fuera perfecto para la producción. Esencialmente, eso significaba que les diría que actualizaran su aplicación cliente, lo que harían en un momento conveniente para ellos, y se esperaba que volviera a aparecer inmediatamente con los nuevos cambios.

Eso fue mucho más complicado de lo que había anticipado. Los scripts de conversión y el software cliente tenían que ser probados a fondo. A menudo, dos conjuntos de datos semánticamente idénticos pero incompatibles tenían que mantenerse sincronizados hasta que todos fueran cambiados. A veces era necesario hacer el cambio en múltiples fases, cuidadosamente planificadas, para que se realizara sin problemas. No era infrecuente prepararse durante semanas para un cambio que ocurrió esencialmente de forma instantánea.

Si un programador de base de datos está haciendo su trabajo correctamente, a los observadores les parecerá que su trabajo es muy fácil. No me sorprende que muchas personas realmente no sepan lo que hacen.

    
respondido por el Karl Bielefeldt 04.05.2011 - 18:23
2

Esto es bastante simple. Si escuchó sobre el patrón MVC, debería conocer la diferencia entre sus controladores y modelos. Por ejemplo, si está escribiendo un ERP, imagine que en su controlador simplemente le dice "retrieveCashFlow" a su modelo y este modelo llama a un programa almacenado en la base de datos. Este programa almacenado se encarga de cada unión, filtrado, pedido, etc., y le devuelven los datos procesados. En tu controlador solo tienes que juntar las cosas.

Si tiene dudas sobre los procedimientos almacenados, compruebe esto: ¿por qué usar procedimientos almacenados?

En pocas palabras: los desarrolladores de bases de datos escriben programas almacenados (procedimientos y funciones) para que su aplicación se encargue de la M en MVC (o las lógicas de negocios si no usa mvc).

    
respondido por el Adam Arold 04.05.2011 - 09:40
2

Oracle no es solo una base de datos, sino un completo entorno de programación, incluidos los diseñadores de informes y formularios. Como programador de Oracle, usted programa las aplicaciones de usuario completas. La codificación de la base de datos a la que hace referencia a menudo la realizarán los especialistas en administración de bases de datos (DBA).

Sybase creo que es otro con entornos de programación similares.

Otras bases de datos pueden limitarse a "solo" permitir la definición y ejecución de informes, mientras que otras pueden no ofrecer ninguna forma de diseño o ejecución de informes / facilidades.

    
respondido por el Marjan Venema 04.05.2011 - 09:43
2

Yo diría que un desarrollador de bases de datos es responsable de uno o más de los siguientes

  • Diseño, esto incluye la creación de tablas (o más bien la definición de relaciones)
  • Optimización, configuración de los índices adecuados, selección de claves, elección de los tipos de datos correctos
  • Funciones, escribiendo funciones útiles para usar en las consultas
  • Procedimientos, escritura de lógica de aplicación que está estrechamente unida a la capa de base de datos.
  • Creación de funciones de activación para responder a eventos
  • Producir especificaciones de lo anterior.

Dependiendo del RDBMS en cuestión, podría incluir tareas como

  • Creación de informes y formularios
  • Creando flujos para importar / exportar datos

Eche un vistazo a esta lista de responsabilidades

    
respondido por el Peter Lindqvist 04.05.2011 - 09:48

Lea otras preguntas en las etiquetas