Cada vez que leo sobre programadores de Oracle, etc., me confundo. No sé qué hacen exactamente.
Según tengo entendido, los programadores de aplicaciones necesitan desarrollar la funcionalidad principal. Las bibliotecas que usan pueden ayudar en el desarrollo de la GUI o la conectividad de la base de datos, pero la funcionalidad que hace que esa aplicación sea esa aplicación debe programarse y hace que cada aplicación sea diferente (bueno, algunas podrían ser versiones modificadas de otras).
En esta relación, ¿la programación de la base de datos no es básicamente la creación de una tabla y estas tablas no se procesan en respuesta a las instrucciones SQL emitidas por una aplicación que generalmente es el front-end? Entonces, ¿es tan importante la creación de tablas?
Para apreciar realmente qué programadores de bases de datos tienes que probar, déjame intentar explicarte de otra manera.
Para los mal informados, puede parecer que en el mundo ideal los programadores de aplicaciones realmente no hacen mucho: toman los requisitos y procesos tal como están escritos por los analistas de negocios y los traducen en código que hace las ofertas 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 el más mínimo detalle, hay una serie de complicaciones
Los programadores deben decidir cómo se debe estructurar la aplicación
Traducir los requisitos en algo que una computadora entienda a menudo está lejos de ser trivial.
Los programadores deben ser conscientes de las implicaciones de rendimiento de
A medida que los programadores obtienen experiencia usando su plataforma de elección, se vuelven más competentes, entregando 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 debe estructurarse la base de datos
A menudo, las consultas más complejas pueden ser muy triviales para traducirse 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 dificultades ocultas (problemas de subprocesos, etc.), también lo es el desarrollo de la base de datos, y a menudo las consecuencias de fallar en estos problemas son muy graves (por ejemplo, pérdida de datos o potencialmente tiempo de inactividad para todas las aplicaciones que usan la base de datos) .
Creo que lo que hace que los programadores piensen que no hay nada en él ("¿No puede un programador hacer esto?") Es que hay una gran superposición entre los roles y requieren conjuntos de habilidades similares. Tengo No hay duda de que cualquiera que tenga la capacidad de ser un buen desarrollador también tiene la capacidad de ser un buen programador de bases de datos con tiempo y experiencia, sin embargo, nadie debe subestimar el valor de un experto en bases de datos experimentado.
¡Gracias por la respuesta (había perdido la esperanza de conseguir uno)! La razón por la que pregunté esto es que yo, como "programador de aplicaciones", diseñé una pequeña base de datos en msaccess para hacer algo para mi proyecto y no parecía un gran trabajo, pero como programador, por supuesto, no creo que lo sea. t "fácil". Pero aún me falta la perspectiva necesaria para entender esto. Quiero decir, ¿qué tan diferente podría ser una dbase de otra? Al igual que ningún desarrollador de aplicaciones "escribe" el código de administración de archivos pero usa bibliotecas, ¿no hay plantillas / bibliotecas listas para usar disponibles para el diseño de dbase? ¿O la programación de dbase en realidad es dbase admin?
¿No haría un programador típico esto también? Supongo que he trabajado en organizaciones demasiado pequeñas para observar cualquier uso exclusivo de un programador de bases de datos, ya que el desarrollador de la aplicación suele ser el que conduce el tren, por así decirlo. Él sabe lo que quiere y generalmente lo diseña él mismo.
Brian
1
En mi experiencia, hay ciertas acciones comerciales que requieren equipos de expertos en DBA. La más reciente de la que escuché fue una fusión entre Coca-Cola y Minute Maid. Sus bases de datos (y tenían muchas) tuvieron que fusionarse, y Minute Maid's no se diseñó de la misma manera que Coca-Cola tenía las suyas y esto, aquello y lo otro. Planearon y probaron esta fusión durante unos buenos seis meses antes de pasar toda la noche para realizarla. Tener un DBA independiente no es necesariamente necesario en una empresa pequeña, pero en las grandes los equipos se vuelven absolutamente necesarios para la satisfacción del cliente.
Mike S
Dicho esto, en las pequeñas empresas (<50 personas) que tienen al menos uno (preferiblemente dos o tres) DBA independientes es super, super agradable tenerlo en lo que respecta a los desarrolladores de aplicaciones. Eso y un personal de TI dedicado a reparar computadoras, pero esa es otra historia completamente diferente.
Mike S
2
@ 0A0D, y con frecuencia hasta 6 años después, cuando hay un billón o más de registros en las tablas y cuando todo el desastre es extremadamente lento, contratan a un experto en bases de datos para arreglar el desastre que nunca debería haber sido diseñado por un programador de aplicaciones. Las bases de datos son extremadamente difíciles de refactorizar y deben diseñarse para el rendimiento desde el principio, algo que muy pocos programadores de aplicaciones parecen comprender. También tienden a diseñar en base a lo que no se necesita la interfaz de usuario lo que necesita la base de datos y por lo omiten los controles internos y las limitaciones de auditoría y de integridad de datos, etc.
HLGEM
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 la cantidad 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 seguros contra cambios no autorizados o robos. Tienen que comprender completamente la normalización y cuándo desnormalizar y por qué. Deben comprender el rendimiento y cómo garantizar la integridad de los datos. Tienen que comprender la seguridad y cómo evitar que los datos sean robados o cambiados maliciosamente.
Realizan consultas de sintonización. He cambiado las consultas que tardan minutos en ejecutarse en milisegundos. He cambiado un proceso que tardó más de 24 horas en ejecutarse en 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 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 respaldarlos. A menudo necesitan escribir procesos para traer datos de otras fuentes y tienen que descubrir cómo mapear los campos de la base de datos de algunos clientes a los suyos y estos nunca coinciden estrechamente en tipo de datos, tamaño de datos, campos obligatorios, valores de búsqueda, etc.
Deben 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 por completo el uso de la base de datos. Grandes bases de datos pueden involucrar miles de tablas y procesos almacenados y funciones definidas por el usuario. Comprender dicha estructura requiere tiempo y habilidad, al igual que 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. Investigan problemas con los datos para determinar si el problema fue un error en el proceso de importación, un archivo incorrecto proporcionado por otros o una inserción / actualización incorrecta de la aplicación, o por acceso no autorizado. Encuentran formas de corregir los datos incorrectos cuando los programadores de aplicaciones dejan un hueco para que los hackers ataquen.
A menudo participan en las conversiones de datos de un sistema a otro. 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 tomar meses para planificar y ejecutar y que requieren pruebas exhaustivas. A diferencia de las importaciones, el programador de bases de datos puede no tener control sobre las estructuras de datos dispares.
Hice una pasantía como programador de bases de datos para los datos de fabricación de una fábrica de obleas de 24 horas a fines de los 90. No sé cuán típicos eran mis deberes, pero la mayor parte para mí fue cuando era necesario un cambio en la codificación de campo o en el esquema, tenía que asegurarme de que el cambio no tuviera problemas en 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 inmediatamente con los nuevos cambios.
Eso fue mucho más complicado de lo que había previsto. Los scripts de conversión y el software del cliente tuvieron que probarse a fondo. A menudo, dos conjuntos de datos semánticamente idénticos pero incompatibles tenían que mantenerse sincronizados hasta que todos cambiaran. A veces era necesario realizar el cambio en varias fases cuidadosamente planificadas para que no se produjera ningún problema. No era raro prepararse durante semanas para una transición que ocurrió esencialmente de manera instantánea.
Si un programador de bases de datos está haciendo bien su trabajo, a los observadores les parecerá que su trabajo es muy fácil. No me sorprende que muchas personas realmente no sepan lo que hacen.
Esto es bastante simple. Si escuchó sobre el patrón MVC, debe saber la diferencia entre sus controladores y modelos. Por ejemplo, si está escribiendo un ERP, imagine que en su controlador simplemente dice "retrieveCashFlow" a su modelo y su modelo llama a un programa almacenado en la base de datos. Este programa almacenado se encarga de cada unión, filtrado, pedido, etc., y recupera los datos procesados. En su controlador solo tiene que juntar las cosas.
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 comerciales si no usa mvc).
Oracle no es solo una base de datos, sino un entorno de programación completo, que incluye formularios y diseñadores de informes. Como programador de Oracle, usted programa aplicaciones de usuario completas. La codificación de la base de datos a la que hace referencia a menudo la realizarían administradores de bases de datos (DBA) especializados.
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 o diseño de informes / instalaciones de ejecución.
"Oracle no es solo una base de datos, sino un entorno de programación completo ... Otras bases de datos pueden restringirse a" solo "permitir la definición y ejecución de ..." Esto no lo sabía. Ahora tiene sentido.
Thomas
SQL Server es lo mismo. Además de los procedimientos almacenados, los paquetes SSIS permiten la programación visual, llamar a otro código existente, escribir programas vb.net o c # .net y mucho más, todo envuelto en un IDE. No he usado SSRS, pero sospecho que es similar. Hay una TONELADA de programación, y un programador de bases de datos tiene que conocer muchas herramientas, lenguajes y procesos diferentes.
jueves
2
Diría que un desarrollador de bases de datos es responsable de uno o más de los siguientes
Diseño, esto incluye crear (o más bien definir relaciones) tablas
Optimización, establecer los índices adecuados, elegir claves, elegir los tipos de datos correctos
Funciones, escribir funciones útiles para usar en las consultas
Procedimientos, escribir lógica de aplicación que está estrechamente acoplada a la capa de base de datos.
Crear funciones de disparo para responder a eventos
Producir especificaciones de lo anterior.
Dependiendo del RDBMS en cuestión, podría incluir tareas como
Crear informes y formularios
Crear flujos para la importación / exportación de datos
Los programadores de bases de datos hacen muchas cosas. Primero diseñan la estructura de la base de datos para que funcione correctamente con la cantidad 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 seguros contra cambios no autorizados o robos. Tienen que comprender completamente la normalización y cuándo desnormalizar y por qué. Deben comprender el rendimiento y cómo garantizar la integridad de los datos. Tienen que comprender la seguridad y cómo evitar que los datos sean robados o cambiados maliciosamente.
Realizan consultas de sintonización. He cambiado las consultas que tardan minutos en ejecutarse en milisegundos. He cambiado un proceso que tardó más de 24 horas en ejecutarse en 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 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 respaldarlos. A menudo necesitan escribir procesos para traer datos de otras fuentes y tienen que descubrir cómo mapear los campos de la base de datos de algunos clientes a los suyos y estos nunca coinciden estrechamente en tipo de datos, tamaño de datos, campos obligatorios, valores de búsqueda, etc.
Deben 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 por completo el uso de la base de datos. Grandes bases de datos pueden involucrar miles de tablas y procesos almacenados y funciones definidas por el usuario. Comprender dicha estructura requiere tiempo y habilidad, al igual que 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. Investigan problemas con los datos para determinar si el problema fue un error en el proceso de importación, un archivo incorrecto proporcionado por otros o una inserción / actualización incorrecta de la aplicación, o por acceso no autorizado. Encuentran formas de corregir los datos incorrectos cuando los programadores de aplicaciones dejan un hueco para que los hackers ataquen.
A menudo participan en las conversiones de datos de un sistema a otro. 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 tomar meses para planificar y ejecutar y que requieren pruebas exhaustivas. A diferencia de las importaciones, el programador de bases de datos puede no tener control sobre las estructuras de datos dispares.
fuente
Hice una pasantía como programador de bases de datos para los datos de fabricación de una fábrica de obleas de 24 horas a fines de los 90. No sé cuán típicos eran mis deberes, pero la mayor parte para mí fue cuando era necesario un cambio en la codificación de campo o en el esquema, tenía que asegurarme de que el cambio no tuviera problemas en 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 inmediatamente con los nuevos cambios.
Eso fue mucho más complicado de lo que había previsto. Los scripts de conversión y el software del cliente tuvieron que probarse a fondo. A menudo, dos conjuntos de datos semánticamente idénticos pero incompatibles tenían que mantenerse sincronizados hasta que todos cambiaran. A veces era necesario realizar el cambio en varias fases cuidadosamente planificadas para que no se produjera ningún problema. No era raro prepararse durante semanas para una transición que ocurrió esencialmente de manera instantánea.
Si un programador de bases de datos está haciendo bien su trabajo, a los observadores les parecerá que su trabajo es muy fácil. No me sorprende que muchas personas realmente no sepan lo que hacen.
fuente
Esto es bastante simple. Si escuchó sobre el patrón MVC, debe saber la diferencia entre sus controladores y modelos. Por ejemplo, si está escribiendo un ERP, imagine que en su controlador simplemente dice "retrieveCashFlow" a su modelo y su modelo llama a un programa almacenado en la base de datos. Este programa almacenado se encarga de cada unión, filtrado, pedido, etc., y recupera los datos procesados. En su controlador solo tiene que juntar las cosas.
Si tiene dudas sobre los procedimientos almacenados, consulte 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 comerciales si no usa mvc).
fuente
Oracle no es solo una base de datos, sino un entorno de programación completo, que incluye formularios y diseñadores de informes. Como programador de Oracle, usted programa aplicaciones de usuario completas. La codificación de la base de datos a la que hace referencia a menudo la realizarían administradores de bases de datos (DBA) especializados.
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 o diseño de informes / instalaciones de ejecución.
fuente
Diría que un desarrollador de bases de datos es responsable de uno o más de los siguientes
Dependiendo del RDBMS en cuestión, podría incluir tareas como
Echa un vistazo a esta lista de responsabilidades
fuente